File size: 10,345 Bytes
3a5cf48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
ace.define(
	'ace/keyboard/sublime',
	['require', 'exports', 'module', 'ace/keyboard/hash_handler'],
	function (e, t, n) {
		'use strict'
		function i(e, t, n) {
			function f(e) {
				return e
					? /\s/.test(e)
						? 's'
						: e == '_'
						  ? '_'
						  : e.toUpperCase() == e && e.toLowerCase() != e
						    ? 'W'
						    : e.toUpperCase() != e && e.toLowerCase() == e
						      ? 'w'
						      : 'o'
					: '-'
			}
			var r = e.selection,
				i = r.lead.row,
				s = r.lead.column,
				o = e.session.getLine(i)
			if (!o[s + t]) {
				var u = (n ? 'selectWord' : 'moveCursorShortWord') + (t == 1 ? 'Right' : 'Left')
				return e.selection[u]()
			}
			t == -1 && s--
			while (o[s]) {
				var a = f(o[s]) + f(o[s + t])
				s += t
				if (t == 1) {
					if (a == 'WW' && f(o[s + 1]) == 'w') break
				} else {
					if (a == 'wW') {
						if (f(o[s - 1]) == 'W') {
							s -= 1
							break
						}
						continue
					}
					if (a == 'Ww') break
				}
				if (/w[s_oW]|_[sWo]|o[s_wW]|s[W]|W[so]/.test(a)) break
			}
			t == -1 && s++, n ? e.selection.moveCursorTo(i, s) : e.selection.moveTo(i, s)
		}
		var r = e('../keyboard/hash_handler').HashHandler
		;(t.handler = new r()),
			t.handler.addCommands([
				{
					name: 'find_all_under',
					exec: function (e) {
						e.selection.isEmpty() && e.selection.selectWord(), e.findAll()
					},
					readOnly: !0,
				},
				{
					name: 'find_under',
					exec: function (e) {
						e.selection.isEmpty() && e.selection.selectWord(), e.findNext()
					},
					readOnly: !0,
				},
				{
					name: 'find_under_prev',
					exec: function (e) {
						e.selection.isEmpty() && e.selection.selectWord(), e.findPrevious()
					},
					readOnly: !0,
				},
				{
					name: 'find_under_expand',
					exec: function (e) {
						e.selectMore(1, !1, !0)
					},
					scrollIntoView: 'animate',
					readOnly: !0,
				},
				{
					name: 'find_under_expand_skip',
					exec: function (e) {
						e.selectMore(1, !0, !0)
					},
					scrollIntoView: 'animate',
					readOnly: !0,
				},
				{
					name: 'delete_to_hard_bol',
					exec: function (e) {
						var t = e.selection.getCursor()
						e.session.remove({ start: { row: t.row, column: 0 }, end: t })
					},
					multiSelectAction: 'forEach',
					scrollIntoView: 'cursor',
				},
				{
					name: 'delete_to_hard_eol',
					exec: function (e) {
						var t = e.selection.getCursor()
						e.session.remove({ start: t, end: { row: t.row, column: Infinity } })
					},
					multiSelectAction: 'forEach',
					scrollIntoView: 'cursor',
				},
				{
					name: 'moveToWordStartLeft',
					exec: function (e) {
						e.selection.moveCursorLongWordLeft(), e.clearSelection()
					},
					multiSelectAction: 'forEach',
					scrollIntoView: 'cursor',
				},
				{
					name: 'moveToWordEndRight',
					exec: function (e) {
						e.selection.moveCursorLongWordRight(), e.clearSelection()
					},
					multiSelectAction: 'forEach',
					scrollIntoView: 'cursor',
				},
				{
					name: 'selectToWordStartLeft',
					exec: function (e) {
						var t = e.selection
						t.$moveSelection(t.moveCursorLongWordLeft)
					},
					multiSelectAction: 'forEach',
					scrollIntoView: 'cursor',
				},
				{
					name: 'selectToWordEndRight',
					exec: function (e) {
						var t = e.selection
						t.$moveSelection(t.moveCursorLongWordRight)
					},
					multiSelectAction: 'forEach',
					scrollIntoView: 'cursor',
				},
				{
					name: 'selectSubWordRight',
					exec: function (e) {
						i(e, 1, !0)
					},
					multiSelectAction: 'forEach',
					scrollIntoView: 'cursor',
					readOnly: !0,
				},
				{
					name: 'selectSubWordLeft',
					exec: function (e) {
						i(e, -1, !0)
					},
					multiSelectAction: 'forEach',
					scrollIntoView: 'cursor',
					readOnly: !0,
				},
				{
					name: 'moveSubWordRight',
					exec: function (e) {
						i(e, 1)
					},
					multiSelectAction: 'forEach',
					scrollIntoView: 'cursor',
					readOnly: !0,
				},
				{
					name: 'moveSubWordLeft',
					exec: function (e) {
						i(e, -1)
					},
					multiSelectAction: 'forEach',
					scrollIntoView: 'cursor',
					readOnly: !0,
				},
			]),
			[
				{
					bindKey: {
						mac: 'cmd-k cmd-backspace|cmd-backspace',
						win: 'ctrl-shift-backspace|ctrl-k ctrl-backspace',
					},
					name: 'removetolinestarthard',
				},
				{
					bindKey: { mac: 'cmd-k cmd-k|cmd-delete|ctrl-k', win: 'ctrl-shift-delete|ctrl-k ctrl-k' },
					name: 'removetolineendhard',
				},
				{ bindKey: { mac: 'cmd-shift-d', win: 'ctrl-shift-d' }, name: 'duplicateSelection' },
				{ bindKey: { mac: 'cmd-l', win: 'ctrl-l' }, name: 'expandtoline' },
				{
					bindKey: { mac: 'cmd-shift-a', win: 'ctrl-shift-a' },
					name: 'expandSelection',
					args: { to: 'tag' },
				},
				{
					bindKey: { mac: 'cmd-shift-j', win: 'ctrl-shift-j' },
					name: 'expandSelection',
					args: { to: 'indentation' },
				},
				{
					bindKey: { mac: 'ctrl-shift-m', win: 'ctrl-shift-m' },
					name: 'expandSelection',
					args: { to: 'brackets' },
				},
				{
					bindKey: { mac: 'cmd-shift-space', win: 'ctrl-shift-space' },
					name: 'expandSelection',
					args: { to: 'scope' },
				},
				{ bindKey: { mac: 'ctrl-cmd-g', win: 'alt-f3' }, name: 'find_all_under' },
				{ bindKey: { mac: 'alt-cmd-g', win: 'ctrl-f3' }, name: 'find_under' },
				{ bindKey: { mac: 'shift-alt-cmd-g', win: 'ctrl-shift-f3' }, name: 'find_under_prev' },
				{ bindKey: { mac: 'cmd-g', win: 'f3' }, name: 'findnext' },
				{ bindKey: { mac: 'shift-cmd-g', win: 'shift-f3' }, name: 'findprevious' },
				{ bindKey: { mac: 'cmd-d', win: 'ctrl-d' }, name: 'find_under_expand' },
				{ bindKey: { mac: 'cmd-k cmd-d', win: 'ctrl-k ctrl-d' }, name: 'find_under_expand_skip' },
				{ bindKey: { mac: 'cmd-alt-[', win: 'ctrl-shift-[' }, name: 'toggleFoldWidget' },
				{ bindKey: { mac: 'cmd-alt-]', win: 'ctrl-shift-]' }, name: 'unfold' },
				{
					bindKey: { mac: 'cmd-k cmd-0|cmd-k cmd-j', win: 'ctrl-k ctrl-0|ctrl-k ctrl-j' },
					name: 'unfoldall',
				},
				{
					bindKey: { mac: 'cmd-k cmd-1', win: 'ctrl-k ctrl-1' },
					name: 'foldOther',
					args: { level: 1 },
				},
				{ bindKey: { win: 'ctrl-left', mac: 'alt-left' }, name: 'moveToWordStartLeft' },
				{ bindKey: { win: 'ctrl-right', mac: 'alt-right' }, name: 'moveToWordEndRight' },
				{
					bindKey: { win: 'ctrl-shift-left', mac: 'alt-shift-left' },
					name: 'selectToWordStartLeft',
				},
				{
					bindKey: { win: 'ctrl-shift-right', mac: 'alt-shift-right' },
					name: 'selectToWordEndRight',
				},
				{
					bindKey: { mac: 'ctrl-alt-shift-right|ctrl-shift-right', win: 'alt-shift-right' },
					name: 'selectSubWordRight',
				},
				{
					bindKey: { mac: 'ctrl-alt-shift-left|ctrl-shift-left', win: 'alt-shift-left' },
					name: 'selectSubWordLeft',
				},
				{
					bindKey: { mac: 'ctrl-alt-right|ctrl-right', win: 'alt-right' },
					name: 'moveSubWordRight',
				},
				{ bindKey: { mac: 'ctrl-alt-left|ctrl-left', win: 'alt-left' }, name: 'moveSubWordLeft' },
				{
					bindKey: { mac: 'ctrl-m', win: 'ctrl-m' },
					name: 'jumptomatching',
					args: { to: 'brackets' },
				},
				{ bindKey: { mac: 'ctrl-f6', win: 'ctrl-f6' }, name: 'goToNextError' },
				{ bindKey: { mac: 'ctrl-shift-f6', win: 'ctrl-shift-f6' }, name: 'goToPreviousError' },
				{ bindKey: { mac: 'ctrl-o' }, name: 'splitline' },
				{ bindKey: { mac: 'ctrl-shift-w', win: 'alt-shift-w' }, name: 'surrowndWithTag' },
				{ bindKey: { mac: 'cmd-alt-.', win: 'alt-.' }, name: 'close_tag' },
				{ bindKey: { mac: 'cmd-j', win: 'ctrl-j' }, name: 'joinlines' },
				{ bindKey: { mac: 'ctrl--', win: 'alt--' }, name: 'jumpBack' },
				{ bindKey: { mac: 'ctrl-shift--', win: 'alt-shift--' }, name: 'jumpForward' },
				{ bindKey: { mac: 'cmd-k cmd-l', win: 'ctrl-k ctrl-l' }, name: 'tolowercase' },
				{ bindKey: { mac: 'cmd-k cmd-u', win: 'ctrl-k ctrl-u' }, name: 'touppercase' },
				{ bindKey: { mac: 'cmd-shift-v', win: 'ctrl-shift-v' }, name: 'paste_and_indent' },
				{
					bindKey: { mac: 'cmd-k cmd-v|cmd-alt-v', win: 'ctrl-k ctrl-v' },
					name: 'paste_from_history',
				},
				{ bindKey: { mac: 'cmd-shift-enter', win: 'ctrl-shift-enter' }, name: 'addLineBefore' },
				{ bindKey: { mac: 'cmd-enter', win: 'ctrl-enter' }, name: 'addLineAfter' },
				{ bindKey: { mac: 'ctrl-shift-k', win: 'ctrl-shift-k' }, name: 'removeline' },
				{ bindKey: { mac: 'ctrl-alt-up', win: 'ctrl-up' }, name: 'scrollup' },
				{ bindKey: { mac: 'ctrl-alt-down', win: 'ctrl-down' }, name: 'scrolldown' },
				{ bindKey: { mac: 'cmd-a', win: 'ctrl-a' }, name: 'selectall' },
				{
					bindKey: { linux: 'alt-shift-down', mac: 'ctrl-shift-down', win: 'ctrl-alt-down' },
					name: 'addCursorBelow',
				},
				{
					bindKey: { linux: 'alt-shift-up', mac: 'ctrl-shift-up', win: 'ctrl-alt-up' },
					name: 'addCursorAbove',
				},
				{ bindKey: { mac: 'cmd-k cmd-c|ctrl-l', win: 'ctrl-k ctrl-c' }, name: 'centerselection' },
				{ bindKey: { mac: 'f5', win: 'f9' }, name: 'sortlines' },
				{
					bindKey: { mac: 'ctrl-f5', win: 'ctrl-f9' },
					name: 'sortlines',
					args: { caseSensitive: !0 },
				},
				{ bindKey: { mac: 'cmd-shift-l', win: 'ctrl-shift-l' }, name: 'splitSelectionIntoLines' },
				{ bindKey: { mac: 'ctrl-cmd-down', win: 'ctrl-shift-down' }, name: 'movelinesdown' },
				{ bindKey: { mac: 'ctrl-cmd-up', win: 'ctrl-shift-up' }, name: 'movelinesup' },
				{ bindKey: { mac: 'alt-down', win: 'alt-down' }, name: 'modifyNumberDown' },
				{ bindKey: { mac: 'alt-up', win: 'alt-up' }, name: 'modifyNumberUp' },
				{ bindKey: { mac: 'cmd-/', win: 'ctrl-/' }, name: 'togglecomment' },
				{ bindKey: { mac: 'cmd-alt-/', win: 'ctrl-shift-/' }, name: 'toggleBlockComment' },
				{ bindKey: { linux: 'ctrl-alt-q', mac: 'ctrl-q', win: 'ctrl-q' }, name: 'togglerecording' },
				{
					bindKey: { linux: 'ctrl-alt-shift-q', mac: 'ctrl-shift-q', win: 'ctrl-shift-q' },
					name: 'replaymacro',
				},
				{ bindKey: { mac: 'ctrl-t', win: 'ctrl-t' }, name: 'transpose' },
			].forEach(function (e) {
				var n = t.handler.commands[e.name]
				n && (n.bindKey = e.bindKey), t.handler.bindKey(e.bindKey, n || e.name)
			})
	}
)
;(function () {
	ace.require(['ace/keyboard/sublime'], function (m) {
		if (typeof module == 'object' && typeof exports == 'object' && module) {
			module.exports = m
		}
	})
})()