ace-rails-ap 4.2 → 4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ace/rails/version.rb +1 -1
- data/update.sh +1 -1
- data/vendor/assets/javascripts/ace/ace.js +661 -160
- data/vendor/assets/javascripts/ace/ext-beautify.js +1 -0
- data/vendor/assets/javascripts/ace/ext-emmet.js +314 -218
- data/vendor/assets/javascripts/ace/ext-keybinding_menu.js +37 -32
- data/vendor/assets/javascripts/ace/ext-language_tools.js +362 -225
- data/vendor/assets/javascripts/ace/ext-linking.js +1 -1
- data/vendor/assets/javascripts/ace/ext-modelist.js +6 -2
- data/vendor/assets/javascripts/ace/ext-options.js +45 -34
- data/vendor/assets/javascripts/ace/ext-prompt.js +2764 -0
- data/vendor/assets/javascripts/ace/ext-rtl.js +1 -3
- data/vendor/assets/javascripts/ace/ext-settings_menu.js +49 -38
- data/vendor/assets/javascripts/ace/ext-statusbar.js +2 -2
- data/vendor/assets/javascripts/ace/ext-whitespace.js +4 -0
- data/vendor/assets/javascripts/ace/keybinding-emacs.js +1 -0
- data/vendor/assets/javascripts/ace/keybinding-vim.js +296 -66
- data/vendor/assets/javascripts/ace/mode-aql.js +102 -0
- data/vendor/assets/javascripts/ace/mode-autohotkey.js +3 -1
- data/vendor/assets/javascripts/ace/mode-cirru.js +2 -2
- data/vendor/assets/javascripts/ace/mode-crystal.js +642 -0
- data/vendor/assets/javascripts/ace/mode-csound_document.js +42 -29
- data/vendor/assets/javascripts/ace/mode-csound_orchestra.js +35 -25
- data/vendor/assets/javascripts/ace/mode-csound_score.js +29 -21
- data/vendor/assets/javascripts/ace/mode-fsharp.js +2 -2
- data/vendor/assets/javascripts/ace/mode-gherkin.js +0 -2
- data/vendor/assets/javascripts/ace/mode-gobstones.js +252 -94
- data/vendor/assets/javascripts/ace/mode-io.js +1 -7
- data/vendor/assets/javascripts/ace/mode-jade.js +1 -1
- data/vendor/assets/javascripts/ace/mode-lua.js +30 -10
- data/vendor/assets/javascripts/ace/mode-luapage.js +30 -10
- data/vendor/assets/javascripts/ace/mode-lucene.js +77 -9
- data/vendor/assets/javascripts/ace/mode-markdown.js +2 -1
- data/vendor/assets/javascripts/ace/mode-mask.js +1 -1
- data/vendor/assets/javascripts/ace/mode-nginx.js +298 -0
- data/vendor/assets/javascripts/ace/mode-nim.js +363 -0
- data/vendor/assets/javascripts/ace/mode-pascal.js +84 -66
- data/vendor/assets/javascripts/ace/mode-php.js +1 -1
- data/vendor/assets/javascripts/ace/mode-php_laravel_blade.js +1 -1
- data/vendor/assets/javascripts/ace/mode-puppet.js +3 -3
- data/vendor/assets/javascripts/ace/mode-slim.js +2 -1
- data/vendor/assets/javascripts/ace/mode-tcl.js +3 -0
- data/vendor/assets/javascripts/ace/mode-terraform.js +4 -4
- data/vendor/assets/javascripts/ace/mode-yaml.js +44 -13
- data/vendor/assets/javascripts/ace/mode-zeek.js +539 -0
- data/vendor/assets/javascripts/ace/snippets/abap.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/abc.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/actionscript.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/ada.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/apache_conf.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/apex.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/applescript.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/aql.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/asciidoc.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/asl.js +13 -0
- data/vendor/assets/javascripts/ace/snippets/assembly_x86.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/autohotkey.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/batchfile.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/bro.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/c9search.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/c_cpp.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/cirru.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/clojure.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/cobol.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/coffee.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/coldfusion.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/crystal.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/csharp.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/csound_document.js +24 -0
- data/vendor/assets/javascripts/ace/snippets/csound_orchestra.js +61 -0
- data/vendor/assets/javascripts/ace/snippets/csound_score.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/csp.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/css.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/curly.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/d.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/dart.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/diff.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/django.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/dockerfile.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/dot.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/drools.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/edifact.js +254 -0
- data/vendor/assets/javascripts/ace/snippets/eiffel.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/ejs.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/elixir.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/elm.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/erlang.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/forth.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/fortran.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/fsharp.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/fsl.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/ftl.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/gcode.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/gherkin.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/gitignore.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/glsl.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/gobstones.js +1701 -24
- data/vendor/assets/javascripts/ace/snippets/golang.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/graphqlschema.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/groovy.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/haml.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/handlebars.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/haskell.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/haskell_cabal.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/haxe.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/hjson.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/html.js +36 -2
- data/vendor/assets/javascripts/ace/snippets/html_elixir.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/html_ruby.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/ini.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/io.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/jack.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/jade.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/java.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/javascript.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/json.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/jsoniq.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/jsp.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/jssm.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/jsx.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/julia.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/kotlin.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/latex.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/less.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/liquid.js +890 -2
- data/vendor/assets/javascripts/ace/snippets/lisp.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/livescript.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/logiql.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/logtalk.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/lsl.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/lua.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/luapage.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/lucene.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/makefile.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/markdown.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/mask.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/matlab.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/maze.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/mel.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/mixal.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/mushcode.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/mysql.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/nginx.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/nim.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/nix.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/nsis.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/objectivec.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/ocaml.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/pascal.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/perl.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/perl6.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/pgsql.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/php.js +49 -36
- data/vendor/assets/javascripts/ace/snippets/php_laravel_blade.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/pig.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/plain_text.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/powershell.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/praat.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/prolog.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/properties.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/protobuf.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/puppet.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/python.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/r.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/razor.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/rdoc.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/red.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/redshift.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/rhtml.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/rst.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/ruby.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/rust.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/sass.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/scad.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/scala.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/scheme.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/scss.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/sh.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/sjs.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/slim.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/smarty.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/snippets.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/soy_template.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/space.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/sparql.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/sql.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/sqlserver.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/stylus.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/svg.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/swift.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/tcl.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/terraform.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/tex.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/text.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/textile.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/toml.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/tsx.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/turtle.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/twig.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/typescript.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/vala.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/vbscript.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/velocity.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/verilog.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/vhdl.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/visualforce.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/wollok.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/xml.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/xquery.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/yaml.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/zeek.js +14 -0
- data/vendor/assets/javascripts/ace/worker-coffee.js +2 -2
- data/vendor/assets/javascripts/ace/worker-css.js +9 -3
- data/vendor/assets/javascripts/ace/worker-html.js +2 -2
- data/vendor/assets/javascripts/ace/worker-javascript.js +2 -2
- data/vendor/assets/javascripts/ace/worker-json.js +2 -2
- data/vendor/assets/javascripts/ace/worker-lua.js +2 -2
- data/vendor/assets/javascripts/ace/worker-php.js +4 -4
- data/vendor/assets/javascripts/ace/worker-xml.js +2 -2
- data/vendor/assets/javascripts/ace/worker-xquery.js +2 -2
- metadata +34 -16
- data/vendor/assets/javascripts/ace/ext-chromevox.js +0 -540
- data/vendor/assets/javascripts/ace/ext-old_ie.js +0 -502
- data/vendor/assets/javascripts/ace/mode-bash.js +0 -247
- data/vendor/assets/javascripts/ace/mode-lean.js +0 -281
- data/vendor/assets/javascripts/ace/mode-live_script.js +0 -481
- data/vendor/assets/javascripts/ace/mode-mips_assembler.js +0 -235
- data/vendor/assets/javascripts/ace/mode-mipsassembler.js +0 -196
- data/vendor/assets/javascripts/ace/mode-swig.js +0 -1099
- data/vendor/assets/javascripts/ace/snippets/lean.js +0 -7
- data/vendor/assets/javascripts/ace/snippets/live_script.js +0 -7
- data/vendor/assets/javascripts/ace/snippets/mips_assembler.js +0 -7
- data/vendor/assets/javascripts/ace/snippets/mipsassembler.js +0 -7
- data/vendor/assets/javascripts/ace/snippets/swig.js +0 -7
@@ -1,7 +1,5 @@
|
|
1
|
-
define("ace/ext/rtl",["require","exports","module","ace/
|
1
|
+
define("ace/ext/rtl",["require","exports","module","ace/editor","ace/config"], function(require, exports, module) {
|
2
2
|
"use strict";
|
3
|
-
var dom = require("ace/lib/dom");
|
4
|
-
var lang = require("ace/lib/lang");
|
5
3
|
|
6
4
|
var commands = [{
|
7
5
|
name: "leftToRight",
|
@@ -62,54 +62,59 @@ margin: 0px;\
|
|
62
62
|
background: #f0f0f0;\
|
63
63
|
}";
|
64
64
|
dom.importCssString(cssText);
|
65
|
-
module.exports.overlayPage = function overlayPage(editor, contentElement, top, right, bottom, left) {
|
66
|
-
top = top ? 'top: ' + top + ';' : '';
|
67
|
-
bottom = bottom ? 'bottom: ' + bottom + ';' : '';
|
68
|
-
right = right ? 'right: ' + right + ';' : '';
|
69
|
-
left = left ? 'left: ' + left + ';' : '';
|
70
65
|
|
66
|
+
module.exports.overlayPage = function overlayPage(editor, contentElement, callback) {
|
71
67
|
var closer = document.createElement('div');
|
72
|
-
var
|
68
|
+
var ignoreFocusOut = false;
|
73
69
|
|
74
70
|
function documentEscListener(e) {
|
75
71
|
if (e.keyCode === 27) {
|
76
|
-
|
72
|
+
close();
|
77
73
|
}
|
78
74
|
}
|
79
75
|
|
80
|
-
|
81
|
-
|
82
|
-
'z-index: 9990; ' +
|
83
|
-
'background-color: rgba(0, 0, 0, 0.3);';
|
84
|
-
closer.addEventListener('click', function() {
|
76
|
+
function close() {
|
77
|
+
if (!closer) return;
|
85
78
|
document.removeEventListener('keydown', documentEscListener);
|
86
79
|
closer.parentNode.removeChild(closer);
|
87
|
-
editor
|
80
|
+
if (editor) {
|
81
|
+
editor.focus();
|
82
|
+
}
|
88
83
|
closer = null;
|
84
|
+
callback && callback();
|
85
|
+
}
|
86
|
+
function setIgnoreFocusOut(ignore) {
|
87
|
+
ignoreFocusOut = ignore;
|
88
|
+
if (ignore) {
|
89
|
+
closer.style.pointerEvents = "none";
|
90
|
+
contentElement.style.pointerEvents = "auto";
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
closer.style.cssText = 'margin: 0; padding: 0; ' +
|
95
|
+
'position: fixed; top:0; bottom:0; left:0; right:0;' +
|
96
|
+
'z-index: 9990; ' +
|
97
|
+
(editor ? 'background-color: rgba(0, 0, 0, 0.3);' : '');
|
98
|
+
closer.addEventListener('click', function(e) {
|
99
|
+
if (!ignoreFocusOut) {
|
100
|
+
close();
|
101
|
+
}
|
89
102
|
});
|
90
103
|
document.addEventListener('keydown', documentEscListener);
|
91
104
|
|
92
|
-
|
93
|
-
contentContainer.addEventListener('click', function(e) {
|
105
|
+
contentElement.addEventListener('click', function (e) {
|
94
106
|
e.stopPropagation();
|
95
107
|
});
|
96
108
|
|
97
|
-
|
98
|
-
wrapper.style.position = "relative";
|
99
|
-
|
100
|
-
var closeButton = dom.createElement("div");
|
101
|
-
closeButton.className = "ace_closeButton";
|
102
|
-
closeButton.addEventListener('click', function() {
|
103
|
-
closer.click();
|
104
|
-
});
|
105
|
-
|
106
|
-
wrapper.appendChild(closeButton);
|
107
|
-
contentContainer.appendChild(wrapper);
|
108
|
-
|
109
|
-
contentContainer.appendChild(contentElement);
|
110
|
-
closer.appendChild(contentContainer);
|
109
|
+
closer.appendChild(contentElement);
|
111
110
|
document.body.appendChild(closer);
|
112
|
-
editor
|
111
|
+
if (editor) {
|
112
|
+
editor.blur();
|
113
|
+
}
|
114
|
+
return {
|
115
|
+
close: close,
|
116
|
+
setIgnoreFocusOut: setIgnoreFocusOut
|
117
|
+
};
|
113
118
|
};
|
114
119
|
|
115
120
|
});
|
@@ -161,10 +166,11 @@ var supportedModes = {
|
|
161
166
|
Assembly_x86:["asm|a"],
|
162
167
|
AutoHotKey: ["ahk"],
|
163
168
|
Apex: ["apex|cls|trigger|tgr"],
|
169
|
+
AQL: ["aql"],
|
164
170
|
BatchFile: ["bat|cmd"],
|
165
|
-
Bro: ["bro"],
|
166
171
|
C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"],
|
167
172
|
C9Search: ["c9search_results"],
|
173
|
+
Crystal: ["cr"],
|
168
174
|
Cirru: ["cirru|cr"],
|
169
175
|
Clojure: ["clj|cljs"],
|
170
176
|
Cobol: ["CBL|COB"],
|
@@ -242,7 +248,9 @@ var supportedModes = {
|
|
242
248
|
MIXAL: ["mixal"],
|
243
249
|
MUSHCode: ["mc|mush"],
|
244
250
|
MySQL: ["mysql"],
|
251
|
+
Nginx: ["nginx|conf"],
|
245
252
|
Nix: ["nix"],
|
253
|
+
Nim: ["nim"],
|
246
254
|
NSIS: ["nsi|nsh"],
|
247
255
|
ObjectiveC: ["m|mm"],
|
248
256
|
OCaml: ["ml|mli"],
|
@@ -270,7 +278,7 @@ var supportedModes = {
|
|
270
278
|
Rust: ["rs"],
|
271
279
|
SASS: ["sass"],
|
272
280
|
SCAD: ["scad"],
|
273
|
-
Scala: ["scala"],
|
281
|
+
Scala: ["scala|sbt"],
|
274
282
|
Scheme: ["scm|sm|rkt|oak|scheme"],
|
275
283
|
SCSS: ["scss"],
|
276
284
|
SH: ["sh|bash|^.bashrc"],
|
@@ -304,6 +312,7 @@ var supportedModes = {
|
|
304
312
|
XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"],
|
305
313
|
XQuery: ["xq"],
|
306
314
|
YAML: ["yaml|yml"],
|
315
|
+
Zeek: ["zeek|bro"],
|
307
316
|
Django: ["html"]
|
308
317
|
};
|
309
318
|
|
@@ -400,13 +409,14 @@ exports.themes = themeData.map(function(data) {
|
|
400
409
|
|
401
410
|
});
|
402
411
|
|
403
|
-
define("ace/ext/options",["require","exports","module","ace/ext/menu_tools/overlay_page","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/ext/modelist","ace/ext/themelist"], function(require, exports, module) {
|
412
|
+
define("ace/ext/options",["require","exports","module","ace/ext/menu_tools/overlay_page","ace/lib/dom","ace/lib/oop","ace/config","ace/lib/event_emitter","ace/ext/modelist","ace/ext/themelist"], function(require, exports, module) {
|
404
413
|
"use strict";
|
405
414
|
var overlayPage = require('./menu_tools/overlay_page').overlayPage;
|
406
415
|
|
407
416
|
|
408
417
|
var dom = require("../lib/dom");
|
409
418
|
var oop = require("../lib/oop");
|
419
|
+
var config = require("../config");
|
410
420
|
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
411
421
|
var buildDom = dom.buildDom;
|
412
422
|
|
@@ -611,7 +621,8 @@ var OptionPanel = function(editor, element) {
|
|
611
621
|
["table", {id: "more-controls"},
|
612
622
|
this.renderOptionGroup(optionGroups.More)
|
613
623
|
]
|
614
|
-
]]
|
624
|
+
]],
|
625
|
+
["tr", null, ["td", {colspan: 2}, "version " + config.version]]
|
615
626
|
], this.container);
|
616
627
|
};
|
617
628
|
|
@@ -749,19 +760,19 @@ exports.OptionPanel = OptionPanel;
|
|
749
760
|
|
750
761
|
define("ace/ext/settings_menu",["require","exports","module","ace/ext/options","ace/ext/menu_tools/overlay_page","ace/editor"], function(require, exports, module) {
|
751
762
|
"use strict";
|
752
|
-
var OptionPanel = require("
|
763
|
+
var OptionPanel = require("./options").OptionPanel;
|
753
764
|
var overlayPage = require('./menu_tools/overlay_page').overlayPage;
|
754
765
|
function showSettingsMenu(editor) {
|
755
766
|
if (!document.getElementById('ace_settingsmenu')) {
|
756
767
|
var options = new OptionPanel(editor);
|
757
768
|
options.render();
|
758
769
|
options.container.id = "ace_settingsmenu";
|
759
|
-
overlayPage(editor, options.container
|
770
|
+
overlayPage(editor, options.container);
|
760
771
|
options.container.querySelector("select,input,button,checkbox").focus();
|
761
772
|
}
|
762
773
|
}
|
763
|
-
module.exports.init = function(
|
764
|
-
var Editor = require("
|
774
|
+
module.exports.init = function() {
|
775
|
+
var Editor = require("../editor").Editor;
|
765
776
|
Editor.prototype.showSettingsMenu = function() {
|
766
777
|
showSettingsMenu(this);
|
767
778
|
};
|
@@ -1,7 +1,7 @@
|
|
1
1
|
define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"], function(require, exports, module) {
|
2
2
|
"use strict";
|
3
|
-
var dom = require("
|
4
|
-
var lang = require("
|
3
|
+
var dom = require("../lib/dom");
|
4
|
+
var lang = require("../lib/lang");
|
5
5
|
|
6
6
|
var StatusBar = function(editor, parentNode) {
|
7
7
|
this.element = dom.createElement("div");
|
@@ -176,22 +176,26 @@ exports.$parseArg = function(arg) {
|
|
176
176
|
|
177
177
|
exports.commands = [{
|
178
178
|
name: "detectIndentation",
|
179
|
+
description: "Detect indentation from content",
|
179
180
|
exec: function(editor) {
|
180
181
|
exports.detectIndentation(editor.session);
|
181
182
|
}
|
182
183
|
}, {
|
183
184
|
name: "trimTrailingSpace",
|
185
|
+
description: "Trim trailing whitespace",
|
184
186
|
exec: function(editor, args) {
|
185
187
|
exports.trimTrailingSpace(editor.session, args);
|
186
188
|
}
|
187
189
|
}, {
|
188
190
|
name: "convertIndentation",
|
191
|
+
description: "Convert indentation to ...",
|
189
192
|
exec: function(editor, arg) {
|
190
193
|
var indent = exports.$parseArg(arg);
|
191
194
|
exports.convertIndentation(editor.session, indent.ch, indent.length);
|
192
195
|
}
|
193
196
|
}, {
|
194
197
|
name: "setIndentation",
|
198
|
+
description: "Set indentation",
|
195
199
|
exec: function(editor, arg) {
|
196
200
|
var indent = exports.$parseArg(arg);
|
197
201
|
indent.length && editor.session.setTabSize(indent.length);
|
@@ -1109,6 +1109,7 @@ exports.handler.addCommands({
|
|
1109
1109
|
editor.$handlesEmacsOnCopy = false;
|
1110
1110
|
if (editor.inMultiSelectMode) editor.forEachSelection({exec: deselect});
|
1111
1111
|
else deselect();
|
1112
|
+
editor.setEmacsMark(null);
|
1112
1113
|
editor.session.$emacsMarkRing = marks.concat(deselectedMarks.reverse());
|
1113
1114
|
}, 0);
|
1114
1115
|
},
|
@@ -78,6 +78,7 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
78
78
|
};
|
79
79
|
};
|
80
80
|
CodeMirror.lookupKey = function lookupKey(key, map, handle) {
|
81
|
+
if (!map) map = "default";
|
81
82
|
if (typeof map == "string")
|
82
83
|
map = CodeMirror.keyMap[map];
|
83
84
|
var found = typeof map == "function" ? map(key) : map[key];
|
@@ -475,6 +476,10 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
475
476
|
name = optMap[name];
|
476
477
|
val = !val;
|
477
478
|
break;
|
479
|
+
case 'keyMap':
|
480
|
+
this.state.$keyMap = val;
|
481
|
+
return;
|
482
|
+
break;
|
478
483
|
default:
|
479
484
|
name = optMap[name];
|
480
485
|
}
|
@@ -489,6 +494,8 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
489
494
|
case 'indentWithTabs':
|
490
495
|
name = optMap[name];
|
491
496
|
return !val;
|
497
|
+
case 'keyMap':
|
498
|
+
return this.state.$keyMap;
|
492
499
|
}
|
493
500
|
return aceOpt ? val : this.state[name];
|
494
501
|
};
|
@@ -542,7 +549,7 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
542
549
|
return this.ace.getValue();
|
543
550
|
};
|
544
551
|
this.setValue = function(v) {
|
545
|
-
return this.ace.setValue(v);
|
552
|
+
return this.ace.setValue(v, -1);
|
546
553
|
};
|
547
554
|
this.getTokenTypeAt = function(pos) {
|
548
555
|
var token = this.ace.session.getTokenAt(pos.line, pos.ch);
|
@@ -588,7 +595,10 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
588
595
|
};
|
589
596
|
this.getMode = function() {
|
590
597
|
return { name : this.getOption("mode") };
|
591
|
-
}
|
598
|
+
};
|
599
|
+
this.execCommand = function() {
|
600
|
+
|
601
|
+
};
|
592
602
|
}).call(CodeMirror.prototype);
|
593
603
|
function toAcePos(cmPos) {
|
594
604
|
return {row: cmPos.line, column: cmPos.ch};
|
@@ -825,6 +835,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
825
835
|
{ keys: '<Down>', type: 'keyToKey', toKeys: 'j' },
|
826
836
|
{ keys: '<Space>', type: 'keyToKey', toKeys: 'l' },
|
827
837
|
{ keys: '<BS>', type: 'keyToKey', toKeys: 'h', context: 'normal'},
|
838
|
+
{ keys: '<Del>', type: 'keyToKey', toKeys: 'x', context: 'normal'},
|
828
839
|
{ keys: '<C-Space>', type: 'keyToKey', toKeys: 'W' },
|
829
840
|
{ keys: '<C-BS>', type: 'keyToKey', toKeys: 'B', context: 'normal' },
|
830
841
|
{ keys: '<S-Space>', type: 'keyToKey', toKeys: 'w' },
|
@@ -835,6 +846,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
835
846
|
{ keys: '<C-c>', type: 'keyToKey', toKeys: '<Esc>' },
|
836
847
|
{ keys: '<C-[>', type: 'keyToKey', toKeys: '<Esc>', context: 'insert' },
|
837
848
|
{ keys: '<C-c>', type: 'keyToKey', toKeys: '<Esc>', context: 'insert' },
|
849
|
+
{ keys: '<C-Esc>', type: 'keyToKey', toKeys: '<Esc>' }, // ace_patch ipad keyboard sends C-Esc instead of C-[
|
850
|
+
{ keys: '<C-Esc>', type: 'keyToKey', toKeys: '<Esc>', context: 'insert' },
|
838
851
|
{ keys: 's', type: 'keyToKey', toKeys: 'cl', context: 'normal' },
|
839
852
|
{ keys: 's', type: 'keyToKey', toKeys: 'c', context: 'visual'},
|
840
853
|
{ keys: 'S', type: 'keyToKey', toKeys: 'cc', context: 'normal' },
|
@@ -864,6 +877,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
864
877
|
{ keys: 'gE', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, bigWord: true, inclusive: true }},
|
865
878
|
{ keys: '{', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: false, toJumplist: true }},
|
866
879
|
{ keys: '}', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: true, toJumplist: true }},
|
880
|
+
{ keys: '(', type: 'motion', motion: 'moveBySentence', motionArgs: { forward: false }},
|
881
|
+
{ keys: ')', type: 'motion', motion: 'moveBySentence', motionArgs: { forward: true }},
|
867
882
|
{ keys: '<C-f>', type: 'motion', motion: 'moveByPage', motionArgs: { forward: true }},
|
868
883
|
{ keys: '<C-b>', type: 'motion', motion: 'moveByPage', motionArgs: { forward: false }},
|
869
884
|
{ keys: '<C-d>', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: true, explicitRepeat: true }},
|
@@ -899,6 +914,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
899
914
|
{ keys: 'd', type: 'operator', operator: 'delete' },
|
900
915
|
{ keys: 'y', type: 'operator', operator: 'yank' },
|
901
916
|
{ keys: 'c', type: 'operator', operator: 'change' },
|
917
|
+
{ keys: '=', type: 'operator', operator: 'indentAuto' },
|
902
918
|
{ keys: '>', type: 'operator', operator: 'indent', operatorArgs: { indentRight: true }},
|
903
919
|
{ keys: '<', type: 'operator', operator: 'indent', operatorArgs: { indentRight: false }},
|
904
920
|
{ keys: 'g~', type: 'operator', operator: 'changeCase' },
|
@@ -910,13 +926,14 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
910
926
|
{ keys: 'X', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: false }, operatorMotionArgs: { visualLine: true }},
|
911
927
|
{ keys: 'D', type: 'operatorMotion', operator: 'delete', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'},
|
912
928
|
{ keys: 'D', type: 'operator', operator: 'delete', operatorArgs: { linewise: true }, context: 'visual'},
|
913
|
-
{ keys: 'Y', type: 'operatorMotion', operator: 'yank', motion: '
|
929
|
+
{ keys: 'Y', type: 'operatorMotion', operator: 'yank', motion: 'expandToLine', motionArgs: { linewise: true }, context: 'normal'},
|
914
930
|
{ keys: 'Y', type: 'operator', operator: 'yank', operatorArgs: { linewise: true }, context: 'visual'},
|
915
931
|
{ keys: 'C', type: 'operatorMotion', operator: 'change', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'},
|
916
932
|
{ keys: 'C', type: 'operator', operator: 'change', operatorArgs: { linewise: true }, context: 'visual'},
|
917
933
|
{ keys: '~', type: 'operatorMotion', operator: 'changeCase', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorArgs: { shouldMoveCursor: true }, context: 'normal'},
|
918
934
|
{ keys: '~', type: 'operator', operator: 'changeCase', context: 'visual'},
|
919
935
|
{ keys: '<C-w>', type: 'operatorMotion', operator: 'delete', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }, context: 'insert' },
|
936
|
+
{ keys: '<C-w>', type: 'idle', context: 'normal' },
|
920
937
|
{ keys: '<C-i>', type: 'action', action: 'jumpListWalk', actionArgs: { forward: true }},
|
921
938
|
{ keys: '<C-o>', type: 'action', action: 'jumpListWalk', actionArgs: { forward: false }},
|
922
939
|
{ keys: '<C-e>', type: 'action', action: 'scroll', actionArgs: { forward: true, linewise: true }},
|
@@ -940,7 +957,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
940
957
|
{ keys: 'r<character>', type: 'action', action: 'replace', isEdit: true },
|
941
958
|
{ keys: '@<character>', type: 'action', action: 'replayMacro' },
|
942
959
|
{ keys: 'q<character>', type: 'action', action: 'enterMacroRecordMode' },
|
943
|
-
{ keys: 'R', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { replace: true }},
|
960
|
+
{ keys: 'R', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { replace: true }, context: 'normal'},
|
961
|
+
{ keys: 'R', type: 'operator', operator: 'change', operatorArgs: { linewise: true, fullLine: true }, context: 'visual', exitVisualBlock: true},
|
944
962
|
{ keys: 'u', type: 'action', action: 'undo', context: 'normal' },
|
945
963
|
{ keys: 'u', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, context: 'visual', isEdit: true },
|
946
964
|
{ keys: 'U', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, context: 'visual', isEdit: true },
|
@@ -968,6 +986,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
968
986
|
{ keys: 'g#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', toJumplist: true }},
|
969
987
|
{ keys: ':', type: 'ex' }
|
970
988
|
];
|
989
|
+
var defaultKeymapLength = defaultKeymap.length;
|
971
990
|
var defaultExCommandMap = [
|
972
991
|
{ name: 'colorscheme', shortName: 'colo' },
|
973
992
|
{ name: 'map' },
|
@@ -1124,6 +1143,9 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1124
1143
|
function isWhiteSpaceString(k) {
|
1125
1144
|
return (/^\s*$/).test(k);
|
1126
1145
|
}
|
1146
|
+
function isEndOfSentenceSymbol(k) {
|
1147
|
+
return '.?!'.indexOf(k) != -1;
|
1148
|
+
}
|
1127
1149
|
function inArray(val, arr) {
|
1128
1150
|
for (var i = 0; i < arr.length; i++) {
|
1129
1151
|
if (arr[i] == val) {
|
@@ -1392,6 +1414,62 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1392
1414
|
unmap: function(lhs, ctx) {
|
1393
1415
|
exCommandDispatcher.unmap(lhs, ctx);
|
1394
1416
|
},
|
1417
|
+
noremap: function(lhs, rhs, ctx) {
|
1418
|
+
function toCtxArray(ctx) {
|
1419
|
+
return ctx ? [ctx] : ['normal', 'insert', 'visual'];
|
1420
|
+
}
|
1421
|
+
var ctxsToMap = toCtxArray(ctx);
|
1422
|
+
var actualLength = defaultKeymap.length, origLength = defaultKeymapLength;
|
1423
|
+
for (var i = actualLength - origLength;
|
1424
|
+
i < actualLength && ctxsToMap.length;
|
1425
|
+
i++) {
|
1426
|
+
var mapping = defaultKeymap[i];
|
1427
|
+
if (mapping.keys == rhs &&
|
1428
|
+
(!ctx || !mapping.context || mapping.context === ctx) &&
|
1429
|
+
mapping.type.substr(0, 2) !== 'ex' &&
|
1430
|
+
mapping.type.substr(0, 3) !== 'key') {
|
1431
|
+
var newMapping = {};
|
1432
|
+
for (var key in mapping) {
|
1433
|
+
newMapping[key] = mapping[key];
|
1434
|
+
}
|
1435
|
+
newMapping.keys = lhs;
|
1436
|
+
if (ctx && !newMapping.context) {
|
1437
|
+
newMapping.context = ctx;
|
1438
|
+
}
|
1439
|
+
this._mapCommand(newMapping);
|
1440
|
+
var mappedCtxs = toCtxArray(mapping.context);
|
1441
|
+
ctxsToMap = ctxsToMap.filter(function(el) { return mappedCtxs.indexOf(el) === -1; });
|
1442
|
+
}
|
1443
|
+
}
|
1444
|
+
},
|
1445
|
+
mapclear: function(ctx) {
|
1446
|
+
var actualLength = defaultKeymap.length,
|
1447
|
+
origLength = defaultKeymapLength;
|
1448
|
+
var userKeymap = defaultKeymap.slice(0, actualLength - origLength);
|
1449
|
+
defaultKeymap = defaultKeymap.slice(actualLength - origLength);
|
1450
|
+
if (ctx) {
|
1451
|
+
for (var i = userKeymap.length - 1; i >= 0; i--) {
|
1452
|
+
var mapping = userKeymap[i];
|
1453
|
+
if (ctx !== mapping.context) {
|
1454
|
+
if (mapping.context) {
|
1455
|
+
this._mapCommand(mapping);
|
1456
|
+
} else {
|
1457
|
+
var contexts = ['normal', 'insert', 'visual'];
|
1458
|
+
for (var j in contexts) {
|
1459
|
+
if (contexts[j] !== ctx) {
|
1460
|
+
var newMapping = {};
|
1461
|
+
for (var key in mapping) {
|
1462
|
+
newMapping[key] = mapping[key];
|
1463
|
+
}
|
1464
|
+
newMapping.context = contexts[j];
|
1465
|
+
this._mapCommand(newMapping);
|
1466
|
+
}
|
1467
|
+
}
|
1468
|
+
}
|
1469
|
+
}
|
1470
|
+
}
|
1471
|
+
}
|
1472
|
+
},
|
1395
1473
|
setOption: setOption,
|
1396
1474
|
getOption: getOption,
|
1397
1475
|
defineOption: defineOption,
|
@@ -1504,7 +1582,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1504
1582
|
if (vim.insertMode) { command = handleKeyInsertMode(); }
|
1505
1583
|
else { command = handleKeyNonInsertMode(); }
|
1506
1584
|
if (command === false) {
|
1507
|
-
return undefined;
|
1585
|
+
return undefined; //ace_patch
|
1508
1586
|
} else if (command === true) {
|
1509
1587
|
return function() { return true; };
|
1510
1588
|
} else {
|
@@ -1742,7 +1820,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1742
1820
|
}
|
1743
1821
|
if (bestMatch.keys.slice(-11) == '<character>') {
|
1744
1822
|
var character = lastChar(keys);
|
1745
|
-
if (/<C-.>/.test(character)) return {type: 'none'};
|
1823
|
+
if (/<C-.>/.test(character) || !character) return {type: 'none'}; //ace_patch
|
1746
1824
|
inputState.selectedCharacter = character;
|
1747
1825
|
}
|
1748
1826
|
return {type: 'full', command: bestMatch};
|
@@ -1792,6 +1870,10 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1792
1870
|
}
|
1793
1871
|
inputState.operator = command.operator;
|
1794
1872
|
inputState.operatorArgs = copyArgs(command.operatorArgs);
|
1873
|
+
if (command.exitVisualBlock) {
|
1874
|
+
vim.visualBlock = false;
|
1875
|
+
updateCmSelection(cm);
|
1876
|
+
}
|
1795
1877
|
if (vim.visualMode) {
|
1796
1878
|
this.evalInput(cm, vim);
|
1797
1879
|
}
|
@@ -2183,6 +2265,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2183
2265
|
vim.lastEditActionCommand = actionCommand;
|
2184
2266
|
macroModeState.lastInsertModeChanges.changes = [];
|
2185
2267
|
macroModeState.lastInsertModeChanges.expectCursorActivityForChange = false;
|
2268
|
+
macroModeState.lastInsertModeChanges.visualBlock = vim.visualBlock ? vim.sel.head.line - vim.sel.anchor.line : 0;
|
2186
2269
|
}
|
2187
2270
|
};
|
2188
2271
|
var motions = {
|
@@ -2294,7 +2377,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2294
2377
|
if (line < first && cur.line == first){
|
2295
2378
|
return this.moveToStartOfLine(cm, head, motionArgs, vim);
|
2296
2379
|
}else if (line > last && cur.line == last){
|
2297
|
-
return this.moveToEol(cm, head, motionArgs, vim);
|
2380
|
+
return this.moveToEol(cm, head, motionArgs, vim, true);
|
2298
2381
|
}
|
2299
2382
|
var fold = cm.ace.session.getFoldLine(line);
|
2300
2383
|
if (fold) {
|
@@ -2349,6 +2432,10 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2349
2432
|
var dir = motionArgs.forward ? 1 : -1;
|
2350
2433
|
return findParagraph(cm, head, motionArgs.repeat, dir);
|
2351
2434
|
},
|
2435
|
+
moveBySentence: function(cm, head, motionArgs) {
|
2436
|
+
var dir = motionArgs.forward ? 1 : -1;
|
2437
|
+
return findSentence(cm, head, motionArgs.repeat, dir);
|
2438
|
+
},
|
2352
2439
|
moveByScroll: function(cm, head, motionArgs, vim) {
|
2353
2440
|
var scrollbox = cm.getScrollInfo();
|
2354
2441
|
var curEnd = null;
|
@@ -2397,13 +2484,15 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2397
2484
|
vim.lastHSPos = cm.charCoords(head,'div').left;
|
2398
2485
|
return moveToColumn(cm, repeat);
|
2399
2486
|
},
|
2400
|
-
moveToEol: function(cm, head, motionArgs, vim) {
|
2487
|
+
moveToEol: function(cm, head, motionArgs, vim, keepHPos) {
|
2401
2488
|
var cur = head;
|
2402
|
-
vim.lastHPos = Infinity;
|
2403
2489
|
var retval= Pos(cur.line + motionArgs.repeat - 1, Infinity);
|
2404
2490
|
var end=cm.clipPos(retval);
|
2405
2491
|
end.ch--;
|
2406
|
-
|
2492
|
+
if (!keepHPos) {
|
2493
|
+
vim.lastHPos = Infinity;
|
2494
|
+
vim.lastHSPos = cm.charCoords(end,'div').left;
|
2495
|
+
}
|
2407
2496
|
return retval;
|
2408
2497
|
},
|
2409
2498
|
moveToFirstNonWhiteSpaceCharacter: function(cm, head) {
|
@@ -2417,17 +2506,18 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2417
2506
|
var ch = cursor.ch;
|
2418
2507
|
var lineText = cm.getLine(line);
|
2419
2508
|
var symbol;
|
2420
|
-
|
2421
|
-
symbol = lineText.charAt(ch
|
2509
|
+
for (; ch < lineText.length; ch++) {
|
2510
|
+
symbol = lineText.charAt(ch);
|
2422
2511
|
if (symbol && isMatchableSymbol(symbol)) {
|
2423
|
-
var style = cm.getTokenTypeAt(Pos(line, ch));
|
2512
|
+
var style = cm.getTokenTypeAt(Pos(line, ch + 1));
|
2424
2513
|
if (style !== "string" && style !== "comment") {
|
2425
2514
|
break;
|
2426
2515
|
}
|
2427
2516
|
}
|
2428
|
-
}
|
2429
|
-
if (
|
2430
|
-
var
|
2517
|
+
}
|
2518
|
+
if (ch < lineText.length) {
|
2519
|
+
var re = /[<>]/.test(lineText[ch]) ? /[(){}[\]<>]/ : /[(){}[\]]/;
|
2520
|
+
var matched = cm.findMatchingBracket(Pos(line, ch+1), {bracketRegex: re});
|
2431
2521
|
return matched.to;
|
2432
2522
|
} else {
|
2433
2523
|
return cursor;
|
@@ -2523,10 +2613,9 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2523
2613
|
change: function(cm, args, ranges) {
|
2524
2614
|
var finalHead, text;
|
2525
2615
|
var vim = cm.state.vim;
|
2526
|
-
|
2616
|
+
var anchor = ranges[0].anchor,
|
2617
|
+
head = ranges[0].head;
|
2527
2618
|
if (!vim.visualMode) {
|
2528
|
-
var anchor = ranges[0].anchor,
|
2529
|
-
head = ranges[0].head;
|
2530
2619
|
text = cm.getRange(anchor, head);
|
2531
2620
|
var lastState = vim.lastEditInputState || {};
|
2532
2621
|
if (lastState.motion == "moveByWords" && !isWhiteSpaceString(text)) {
|
@@ -2551,6 +2640,13 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2551
2640
|
anchor.ch = Number.MAX_VALUE;
|
2552
2641
|
}
|
2553
2642
|
finalHead = anchor;
|
2643
|
+
} else if (args.fullLine) {
|
2644
|
+
head.ch = Number.MAX_VALUE;
|
2645
|
+
head.line--;
|
2646
|
+
cm.setSelection(anchor, head)
|
2647
|
+
text = cm.getSelection();
|
2648
|
+
cm.replaceSelections("");
|
2649
|
+
finalHead = anchor
|
2554
2650
|
} else {
|
2555
2651
|
text = cm.getSelection();
|
2556
2652
|
var replacement = fillArray('', ranges.length);
|
@@ -2613,6 +2709,10 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2613
2709
|
}
|
2614
2710
|
return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor);
|
2615
2711
|
},
|
2712
|
+
indentAuto: function(cm, _args, ranges) {
|
2713
|
+
cm.execCommand("indentAuto");
|
2714
|
+
return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor);
|
2715
|
+
},
|
2616
2716
|
changeCase: function(cm, args, ranges, oldAnchor, newHead) {
|
2617
2717
|
var selections = cm.getSelections();
|
2618
2718
|
var swapped = [];
|
@@ -2720,9 +2820,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2720
2820
|
switch (actionArgs.position) {
|
2721
2821
|
case 'center': y = y - (height / 2) + lineHeight;
|
2722
2822
|
break;
|
2723
|
-
case 'bottom': y = y - height + lineHeight
|
2724
|
-
break;
|
2725
|
-
case 'top': y = y + lineHeight*0.4;
|
2823
|
+
case 'bottom': y = y - height + lineHeight;
|
2726
2824
|
break;
|
2727
2825
|
}
|
2728
2826
|
cm.scrollTo(null, y);
|
@@ -2733,6 +2831,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2733
2831
|
var macroModeState = vimGlobalState.macroModeState;
|
2734
2832
|
if (registerName == '@') {
|
2735
2833
|
registerName = macroModeState.latestRegister;
|
2834
|
+
} else {
|
2835
|
+
macroModeState.latestRegister = registerName;
|
2736
2836
|
}
|
2737
2837
|
while(repeat--){
|
2738
2838
|
executeMacroRegister(cm, vim, macroModeState, registerName);
|
@@ -2771,6 +2871,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2771
2871
|
} else if (insertAt == 'firstNonBlank') {
|
2772
2872
|
head = motions.moveToFirstNonWhiteSpaceCharacter(cm, head);
|
2773
2873
|
} else if (insertAt == 'startOfSelectedArea') {
|
2874
|
+
if (!vim.visualMode)
|
2875
|
+
return;
|
2774
2876
|
if (!vim.visualBlock) {
|
2775
2877
|
if (sel.head.line < sel.anchor.line) {
|
2776
2878
|
head = sel.head;
|
@@ -2784,6 +2886,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2784
2886
|
height = Math.abs(sel.head.line - sel.anchor.line) + 1;
|
2785
2887
|
}
|
2786
2888
|
} else if (insertAt == 'endOfSelectedArea') {
|
2889
|
+
if (!vim.visualMode)
|
2890
|
+
return;
|
2787
2891
|
if (!vim.visualBlock) {
|
2788
2892
|
if (sel.head.line >= sel.anchor.line) {
|
2789
2893
|
head = offsetCursor(sel.head, 0, 1);
|
@@ -2965,7 +3069,17 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2965
3069
|
}
|
2966
3070
|
var linewise = register.linewise;
|
2967
3071
|
var blockwise = register.blockwise;
|
2968
|
-
if (
|
3072
|
+
if (blockwise) {
|
3073
|
+
text = text.split('\n');
|
3074
|
+
if (linewise) {
|
3075
|
+
text.pop();
|
3076
|
+
}
|
3077
|
+
for (var i = 0; i < text.length; i++) {
|
3078
|
+
text[i] = (text[i] == '') ? ' ' : text[i];
|
3079
|
+
}
|
3080
|
+
cur.ch += actionArgs.after ? 1 : 0;
|
3081
|
+
cur.ch = Math.min(lineLength(cm, cur.line), cur.ch);
|
3082
|
+
} else if (linewise) {
|
2969
3083
|
if(vim.visualMode) {
|
2970
3084
|
text = vim.visualLine ? text.slice(0, -1) : '\n' + text.slice(0, text.length - 1) + '\n';
|
2971
3085
|
} else if (actionArgs.after) {
|
@@ -2975,12 +3089,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2975
3089
|
cur.ch = 0;
|
2976
3090
|
}
|
2977
3091
|
} else {
|
2978
|
-
if (blockwise) {
|
2979
|
-
text = text.split('\n');
|
2980
|
-
for (var i = 0; i < text.length; i++) {
|
2981
|
-
text[i] = (text[i] == '') ? ' ' : text[i];
|
2982
|
-
}
|
2983
|
-
}
|
2984
3092
|
cur.ch += actionArgs.after ? 1 : 0;
|
2985
3093
|
}
|
2986
3094
|
var curPosFinal;
|
@@ -3196,12 +3304,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3196
3304
|
}
|
3197
3305
|
return Pos(cur.line + offsetLine, cur.ch + offsetCh);
|
3198
3306
|
}
|
3199
|
-
function getOffset(anchor, head) {
|
3200
|
-
return {
|
3201
|
-
line: head.line - anchor.line,
|
3202
|
-
ch: head.line - anchor.line
|
3203
|
-
};
|
3204
|
-
}
|
3205
3307
|
function commandMatches(keys, keyMap, context, inputState) {
|
3206
3308
|
var match, partial = [], full = [];
|
3207
3309
|
for (var i = 0; i < keyMap.length; i++) {
|
@@ -3914,6 +4016,142 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3914
4016
|
start = new Pos(i, 0);
|
3915
4017
|
return { start: start, end: end };
|
3916
4018
|
}
|
4019
|
+
|
4020
|
+
function findSentence(cm, cur, repeat, dir) {
|
4021
|
+
function nextChar(cm, idx) {
|
4022
|
+
if (idx.pos + idx.dir < 0 || idx.pos + idx.dir >= idx.line.length) {
|
4023
|
+
idx.ln += idx.dir;
|
4024
|
+
if (!isLine(cm, idx.ln)) {
|
4025
|
+
idx.line = null;
|
4026
|
+
idx.ln = null;
|
4027
|
+
idx.pos = null;
|
4028
|
+
return;
|
4029
|
+
}
|
4030
|
+
idx.line = cm.getLine(idx.ln);
|
4031
|
+
idx.pos = (idx.dir > 0) ? 0 : idx.line.length - 1;
|
4032
|
+
}
|
4033
|
+
else {
|
4034
|
+
idx.pos += idx.dir;
|
4035
|
+
}
|
4036
|
+
}
|
4037
|
+
function forward(cm, ln, pos, dir) {
|
4038
|
+
var line = cm.getLine(ln);
|
4039
|
+
var stop = (line === "");
|
4040
|
+
|
4041
|
+
var curr = {
|
4042
|
+
line: line,
|
4043
|
+
ln: ln,
|
4044
|
+
pos: pos,
|
4045
|
+
dir: dir,
|
4046
|
+
}
|
4047
|
+
|
4048
|
+
var last_valid = {
|
4049
|
+
ln: curr.ln,
|
4050
|
+
pos: curr.pos,
|
4051
|
+
}
|
4052
|
+
|
4053
|
+
var skip_empty_lines = (curr.line === "");
|
4054
|
+
nextChar(cm, curr);
|
4055
|
+
|
4056
|
+
while (curr.line !== null) {
|
4057
|
+
last_valid.ln = curr.ln;
|
4058
|
+
last_valid.pos = curr.pos;
|
4059
|
+
|
4060
|
+
if (curr.line === "" && !skip_empty_lines) {
|
4061
|
+
return { ln: curr.ln, pos: curr.pos, };
|
4062
|
+
}
|
4063
|
+
else if (stop && curr.line !== "" && !isWhiteSpaceString(curr.line[curr.pos])) {
|
4064
|
+
return { ln: curr.ln, pos: curr.pos, };
|
4065
|
+
}
|
4066
|
+
else if (isEndOfSentenceSymbol(curr.line[curr.pos])
|
4067
|
+
&& !stop
|
4068
|
+
&& (curr.pos === curr.line.length - 1
|
4069
|
+
|| isWhiteSpaceString(curr.line[curr.pos + 1]))) {
|
4070
|
+
stop = true;
|
4071
|
+
}
|
4072
|
+
|
4073
|
+
nextChar(cm, curr);
|
4074
|
+
}
|
4075
|
+
var line = cm.getLine(last_valid.ln);
|
4076
|
+
last_valid.pos = 0;
|
4077
|
+
for(var i = line.length - 1; i >= 0; --i) {
|
4078
|
+
if (!isWhiteSpaceString(line[i])) {
|
4079
|
+
last_valid.pos = i;
|
4080
|
+
break;
|
4081
|
+
}
|
4082
|
+
}
|
4083
|
+
|
4084
|
+
return last_valid;
|
4085
|
+
|
4086
|
+
}
|
4087
|
+
function reverse(cm, ln, pos, dir) {
|
4088
|
+
var line = cm.getLine(ln);
|
4089
|
+
|
4090
|
+
var curr = {
|
4091
|
+
line: line,
|
4092
|
+
ln: ln,
|
4093
|
+
pos: pos,
|
4094
|
+
dir: dir,
|
4095
|
+
}
|
4096
|
+
|
4097
|
+
var last_valid = {
|
4098
|
+
ln: curr.ln,
|
4099
|
+
pos: null,
|
4100
|
+
};
|
4101
|
+
|
4102
|
+
var skip_empty_lines = (curr.line === "");
|
4103
|
+
nextChar(cm, curr);
|
4104
|
+
|
4105
|
+
while (curr.line !== null) {
|
4106
|
+
|
4107
|
+
if (curr.line === "" && !skip_empty_lines) {
|
4108
|
+
if (last_valid.pos !== null) {
|
4109
|
+
return last_valid;
|
4110
|
+
}
|
4111
|
+
else {
|
4112
|
+
return { ln: curr.ln, pos: curr.pos };
|
4113
|
+
}
|
4114
|
+
}
|
4115
|
+
else if (isEndOfSentenceSymbol(curr.line[curr.pos])
|
4116
|
+
&& last_valid.pos !== null
|
4117
|
+
&& !(curr.ln === last_valid.ln && curr.pos + 1 === last_valid.pos)) {
|
4118
|
+
return last_valid;
|
4119
|
+
}
|
4120
|
+
else if (curr.line !== "" && !isWhiteSpaceString(curr.line[curr.pos])) {
|
4121
|
+
skip_empty_lines = false;
|
4122
|
+
last_valid = { ln: curr.ln, pos: curr.pos }
|
4123
|
+
}
|
4124
|
+
|
4125
|
+
nextChar(cm, curr);
|
4126
|
+
}
|
4127
|
+
var line = cm.getLine(last_valid.ln);
|
4128
|
+
last_valid.pos = 0;
|
4129
|
+
for(var i = 0; i < line.length; ++i) {
|
4130
|
+
if (!isWhiteSpaceString(line[i])) {
|
4131
|
+
last_valid.pos = i;
|
4132
|
+
break;
|
4133
|
+
}
|
4134
|
+
}
|
4135
|
+
return last_valid;
|
4136
|
+
}
|
4137
|
+
|
4138
|
+
var curr_index = {
|
4139
|
+
ln: cur.line,
|
4140
|
+
pos: cur.ch,
|
4141
|
+
};
|
4142
|
+
|
4143
|
+
while (repeat > 0) {
|
4144
|
+
if (dir < 0) {
|
4145
|
+
curr_index = reverse(cm, curr_index.ln, curr_index.pos, dir);
|
4146
|
+
}
|
4147
|
+
else {
|
4148
|
+
curr_index = forward(cm, curr_index.ln, curr_index.pos, dir);
|
4149
|
+
}
|
4150
|
+
repeat--;
|
4151
|
+
}
|
4152
|
+
|
4153
|
+
return Pos(curr_index.ln, curr_index.pos);
|
4154
|
+
}
|
3917
4155
|
function selectCompanionObject(cm, head, symb, inclusive) {
|
3918
4156
|
var cur = head, start, end;
|
3919
4157
|
|
@@ -3930,8 +4168,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3930
4168
|
var curChar = cm.getLine(cur.line).charAt(cur.ch);
|
3931
4169
|
var offset = curChar === openSym ? 1 : 0;
|
3932
4170
|
|
3933
|
-
start = cm.scanForBracket(Pos(cur.line, cur.ch + offset), -1,
|
3934
|
-
end = cm.scanForBracket(Pos(cur.line, cur.ch + offset), 1,
|
4171
|
+
start = cm.scanForBracket(Pos(cur.line, cur.ch + offset), -1, undefined, {'bracketRegex': bracketRegexp});
|
4172
|
+
end = cm.scanForBracket(Pos(cur.line, cur.ch + offset), 1, undefined, {'bracketRegex': bracketRegexp});
|
3935
4173
|
|
3936
4174
|
if (!start || !end) {
|
3937
4175
|
return { start: cur, end: cur };
|
@@ -4043,11 +4281,10 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4043
4281
|
onClose(prompt(shortText, ''));
|
4044
4282
|
}
|
4045
4283
|
}
|
4046
|
-
|
4047
4284
|
function splitBySlash(argString) {
|
4048
4285
|
return splitBySeparator(argString, '/');
|
4049
4286
|
}
|
4050
|
-
|
4287
|
+
|
4051
4288
|
function findUnescapedSlashes(argString) {
|
4052
4289
|
return findUnescapedSeparators(argString, '/');
|
4053
4290
|
}
|
@@ -5102,13 +5339,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5102
5339
|
defineOption('insertModeEscKeysTimeout', 200, 'number');
|
5103
5340
|
|
5104
5341
|
CodeMirror.keyMap['vim-insert'] = {
|
5105
|
-
'Ctrl-N': 'autocomplete',
|
5106
|
-
'Ctrl-P': 'autocomplete',
|
5107
|
-
'Enter': function(cm) {
|
5108
|
-
var fn = CodeMirror.commands.newlineAndIndentContinueComment ||
|
5109
|
-
CodeMirror.commands.newlineAndIndent;
|
5110
|
-
fn(cm);
|
5111
|
-
},
|
5112
5342
|
fallthrough: ['default'],
|
5113
5343
|
attach: attachVimMap,
|
5114
5344
|
detach: detachVimMap,
|
@@ -5200,10 +5430,12 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5200
5430
|
lastChange.changes = [];
|
5201
5431
|
lastChange.maybeReset = false;
|
5202
5432
|
}
|
5203
|
-
if (
|
5433
|
+
if (text) {
|
5434
|
+
if (cm.state.overwrite && !/\n/.test(text)) {
|
5204
5435
|
lastChange.changes.push([text]);
|
5205
|
-
|
5436
|
+
} else {
|
5206
5437
|
lastChange.changes.push(text);
|
5438
|
+
}
|
5207
5439
|
}
|
5208
5440
|
}
|
5209
5441
|
changeObj = changeObj.next;
|
@@ -5237,7 +5469,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5237
5469
|
}
|
5238
5470
|
vim.fakeCursor = cm.markText(from, to, {className: 'cm-animate-fat-cursor'});
|
5239
5471
|
}
|
5240
|
-
function handleExternalSelection(cm, vim) {
|
5472
|
+
function handleExternalSelection(cm, vim, keepHPos) {
|
5241
5473
|
var anchor = cm.getCursor('anchor');
|
5242
5474
|
var head = cm.getCursor('head');
|
5243
5475
|
if (vim.visualMode && !cm.somethingSelected()) {
|
@@ -5258,7 +5490,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5258
5490
|
};
|
5259
5491
|
updateMark(cm, vim, '<', cursorMin(head, anchor));
|
5260
5492
|
updateMark(cm, vim, '>', cursorMax(head, anchor));
|
5261
|
-
} else if (!vim.insertMode) {
|
5493
|
+
} else if (!vim.insertMode && !keepHPos) {
|
5262
5494
|
vim.lastHPos = cm.getCursor().ch;
|
5263
5495
|
}
|
5264
5496
|
}
|
@@ -5330,17 +5562,14 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5330
5562
|
return true;
|
5331
5563
|
}
|
5332
5564
|
var head = cm.getCursor('head');
|
5333
|
-
var
|
5334
|
-
if (
|
5335
|
-
|
5336
|
-
var lastSel = vim.lastSelection;
|
5337
|
-
var offset = getOffset(lastSel.anchor, lastSel.head);
|
5338
|
-
selectForInsert(cm, head, offset.line + 1);
|
5565
|
+
var visualBlock = vimGlobalState.macroModeState.lastInsertModeChanges.visualBlock;
|
5566
|
+
if (visualBlock) {
|
5567
|
+
selectForInsert(cm, head, visualBlock + 1);
|
5339
5568
|
repeat = cm.listSelections().length;
|
5340
5569
|
cm.setCursor(head);
|
5341
5570
|
}
|
5342
5571
|
for (var i = 0; i < repeat; i++) {
|
5343
|
-
if (
|
5572
|
+
if (visualBlock) {
|
5344
5573
|
cm.setCursor(offsetCursor(head, i, 0));
|
5345
5574
|
}
|
5346
5575
|
for (var j = 0; j < changes.length; j++) {
|
@@ -5357,7 +5586,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5357
5586
|
}
|
5358
5587
|
}
|
5359
5588
|
}
|
5360
|
-
if (
|
5589
|
+
if (visualBlock) {
|
5361
5590
|
cm.setCursor(offsetCursor(head, 0, 1));
|
5362
5591
|
}
|
5363
5592
|
}
|
@@ -5413,15 +5642,17 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5413
5642
|
var isHandled = false;
|
5414
5643
|
var vim = Vim.maybeInitVimState_(cm);
|
5415
5644
|
var visualBlock = vim.visualBlock || vim.wasInVisualBlock;
|
5416
|
-
|
5645
|
+
|
5646
|
+
var wasMultiselect = cm.ace.inMultiSelectMode;
|
5647
|
+
if (vim.wasInVisualBlock && !wasMultiselect) {
|
5417
5648
|
vim.wasInVisualBlock = false;
|
5418
|
-
} else if (
|
5649
|
+
} else if (wasMultiselect && vim.visualBlock) {
|
5419
5650
|
vim.wasInVisualBlock = true;
|
5420
5651
|
}
|
5421
5652
|
|
5422
|
-
if (key == '<Esc>' && !vim.insertMode && !vim.visualMode &&
|
5653
|
+
if (key == '<Esc>' && !vim.insertMode && !vim.visualMode && wasMultiselect) {
|
5423
5654
|
cm.ace.exitMultiSelectMode();
|
5424
|
-
} else if (visualBlock || !
|
5655
|
+
} else if (visualBlock || !wasMultiselect || cm.ace.inVirtualSelectionMode) {
|
5425
5656
|
isHandled = Vim.handleKey(cm, key, origin);
|
5426
5657
|
} else {
|
5427
5658
|
var old = cloneVimState(vim);
|
@@ -5448,8 +5679,9 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5448
5679
|
cm.curOp.cursorActivity = false;
|
5449
5680
|
}, true);
|
5450
5681
|
}
|
5451
|
-
if (isHandled && !vim.visualMode && !vim.insert)
|
5452
|
-
handleExternalSelection(cm, vim);
|
5682
|
+
if (isHandled && !vim.visualMode && !vim.insert && vim.visualMode != cm.somethingSelected()) {
|
5683
|
+
handleExternalSelection(cm, vim, true);
|
5684
|
+
}
|
5453
5685
|
return isHandled;
|
5454
5686
|
}
|
5455
5687
|
exports.CodeMirror = CodeMirror;
|
@@ -5653,8 +5885,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5653
5885
|
exports.handler.defaultKeymap = defaultKeymap;
|
5654
5886
|
exports.handler.actions = actions;
|
5655
5887
|
exports.Vim = Vim;
|
5656
|
-
|
5657
|
-
Vim.map("Y", "yy", "normal");
|
5658
5888
|
}); (function() {
|
5659
5889
|
window.require(["ace/keyboard/vim"], function(m) {
|
5660
5890
|
if (typeof module == "object" && typeof exports == "object" && module) {
|