ace-rails-ap 4.3 → 4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/ace-rails-ap.gemspec +0 -2
- data/lib/ace/rails/version.rb +1 -1
- data/vendor/assets/javascripts/ace/ace.js +659 -1137
- data/vendor/assets/javascripts/ace/ext-beautify.js +5 -2
- data/vendor/assets/javascripts/ace/ext-code_lens.js +238 -0
- data/vendor/assets/javascripts/ace/ext-emmet.js +36 -28
- data/vendor/assets/javascripts/ace/ext-language_tools.js +63 -48
- data/vendor/assets/javascripts/ace/ext-modelist.js +12 -6
- data/vendor/assets/javascripts/ace/ext-options.js +46 -19
- data/vendor/assets/javascripts/ace/ext-prompt.js +57 -38
- data/vendor/assets/javascripts/ace/ext-settings_menu.js +46 -19
- data/vendor/assets/javascripts/ace/ext-spellcheck.js +0 -1
- data/vendor/assets/javascripts/ace/ext-themelist.js +2 -1
- data/vendor/assets/javascripts/ace/keybinding-emacs.js +21 -22
- data/vendor/assets/javascripts/ace/keybinding-sublime.js +2 -5
- data/vendor/assets/javascripts/ace/keybinding-vim.js +45 -9
- data/vendor/assets/javascripts/ace/keybinding-vscode.js +262 -0
- data/vendor/assets/javascripts/ace/mode-abc.js +3 -0
- data/vendor/assets/javascripts/ace/mode-actionscript.js +1 -0
- data/vendor/assets/javascripts/ace/mode-alda.js +311 -0
- data/vendor/assets/javascripts/ace/mode-asl.js +17 -16
- data/vendor/assets/javascripts/ace/mode-c_cpp.js +1 -0
- data/vendor/assets/javascripts/ace/mode-clojure.js +1 -0
- data/vendor/assets/javascripts/ace/mode-coffee.js +1 -0
- data/vendor/assets/javascripts/ace/mode-coldfusion.js +3 -0
- data/vendor/assets/javascripts/ace/mode-csound_document.js +40 -5
- data/vendor/assets/javascripts/ace/mode-csound_orchestra.js +37 -5
- data/vendor/assets/javascripts/ace/mode-csound_score.js +1 -0
- data/vendor/assets/javascripts/ace/mode-css.js +1 -0
- data/vendor/assets/javascripts/ace/mode-curly.js +3 -0
- data/vendor/assets/javascripts/ace/mode-d.js +1 -1
- data/vendor/assets/javascripts/ace/mode-dart.js +2 -0
- data/vendor/assets/javascripts/ace/mode-diff.js +1 -0
- data/vendor/assets/javascripts/ace/mode-django.js +4 -0
- data/vendor/assets/javascripts/ace/mode-dockerfile.js +1 -0
- data/vendor/assets/javascripts/ace/mode-drools.js +1 -0
- data/vendor/assets/javascripts/ace/mode-edifact.js +1 -0
- data/vendor/assets/javascripts/ace/mode-ejs.js +673 -165
- data/vendor/assets/javascripts/ace/mode-erlang.js +1 -0
- data/vendor/assets/javascripts/ace/mode-fsl.js +1 -0
- data/vendor/assets/javascripts/ace/mode-glsl.js +1 -0
- data/vendor/assets/javascripts/ace/mode-gobstones.js +2 -0
- data/vendor/assets/javascripts/ace/mode-graphqlschema.js +1 -0
- data/vendor/assets/javascripts/ace/mode-groovy.js +1 -0
- data/vendor/assets/javascripts/ace/mode-haml.js +419 -104
- data/vendor/assets/javascripts/ace/mode-handlebars.js +3 -0
- data/vendor/assets/javascripts/ace/mode-haskell.js +1 -0
- data/vendor/assets/javascripts/ace/mode-html.js +3 -0
- data/vendor/assets/javascripts/ace/mode-html_elixir.js +3 -0
- data/vendor/assets/javascripts/ace/mode-html_ruby.js +673 -165
- data/vendor/assets/javascripts/ace/mode-io.js +1 -0
- data/vendor/assets/javascripts/ace/mode-java.js +2 -0
- data/vendor/assets/javascripts/ace/mode-javascript.js +1 -0
- data/vendor/assets/javascripts/ace/mode-json.js +3 -0
- data/vendor/assets/javascripts/ace/mode-json5.js +360 -0
- data/vendor/assets/javascripts/ace/mode-jsoniq.js +1 -0
- data/vendor/assets/javascripts/ace/mode-jsp.js +1 -0
- data/vendor/assets/javascripts/ace/mode-kotlin.js +2 -0
- data/vendor/assets/javascripts/ace/mode-liquid.js +4 -0
- data/vendor/assets/javascripts/ace/mode-lsl.js +1 -0
- data/vendor/assets/javascripts/ace/mode-lua.js +1 -0
- data/vendor/assets/javascripts/ace/mode-luapage.js +4 -0
- data/vendor/assets/javascripts/ace/mode-makefile.js +1 -0
- data/vendor/assets/javascripts/ace/mode-markdown.js +5 -0
- data/vendor/assets/javascripts/ace/mode-maze.js +1 -0
- data/vendor/assets/javascripts/ace/mode-mediawiki.js +592 -0
- data/vendor/assets/javascripts/ace/mode-nix.js +1 -0
- data/vendor/assets/javascripts/ace/mode-nsis.js +1 -1
- data/vendor/assets/javascripts/ace/mode-nunjucks.js +2698 -0
- data/vendor/assets/javascripts/ace/mode-perl.js +1 -0
- data/vendor/assets/javascripts/ace/mode-pgsql.js +2 -2
- data/vendor/assets/javascripts/ace/mode-php.js +4 -0
- data/vendor/assets/javascripts/ace/mode-php_laravel_blade.js +4 -0
- data/vendor/assets/javascripts/ace/mode-prisma.js +489 -0
- data/vendor/assets/javascripts/ace/mode-protobuf.js +1 -0
- data/vendor/assets/javascripts/ace/mode-puppet.js +5 -6
- data/vendor/assets/javascripts/ace/mode-python.js +3 -2
- data/vendor/assets/javascripts/ace/mode-qml.js +381 -0
- data/vendor/assets/javascripts/ace/mode-r.js +1 -0
- data/vendor/assets/javascripts/ace/mode-razor.js +4 -0
- data/vendor/assets/javascripts/ace/mode-rhtml.js +3 -0
- data/vendor/assets/javascripts/ace/mode-rst.js +1 -0
- data/vendor/assets/javascripts/ace/mode-ruby.js +670 -165
- data/vendor/assets/javascripts/ace/mode-rust.js +1 -1
- data/vendor/assets/javascripts/ace/mode-scala.js +1 -0
- data/vendor/assets/javascripts/ace/mode-sh.js +1 -0
- data/vendor/assets/javascripts/ace/mode-sjs.js +1 -0
- data/vendor/assets/javascripts/ace/mode-slim.js +708 -110
- data/vendor/assets/javascripts/ace/mode-smarty.js +3 -0
- data/vendor/assets/javascripts/ace/mode-snippets.js +1 -0
- data/vendor/assets/javascripts/ace/mode-soy_template.js +3 -0
- data/vendor/assets/javascripts/ace/mode-sql.js +1 -0
- data/vendor/assets/javascripts/ace/mode-sqlserver.js +2 -1
- data/vendor/assets/javascripts/ace/mode-svg.js +1 -0
- data/vendor/assets/javascripts/ace/mode-swift.js +6 -0
- data/vendor/assets/javascripts/ace/mode-tcl.js +1 -0
- data/vendor/assets/javascripts/ace/mode-terraform.js +10 -7
- data/vendor/assets/javascripts/ace/mode-tex.js +1 -0
- data/vendor/assets/javascripts/ace/mode-textile.js +1 -0
- data/vendor/assets/javascripts/ace/mode-tsx.js +1 -0
- data/vendor/assets/javascripts/ace/mode-twig.js +3 -0
- data/vendor/assets/javascripts/ace/mode-typescript.js +1 -0
- data/vendor/assets/javascripts/ace/mode-vala.js +1 -0
- data/vendor/assets/javascripts/ace/mode-vbscript.js +444 -15
- data/vendor/assets/javascripts/ace/mode-velocity.js +4 -0
- data/vendor/assets/javascripts/ace/mode-vhdl.js +5 -6
- data/vendor/assets/javascripts/ace/mode-visualforce.js +3 -0
- data/vendor/assets/javascripts/ace/mode-wollok.js +2 -0
- data/vendor/assets/javascripts/ace/mode-xquery.js +1 -0
- data/vendor/assets/javascripts/ace/snippets/abap.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/ada.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/alda.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/apache_conf.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/apex.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/applescript.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/aql.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/asciidoc.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/asl.js +1 -5
- data/vendor/assets/javascripts/ace/snippets/assembly_x86.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/autohotkey.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/batchfile.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/c9search.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/cirru.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/cobol.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/coldfusion.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/crystal.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/csharp.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/csound_score.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/csp.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/curly.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/d.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/dockerfile.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/dot.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/eiffel.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/ejs.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/elixir.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/elm.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/forth.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/fortran.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/fsharp.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/ftl.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/gcode.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/gherkin.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/gitignore.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/glsl.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/golang.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/groovy.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/handlebars.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/haskell_cabal.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/haxe.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/hjson.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/html_elixir.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/html_ruby.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/ini.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/jack.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/jade.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/json.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/json5.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/jssm.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/jsx.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/julia.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/kotlin.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/latex.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/less.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/lisp.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/livescript.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/logiql.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/logtalk.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/luapage.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/lucene.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/mask.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/matlab.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/mediawiki.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/mel.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/mixal.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/mushcode.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/mysql.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/nginx.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/nim.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/nix.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/nsis.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/nunjucks.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/objectivec.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/ocaml.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/pascal.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/perl6.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/pgsql.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/php_laravel_blade.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/pig.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/plain_text.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/powershell.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/praat.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/prisma.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/prolog.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/properties.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/protobuf.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/puppet.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/qml.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/rdoc.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/red.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/redshift.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/rhtml.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/rust.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/sass.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/scad.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/scala.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/scheme.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/scss.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/sjs.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/slim.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/smarty.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/soy_template.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/space.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/sparql.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/stylus.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/svg.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/swift.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/terraform.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/text.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/toml.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/tsx.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/turtle.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/twig.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/typescript.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/vbscript.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/verilog.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/vhdl.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/visualforce.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/xml.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/yaml.js +1 -6
- data/vendor/assets/javascripts/ace/snippets/zeek.js +1 -6
- data/vendor/assets/javascripts/ace/theme-ambiance.js +3 -2
- data/vendor/assets/javascripts/ace/theme-chaos.js +1 -1
- data/vendor/assets/javascripts/ace/theme-nord_dark.js +102 -0
- data/vendor/assets/javascripts/ace/worker-base.js +1421 -0
- data/vendor/assets/javascripts/ace/worker-coffee.js +17 -703
- data/vendor/assets/javascripts/ace/worker-css.js +17 -703
- data/vendor/assets/javascripts/ace/worker-html.js +17 -703
- data/vendor/assets/javascripts/ace/worker-javascript.js +7833 -5352
- data/vendor/assets/javascripts/ace/worker-json.js +17 -703
- data/vendor/assets/javascripts/ace/worker-lua.js +17 -703
- data/vendor/assets/javascripts/ace/worker-php.js +857 -1475
- data/vendor/assets/javascripts/ace/worker-xml.js +26 -707
- data/vendor/assets/javascripts/ace/worker-xquery.js +17 -703
- metadata +18 -4
- data/vendor/assets/javascripts/ace/mode-bro.js +0 -334
- data/vendor/assets/javascripts/ace/snippets/bro.js +0 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a341bb92a730f00a283479cace89e53c27f20b02d97f4fba54b0c95a62805355
|
|
4
|
+
data.tar.gz: 518d912707a42bc388f5740b7dd2a5b4499927231723e767507943f8c4968094
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: acdd2f461c5eb9422473d9ad3cbc49aba9a818795a4577142a34c6494b46c0f6e4e40151036204b5fa2e130ca78cb6afe45a4bfeed4e72efa68c054ff7c10179
|
|
7
|
+
data.tar.gz: 9326218f4c54749b5a11b08760bb30b6c552ec14e2d0c6b6698beca186121a3c296a221d6832268c41eb9139662ab35d9dc386cdafa59261ced8a27015bf6139
|
data/Gemfile
CHANGED
data/ace-rails-ap.gemspec
CHANGED
|
@@ -13,8 +13,6 @@ Gem::Specification.new do |s|
|
|
|
13
13
|
s.description = %q{The Ajax.org Cloud9 Editor (Ace) for the Rails 3.1 asset pipeline.}
|
|
14
14
|
s.license = "MIT"
|
|
15
15
|
|
|
16
|
-
s.rubyforge_project = "ace-rails-ap"
|
|
17
|
-
|
|
18
16
|
s.files = `git ls-files`.split("\n")
|
|
19
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
20
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
data/lib/ace/rails/version.rb
CHANGED
|
@@ -173,781 +173,8 @@ exportAce(ACE_NAMESPACE);
|
|
|
173
173
|
|
|
174
174
|
})();
|
|
175
175
|
|
|
176
|
-
define("ace/lib/
|
|
176
|
+
define("ace/lib/fixoldbrowsers",["require","exports","module"], function(require, exports, module) {
|
|
177
177
|
"use strict";
|
|
178
|
-
|
|
179
|
-
var real = {
|
|
180
|
-
exec: RegExp.prototype.exec,
|
|
181
|
-
test: RegExp.prototype.test,
|
|
182
|
-
match: String.prototype.match,
|
|
183
|
-
replace: String.prototype.replace,
|
|
184
|
-
split: String.prototype.split
|
|
185
|
-
},
|
|
186
|
-
compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
|
|
187
|
-
compliantLastIndexIncrement = function () {
|
|
188
|
-
var x = /^/g;
|
|
189
|
-
real.test.call(x, "");
|
|
190
|
-
return !x.lastIndex;
|
|
191
|
-
}();
|
|
192
|
-
|
|
193
|
-
if (compliantLastIndexIncrement && compliantExecNpcg)
|
|
194
|
-
return;
|
|
195
|
-
RegExp.prototype.exec = function (str) {
|
|
196
|
-
var match = real.exec.apply(this, arguments),
|
|
197
|
-
name, r2;
|
|
198
|
-
if ( typeof(str) == 'string' && match) {
|
|
199
|
-
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
|
200
|
-
r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));
|
|
201
|
-
real.replace.call(str.slice(match.index), r2, function () {
|
|
202
|
-
for (var i = 1; i < arguments.length - 2; i++) {
|
|
203
|
-
if (arguments[i] === undefined)
|
|
204
|
-
match[i] = undefined;
|
|
205
|
-
}
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
if (this._xregexp && this._xregexp.captureNames) {
|
|
209
|
-
for (var i = 1; i < match.length; i++) {
|
|
210
|
-
name = this._xregexp.captureNames[i - 1];
|
|
211
|
-
if (name)
|
|
212
|
-
match[name] = match[i];
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
|
|
216
|
-
this.lastIndex--;
|
|
217
|
-
}
|
|
218
|
-
return match;
|
|
219
|
-
};
|
|
220
|
-
if (!compliantLastIndexIncrement) {
|
|
221
|
-
RegExp.prototype.test = function (str) {
|
|
222
|
-
var match = real.exec.call(this, str);
|
|
223
|
-
if (match && this.global && !match[0].length && (this.lastIndex > match.index))
|
|
224
|
-
this.lastIndex--;
|
|
225
|
-
return !!match;
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
function getNativeFlags (regex) {
|
|
230
|
-
return (regex.global ? "g" : "") +
|
|
231
|
-
(regex.ignoreCase ? "i" : "") +
|
|
232
|
-
(regex.multiline ? "m" : "") +
|
|
233
|
-
(regex.extended ? "x" : "") + // Proposed for ES4; included in AS3
|
|
234
|
-
(regex.sticky ? "y" : "");
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
function indexOf (array, item, from) {
|
|
238
|
-
if (Array.prototype.indexOf) // Use the native array method if available
|
|
239
|
-
return array.indexOf(item, from);
|
|
240
|
-
for (var i = from || 0; i < array.length; i++) {
|
|
241
|
-
if (array[i] === item)
|
|
242
|
-
return i;
|
|
243
|
-
}
|
|
244
|
-
return -1;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
define("ace/lib/es5-shim",["require","exports","module"], function(require, exports, module) {
|
|
250
|
-
|
|
251
|
-
function Empty() {}
|
|
252
|
-
|
|
253
|
-
if (!Function.prototype.bind) {
|
|
254
|
-
Function.prototype.bind = function bind(that) { // .length is 1
|
|
255
|
-
var target = this;
|
|
256
|
-
if (typeof target != "function") {
|
|
257
|
-
throw new TypeError("Function.prototype.bind called on incompatible " + target);
|
|
258
|
-
}
|
|
259
|
-
var args = slice.call(arguments, 1); // for normal call
|
|
260
|
-
var bound = function () {
|
|
261
|
-
|
|
262
|
-
if (this instanceof bound) {
|
|
263
|
-
|
|
264
|
-
var result = target.apply(
|
|
265
|
-
this,
|
|
266
|
-
args.concat(slice.call(arguments))
|
|
267
|
-
);
|
|
268
|
-
if (Object(result) === result) {
|
|
269
|
-
return result;
|
|
270
|
-
}
|
|
271
|
-
return this;
|
|
272
|
-
|
|
273
|
-
} else {
|
|
274
|
-
return target.apply(
|
|
275
|
-
that,
|
|
276
|
-
args.concat(slice.call(arguments))
|
|
277
|
-
);
|
|
278
|
-
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
};
|
|
282
|
-
if(target.prototype) {
|
|
283
|
-
Empty.prototype = target.prototype;
|
|
284
|
-
bound.prototype = new Empty();
|
|
285
|
-
Empty.prototype = null;
|
|
286
|
-
}
|
|
287
|
-
return bound;
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
var call = Function.prototype.call;
|
|
291
|
-
var prototypeOfArray = Array.prototype;
|
|
292
|
-
var prototypeOfObject = Object.prototype;
|
|
293
|
-
var slice = prototypeOfArray.slice;
|
|
294
|
-
var _toString = call.bind(prototypeOfObject.toString);
|
|
295
|
-
var owns = call.bind(prototypeOfObject.hasOwnProperty);
|
|
296
|
-
var defineGetter;
|
|
297
|
-
var defineSetter;
|
|
298
|
-
var lookupGetter;
|
|
299
|
-
var lookupSetter;
|
|
300
|
-
var supportsAccessors;
|
|
301
|
-
if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
|
|
302
|
-
defineGetter = call.bind(prototypeOfObject.__defineGetter__);
|
|
303
|
-
defineSetter = call.bind(prototypeOfObject.__defineSetter__);
|
|
304
|
-
lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
|
|
305
|
-
lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
|
|
306
|
-
}
|
|
307
|
-
if ([1,2].splice(0).length != 2) {
|
|
308
|
-
if(function() { // test IE < 9 to splice bug - see issue #138
|
|
309
|
-
function makeArray(l) {
|
|
310
|
-
var a = new Array(l+2);
|
|
311
|
-
a[0] = a[1] = 0;
|
|
312
|
-
return a;
|
|
313
|
-
}
|
|
314
|
-
var array = [], lengthBefore;
|
|
315
|
-
|
|
316
|
-
array.splice.apply(array, makeArray(20));
|
|
317
|
-
array.splice.apply(array, makeArray(26));
|
|
318
|
-
|
|
319
|
-
lengthBefore = array.length; //46
|
|
320
|
-
array.splice(5, 0, "XXX"); // add one element
|
|
321
|
-
|
|
322
|
-
lengthBefore + 1 == array.length
|
|
323
|
-
|
|
324
|
-
if (lengthBefore + 1 == array.length) {
|
|
325
|
-
return true;// has right splice implementation without bugs
|
|
326
|
-
}
|
|
327
|
-
}()) {//IE 6/7
|
|
328
|
-
var array_splice = Array.prototype.splice;
|
|
329
|
-
Array.prototype.splice = function(start, deleteCount) {
|
|
330
|
-
if (!arguments.length) {
|
|
331
|
-
return [];
|
|
332
|
-
} else {
|
|
333
|
-
return array_splice.apply(this, [
|
|
334
|
-
start === void 0 ? 0 : start,
|
|
335
|
-
deleteCount === void 0 ? (this.length - start) : deleteCount
|
|
336
|
-
].concat(slice.call(arguments, 2)))
|
|
337
|
-
}
|
|
338
|
-
};
|
|
339
|
-
} else {//IE8
|
|
340
|
-
Array.prototype.splice = function(pos, removeCount){
|
|
341
|
-
var length = this.length;
|
|
342
|
-
if (pos > 0) {
|
|
343
|
-
if (pos > length)
|
|
344
|
-
pos = length;
|
|
345
|
-
} else if (pos == void 0) {
|
|
346
|
-
pos = 0;
|
|
347
|
-
} else if (pos < 0) {
|
|
348
|
-
pos = Math.max(length + pos, 0);
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
if (!(pos+removeCount < length))
|
|
352
|
-
removeCount = length - pos;
|
|
353
|
-
|
|
354
|
-
var removed = this.slice(pos, pos+removeCount);
|
|
355
|
-
var insert = slice.call(arguments, 2);
|
|
356
|
-
var add = insert.length;
|
|
357
|
-
if (pos === length) {
|
|
358
|
-
if (add) {
|
|
359
|
-
this.push.apply(this, insert);
|
|
360
|
-
}
|
|
361
|
-
} else {
|
|
362
|
-
var remove = Math.min(removeCount, length - pos);
|
|
363
|
-
var tailOldPos = pos + remove;
|
|
364
|
-
var tailNewPos = tailOldPos + add - remove;
|
|
365
|
-
var tailCount = length - tailOldPos;
|
|
366
|
-
var lengthAfterRemove = length - remove;
|
|
367
|
-
|
|
368
|
-
if (tailNewPos < tailOldPos) { // case A
|
|
369
|
-
for (var i = 0; i < tailCount; ++i) {
|
|
370
|
-
this[tailNewPos+i] = this[tailOldPos+i];
|
|
371
|
-
}
|
|
372
|
-
} else if (tailNewPos > tailOldPos) { // case B
|
|
373
|
-
for (i = tailCount; i--; ) {
|
|
374
|
-
this[tailNewPos+i] = this[tailOldPos+i];
|
|
375
|
-
}
|
|
376
|
-
} // else, add == remove (nothing to do)
|
|
377
|
-
|
|
378
|
-
if (add && pos === lengthAfterRemove) {
|
|
379
|
-
this.length = lengthAfterRemove; // truncate array
|
|
380
|
-
this.push.apply(this, insert);
|
|
381
|
-
} else {
|
|
382
|
-
this.length = lengthAfterRemove + add; // reserves space
|
|
383
|
-
for (i = 0; i < add; ++i) {
|
|
384
|
-
this[pos+i] = insert[i];
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
return removed;
|
|
389
|
-
};
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
if (!Array.isArray) {
|
|
393
|
-
Array.isArray = function isArray(obj) {
|
|
394
|
-
return _toString(obj) == "[object Array]";
|
|
395
|
-
};
|
|
396
|
-
}
|
|
397
|
-
var boxedString = Object("a"),
|
|
398
|
-
splitString = boxedString[0] != "a" || !(0 in boxedString);
|
|
399
|
-
|
|
400
|
-
if (!Array.prototype.forEach) {
|
|
401
|
-
Array.prototype.forEach = function forEach(fun /*, thisp*/) {
|
|
402
|
-
var object = toObject(this),
|
|
403
|
-
self = splitString && _toString(this) == "[object String]" ?
|
|
404
|
-
this.split("") :
|
|
405
|
-
object,
|
|
406
|
-
thisp = arguments[1],
|
|
407
|
-
i = -1,
|
|
408
|
-
length = self.length >>> 0;
|
|
409
|
-
if (_toString(fun) != "[object Function]") {
|
|
410
|
-
throw new TypeError(); // TODO message
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
while (++i < length) {
|
|
414
|
-
if (i in self) {
|
|
415
|
-
fun.call(thisp, self[i], i, object);
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
};
|
|
419
|
-
}
|
|
420
|
-
if (!Array.prototype.map) {
|
|
421
|
-
Array.prototype.map = function map(fun /*, thisp*/) {
|
|
422
|
-
var object = toObject(this),
|
|
423
|
-
self = splitString && _toString(this) == "[object String]" ?
|
|
424
|
-
this.split("") :
|
|
425
|
-
object,
|
|
426
|
-
length = self.length >>> 0,
|
|
427
|
-
result = Array(length),
|
|
428
|
-
thisp = arguments[1];
|
|
429
|
-
if (_toString(fun) != "[object Function]") {
|
|
430
|
-
throw new TypeError(fun + " is not a function");
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
for (var i = 0; i < length; i++) {
|
|
434
|
-
if (i in self)
|
|
435
|
-
result[i] = fun.call(thisp, self[i], i, object);
|
|
436
|
-
}
|
|
437
|
-
return result;
|
|
438
|
-
};
|
|
439
|
-
}
|
|
440
|
-
if (!Array.prototype.filter) {
|
|
441
|
-
Array.prototype.filter = function filter(fun /*, thisp */) {
|
|
442
|
-
var object = toObject(this),
|
|
443
|
-
self = splitString && _toString(this) == "[object String]" ?
|
|
444
|
-
this.split("") :
|
|
445
|
-
object,
|
|
446
|
-
length = self.length >>> 0,
|
|
447
|
-
result = [],
|
|
448
|
-
value,
|
|
449
|
-
thisp = arguments[1];
|
|
450
|
-
if (_toString(fun) != "[object Function]") {
|
|
451
|
-
throw new TypeError(fun + " is not a function");
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
for (var i = 0; i < length; i++) {
|
|
455
|
-
if (i in self) {
|
|
456
|
-
value = self[i];
|
|
457
|
-
if (fun.call(thisp, value, i, object)) {
|
|
458
|
-
result.push(value);
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
return result;
|
|
463
|
-
};
|
|
464
|
-
}
|
|
465
|
-
if (!Array.prototype.every) {
|
|
466
|
-
Array.prototype.every = function every(fun /*, thisp */) {
|
|
467
|
-
var object = toObject(this),
|
|
468
|
-
self = splitString && _toString(this) == "[object String]" ?
|
|
469
|
-
this.split("") :
|
|
470
|
-
object,
|
|
471
|
-
length = self.length >>> 0,
|
|
472
|
-
thisp = arguments[1];
|
|
473
|
-
if (_toString(fun) != "[object Function]") {
|
|
474
|
-
throw new TypeError(fun + " is not a function");
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
for (var i = 0; i < length; i++) {
|
|
478
|
-
if (i in self && !fun.call(thisp, self[i], i, object)) {
|
|
479
|
-
return false;
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
return true;
|
|
483
|
-
};
|
|
484
|
-
}
|
|
485
|
-
if (!Array.prototype.some) {
|
|
486
|
-
Array.prototype.some = function some(fun /*, thisp */) {
|
|
487
|
-
var object = toObject(this),
|
|
488
|
-
self = splitString && _toString(this) == "[object String]" ?
|
|
489
|
-
this.split("") :
|
|
490
|
-
object,
|
|
491
|
-
length = self.length >>> 0,
|
|
492
|
-
thisp = arguments[1];
|
|
493
|
-
if (_toString(fun) != "[object Function]") {
|
|
494
|
-
throw new TypeError(fun + " is not a function");
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
for (var i = 0; i < length; i++) {
|
|
498
|
-
if (i in self && fun.call(thisp, self[i], i, object)) {
|
|
499
|
-
return true;
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
return false;
|
|
503
|
-
};
|
|
504
|
-
}
|
|
505
|
-
if (!Array.prototype.reduce) {
|
|
506
|
-
Array.prototype.reduce = function reduce(fun /*, initial*/) {
|
|
507
|
-
var object = toObject(this),
|
|
508
|
-
self = splitString && _toString(this) == "[object String]" ?
|
|
509
|
-
this.split("") :
|
|
510
|
-
object,
|
|
511
|
-
length = self.length >>> 0;
|
|
512
|
-
if (_toString(fun) != "[object Function]") {
|
|
513
|
-
throw new TypeError(fun + " is not a function");
|
|
514
|
-
}
|
|
515
|
-
if (!length && arguments.length == 1) {
|
|
516
|
-
throw new TypeError("reduce of empty array with no initial value");
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
var i = 0;
|
|
520
|
-
var result;
|
|
521
|
-
if (arguments.length >= 2) {
|
|
522
|
-
result = arguments[1];
|
|
523
|
-
} else {
|
|
524
|
-
do {
|
|
525
|
-
if (i in self) {
|
|
526
|
-
result = self[i++];
|
|
527
|
-
break;
|
|
528
|
-
}
|
|
529
|
-
if (++i >= length) {
|
|
530
|
-
throw new TypeError("reduce of empty array with no initial value");
|
|
531
|
-
}
|
|
532
|
-
} while (true);
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
for (; i < length; i++) {
|
|
536
|
-
if (i in self) {
|
|
537
|
-
result = fun.call(void 0, result, self[i], i, object);
|
|
538
|
-
}
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
return result;
|
|
542
|
-
};
|
|
543
|
-
}
|
|
544
|
-
if (!Array.prototype.reduceRight) {
|
|
545
|
-
Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
|
|
546
|
-
var object = toObject(this),
|
|
547
|
-
self = splitString && _toString(this) == "[object String]" ?
|
|
548
|
-
this.split("") :
|
|
549
|
-
object,
|
|
550
|
-
length = self.length >>> 0;
|
|
551
|
-
if (_toString(fun) != "[object Function]") {
|
|
552
|
-
throw new TypeError(fun + " is not a function");
|
|
553
|
-
}
|
|
554
|
-
if (!length && arguments.length == 1) {
|
|
555
|
-
throw new TypeError("reduceRight of empty array with no initial value");
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
var result, i = length - 1;
|
|
559
|
-
if (arguments.length >= 2) {
|
|
560
|
-
result = arguments[1];
|
|
561
|
-
} else {
|
|
562
|
-
do {
|
|
563
|
-
if (i in self) {
|
|
564
|
-
result = self[i--];
|
|
565
|
-
break;
|
|
566
|
-
}
|
|
567
|
-
if (--i < 0) {
|
|
568
|
-
throw new TypeError("reduceRight of empty array with no initial value");
|
|
569
|
-
}
|
|
570
|
-
} while (true);
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
do {
|
|
574
|
-
if (i in this) {
|
|
575
|
-
result = fun.call(void 0, result, self[i], i, object);
|
|
576
|
-
}
|
|
577
|
-
} while (i--);
|
|
578
|
-
|
|
579
|
-
return result;
|
|
580
|
-
};
|
|
581
|
-
}
|
|
582
|
-
if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {
|
|
583
|
-
Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
|
|
584
|
-
var self = splitString && _toString(this) == "[object String]" ?
|
|
585
|
-
this.split("") :
|
|
586
|
-
toObject(this),
|
|
587
|
-
length = self.length >>> 0;
|
|
588
|
-
|
|
589
|
-
if (!length) {
|
|
590
|
-
return -1;
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
var i = 0;
|
|
594
|
-
if (arguments.length > 1) {
|
|
595
|
-
i = toInteger(arguments[1]);
|
|
596
|
-
}
|
|
597
|
-
i = i >= 0 ? i : Math.max(0, length + i);
|
|
598
|
-
for (; i < length; i++) {
|
|
599
|
-
if (i in self && self[i] === sought) {
|
|
600
|
-
return i;
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
return -1;
|
|
604
|
-
};
|
|
605
|
-
}
|
|
606
|
-
if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {
|
|
607
|
-
Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
|
|
608
|
-
var self = splitString && _toString(this) == "[object String]" ?
|
|
609
|
-
this.split("") :
|
|
610
|
-
toObject(this),
|
|
611
|
-
length = self.length >>> 0;
|
|
612
|
-
|
|
613
|
-
if (!length) {
|
|
614
|
-
return -1;
|
|
615
|
-
}
|
|
616
|
-
var i = length - 1;
|
|
617
|
-
if (arguments.length > 1) {
|
|
618
|
-
i = Math.min(i, toInteger(arguments[1]));
|
|
619
|
-
}
|
|
620
|
-
i = i >= 0 ? i : length - Math.abs(i);
|
|
621
|
-
for (; i >= 0; i--) {
|
|
622
|
-
if (i in self && sought === self[i]) {
|
|
623
|
-
return i;
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
return -1;
|
|
627
|
-
};
|
|
628
|
-
}
|
|
629
|
-
if (!Object.getPrototypeOf) {
|
|
630
|
-
Object.getPrototypeOf = function getPrototypeOf(object) {
|
|
631
|
-
return object.__proto__ || (
|
|
632
|
-
object.constructor ?
|
|
633
|
-
object.constructor.prototype :
|
|
634
|
-
prototypeOfObject
|
|
635
|
-
);
|
|
636
|
-
};
|
|
637
|
-
}
|
|
638
|
-
if (!Object.getOwnPropertyDescriptor) {
|
|
639
|
-
var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
|
|
640
|
-
"non-object: ";
|
|
641
|
-
Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
|
|
642
|
-
if ((typeof object != "object" && typeof object != "function") || object === null)
|
|
643
|
-
throw new TypeError(ERR_NON_OBJECT + object);
|
|
644
|
-
if (!owns(object, property))
|
|
645
|
-
return;
|
|
646
|
-
|
|
647
|
-
var descriptor, getter, setter;
|
|
648
|
-
descriptor = { enumerable: true, configurable: true };
|
|
649
|
-
if (supportsAccessors) {
|
|
650
|
-
var prototype = object.__proto__;
|
|
651
|
-
object.__proto__ = prototypeOfObject;
|
|
652
|
-
|
|
653
|
-
var getter = lookupGetter(object, property);
|
|
654
|
-
var setter = lookupSetter(object, property);
|
|
655
|
-
object.__proto__ = prototype;
|
|
656
|
-
|
|
657
|
-
if (getter || setter) {
|
|
658
|
-
if (getter) descriptor.get = getter;
|
|
659
|
-
if (setter) descriptor.set = setter;
|
|
660
|
-
return descriptor;
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
descriptor.value = object[property];
|
|
664
|
-
return descriptor;
|
|
665
|
-
};
|
|
666
|
-
}
|
|
667
|
-
if (!Object.getOwnPropertyNames) {
|
|
668
|
-
Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
|
|
669
|
-
return Object.keys(object);
|
|
670
|
-
};
|
|
671
|
-
}
|
|
672
|
-
if (!Object.create) {
|
|
673
|
-
var createEmpty;
|
|
674
|
-
if (Object.prototype.__proto__ === null) {
|
|
675
|
-
createEmpty = function () {
|
|
676
|
-
return { "__proto__": null };
|
|
677
|
-
};
|
|
678
|
-
} else {
|
|
679
|
-
createEmpty = function () {
|
|
680
|
-
var empty = {};
|
|
681
|
-
for (var i in empty)
|
|
682
|
-
empty[i] = null;
|
|
683
|
-
empty.constructor =
|
|
684
|
-
empty.hasOwnProperty =
|
|
685
|
-
empty.propertyIsEnumerable =
|
|
686
|
-
empty.isPrototypeOf =
|
|
687
|
-
empty.toLocaleString =
|
|
688
|
-
empty.toString =
|
|
689
|
-
empty.valueOf =
|
|
690
|
-
empty.__proto__ = null;
|
|
691
|
-
return empty;
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
|
|
695
|
-
Object.create = function create(prototype, properties) {
|
|
696
|
-
var object;
|
|
697
|
-
if (prototype === null) {
|
|
698
|
-
object = createEmpty();
|
|
699
|
-
} else {
|
|
700
|
-
if (typeof prototype != "object")
|
|
701
|
-
throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
|
|
702
|
-
var Type = function () {};
|
|
703
|
-
Type.prototype = prototype;
|
|
704
|
-
object = new Type();
|
|
705
|
-
object.__proto__ = prototype;
|
|
706
|
-
}
|
|
707
|
-
if (properties !== void 0)
|
|
708
|
-
Object.defineProperties(object, properties);
|
|
709
|
-
return object;
|
|
710
|
-
};
|
|
711
|
-
}
|
|
712
|
-
|
|
713
|
-
function doesDefinePropertyWork(object) {
|
|
714
|
-
try {
|
|
715
|
-
Object.defineProperty(object, "sentinel", {});
|
|
716
|
-
return "sentinel" in object;
|
|
717
|
-
} catch (exception) {
|
|
718
|
-
}
|
|
719
|
-
}
|
|
720
|
-
if (Object.defineProperty) {
|
|
721
|
-
var definePropertyWorksOnObject = doesDefinePropertyWork({});
|
|
722
|
-
var definePropertyWorksOnDom = typeof document == "undefined" ||
|
|
723
|
-
doesDefinePropertyWork(document.createElement("div"));
|
|
724
|
-
if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
|
|
725
|
-
var definePropertyFallback = Object.defineProperty;
|
|
726
|
-
}
|
|
727
|
-
}
|
|
728
|
-
|
|
729
|
-
if (!Object.defineProperty || definePropertyFallback) {
|
|
730
|
-
var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
|
|
731
|
-
var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
|
|
732
|
-
var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
|
|
733
|
-
"on this javascript engine";
|
|
734
|
-
|
|
735
|
-
Object.defineProperty = function defineProperty(object, property, descriptor) {
|
|
736
|
-
if ((typeof object != "object" && typeof object != "function") || object === null)
|
|
737
|
-
throw new TypeError(ERR_NON_OBJECT_TARGET + object);
|
|
738
|
-
if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
|
|
739
|
-
throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
|
|
740
|
-
if (definePropertyFallback) {
|
|
741
|
-
try {
|
|
742
|
-
return definePropertyFallback.call(Object, object, property, descriptor);
|
|
743
|
-
} catch (exception) {
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
if (owns(descriptor, "value")) {
|
|
747
|
-
|
|
748
|
-
if (supportsAccessors && (lookupGetter(object, property) ||
|
|
749
|
-
lookupSetter(object, property)))
|
|
750
|
-
{
|
|
751
|
-
var prototype = object.__proto__;
|
|
752
|
-
object.__proto__ = prototypeOfObject;
|
|
753
|
-
delete object[property];
|
|
754
|
-
object[property] = descriptor.value;
|
|
755
|
-
object.__proto__ = prototype;
|
|
756
|
-
} else {
|
|
757
|
-
object[property] = descriptor.value;
|
|
758
|
-
}
|
|
759
|
-
} else {
|
|
760
|
-
if (!supportsAccessors)
|
|
761
|
-
throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
|
|
762
|
-
if (owns(descriptor, "get"))
|
|
763
|
-
defineGetter(object, property, descriptor.get);
|
|
764
|
-
if (owns(descriptor, "set"))
|
|
765
|
-
defineSetter(object, property, descriptor.set);
|
|
766
|
-
}
|
|
767
|
-
|
|
768
|
-
return object;
|
|
769
|
-
};
|
|
770
|
-
}
|
|
771
|
-
if (!Object.defineProperties) {
|
|
772
|
-
Object.defineProperties = function defineProperties(object, properties) {
|
|
773
|
-
for (var property in properties) {
|
|
774
|
-
if (owns(properties, property))
|
|
775
|
-
Object.defineProperty(object, property, properties[property]);
|
|
776
|
-
}
|
|
777
|
-
return object;
|
|
778
|
-
};
|
|
779
|
-
}
|
|
780
|
-
if (!Object.seal) {
|
|
781
|
-
Object.seal = function seal(object) {
|
|
782
|
-
return object;
|
|
783
|
-
};
|
|
784
|
-
}
|
|
785
|
-
if (!Object.freeze) {
|
|
786
|
-
Object.freeze = function freeze(object) {
|
|
787
|
-
return object;
|
|
788
|
-
};
|
|
789
|
-
}
|
|
790
|
-
try {
|
|
791
|
-
Object.freeze(function () {});
|
|
792
|
-
} catch (exception) {
|
|
793
|
-
Object.freeze = (function freeze(freezeObject) {
|
|
794
|
-
return function freeze(object) {
|
|
795
|
-
if (typeof object == "function") {
|
|
796
|
-
return object;
|
|
797
|
-
} else {
|
|
798
|
-
return freezeObject(object);
|
|
799
|
-
}
|
|
800
|
-
};
|
|
801
|
-
})(Object.freeze);
|
|
802
|
-
}
|
|
803
|
-
if (!Object.preventExtensions) {
|
|
804
|
-
Object.preventExtensions = function preventExtensions(object) {
|
|
805
|
-
return object;
|
|
806
|
-
};
|
|
807
|
-
}
|
|
808
|
-
if (!Object.isSealed) {
|
|
809
|
-
Object.isSealed = function isSealed(object) {
|
|
810
|
-
return false;
|
|
811
|
-
};
|
|
812
|
-
}
|
|
813
|
-
if (!Object.isFrozen) {
|
|
814
|
-
Object.isFrozen = function isFrozen(object) {
|
|
815
|
-
return false;
|
|
816
|
-
};
|
|
817
|
-
}
|
|
818
|
-
if (!Object.isExtensible) {
|
|
819
|
-
Object.isExtensible = function isExtensible(object) {
|
|
820
|
-
if (Object(object) === object) {
|
|
821
|
-
throw new TypeError(); // TODO message
|
|
822
|
-
}
|
|
823
|
-
var name = '';
|
|
824
|
-
while (owns(object, name)) {
|
|
825
|
-
name += '?';
|
|
826
|
-
}
|
|
827
|
-
object[name] = true;
|
|
828
|
-
var returnValue = owns(object, name);
|
|
829
|
-
delete object[name];
|
|
830
|
-
return returnValue;
|
|
831
|
-
};
|
|
832
|
-
}
|
|
833
|
-
if (!Object.keys) {
|
|
834
|
-
var hasDontEnumBug = true,
|
|
835
|
-
dontEnums = [
|
|
836
|
-
"toString",
|
|
837
|
-
"toLocaleString",
|
|
838
|
-
"valueOf",
|
|
839
|
-
"hasOwnProperty",
|
|
840
|
-
"isPrototypeOf",
|
|
841
|
-
"propertyIsEnumerable",
|
|
842
|
-
"constructor"
|
|
843
|
-
],
|
|
844
|
-
dontEnumsLength = dontEnums.length;
|
|
845
|
-
|
|
846
|
-
for (var key in {"toString": null}) {
|
|
847
|
-
hasDontEnumBug = false;
|
|
848
|
-
}
|
|
849
|
-
|
|
850
|
-
Object.keys = function keys(object) {
|
|
851
|
-
|
|
852
|
-
if (
|
|
853
|
-
(typeof object != "object" && typeof object != "function") ||
|
|
854
|
-
object === null
|
|
855
|
-
) {
|
|
856
|
-
throw new TypeError("Object.keys called on a non-object");
|
|
857
|
-
}
|
|
858
|
-
|
|
859
|
-
var keys = [];
|
|
860
|
-
for (var name in object) {
|
|
861
|
-
if (owns(object, name)) {
|
|
862
|
-
keys.push(name);
|
|
863
|
-
}
|
|
864
|
-
}
|
|
865
|
-
|
|
866
|
-
if (hasDontEnumBug) {
|
|
867
|
-
for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
|
|
868
|
-
var dontEnum = dontEnums[i];
|
|
869
|
-
if (owns(object, dontEnum)) {
|
|
870
|
-
keys.push(dontEnum);
|
|
871
|
-
}
|
|
872
|
-
}
|
|
873
|
-
}
|
|
874
|
-
return keys;
|
|
875
|
-
};
|
|
876
|
-
|
|
877
|
-
}
|
|
878
|
-
if (!Date.now) {
|
|
879
|
-
Date.now = function now() {
|
|
880
|
-
return new Date().getTime();
|
|
881
|
-
};
|
|
882
|
-
}
|
|
883
|
-
var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003" +
|
|
884
|
-
"\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
|
|
885
|
-
"\u2029\uFEFF";
|
|
886
|
-
if (!String.prototype.trim) {
|
|
887
|
-
ws = "[" + ws + "]";
|
|
888
|
-
var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
|
|
889
|
-
trimEndRegexp = new RegExp(ws + ws + "*$");
|
|
890
|
-
String.prototype.trim = function trim() {
|
|
891
|
-
return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
|
|
892
|
-
};
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
function toInteger(n) {
|
|
896
|
-
n = +n;
|
|
897
|
-
if (n !== n) { // isNaN
|
|
898
|
-
n = 0;
|
|
899
|
-
} else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {
|
|
900
|
-
n = (n > 0 || -1) * Math.floor(Math.abs(n));
|
|
901
|
-
}
|
|
902
|
-
return n;
|
|
903
|
-
}
|
|
904
|
-
|
|
905
|
-
function isPrimitive(input) {
|
|
906
|
-
var type = typeof input;
|
|
907
|
-
return (
|
|
908
|
-
input === null ||
|
|
909
|
-
type === "undefined" ||
|
|
910
|
-
type === "boolean" ||
|
|
911
|
-
type === "number" ||
|
|
912
|
-
type === "string"
|
|
913
|
-
);
|
|
914
|
-
}
|
|
915
|
-
|
|
916
|
-
function toPrimitive(input) {
|
|
917
|
-
var val, valueOf, toString;
|
|
918
|
-
if (isPrimitive(input)) {
|
|
919
|
-
return input;
|
|
920
|
-
}
|
|
921
|
-
valueOf = input.valueOf;
|
|
922
|
-
if (typeof valueOf === "function") {
|
|
923
|
-
val = valueOf.call(input);
|
|
924
|
-
if (isPrimitive(val)) {
|
|
925
|
-
return val;
|
|
926
|
-
}
|
|
927
|
-
}
|
|
928
|
-
toString = input.toString;
|
|
929
|
-
if (typeof toString === "function") {
|
|
930
|
-
val = toString.call(input);
|
|
931
|
-
if (isPrimitive(val)) {
|
|
932
|
-
return val;
|
|
933
|
-
}
|
|
934
|
-
}
|
|
935
|
-
throw new TypeError();
|
|
936
|
-
}
|
|
937
|
-
var toObject = function (o) {
|
|
938
|
-
if (o == null) { // this matches both null and undefined
|
|
939
|
-
throw new TypeError("can't convert "+o+" to object");
|
|
940
|
-
}
|
|
941
|
-
return Object(o);
|
|
942
|
-
};
|
|
943
|
-
|
|
944
|
-
});
|
|
945
|
-
|
|
946
|
-
define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"], function(require, exports, module) {
|
|
947
|
-
"use strict";
|
|
948
|
-
|
|
949
|
-
require("./regexp");
|
|
950
|
-
require("./es5-shim");
|
|
951
178
|
if (typeof Element != "undefined" && !Element.prototype.remove) {
|
|
952
179
|
Object.defineProperty(Element.prototype, "remove", {
|
|
953
180
|
enumerable: false,
|
|
@@ -1026,8 +253,11 @@ exports.buildDom = function buildDom(arr, parent, refs) {
|
|
|
1026
253
|
return txt;
|
|
1027
254
|
}
|
|
1028
255
|
|
|
1029
|
-
if (!Array.isArray(arr))
|
|
256
|
+
if (!Array.isArray(arr)) {
|
|
257
|
+
if (arr && arr.appendChild && parent)
|
|
258
|
+
parent.appendChild(arr);
|
|
1030
259
|
return arr;
|
|
260
|
+
}
|
|
1031
261
|
if (typeof arr[0] != "string" || !arr[0]) {
|
|
1032
262
|
var els = [];
|
|
1033
263
|
for (var i = 0; i < arr.length; i++) {
|
|
@@ -1049,7 +279,7 @@ exports.buildDom = function buildDom(arr, parent, refs) {
|
|
|
1049
279
|
var val = options[n];
|
|
1050
280
|
if (n === "class") {
|
|
1051
281
|
el.className = Array.isArray(val) ? val.join(" ") : val;
|
|
1052
|
-
} else if (typeof val == "function" || n == "value") {
|
|
282
|
+
} else if (typeof val == "function" || n == "value" || n[0] == "$") {
|
|
1053
283
|
el[n] = val;
|
|
1054
284
|
} else if (n === "ref") {
|
|
1055
285
|
if (refs) refs[val] = el;
|
|
@@ -1294,7 +524,8 @@ var Keys = (function() {
|
|
|
1294
524
|
|
|
1295
525
|
KEY_MODS: {
|
|
1296
526
|
"ctrl": 1, "alt": 2, "option" : 2, "shift": 4,
|
|
1297
|
-
"super": 8, "meta": 8, "command": 8, "cmd": 8
|
|
527
|
+
"super": 8, "meta": 8, "command": 8, "cmd": 8,
|
|
528
|
+
"control": 1
|
|
1298
529
|
},
|
|
1299
530
|
|
|
1300
531
|
FUNCTION_KEYS : {
|
|
@@ -1404,26 +635,42 @@ var useragent = require("./useragent");
|
|
|
1404
635
|
var pressedKeys = null;
|
|
1405
636
|
var ts = 0;
|
|
1406
637
|
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
638
|
+
var activeListenerOptions;
|
|
639
|
+
function detectListenerOptionsSupport() {
|
|
640
|
+
activeListenerOptions = false;
|
|
641
|
+
try {
|
|
642
|
+
document.createComment("").addEventListener("test", function() {}, {
|
|
643
|
+
get passive() {
|
|
644
|
+
activeListenerOptions = {passive: false};
|
|
645
|
+
}
|
|
646
|
+
});
|
|
647
|
+
} catch(e) {}
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
function getListenerOptions() {
|
|
651
|
+
if (activeListenerOptions == undefined)
|
|
652
|
+
detectListenerOptionsSupport();
|
|
653
|
+
return activeListenerOptions;
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
function EventListener(elem, type, callback) {
|
|
657
|
+
this.elem = elem;
|
|
658
|
+
this.type = type;
|
|
659
|
+
this.callback = callback;
|
|
660
|
+
}
|
|
661
|
+
EventListener.prototype.destroy = function() {
|
|
662
|
+
removeListener(this.elem, this.type, this.callback);
|
|
663
|
+
this.elem = this.type = this.callback = undefined;
|
|
1418
664
|
};
|
|
1419
665
|
|
|
1420
|
-
exports.
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
666
|
+
var addListener = exports.addListener = function(elem, type, callback, destroyer) {
|
|
667
|
+
elem.addEventListener(type, callback, getListenerOptions());
|
|
668
|
+
if (destroyer)
|
|
669
|
+
destroyer.$toDestroy.push(new EventListener(elem, type, callback));
|
|
670
|
+
};
|
|
671
|
+
|
|
672
|
+
var removeListener = exports.removeListener = function(elem, type, callback) {
|
|
673
|
+
elem.removeEventListener(type, callback, getListenerOptions());
|
|
1427
674
|
};
|
|
1428
675
|
exports.stopEvent = function(e) {
|
|
1429
676
|
exports.stopPropagation(e);
|
|
@@ -1434,49 +681,41 @@ exports.stopEvent = function(e) {
|
|
|
1434
681
|
exports.stopPropagation = function(e) {
|
|
1435
682
|
if (e.stopPropagation)
|
|
1436
683
|
e.stopPropagation();
|
|
1437
|
-
else
|
|
1438
|
-
e.cancelBubble = true;
|
|
1439
684
|
};
|
|
1440
685
|
|
|
1441
686
|
exports.preventDefault = function(e) {
|
|
1442
687
|
if (e.preventDefault)
|
|
1443
688
|
e.preventDefault();
|
|
1444
|
-
else
|
|
1445
|
-
e.returnValue = false;
|
|
1446
689
|
};
|
|
1447
690
|
exports.getButton = function(e) {
|
|
1448
691
|
if (e.type == "dblclick")
|
|
1449
692
|
return 0;
|
|
1450
693
|
if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))
|
|
1451
694
|
return 2;
|
|
1452
|
-
|
|
1453
|
-
return e.button;
|
|
1454
|
-
}
|
|
1455
|
-
else {
|
|
1456
|
-
return {1:0, 2:2, 4:1}[e.button];
|
|
1457
|
-
}
|
|
695
|
+
return e.button;
|
|
1458
696
|
};
|
|
1459
697
|
|
|
1460
698
|
exports.capture = function(el, eventHandler, releaseCaptureHandler) {
|
|
699
|
+
var ownerDocument = el && el.ownerDocument || document;
|
|
1461
700
|
function onMouseUp(e) {
|
|
1462
701
|
eventHandler && eventHandler(e);
|
|
1463
702
|
releaseCaptureHandler && releaseCaptureHandler(e);
|
|
1464
703
|
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
704
|
+
removeListener(ownerDocument, "mousemove", eventHandler);
|
|
705
|
+
removeListener(ownerDocument, "mouseup", onMouseUp);
|
|
706
|
+
removeListener(ownerDocument, "dragstart", onMouseUp);
|
|
1468
707
|
}
|
|
1469
708
|
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
709
|
+
addListener(ownerDocument, "mousemove", eventHandler);
|
|
710
|
+
addListener(ownerDocument, "mouseup", onMouseUp);
|
|
711
|
+
addListener(ownerDocument, "dragstart", onMouseUp);
|
|
1473
712
|
|
|
1474
713
|
return onMouseUp;
|
|
1475
714
|
};
|
|
1476
715
|
|
|
1477
|
-
exports.addMouseWheelListener = function(el, callback) {
|
|
716
|
+
exports.addMouseWheelListener = function(el, callback, destroyer) {
|
|
1478
717
|
if ("onmousewheel" in el) {
|
|
1479
|
-
|
|
718
|
+
addListener(el, "mousewheel", function(e) {
|
|
1480
719
|
var factor = 8;
|
|
1481
720
|
if (e.wheelDeltaX !== undefined) {
|
|
1482
721
|
e.wheelX = -e.wheelDeltaX / factor;
|
|
@@ -1486,9 +725,9 @@ exports.addMouseWheelListener = function(el, callback) {
|
|
|
1486
725
|
e.wheelY = -e.wheelDelta / factor;
|
|
1487
726
|
}
|
|
1488
727
|
callback(e);
|
|
1489
|
-
});
|
|
728
|
+
}, destroyer);
|
|
1490
729
|
} else if ("onwheel" in el) {
|
|
1491
|
-
|
|
730
|
+
addListener(el, "wheel", function(e) {
|
|
1492
731
|
var factor = 0.35;
|
|
1493
732
|
switch (e.deltaMode) {
|
|
1494
733
|
case e.DOM_DELTA_PIXEL:
|
|
@@ -1503,9 +742,9 @@ exports.addMouseWheelListener = function(el, callback) {
|
|
|
1503
742
|
}
|
|
1504
743
|
|
|
1505
744
|
callback(e);
|
|
1506
|
-
});
|
|
745
|
+
}, destroyer);
|
|
1507
746
|
} else {
|
|
1508
|
-
|
|
747
|
+
addListener(el, "DOMMouseScroll", function(e) {
|
|
1509
748
|
if (e.axis && e.axis == e.HORIZONTAL_AXIS) {
|
|
1510
749
|
e.wheelX = (e.detail || 0) * 5;
|
|
1511
750
|
e.wheelY = 0;
|
|
@@ -1514,11 +753,11 @@ exports.addMouseWheelListener = function(el, callback) {
|
|
|
1514
753
|
e.wheelY = (e.detail || 0) * 5;
|
|
1515
754
|
}
|
|
1516
755
|
callback(e);
|
|
1517
|
-
});
|
|
756
|
+
}, destroyer);
|
|
1518
757
|
}
|
|
1519
758
|
};
|
|
1520
759
|
|
|
1521
|
-
exports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName) {
|
|
760
|
+
exports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName, destroyer) {
|
|
1522
761
|
var clicks = 0;
|
|
1523
762
|
var startX, startY, timer;
|
|
1524
763
|
var eventNames = {
|
|
@@ -1560,30 +799,16 @@ exports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, c
|
|
|
1560
799
|
else if (clicks > 1)
|
|
1561
800
|
return eventHandler[callbackName](eventNames[clicks], e);
|
|
1562
801
|
}
|
|
1563
|
-
function onDblclick(e) {
|
|
1564
|
-
clicks = 2;
|
|
1565
|
-
if (timer)
|
|
1566
|
-
clearTimeout(timer);
|
|
1567
|
-
timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);
|
|
1568
|
-
eventHandler[callbackName]("mousedown", e);
|
|
1569
|
-
eventHandler[callbackName](eventNames[clicks], e);
|
|
1570
|
-
}
|
|
1571
802
|
if (!Array.isArray(elements))
|
|
1572
803
|
elements = [elements];
|
|
1573
804
|
elements.forEach(function(el) {
|
|
1574
|
-
|
|
1575
|
-
if (useragent.isOldIE)
|
|
1576
|
-
exports.addListener(el, "dblclick", onDblclick);
|
|
805
|
+
addListener(el, "mousedown", onMousedown, destroyer);
|
|
1577
806
|
});
|
|
1578
807
|
};
|
|
1579
808
|
|
|
1580
|
-
var getModifierHash =
|
|
1581
|
-
?
|
|
1582
|
-
|
|
1583
|
-
}
|
|
1584
|
-
: function(e) {
|
|
1585
|
-
return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);
|
|
1586
|
-
};
|
|
809
|
+
var getModifierHash = function(e) {
|
|
810
|
+
return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);
|
|
811
|
+
};
|
|
1587
812
|
|
|
1588
813
|
exports.getModifierString = function(e) {
|
|
1589
814
|
return keys.KEY_MODS[getModifierHash(e)];
|
|
@@ -1642,16 +867,15 @@ function normalizeCommandKeys(callback, e, keyCode) {
|
|
|
1642
867
|
}
|
|
1643
868
|
|
|
1644
869
|
|
|
1645
|
-
exports.addCommandKeyListener = function(el, callback) {
|
|
1646
|
-
var addListener = exports.addListener;
|
|
870
|
+
exports.addCommandKeyListener = function(el, callback, destroyer) {
|
|
1647
871
|
if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) {
|
|
1648
872
|
var lastKeyDownKeyCode = null;
|
|
1649
873
|
addListener(el, "keydown", function(e) {
|
|
1650
874
|
lastKeyDownKeyCode = e.keyCode;
|
|
1651
|
-
});
|
|
875
|
+
}, destroyer);
|
|
1652
876
|
addListener(el, "keypress", function(e) {
|
|
1653
877
|
return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);
|
|
1654
|
-
});
|
|
878
|
+
}, destroyer);
|
|
1655
879
|
} else {
|
|
1656
880
|
var lastDefaultPrevented = null;
|
|
1657
881
|
|
|
@@ -1660,18 +884,18 @@ exports.addCommandKeyListener = function(el, callback) {
|
|
|
1660
884
|
var result = normalizeCommandKeys(callback, e, e.keyCode);
|
|
1661
885
|
lastDefaultPrevented = e.defaultPrevented;
|
|
1662
886
|
return result;
|
|
1663
|
-
});
|
|
887
|
+
}, destroyer);
|
|
1664
888
|
|
|
1665
889
|
addListener(el, "keypress", function(e) {
|
|
1666
890
|
if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {
|
|
1667
891
|
exports.stopEvent(e);
|
|
1668
892
|
lastDefaultPrevented = null;
|
|
1669
893
|
}
|
|
1670
|
-
});
|
|
894
|
+
}, destroyer);
|
|
1671
895
|
|
|
1672
896
|
addListener(el, "keyup", function(e) {
|
|
1673
897
|
pressedKeys[e.keyCode] = null;
|
|
1674
|
-
});
|
|
898
|
+
}, destroyer);
|
|
1675
899
|
|
|
1676
900
|
if (!pressedKeys) {
|
|
1677
901
|
resetPressedKeys();
|
|
@@ -1692,12 +916,12 @@ if (typeof window == "object" && window.postMessage && !useragent.isOldIE) {
|
|
|
1692
916
|
var listener = function(e) {
|
|
1693
917
|
if (e.data == messageName) {
|
|
1694
918
|
exports.stopPropagation(e);
|
|
1695
|
-
|
|
919
|
+
removeListener(win, "message", listener);
|
|
1696
920
|
callback();
|
|
1697
921
|
}
|
|
1698
922
|
};
|
|
1699
923
|
|
|
1700
|
-
|
|
924
|
+
addListener(win, "message", listener);
|
|
1701
925
|
win.postMessage(messageName, "*");
|
|
1702
926
|
};
|
|
1703
927
|
}
|
|
@@ -2200,6 +1424,7 @@ var KEYS = require("../lib/keys");
|
|
|
2200
1424
|
var MODS = KEYS.KEY_MODS;
|
|
2201
1425
|
var isIOS = useragent.isIOS;
|
|
2202
1426
|
var valueResetRegex = isIOS ? /\s/ : /\n/;
|
|
1427
|
+
var isMobile = useragent.isMobile;
|
|
2203
1428
|
|
|
2204
1429
|
var TextInput = function(parentNode, host) {
|
|
2205
1430
|
var text = dom.createElement("textarea");
|
|
@@ -2219,7 +1444,7 @@ var TextInput = function(parentNode, host) {
|
|
|
2219
1444
|
var sendingText = false;
|
|
2220
1445
|
var tempStyle = '';
|
|
2221
1446
|
|
|
2222
|
-
if (!
|
|
1447
|
+
if (!isMobile)
|
|
2223
1448
|
text.style.fontSize = "1px";
|
|
2224
1449
|
|
|
2225
1450
|
var commandMode = false;
|
|
@@ -2235,7 +1460,7 @@ var TextInput = function(parentNode, host) {
|
|
|
2235
1460
|
if (ignoreFocusEvents) return;
|
|
2236
1461
|
host.onBlur(e);
|
|
2237
1462
|
isFocused = false;
|
|
2238
|
-
});
|
|
1463
|
+
}, host);
|
|
2239
1464
|
event.addListener(text, "focus", function(e) {
|
|
2240
1465
|
if (ignoreFocusEvents) return;
|
|
2241
1466
|
isFocused = true;
|
|
@@ -2250,7 +1475,7 @@ var TextInput = function(parentNode, host) {
|
|
|
2250
1475
|
setTimeout(resetSelection);
|
|
2251
1476
|
else
|
|
2252
1477
|
resetSelection();
|
|
2253
|
-
});
|
|
1478
|
+
}, host);
|
|
2254
1479
|
this.$focusScroll = false;
|
|
2255
1480
|
this.focus = function() {
|
|
2256
1481
|
if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == "browser")
|
|
@@ -2296,9 +1521,12 @@ var TextInput = function(parentNode, host) {
|
|
|
2296
1521
|
};
|
|
2297
1522
|
|
|
2298
1523
|
host.on("beforeEndOperation", function() {
|
|
2299
|
-
|
|
1524
|
+
var curOp = host.curOp;
|
|
1525
|
+
var commandName = curOp && curOp.command && curOp.command.name;
|
|
1526
|
+
if (commandName == "insertstring")
|
|
2300
1527
|
return;
|
|
2301
|
-
|
|
1528
|
+
var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);
|
|
1529
|
+
if (inComposition && isUserAction) {
|
|
2302
1530
|
lastValue = text.value = "";
|
|
2303
1531
|
onCompositionEnd();
|
|
2304
1532
|
}
|
|
@@ -2330,33 +1558,49 @@ var TextInput = function(parentNode, host) {
|
|
|
2330
1558
|
return;
|
|
2331
1559
|
inComposition = true;
|
|
2332
1560
|
|
|
2333
|
-
var
|
|
2334
|
-
var
|
|
2335
|
-
var
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
line = line
|
|
2356
|
-
}
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
selectionEnd
|
|
1561
|
+
var selectionStart = 0;
|
|
1562
|
+
var selectionEnd = 0;
|
|
1563
|
+
var line = "";
|
|
1564
|
+
|
|
1565
|
+
if (host.session) {
|
|
1566
|
+
var selection = host.selection;
|
|
1567
|
+
var range = selection.getRange();
|
|
1568
|
+
var row = selection.cursor.row;
|
|
1569
|
+
selectionStart = range.start.column;
|
|
1570
|
+
selectionEnd = range.end.column;
|
|
1571
|
+
line = host.session.getLine(row);
|
|
1572
|
+
|
|
1573
|
+
if (range.start.row != row) {
|
|
1574
|
+
var prevLine = host.session.getLine(row - 1);
|
|
1575
|
+
selectionStart = range.start.row < row - 1 ? 0 : selectionStart;
|
|
1576
|
+
selectionEnd += prevLine.length + 1;
|
|
1577
|
+
line = prevLine + "\n" + line;
|
|
1578
|
+
}
|
|
1579
|
+
else if (range.end.row != row) {
|
|
1580
|
+
var nextLine = host.session.getLine(row + 1);
|
|
1581
|
+
selectionEnd = range.end.row > row + 1 ? nextLine.length : selectionEnd;
|
|
1582
|
+
selectionEnd += line.length + 1;
|
|
1583
|
+
line = line + "\n" + nextLine;
|
|
1584
|
+
}
|
|
1585
|
+
else if (isMobile && row > 0) {
|
|
1586
|
+
line = "\n" + line;
|
|
1587
|
+
selectionEnd += 1;
|
|
1588
|
+
selectionStart += 1;
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
if (line.length > MAX_LINE_LENGTH) {
|
|
1592
|
+
if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {
|
|
1593
|
+
line = line.slice(0, MAX_LINE_LENGTH);
|
|
1594
|
+
} else {
|
|
1595
|
+
line = "\n";
|
|
1596
|
+
if (selectionStart == selectionEnd) {
|
|
1597
|
+
selectionStart = selectionEnd = 0;
|
|
1598
|
+
}
|
|
1599
|
+
else {
|
|
1600
|
+
selectionStart = 0;
|
|
1601
|
+
selectionEnd = 1;
|
|
1602
|
+
}
|
|
1603
|
+
}
|
|
2360
1604
|
}
|
|
2361
1605
|
}
|
|
2362
1606
|
|
|
@@ -2382,6 +1626,7 @@ var TextInput = function(parentNode, host) {
|
|
|
2382
1626
|
}
|
|
2383
1627
|
inComposition = false;
|
|
2384
1628
|
};
|
|
1629
|
+
this.resetSelection = resetSelection;
|
|
2385
1630
|
|
|
2386
1631
|
if (isFocused)
|
|
2387
1632
|
host.onFocus();
|
|
@@ -2401,6 +1646,8 @@ var TextInput = function(parentNode, host) {
|
|
|
2401
1646
|
} else if (isAllSelected(text)) {
|
|
2402
1647
|
host.selectAll();
|
|
2403
1648
|
resetSelection();
|
|
1649
|
+
} else if (isMobile && text.selectionStart != lastSelectionStart) {
|
|
1650
|
+
resetSelection();
|
|
2404
1651
|
}
|
|
2405
1652
|
};
|
|
2406
1653
|
|
|
@@ -2451,6 +1698,12 @@ var TextInput = function(parentNode, host) {
|
|
|
2451
1698
|
if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)
|
|
2452
1699
|
return "";
|
|
2453
1700
|
sendingText = true;
|
|
1701
|
+
var shouldReset = false;
|
|
1702
|
+
if (useragent.isAndroid && inserted == ". ") {
|
|
1703
|
+
inserted = " ";
|
|
1704
|
+
shouldReset = true;
|
|
1705
|
+
}
|
|
1706
|
+
|
|
2454
1707
|
if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {
|
|
2455
1708
|
host.onTextInput(inserted);
|
|
2456
1709
|
} else {
|
|
@@ -2467,7 +1720,7 @@ var TextInput = function(parentNode, host) {
|
|
|
2467
1720
|
lastSelectionStart = selectionStart;
|
|
2468
1721
|
lastSelectionEnd = selectionEnd;
|
|
2469
1722
|
lastRestoreEnd = restoreEnd;
|
|
2470
|
-
return inserted;
|
|
1723
|
+
return shouldReset ? "\n" : inserted;
|
|
2471
1724
|
}
|
|
2472
1725
|
};
|
|
2473
1726
|
var onInput = function(e) {
|
|
@@ -2479,8 +1732,13 @@ var TextInput = function(parentNode, host) {
|
|
|
2479
1732
|
}
|
|
2480
1733
|
var data = text.value;
|
|
2481
1734
|
var inserted = sendText(data, true);
|
|
2482
|
-
if (
|
|
1735
|
+
if (
|
|
1736
|
+
data.length > MAX_LINE_LENGTH + 100
|
|
1737
|
+
|| valueResetRegex.test(inserted)
|
|
1738
|
+
|| isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd
|
|
1739
|
+
) {
|
|
2483
1740
|
resetSelection();
|
|
1741
|
+
}
|
|
2484
1742
|
};
|
|
2485
1743
|
|
|
2486
1744
|
var handleClipboardData = function(e, data, forceIEMime) {
|
|
@@ -2552,14 +1810,14 @@ var TextInput = function(parentNode, host) {
|
|
|
2552
1810
|
}
|
|
2553
1811
|
};
|
|
2554
1812
|
|
|
2555
|
-
event.addCommandKeyListener(text, host.onCommandKey.bind(host));
|
|
1813
|
+
event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);
|
|
2556
1814
|
|
|
2557
|
-
event.addListener(text, "select", onSelect);
|
|
2558
|
-
event.addListener(text, "input", onInput);
|
|
1815
|
+
event.addListener(text, "select", onSelect, host);
|
|
1816
|
+
event.addListener(text, "input", onInput, host);
|
|
2559
1817
|
|
|
2560
|
-
event.addListener(text, "cut", onCut);
|
|
2561
|
-
event.addListener(text, "copy", onCopy);
|
|
2562
|
-
event.addListener(text, "paste", onPaste);
|
|
1818
|
+
event.addListener(text, "cut", onCut, host);
|
|
1819
|
+
event.addListener(text, "copy", onCopy, host);
|
|
1820
|
+
event.addListener(text, "paste", onPaste, host);
|
|
2563
1821
|
if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {
|
|
2564
1822
|
event.addListener(parentNode, "keydown", function(e) {
|
|
2565
1823
|
if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)
|
|
@@ -2576,7 +1834,7 @@ var TextInput = function(parentNode, host) {
|
|
|
2576
1834
|
onCut(e);
|
|
2577
1835
|
break;
|
|
2578
1836
|
}
|
|
2579
|
-
});
|
|
1837
|
+
}, host);
|
|
2580
1838
|
}
|
|
2581
1839
|
var onCompositionStart = function(e) {
|
|
2582
1840
|
if (inComposition || !host.onCompositionStart || host.$readOnly)
|
|
@@ -2587,7 +1845,11 @@ var TextInput = function(parentNode, host) {
|
|
|
2587
1845
|
if (commandMode)
|
|
2588
1846
|
return;
|
|
2589
1847
|
|
|
1848
|
+
if (e.data)
|
|
1849
|
+
inComposition.useTextareaForIME = false;
|
|
1850
|
+
|
|
2590
1851
|
setTimeout(onCompositionUpdate, 0);
|
|
1852
|
+
host._signal("compositionStart");
|
|
2591
1853
|
host.on("mousedown", cancelComposition);
|
|
2592
1854
|
|
|
2593
1855
|
var range = host.getSelectionRange();
|
|
@@ -2598,8 +1860,7 @@ var TextInput = function(parentNode, host) {
|
|
|
2598
1860
|
host.onCompositionStart(inComposition);
|
|
2599
1861
|
|
|
2600
1862
|
if (inComposition.useTextareaForIME) {
|
|
2601
|
-
text.value = "";
|
|
2602
|
-
lastValue = "";
|
|
1863
|
+
lastValue = text.value = "";
|
|
2603
1864
|
lastSelectionStart = 0;
|
|
2604
1865
|
lastSelectionEnd = 0;
|
|
2605
1866
|
}
|
|
@@ -2662,11 +1923,11 @@ var TextInput = function(parentNode, host) {
|
|
|
2662
1923
|
syncComposition();
|
|
2663
1924
|
}
|
|
2664
1925
|
|
|
2665
|
-
event.addListener(text, "compositionstart", onCompositionStart);
|
|
2666
|
-
event.addListener(text, "compositionupdate", onCompositionUpdate);
|
|
2667
|
-
event.addListener(text, "keyup", onKeyup);
|
|
2668
|
-
event.addListener(text, "keydown", syncComposition);
|
|
2669
|
-
event.addListener(text, "compositionend", onCompositionEnd);
|
|
1926
|
+
event.addListener(text, "compositionstart", onCompositionStart, host);
|
|
1927
|
+
event.addListener(text, "compositionupdate", onCompositionUpdate, host);
|
|
1928
|
+
event.addListener(text, "keyup", onKeyup, host);
|
|
1929
|
+
event.addListener(text, "keydown", syncComposition, host);
|
|
1930
|
+
event.addListener(text, "compositionend", onCompositionEnd, host);
|
|
2670
1931
|
|
|
2671
1932
|
this.getElement = function() {
|
|
2672
1933
|
return text;
|
|
@@ -2737,13 +1998,13 @@ var TextInput = function(parentNode, host) {
|
|
|
2737
1998
|
host.textInput.onContextMenu(e);
|
|
2738
1999
|
onContextMenuClose();
|
|
2739
2000
|
};
|
|
2740
|
-
event.addListener(text, "mouseup", onContextMenu);
|
|
2001
|
+
event.addListener(text, "mouseup", onContextMenu, host);
|
|
2741
2002
|
event.addListener(text, "mousedown", function(e) {
|
|
2742
2003
|
e.preventDefault();
|
|
2743
2004
|
onContextMenuClose();
|
|
2744
|
-
});
|
|
2745
|
-
event.addListener(host.renderer.scroller, "contextmenu", onContextMenu);
|
|
2746
|
-
event.addListener(text, "contextmenu", onContextMenu);
|
|
2005
|
+
}, host);
|
|
2006
|
+
event.addListener(host.renderer.scroller, "contextmenu", onContextMenu, host);
|
|
2007
|
+
event.addListener(text, "contextmenu", onContextMenu, host);
|
|
2747
2008
|
|
|
2748
2009
|
if (isIOS)
|
|
2749
2010
|
addIosSelectionHandler(parentNode, host, text);
|
|
@@ -2829,10 +2090,13 @@ var TextInput = function(parentNode, host) {
|
|
|
2829
2090
|
document.removeEventListener("selectionchange", detectArrowKeys);
|
|
2830
2091
|
});
|
|
2831
2092
|
}
|
|
2832
|
-
|
|
2833
2093
|
};
|
|
2834
2094
|
|
|
2835
2095
|
exports.TextInput = TextInput;
|
|
2096
|
+
exports.$setUserAgentForTests = function(_isMobile, _isIOS) {
|
|
2097
|
+
isMobile = _isMobile;
|
|
2098
|
+
isIOS = _isIOS;
|
|
2099
|
+
};
|
|
2836
2100
|
});
|
|
2837
2101
|
|
|
2838
2102
|
define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"], function(require, exports, module) {
|
|
@@ -3262,7 +2526,7 @@ function GutterHandler(mouseHandler) {
|
|
|
3262
2526
|
tooltip.hide();
|
|
3263
2527
|
tooltipAnnotation = null;
|
|
3264
2528
|
editor._signal("hideGutterTooltip", tooltip);
|
|
3265
|
-
editor.
|
|
2529
|
+
editor.off("mousewheel", hideTooltip);
|
|
3266
2530
|
}
|
|
3267
2531
|
}
|
|
3268
2532
|
|
|
@@ -3299,7 +2563,7 @@ function GutterHandler(mouseHandler) {
|
|
|
3299
2563
|
tooltipTimeout = null;
|
|
3300
2564
|
hideTooltip();
|
|
3301
2565
|
}, 50);
|
|
3302
|
-
});
|
|
2566
|
+
}, editor);
|
|
3303
2567
|
|
|
3304
2568
|
editor.on("changeSession", hideTooltip);
|
|
3305
2569
|
}
|
|
@@ -3434,7 +2698,7 @@ function DragdropHandler(mouseHandler) {
|
|
|
3434
2698
|
exports.forEach(function(x) {
|
|
3435
2699
|
mouseHandler[x] = this[x];
|
|
3436
2700
|
}, this);
|
|
3437
|
-
editor.
|
|
2701
|
+
editor.on("mousedown", this.onMouseDown.bind(mouseHandler));
|
|
3438
2702
|
|
|
3439
2703
|
|
|
3440
2704
|
var mouseTarget = editor.container;
|
|
@@ -3559,12 +2823,12 @@ function DragdropHandler(mouseHandler) {
|
|
|
3559
2823
|
return event.preventDefault(e);
|
|
3560
2824
|
};
|
|
3561
2825
|
|
|
3562
|
-
event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler));
|
|
3563
|
-
event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler));
|
|
3564
|
-
event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler));
|
|
3565
|
-
event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler));
|
|
3566
|
-
event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler));
|
|
3567
|
-
event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler));
|
|
2826
|
+
event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler), editor);
|
|
2827
|
+
event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler), editor);
|
|
2828
|
+
event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler), editor);
|
|
2829
|
+
event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler), editor);
|
|
2830
|
+
event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler), editor);
|
|
2831
|
+
event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler), editor);
|
|
3568
2832
|
|
|
3569
2833
|
function scrollCursorIntoView(cursor, prevCursor) {
|
|
3570
2834
|
var now = Date.now();
|
|
@@ -3787,10 +3051,11 @@ exports.DragdropHandler = DragdropHandler;
|
|
|
3787
3051
|
|
|
3788
3052
|
});
|
|
3789
3053
|
|
|
3790
|
-
define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/dom"], function(require, exports, module) {
|
|
3054
|
+
define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"], function(require, exports, module) {
|
|
3791
3055
|
"use strict";
|
|
3792
3056
|
|
|
3793
3057
|
var MouseEvent = require("./mouse_event").MouseEvent;
|
|
3058
|
+
var event = require("../lib/event");
|
|
3794
3059
|
var dom = require("../lib/dom");
|
|
3795
3060
|
|
|
3796
3061
|
exports.addTouchListeners = function(el, editor) {
|
|
@@ -3878,9 +3143,17 @@ exports.addTouchListeners = function(el, editor) {
|
|
|
3878
3143
|
if (!contextMenu) createContextMenu();
|
|
3879
3144
|
var cursor = editor.selection.cursor;
|
|
3880
3145
|
var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);
|
|
3146
|
+
var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;
|
|
3147
|
+
var scrollLeft = editor.renderer.scrollLeft;
|
|
3881
3148
|
var rect = editor.container.getBoundingClientRect();
|
|
3882
3149
|
contextMenu.style.top = pagePos.pageY - rect.top - 3 + "px";
|
|
3883
|
-
|
|
3150
|
+
if (pagePos.pageX - rect.left < rect.width - 70) {
|
|
3151
|
+
contextMenu.style.left = "";
|
|
3152
|
+
contextMenu.style.right = "10px";
|
|
3153
|
+
} else {
|
|
3154
|
+
contextMenu.style.right = "";
|
|
3155
|
+
contextMenu.style.left = leftOffset + scrollLeft - rect.left + "px";
|
|
3156
|
+
}
|
|
3884
3157
|
contextMenu.style.display = "";
|
|
3885
3158
|
contextMenu.firstChild.style.display = "none";
|
|
3886
3159
|
editor.on("input", hideContextMenu);
|
|
@@ -3917,12 +3190,12 @@ exports.addTouchListeners = function(el, editor) {
|
|
|
3917
3190
|
}
|
|
3918
3191
|
mode = "wait";
|
|
3919
3192
|
}
|
|
3920
|
-
|
|
3193
|
+
event.addListener(el, "contextmenu", function(e) {
|
|
3921
3194
|
if (!pressed) return;
|
|
3922
3195
|
var textarea = editor.textInput.getElement();
|
|
3923
3196
|
textarea.focus();
|
|
3924
|
-
});
|
|
3925
|
-
|
|
3197
|
+
}, editor);
|
|
3198
|
+
event.addListener(el, "touchstart", function (e) {
|
|
3926
3199
|
var touches = e.touches;
|
|
3927
3200
|
if (longTouchTimer || touches.length > 1) {
|
|
3928
3201
|
clearTimeout(longTouchTimer);
|
|
@@ -3963,6 +3236,8 @@ exports.addTouchListeners = function(el, editor) {
|
|
|
3963
3236
|
var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);
|
|
3964
3237
|
var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);
|
|
3965
3238
|
var rect = editor.renderer.scroller.getBoundingClientRect();
|
|
3239
|
+
var offsetTop = editor.renderer.layerConfig.offset;
|
|
3240
|
+
var offsetLeft = editor.renderer.scrollLeft;
|
|
3966
3241
|
var weightedDistance = function(x, y) {
|
|
3967
3242
|
x = x / w;
|
|
3968
3243
|
y = y / h - 0.75;
|
|
@@ -3975,12 +3250,12 @@ exports.addTouchListeners = function(el, editor) {
|
|
|
3975
3250
|
}
|
|
3976
3251
|
|
|
3977
3252
|
var diff1 = weightedDistance(
|
|
3978
|
-
e.clientX - rect.left - cursorPos.left,
|
|
3979
|
-
e.clientY - rect.top - cursorPos.top
|
|
3253
|
+
e.clientX - rect.left - cursorPos.left + offsetLeft,
|
|
3254
|
+
e.clientY - rect.top - cursorPos.top + offsetTop
|
|
3980
3255
|
);
|
|
3981
3256
|
var diff2 = weightedDistance(
|
|
3982
|
-
e.clientX - rect.left - anchorPos.left,
|
|
3983
|
-
e.clientY - rect.top - anchorPos.top
|
|
3257
|
+
e.clientX - rect.left - anchorPos.left + offsetLeft,
|
|
3258
|
+
e.clientY - rect.top - anchorPos.top + offsetTop
|
|
3984
3259
|
);
|
|
3985
3260
|
if (diff1 < 3.5 && diff2 < 3.5)
|
|
3986
3261
|
mode = diff1 > diff2 ? "cursor" : "anchor";
|
|
@@ -3994,9 +3269,9 @@ exports.addTouchListeners = function(el, editor) {
|
|
|
3994
3269
|
longTouchTimer = setTimeout(handleLongTap, 450);
|
|
3995
3270
|
}
|
|
3996
3271
|
touchStartT = t;
|
|
3997
|
-
});
|
|
3272
|
+
}, editor);
|
|
3998
3273
|
|
|
3999
|
-
|
|
3274
|
+
event.addListener(el, "touchend", function (e) {
|
|
4000
3275
|
pressed = editor.$mouseHandler.isMousePressed = false;
|
|
4001
3276
|
if (animationTimer) clearInterval(animationTimer);
|
|
4002
3277
|
if (mode == "zoom") {
|
|
@@ -4008,15 +3283,14 @@ exports.addTouchListeners = function(el, editor) {
|
|
|
4008
3283
|
showContextMenu();
|
|
4009
3284
|
} else if (mode == "scroll") {
|
|
4010
3285
|
animate();
|
|
4011
|
-
e.preventDefault();
|
|
4012
3286
|
hideContextMenu();
|
|
4013
3287
|
} else {
|
|
4014
3288
|
showContextMenu();
|
|
4015
3289
|
}
|
|
4016
3290
|
clearTimeout(longTouchTimer);
|
|
4017
3291
|
longTouchTimer = null;
|
|
4018
|
-
});
|
|
4019
|
-
|
|
3292
|
+
}, editor);
|
|
3293
|
+
event.addListener(el, "touchmove", function (e) {
|
|
4020
3294
|
if (longTouchTimer) {
|
|
4021
3295
|
clearTimeout(longTouchTimer);
|
|
4022
3296
|
longTouchTimer = null;
|
|
@@ -4071,7 +3345,7 @@ exports.addTouchListeners = function(el, editor) {
|
|
|
4071
3345
|
editor.renderer.scrollCursorIntoView(pos);
|
|
4072
3346
|
e.preventDefault();
|
|
4073
3347
|
}
|
|
4074
|
-
});
|
|
3348
|
+
}, editor);
|
|
4075
3349
|
|
|
4076
3350
|
function animate() {
|
|
4077
3351
|
animationSteps += 60;
|
|
@@ -4182,8 +3456,8 @@ EventEmitter._signal = function(eventName, e) {
|
|
|
4182
3456
|
|
|
4183
3457
|
EventEmitter.once = function(eventName, callback) {
|
|
4184
3458
|
var _self = this;
|
|
4185
|
-
this.
|
|
4186
|
-
_self.
|
|
3459
|
+
this.on(eventName, function newCallback() {
|
|
3460
|
+
_self.off(eventName, newCallback);
|
|
4187
3461
|
callback.apply(null, arguments);
|
|
4188
3462
|
});
|
|
4189
3463
|
if (!callback) {
|
|
@@ -4255,7 +3529,9 @@ EventEmitter.removeEventListener = function(eventName, callback) {
|
|
|
4255
3529
|
};
|
|
4256
3530
|
|
|
4257
3531
|
EventEmitter.removeAllListeners = function(eventName) {
|
|
4258
|
-
if (this._eventRegistry
|
|
3532
|
+
if (!eventName) this._eventRegistry = this._defaultHandlers = undefined;
|
|
3533
|
+
if (this._eventRegistry) this._eventRegistry[eventName] = undefined;
|
|
3534
|
+
if (this._defaultHandlers) this._defaultHandlers[eventName] = undefined;
|
|
4259
3535
|
};
|
|
4260
3536
|
|
|
4261
3537
|
exports.EventEmitter = EventEmitter;
|
|
@@ -4578,7 +3854,7 @@ function deHyphenate(str) {
|
|
|
4578
3854
|
return str.replace(/-(.)/g, function(m, m1) { return m1.toUpperCase(); });
|
|
4579
3855
|
}
|
|
4580
3856
|
|
|
4581
|
-
exports.version = "1.4.
|
|
3857
|
+
exports.version = "1.4.12";
|
|
4582
3858
|
|
|
4583
3859
|
});
|
|
4584
3860
|
|
|
@@ -4611,28 +3887,28 @@ var MouseHandler = function(editor) {
|
|
|
4611
3887
|
};
|
|
4612
3888
|
|
|
4613
3889
|
var mouseTarget = editor.renderer.getMouseEventTarget();
|
|
4614
|
-
event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click"));
|
|
4615
|
-
event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove"));
|
|
3890
|
+
event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click"), editor);
|
|
3891
|
+
event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove"), editor);
|
|
4616
3892
|
event.addMultiMouseDownListener([
|
|
4617
3893
|
mouseTarget,
|
|
4618
3894
|
editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,
|
|
4619
3895
|
editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,
|
|
4620
3896
|
editor.textInput && editor.textInput.getElement()
|
|
4621
|
-
].filter(Boolean), [400, 300, 250], this, "onMouseEvent");
|
|
4622
|
-
event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel"));
|
|
3897
|
+
].filter(Boolean), [400, 300, 250], this, "onMouseEvent", editor);
|
|
3898
|
+
event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel"), editor);
|
|
4623
3899
|
addTouchListeners(editor.container, editor);
|
|
4624
3900
|
|
|
4625
3901
|
var gutterEl = editor.renderer.$gutter;
|
|
4626
|
-
event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"));
|
|
4627
|
-
event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick"));
|
|
4628
|
-
event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"));
|
|
4629
|
-
event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"));
|
|
3902
|
+
event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"), editor);
|
|
3903
|
+
event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick"), editor);
|
|
3904
|
+
event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"), editor);
|
|
3905
|
+
event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"), editor);
|
|
4630
3906
|
|
|
4631
|
-
event.addListener(mouseTarget, "mousedown", focusEditor);
|
|
4632
|
-
event.addListener(gutterEl, "mousedown", focusEditor);
|
|
3907
|
+
event.addListener(mouseTarget, "mousedown", focusEditor, editor);
|
|
3908
|
+
event.addListener(gutterEl, "mousedown", focusEditor, editor);
|
|
4633
3909
|
if (useragent.isIE && editor.renderer.scrollBarV) {
|
|
4634
|
-
event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor);
|
|
4635
|
-
event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor);
|
|
3910
|
+
event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor, editor);
|
|
3911
|
+
event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor, editor);
|
|
4636
3912
|
}
|
|
4637
3913
|
|
|
4638
3914
|
editor.on("mousemove", function(e){
|
|
@@ -4648,7 +3924,7 @@ var MouseHandler = function(editor) {
|
|
|
4648
3924
|
} else {
|
|
4649
3925
|
renderer.setCursorStyle("");
|
|
4650
3926
|
}
|
|
4651
|
-
});
|
|
3927
|
+
}, editor);
|
|
4652
3928
|
};
|
|
4653
3929
|
|
|
4654
3930
|
(function() {
|
|
@@ -4750,6 +4026,9 @@ var MouseHandler = function(editor) {
|
|
|
4750
4026
|
setTimeout(stop, 10);
|
|
4751
4027
|
this.editor.on("nativecontextmenu", stop);
|
|
4752
4028
|
};
|
|
4029
|
+
this.destroy = function() {
|
|
4030
|
+
if (this.releaseMouse) this.releaseMouse();
|
|
4031
|
+
};
|
|
4753
4032
|
}).call(MouseHandler.prototype);
|
|
4754
4033
|
|
|
4755
4034
|
config.defineOptions(MouseHandler.prototype, "mouseHandler", {
|
|
@@ -5678,6 +4957,8 @@ var Selection = function(session) {
|
|
|
5678
4957
|
};
|
|
5679
4958
|
|
|
5680
4959
|
this.$setSelection = function(anchorRow, anchorColumn, cursorRow, cursorColumn) {
|
|
4960
|
+
if (this.$silent)
|
|
4961
|
+
return;
|
|
5681
4962
|
var wasEmpty = this.$isEmpty;
|
|
5682
4963
|
var wasMultiselect = this.inMultiSelectMode;
|
|
5683
4964
|
this.$silent = true;
|
|
@@ -6071,14 +5352,19 @@ var Selection = function(session) {
|
|
|
6071
5352
|
else
|
|
6072
5353
|
this.$desiredColumn = screenPos.column;
|
|
6073
5354
|
}
|
|
6074
|
-
|
|
5355
|
+
|
|
5356
|
+
if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {
|
|
5357
|
+
var widget = this.session.lineWidgets[this.lead.row];
|
|
5358
|
+
if (rows < 0)
|
|
5359
|
+
rows -= widget.rowsAbove || 0;
|
|
5360
|
+
else if (rows > 0)
|
|
5361
|
+
rows += widget.rowCount - (widget.rowsAbove || 0);
|
|
5362
|
+
}
|
|
5363
|
+
|
|
6075
5364
|
var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);
|
|
6076
5365
|
|
|
6077
5366
|
if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {
|
|
6078
|
-
|
|
6079
|
-
if (docPos.row > 0 || rows > 0)
|
|
6080
|
-
docPos.row++;
|
|
6081
|
-
}
|
|
5367
|
+
|
|
6082
5368
|
}
|
|
6083
5369
|
this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);
|
|
6084
5370
|
};
|
|
@@ -6688,18 +5974,18 @@ var TextHighlightRules = function() {
|
|
|
6688
5974
|
|
|
6689
5975
|
this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {
|
|
6690
5976
|
var keywords = Object.create(null);
|
|
5977
|
+
this.$keywordList = [];
|
|
6691
5978
|
Object.keys(map).forEach(function(className) {
|
|
6692
5979
|
var a = map[className];
|
|
6693
|
-
if (ignoreCase)
|
|
6694
|
-
a = a.toLowerCase();
|
|
6695
5980
|
var list = a.split(splitChar || "|");
|
|
6696
|
-
for (var i = list.length; i--; )
|
|
6697
|
-
|
|
6698
|
-
|
|
6699
|
-
|
|
6700
|
-
|
|
6701
|
-
|
|
6702
|
-
|
|
5981
|
+
for (var i = list.length; i--; ) {
|
|
5982
|
+
var word = list[i];
|
|
5983
|
+
this.$keywordList.push(word);
|
|
5984
|
+
if (ignoreCase)
|
|
5985
|
+
word = word.toLowerCase();
|
|
5986
|
+
keywords[word] = className;
|
|
5987
|
+
}
|
|
5988
|
+
}, this);
|
|
6703
5989
|
map = null;
|
|
6704
5990
|
return ignoreCase
|
|
6705
5991
|
? function(value) {return keywords[value.toLowerCase()] || defaultToken; }
|
|
@@ -7762,7 +7048,7 @@ var Anchor = exports.Anchor = function(doc, row, column) {
|
|
|
7762
7048
|
});
|
|
7763
7049
|
};
|
|
7764
7050
|
this.detach = function() {
|
|
7765
|
-
this.document.
|
|
7051
|
+
this.document.off("change", this.$onChange);
|
|
7766
7052
|
};
|
|
7767
7053
|
this.attach = function(doc) {
|
|
7768
7054
|
this.document = doc || this.document;
|
|
@@ -8094,6 +7380,16 @@ var Document = function(textOrLines) {
|
|
|
8094
7380
|
}
|
|
8095
7381
|
};
|
|
8096
7382
|
|
|
7383
|
+
this.$safeApplyDelta = function(delta) {
|
|
7384
|
+
var docLength = this.$lines.length;
|
|
7385
|
+
if (
|
|
7386
|
+
delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength
|
|
7387
|
+
|| delta.action == "insert" && delta.start.row <= docLength
|
|
7388
|
+
) {
|
|
7389
|
+
this.applyDelta(delta);
|
|
7390
|
+
}
|
|
7391
|
+
};
|
|
7392
|
+
|
|
8097
7393
|
this.$splitAndapplyLargeDelta = function(delta, MAX) {
|
|
8098
7394
|
var lines = delta.lines;
|
|
8099
7395
|
var l = lines.length - MAX + 1;
|
|
@@ -8116,7 +7412,7 @@ var Document = function(textOrLines) {
|
|
|
8116
7412
|
this.applyDelta(delta, true);
|
|
8117
7413
|
};
|
|
8118
7414
|
this.revertDelta = function(delta) {
|
|
8119
|
-
this
|
|
7415
|
+
this.$safeApplyDelta({
|
|
8120
7416
|
start: this.clonePos(delta.start),
|
|
8121
7417
|
end: this.clonePos(delta.end),
|
|
8122
7418
|
action: (delta.action == "insert" ? "remove" : "insert"),
|
|
@@ -9153,9 +8449,11 @@ function Folding() {
|
|
|
9153
8449
|
var folds = this.getFoldsInRange(fold.range);
|
|
9154
8450
|
if (folds.length > 0) {
|
|
9155
8451
|
this.removeFolds(folds);
|
|
9156
|
-
|
|
9157
|
-
|
|
9158
|
-
|
|
8452
|
+
if (!fold.collapseChildren) {
|
|
8453
|
+
folds.forEach(function(subFold) {
|
|
8454
|
+
fold.addSubFold(subFold);
|
|
8455
|
+
});
|
|
8456
|
+
}
|
|
9159
8457
|
}
|
|
9160
8458
|
|
|
9161
8459
|
for (var i = 0; i < foldData.length; i++) {
|
|
@@ -9274,7 +8572,7 @@ function Folding() {
|
|
|
9274
8572
|
var range, folds;
|
|
9275
8573
|
if (location == null) {
|
|
9276
8574
|
range = new Range(0, 0, this.getLength(), 0);
|
|
9277
|
-
expandInner = true;
|
|
8575
|
+
if (expandInner == null) expandInner = true;
|
|
9278
8576
|
} else if (typeof location == "number")
|
|
9279
8577
|
range = new Range(location, 0, location, this.getLine(location).length);
|
|
9280
8578
|
else if ("row" in location)
|
|
@@ -9283,14 +8581,10 @@ function Folding() {
|
|
|
9283
8581
|
range = location;
|
|
9284
8582
|
|
|
9285
8583
|
folds = this.getFoldsInRangeList(range);
|
|
9286
|
-
if (expandInner) {
|
|
8584
|
+
if (expandInner != false) {
|
|
9287
8585
|
this.removeFolds(folds);
|
|
9288
8586
|
} else {
|
|
9289
|
-
|
|
9290
|
-
while (subFolds.length) {
|
|
9291
|
-
this.expandFolds(subFolds);
|
|
9292
|
-
subFolds = this.getFoldsInRangeList(range);
|
|
9293
|
-
}
|
|
8587
|
+
this.expandFolds(folds);
|
|
9294
8588
|
}
|
|
9295
8589
|
if (folds.length)
|
|
9296
8590
|
return folds;
|
|
@@ -9427,7 +8721,7 @@ function Folding() {
|
|
|
9427
8721
|
this.getCommentFoldRange = function(row, column, dir) {
|
|
9428
8722
|
var iterator = new TokenIterator(this, row, column);
|
|
9429
8723
|
var token = iterator.getCurrentToken();
|
|
9430
|
-
var type = token.type;
|
|
8724
|
+
var type = token && token.type;
|
|
9431
8725
|
if (token && /^comment|string/.test(type)) {
|
|
9432
8726
|
type = type.match(/comment|string/)[0];
|
|
9433
8727
|
if (type == "comment")
|
|
@@ -9468,7 +8762,7 @@ function Folding() {
|
|
|
9468
8762
|
}
|
|
9469
8763
|
};
|
|
9470
8764
|
|
|
9471
|
-
this.foldAll = function(startRow, endRow, depth) {
|
|
8765
|
+
this.foldAll = function(startRow, endRow, depth, test) {
|
|
9472
8766
|
if (depth == undefined)
|
|
9473
8767
|
depth = 100000; // JSON.stringify doesn't hanle Infinity
|
|
9474
8768
|
var foldWidgets = this.foldWidgets;
|
|
@@ -9481,6 +8775,8 @@ function Folding() {
|
|
|
9481
8775
|
foldWidgets[row] = this.getFoldWidget(row);
|
|
9482
8776
|
if (foldWidgets[row] != "start")
|
|
9483
8777
|
continue;
|
|
8778
|
+
|
|
8779
|
+
if (test && !test(row)) continue;
|
|
9484
8780
|
|
|
9485
8781
|
var range = this.getFoldWidgetRange(row);
|
|
9486
8782
|
if (range && range.isMultiLine()
|
|
@@ -9488,14 +8784,32 @@ function Folding() {
|
|
|
9488
8784
|
&& range.start.row >= startRow
|
|
9489
8785
|
) {
|
|
9490
8786
|
row = range.end.row;
|
|
9491
|
-
|
|
9492
|
-
|
|
9493
|
-
if (fold)
|
|
9494
|
-
fold.collapseChildren = depth;
|
|
9495
|
-
} catch(e) {}
|
|
8787
|
+
range.collapseChildren = depth;
|
|
8788
|
+
this.addFold("...", range);
|
|
9496
8789
|
}
|
|
9497
8790
|
}
|
|
9498
8791
|
};
|
|
8792
|
+
|
|
8793
|
+
this.foldToLevel = function(level) {
|
|
8794
|
+
this.foldAll();
|
|
8795
|
+
while (level-- > 0)
|
|
8796
|
+
this.unfold(null, false);
|
|
8797
|
+
};
|
|
8798
|
+
|
|
8799
|
+
this.foldAllComments = function() {
|
|
8800
|
+
var session = this;
|
|
8801
|
+
this.foldAll(null, null, null, function(row) {
|
|
8802
|
+
var tokens = session.getTokens(row);
|
|
8803
|
+
for (var i = 0; i < tokens.length; i++) {
|
|
8804
|
+
var token = tokens[i];
|
|
8805
|
+
if (token.type == "text" && /^\s+$/.test(token.value))
|
|
8806
|
+
continue;
|
|
8807
|
+
if (/comment/.test(token.type))
|
|
8808
|
+
return true;
|
|
8809
|
+
return false;
|
|
8810
|
+
}
|
|
8811
|
+
});
|
|
8812
|
+
};
|
|
9499
8813
|
this.$foldStyles = {
|
|
9500
8814
|
"manual": 1,
|
|
9501
8815
|
"markbegin": 1,
|
|
@@ -9711,7 +9025,7 @@ function BracketMatch() {
|
|
|
9711
9025
|
var line = this.getLine(pos.row);
|
|
9712
9026
|
var before = true, range;
|
|
9713
9027
|
|
|
9714
|
-
var chr = line.charAt(pos.column-1);
|
|
9028
|
+
var chr = line.charAt(pos.column - 1);
|
|
9715
9029
|
var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/);
|
|
9716
9030
|
if (!match) {
|
|
9717
9031
|
chr = line.charAt(pos.column);
|
|
@@ -9746,6 +9060,29 @@ function BracketMatch() {
|
|
|
9746
9060
|
|
|
9747
9061
|
return range;
|
|
9748
9062
|
};
|
|
9063
|
+
this.getMatchingBracketRanges = function(pos) {
|
|
9064
|
+
var line = this.getLine(pos.row);
|
|
9065
|
+
|
|
9066
|
+
var chr = line.charAt(pos.column - 1);
|
|
9067
|
+
var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/);
|
|
9068
|
+
if (!match) {
|
|
9069
|
+
chr = line.charAt(pos.column);
|
|
9070
|
+
pos = {row: pos.row, column: pos.column + 1};
|
|
9071
|
+
match = chr && chr.match(/([\(\[\{])|([\)\]\}])/);
|
|
9072
|
+
}
|
|
9073
|
+
|
|
9074
|
+
if (!match)
|
|
9075
|
+
return null;
|
|
9076
|
+
|
|
9077
|
+
var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);
|
|
9078
|
+
var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)
|
|
9079
|
+
: this.$findOpeningBracket(match[2], pos);
|
|
9080
|
+
if (!bracketPos)
|
|
9081
|
+
return [startRange];
|
|
9082
|
+
var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);
|
|
9083
|
+
|
|
9084
|
+
return [startRange, endRange];
|
|
9085
|
+
};
|
|
9749
9086
|
|
|
9750
9087
|
this.$brackets = {
|
|
9751
9088
|
")": "(",
|
|
@@ -10344,7 +9681,8 @@ EditSession.$uid = 0;
|
|
|
10344
9681
|
this.$modeId = mode.$id;
|
|
10345
9682
|
if (this.$mode === mode)
|
|
10346
9683
|
return;
|
|
10347
|
-
|
|
9684
|
+
|
|
9685
|
+
var oldMode = this.$mode;
|
|
10348
9686
|
this.$mode = mode;
|
|
10349
9687
|
|
|
10350
9688
|
this.$stopWorker();
|
|
@@ -10354,15 +9692,15 @@ EditSession.$uid = 0;
|
|
|
10354
9692
|
|
|
10355
9693
|
var tokenizer = mode.getTokenizer();
|
|
10356
9694
|
|
|
10357
|
-
if(tokenizer.
|
|
9695
|
+
if(tokenizer.on !== undefined) {
|
|
10358
9696
|
var onReloadTokenizer = this.onReloadTokenizer.bind(this);
|
|
10359
|
-
tokenizer.
|
|
9697
|
+
tokenizer.on("update", onReloadTokenizer);
|
|
10360
9698
|
}
|
|
10361
9699
|
|
|
10362
9700
|
if (!this.bgTokenizer) {
|
|
10363
9701
|
this.bgTokenizer = new BackgroundTokenizer(tokenizer);
|
|
10364
9702
|
var _self = this;
|
|
10365
|
-
this.bgTokenizer.
|
|
9703
|
+
this.bgTokenizer.on("update", function(e) {
|
|
10366
9704
|
_self._signal("tokenizerUpdate", e);
|
|
10367
9705
|
});
|
|
10368
9706
|
} else {
|
|
@@ -10381,7 +9719,7 @@ EditSession.$uid = 0;
|
|
|
10381
9719
|
this.$options.wrapMethod.set.call(this, this.$wrapMethod);
|
|
10382
9720
|
this.$setFolding(mode.foldingRules);
|
|
10383
9721
|
this.bgTokenizer.start(0);
|
|
10384
|
-
this._emit("changeMode");
|
|
9722
|
+
this._emit("changeMode", {oldMode: oldMode, mode: mode});
|
|
10385
9723
|
}
|
|
10386
9724
|
};
|
|
10387
9725
|
|
|
@@ -10527,7 +9865,7 @@ EditSession.$uid = 0;
|
|
|
10527
9865
|
for (var i = 0; i < deltas.length; i++) {
|
|
10528
9866
|
var delta = deltas[i];
|
|
10529
9867
|
if (delta.action == "insert" || delta.action == "remove") {
|
|
10530
|
-
this.doc
|
|
9868
|
+
this.doc.$safeApplyDelta(delta);
|
|
10531
9869
|
}
|
|
10532
9870
|
}
|
|
10533
9871
|
|
|
@@ -10549,7 +9887,6 @@ EditSession.$uid = 0;
|
|
|
10549
9887
|
}
|
|
10550
9888
|
|
|
10551
9889
|
var range, point;
|
|
10552
|
-
var lastDeltaIsInsert;
|
|
10553
9890
|
|
|
10554
9891
|
for (var i = 0; i < deltas.length; i++) {
|
|
10555
9892
|
var delta = deltas[i];
|
|
@@ -10557,10 +9894,8 @@ EditSession.$uid = 0;
|
|
|
10557
9894
|
if (!range) {
|
|
10558
9895
|
if (isInsert(delta)) {
|
|
10559
9896
|
range = Range.fromPoints(delta.start, delta.end);
|
|
10560
|
-
lastDeltaIsInsert = true;
|
|
10561
9897
|
} else {
|
|
10562
9898
|
range = Range.fromPoints(delta.start, delta.start);
|
|
10563
|
-
lastDeltaIsInsert = false;
|
|
10564
9899
|
}
|
|
10565
9900
|
continue;
|
|
10566
9901
|
}
|
|
@@ -10574,13 +9909,11 @@ EditSession.$uid = 0;
|
|
|
10574
9909
|
if (range.compare(point.row, point.column) == 1) {
|
|
10575
9910
|
range.setEnd(point);
|
|
10576
9911
|
}
|
|
10577
|
-
lastDeltaIsInsert = true;
|
|
10578
9912
|
} else {
|
|
10579
9913
|
point = delta.start;
|
|
10580
9914
|
if (range.compare(point.row, point.column) == -1) {
|
|
10581
9915
|
range = Range.fromPoints(delta.start, delta.start);
|
|
10582
9916
|
}
|
|
10583
|
-
lastDeltaIsInsert = false;
|
|
10584
9917
|
}
|
|
10585
9918
|
}
|
|
10586
9919
|
return range;
|
|
@@ -11148,15 +10481,14 @@ EditSession.$uid = 0;
|
|
|
11148
10481
|
|
|
11149
10482
|
this.lineWidgets = null;
|
|
11150
10483
|
this.getRowLength = function(row) {
|
|
10484
|
+
var h = 1;
|
|
11151
10485
|
if (this.lineWidgets)
|
|
11152
|
-
|
|
11153
|
-
|
|
11154
|
-
|
|
11155
|
-
|
|
11156
|
-
|
|
11157
|
-
|
|
11158
|
-
return this.$wrapData[row].length + 1 + h;
|
|
11159
|
-
}
|
|
10486
|
+
h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;
|
|
10487
|
+
|
|
10488
|
+
if (!this.$useWrapMode || !this.$wrapData[row])
|
|
10489
|
+
return h;
|
|
10490
|
+
else
|
|
10491
|
+
return this.$wrapData[row].length + h;
|
|
11160
10492
|
};
|
|
11161
10493
|
this.getRowLineCount = function(row) {
|
|
11162
10494
|
if (!this.$useWrapMode || !this.$wrapData[row]) {
|
|
@@ -11368,6 +10700,9 @@ EditSession.$uid = 0;
|
|
|
11368
10700
|
wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;
|
|
11369
10701
|
}
|
|
11370
10702
|
}
|
|
10703
|
+
|
|
10704
|
+
if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)
|
|
10705
|
+
screenRow += this.lineWidgets[row].rowsAbove;
|
|
11371
10706
|
|
|
11372
10707
|
return {
|
|
11373
10708
|
row: screenRow,
|
|
@@ -11444,6 +10779,8 @@ EditSession.$uid = 0;
|
|
|
11444
10779
|
this.bgTokenizer = null;
|
|
11445
10780
|
}
|
|
11446
10781
|
this.$stopWorker();
|
|
10782
|
+
this.removeAllListeners();
|
|
10783
|
+
this.selection.detach();
|
|
11447
10784
|
};
|
|
11448
10785
|
|
|
11449
10786
|
this.isFullWidth = isFullWidth;
|
|
@@ -12185,7 +11522,7 @@ oop.inherits(CommandManager, MultiHashHandler);
|
|
|
12185
11522
|
editor && editor._emit("changeStatus");
|
|
12186
11523
|
if (this.recording) {
|
|
12187
11524
|
this.macro.pop();
|
|
12188
|
-
this.
|
|
11525
|
+
this.off("exec", this.$addCommandToMacro);
|
|
12189
11526
|
|
|
12190
11527
|
if (!this.macro.length)
|
|
12191
11528
|
this.macro = this.oldMacro;
|
|
@@ -12337,6 +11674,13 @@ exports.commands = [{
|
|
|
12337
11674
|
exec: function(editor) { editor.session.foldAll(); },
|
|
12338
11675
|
scrollIntoView: "center",
|
|
12339
11676
|
readOnly: true
|
|
11677
|
+
}, {
|
|
11678
|
+
name: "foldAllComments",
|
|
11679
|
+
description: "Fold all comments",
|
|
11680
|
+
bindKey: bindKey(null, "Ctrl-Command-Option-0"),
|
|
11681
|
+
exec: function(editor) { editor.session.foldAllComments(); },
|
|
11682
|
+
scrollIntoView: "center",
|
|
11683
|
+
readOnly: true
|
|
12340
11684
|
}, {
|
|
12341
11685
|
name: "foldOther",
|
|
12342
11686
|
description: "Fold other",
|
|
@@ -12945,6 +12289,13 @@ exports.commands = [{
|
|
|
12945
12289
|
exec: function(editor) { editor.toLowerCase(); },
|
|
12946
12290
|
multiSelectAction: "forEach",
|
|
12947
12291
|
scrollIntoView: "cursor"
|
|
12292
|
+
}, {
|
|
12293
|
+
name: "autoindent",
|
|
12294
|
+
description: "Auto Indent",
|
|
12295
|
+
bindKey: bindKey(null, null),
|
|
12296
|
+
exec: function(editor) { editor.autoIndent(); },
|
|
12297
|
+
multiSelectAction: "forEachLine",
|
|
12298
|
+
scrollIntoView: "animate"
|
|
12948
12299
|
}, {
|
|
12949
12300
|
name: "expandtoline",
|
|
12950
12301
|
description: "Expand to line",
|
|
@@ -13035,6 +12386,26 @@ exports.commands = [{
|
|
|
13035
12386
|
},
|
|
13036
12387
|
readOnly: true,
|
|
13037
12388
|
scrollIntoView: "none"
|
|
12389
|
+
}, {
|
|
12390
|
+
name: "addLineAfter",
|
|
12391
|
+
exec: function(editor) {
|
|
12392
|
+
editor.selection.clearSelection();
|
|
12393
|
+
editor.navigateLineEnd();
|
|
12394
|
+
editor.insert("\n");
|
|
12395
|
+
},
|
|
12396
|
+
multiSelectAction: "forEach",
|
|
12397
|
+
scrollIntoView: "cursor"
|
|
12398
|
+
}, {
|
|
12399
|
+
name: "addLineBefore",
|
|
12400
|
+
exec: function(editor) {
|
|
12401
|
+
editor.selection.clearSelection();
|
|
12402
|
+
var cursor = editor.getCursorPosition();
|
|
12403
|
+
editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);
|
|
12404
|
+
editor.insert("\n");
|
|
12405
|
+
if (cursor.row === 0) editor.navigateUp();
|
|
12406
|
+
},
|
|
12407
|
+
multiSelectAction: "forEach",
|
|
12408
|
+
scrollIntoView: "cursor"
|
|
13038
12409
|
}, {
|
|
13039
12410
|
name: "openCommandPallete",
|
|
13040
12411
|
description: "Open command pallete",
|
|
@@ -13053,6 +12424,17 @@ exports.commands = [{
|
|
|
13053
12424
|
readOnly: true
|
|
13054
12425
|
}];
|
|
13055
12426
|
|
|
12427
|
+
for (var i = 1; i < 9; i++) {
|
|
12428
|
+
exports.commands.push({
|
|
12429
|
+
name: "foldToLevel" + i,
|
|
12430
|
+
description: "Fold To Level " + i,
|
|
12431
|
+
level: i,
|
|
12432
|
+
exec: function(editor) { editor.session.foldToLevel(this.level); },
|
|
12433
|
+
scrollIntoView: "center",
|
|
12434
|
+
readOnly: true
|
|
12435
|
+
});
|
|
12436
|
+
}
|
|
12437
|
+
|
|
13056
12438
|
});
|
|
13057
12439
|
|
|
13058
12440
|
define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator","ace/clipboard"], function(require, exports, module) {
|
|
@@ -13079,6 +12461,7 @@ var TokenIterator = require("./token_iterator").TokenIterator;
|
|
|
13079
12461
|
|
|
13080
12462
|
var clipboard = require("./clipboard");
|
|
13081
12463
|
var Editor = function(renderer, session, options) {
|
|
12464
|
+
this.$toDestroy = [];
|
|
13082
12465
|
var container = renderer.getContainerElement();
|
|
13083
12466
|
this.container = container;
|
|
13084
12467
|
this.renderer = renderer;
|
|
@@ -13171,8 +12554,8 @@ Editor.$uid = 0;
|
|
|
13171
12554
|
};
|
|
13172
12555
|
|
|
13173
12556
|
this.endOperation = function(e) {
|
|
13174
|
-
if (this.curOp) {
|
|
13175
|
-
if (e && e.returnValue === false)
|
|
12557
|
+
if (this.curOp && this.session) {
|
|
12558
|
+
if (e && e.returnValue === false || !this.session)
|
|
13176
12559
|
return (this.curOp = null);
|
|
13177
12560
|
if (e == true && this.curOp.command && this.curOp.command.name == "mouse")
|
|
13178
12561
|
return;
|
|
@@ -13420,28 +12803,46 @@ Editor.$uid = 0;
|
|
|
13420
12803
|
};
|
|
13421
12804
|
|
|
13422
12805
|
this.$highlightBrackets = function() {
|
|
13423
|
-
if (this.session.$bracketHighlight) {
|
|
13424
|
-
this.session.removeMarker(this.session.$bracketHighlight);
|
|
13425
|
-
this.session.$bracketHighlight = null;
|
|
13426
|
-
}
|
|
13427
|
-
|
|
13428
12806
|
if (this.$highlightPending) {
|
|
13429
12807
|
return;
|
|
13430
12808
|
}
|
|
13431
12809
|
var self = this;
|
|
13432
12810
|
this.$highlightPending = true;
|
|
13433
|
-
setTimeout(function() {
|
|
12811
|
+
setTimeout(function () {
|
|
13434
12812
|
self.$highlightPending = false;
|
|
13435
12813
|
var session = self.session;
|
|
13436
12814
|
if (!session || !session.bgTokenizer) return;
|
|
13437
|
-
|
|
13438
|
-
|
|
13439
|
-
|
|
13440
|
-
|
|
13441
|
-
|
|
13442
|
-
}
|
|
13443
|
-
|
|
13444
|
-
|
|
12815
|
+
if (session.$bracketHighlight) {
|
|
12816
|
+
session.$bracketHighlight.markerIds.forEach(function(id) {
|
|
12817
|
+
session.removeMarker(id);
|
|
12818
|
+
});
|
|
12819
|
+
session.$bracketHighlight = null;
|
|
12820
|
+
}
|
|
12821
|
+
var ranges = session.getMatchingBracketRanges(self.getCursorPosition());
|
|
12822
|
+
if (!ranges && session.$mode.getMatching)
|
|
12823
|
+
ranges = session.$mode.getMatching(self.session);
|
|
12824
|
+
if (!ranges)
|
|
12825
|
+
return;
|
|
12826
|
+
|
|
12827
|
+
var markerType = "ace_bracket";
|
|
12828
|
+
if (!Array.isArray(ranges)) {
|
|
12829
|
+
ranges = [ranges];
|
|
12830
|
+
} else if (ranges.length == 1) {
|
|
12831
|
+
markerType = "ace_error_bracket";
|
|
12832
|
+
}
|
|
12833
|
+
if (ranges.length == 2) {
|
|
12834
|
+
if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)
|
|
12835
|
+
ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];
|
|
12836
|
+
else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)
|
|
12837
|
+
ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];
|
|
12838
|
+
}
|
|
12839
|
+
|
|
12840
|
+
session.$bracketHighlight = {
|
|
12841
|
+
ranges: ranges,
|
|
12842
|
+
markerIds: ranges.map(function(range) {
|
|
12843
|
+
return session.addMarker(range, markerType, "text");
|
|
12844
|
+
})
|
|
12845
|
+
};
|
|
13445
12846
|
}, 50);
|
|
13446
12847
|
};
|
|
13447
12848
|
this.$highlightTags = function() {
|
|
@@ -13465,25 +12866,33 @@ Editor.$uid = 0;
|
|
|
13465
12866
|
return;
|
|
13466
12867
|
}
|
|
13467
12868
|
|
|
13468
|
-
if (token.type.indexOf("tag-open")
|
|
12869
|
+
if (token.type.indexOf("tag-open") !== -1) {
|
|
13469
12870
|
token = iterator.stepForward();
|
|
13470
12871
|
if (!token)
|
|
13471
12872
|
return;
|
|
13472
12873
|
}
|
|
13473
12874
|
|
|
13474
12875
|
var tag = token.value;
|
|
12876
|
+
var currentTag = token.value;
|
|
13475
12877
|
var depth = 0;
|
|
13476
12878
|
var prevToken = iterator.stepBackward();
|
|
13477
12879
|
|
|
13478
|
-
if (prevToken.value
|
|
12880
|
+
if (prevToken.value === '<'){
|
|
13479
12881
|
do {
|
|
13480
12882
|
prevToken = token;
|
|
13481
12883
|
token = iterator.stepForward();
|
|
13482
|
-
|
|
13483
|
-
if (token
|
|
13484
|
-
if (
|
|
13485
|
-
|
|
13486
|
-
|
|
12884
|
+
|
|
12885
|
+
if (token) {
|
|
12886
|
+
if (token.type.indexOf('tag-name') !== -1) {
|
|
12887
|
+
currentTag = token.value;
|
|
12888
|
+
if (tag === currentTag) {
|
|
12889
|
+
if (prevToken.value === '<') {
|
|
12890
|
+
depth++;
|
|
12891
|
+
} else if (prevToken.value === '</') {
|
|
12892
|
+
depth--;
|
|
12893
|
+
}
|
|
12894
|
+
}
|
|
12895
|
+
} else if (tag === currentTag && token.value === '/>') { // self closing tag
|
|
13487
12896
|
depth--;
|
|
13488
12897
|
}
|
|
13489
12898
|
}
|
|
@@ -13493,12 +12902,32 @@ Editor.$uid = 0;
|
|
|
13493
12902
|
do {
|
|
13494
12903
|
token = prevToken;
|
|
13495
12904
|
prevToken = iterator.stepBackward();
|
|
13496
|
-
|
|
13497
|
-
if (token
|
|
13498
|
-
if (
|
|
13499
|
-
|
|
13500
|
-
|
|
13501
|
-
|
|
12905
|
+
|
|
12906
|
+
if (token) {
|
|
12907
|
+
if (token.type.indexOf('tag-name') !== -1) {
|
|
12908
|
+
if (tag === token.value) {
|
|
12909
|
+
if (prevToken.value === '<') {
|
|
12910
|
+
depth++;
|
|
12911
|
+
} else if (prevToken.value === '</') {
|
|
12912
|
+
depth--;
|
|
12913
|
+
}
|
|
12914
|
+
}
|
|
12915
|
+
} else if (token.value === '/>') { // self closing tag
|
|
12916
|
+
var stepCount = 0;
|
|
12917
|
+
var tmpToken = prevToken;
|
|
12918
|
+
while (tmpToken) {
|
|
12919
|
+
if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {
|
|
12920
|
+
depth--;
|
|
12921
|
+
break;
|
|
12922
|
+
} else if (tmpToken.value === '<') {
|
|
12923
|
+
break;
|
|
12924
|
+
}
|
|
12925
|
+
tmpToken = iterator.stepBackward();
|
|
12926
|
+
stepCount++;
|
|
12927
|
+
}
|
|
12928
|
+
for (var i = 0; i < stepCount; i++) {
|
|
12929
|
+
iterator.stepForward();
|
|
12930
|
+
}
|
|
13502
12931
|
}
|
|
13503
12932
|
}
|
|
13504
12933
|
} while (prevToken && depth <= 0);
|
|
@@ -13557,6 +12986,9 @@ Editor.$uid = 0;
|
|
|
13557
12986
|
|
|
13558
12987
|
this.$cursorChange = function() {
|
|
13559
12988
|
this.renderer.updateCursor();
|
|
12989
|
+
this.$highlightBrackets();
|
|
12990
|
+
this.$highlightTags();
|
|
12991
|
+
this.$updateHighlightActiveLine();
|
|
13560
12992
|
};
|
|
13561
12993
|
this.onDocumentChange = function(delta) {
|
|
13562
12994
|
var wrap = this.session.$useWrapMode;
|
|
@@ -13565,7 +12997,6 @@ Editor.$uid = 0;
|
|
|
13565
12997
|
|
|
13566
12998
|
this._signal("change", delta);
|
|
13567
12999
|
this.$cursorChange();
|
|
13568
|
-
this.$updateHighlightActiveLine();
|
|
13569
13000
|
};
|
|
13570
13001
|
|
|
13571
13002
|
this.onTokenizerUpdate = function(e) {
|
|
@@ -13583,10 +13014,6 @@ Editor.$uid = 0;
|
|
|
13583
13014
|
};
|
|
13584
13015
|
this.onCursorChange = function() {
|
|
13585
13016
|
this.$cursorChange();
|
|
13586
|
-
|
|
13587
|
-
this.$highlightBrackets();
|
|
13588
|
-
this.$highlightTags();
|
|
13589
|
-
this.$updateHighlightActiveLine();
|
|
13590
13017
|
this._signal("changeSelection");
|
|
13591
13018
|
};
|
|
13592
13019
|
|
|
@@ -13837,16 +13264,62 @@ Editor.$uid = 0;
|
|
|
13837
13264
|
transform.selection[3]));
|
|
13838
13265
|
}
|
|
13839
13266
|
}
|
|
13267
|
+
if (this.$enableAutoIndent) {
|
|
13268
|
+
if (session.getDocument().isNewLine(text)) {
|
|
13269
|
+
var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());
|
|
13270
|
+
|
|
13271
|
+
session.insert({row: cursor.row+1, column: 0}, lineIndent);
|
|
13272
|
+
}
|
|
13273
|
+
if (shouldOutdent)
|
|
13274
|
+
mode.autoOutdent(lineState, session, cursor.row);
|
|
13275
|
+
}
|
|
13276
|
+
};
|
|
13277
|
+
|
|
13278
|
+
this.autoIndent = function () {
|
|
13279
|
+
var session = this.session;
|
|
13280
|
+
var mode = session.getMode();
|
|
13281
|
+
|
|
13282
|
+
var startRow, endRow;
|
|
13283
|
+
if (this.selection.isEmpty()) {
|
|
13284
|
+
startRow = 0;
|
|
13285
|
+
endRow = session.doc.getLength() - 1;
|
|
13286
|
+
} else {
|
|
13287
|
+
var selectedRange = this.getSelectionRange();
|
|
13288
|
+
|
|
13289
|
+
startRow = selectedRange.start.row;
|
|
13290
|
+
endRow = selectedRange.end.row;
|
|
13291
|
+
}
|
|
13292
|
+
|
|
13293
|
+
var prevLineState = "";
|
|
13294
|
+
var prevLine = "";
|
|
13295
|
+
var lineIndent = "";
|
|
13296
|
+
var line, currIndent, range;
|
|
13297
|
+
var tab = session.getTabString();
|
|
13298
|
+
|
|
13299
|
+
for (var row = startRow; row <= endRow; row++) {
|
|
13300
|
+
if (row > 0) {
|
|
13301
|
+
prevLineState = session.getState(row - 1);
|
|
13302
|
+
prevLine = session.getLine(row - 1);
|
|
13303
|
+
lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);
|
|
13304
|
+
}
|
|
13840
13305
|
|
|
13841
|
-
|
|
13842
|
-
|
|
13306
|
+
line = session.getLine(row);
|
|
13307
|
+
currIndent = mode.$getIndent(line);
|
|
13308
|
+
if (lineIndent !== currIndent) {
|
|
13309
|
+
if (currIndent.length > 0) {
|
|
13310
|
+
range = new Range(row, 0, row, currIndent.length);
|
|
13311
|
+
session.remove(range);
|
|
13312
|
+
}
|
|
13313
|
+
if (lineIndent.length > 0) {
|
|
13314
|
+
session.insert({row: row, column: 0}, lineIndent);
|
|
13315
|
+
}
|
|
13316
|
+
}
|
|
13843
13317
|
|
|
13844
|
-
|
|
13318
|
+
mode.autoOutdent(prevLineState, session, row);
|
|
13845
13319
|
}
|
|
13846
|
-
if (shouldOutdent)
|
|
13847
|
-
mode.autoOutdent(lineState, session, cursor.row);
|
|
13848
13320
|
};
|
|
13849
13321
|
|
|
13322
|
+
|
|
13850
13323
|
this.onTextInput = function(text, composition) {
|
|
13851
13324
|
if (!composition)
|
|
13852
13325
|
return this.keyBinding.onTextInput(text);
|
|
@@ -13865,6 +13338,10 @@ Editor.$uid = 0;
|
|
|
13865
13338
|
var r = this.selection.getRange();
|
|
13866
13339
|
r.start.column -= composition.extendLeft;
|
|
13867
13340
|
r.end.column += composition.extendRight;
|
|
13341
|
+
if (r.start.column < 0) {
|
|
13342
|
+
r.start.row--;
|
|
13343
|
+
r.start.column += this.session.getLine(r.start.row).length + 1;
|
|
13344
|
+
}
|
|
13868
13345
|
this.selection.setRange(r);
|
|
13869
13346
|
if (!text && !r.isEmpty())
|
|
13870
13347
|
this.remove();
|
|
@@ -14870,11 +14347,21 @@ Editor.$uid = 0;
|
|
|
14870
14347
|
this.renderer.scrollCursorIntoView(null, 0.5);
|
|
14871
14348
|
};
|
|
14872
14349
|
this.destroy = function() {
|
|
14350
|
+
if (this.$toDestroy) {
|
|
14351
|
+
this.$toDestroy.forEach(function(el) {
|
|
14352
|
+
el.destroy();
|
|
14353
|
+
});
|
|
14354
|
+
this.$toDestroy = null;
|
|
14355
|
+
}
|
|
14356
|
+
if (this.$mouseHandler)
|
|
14357
|
+
this.$mouseHandler.destroy();
|
|
14873
14358
|
this.renderer.destroy();
|
|
14874
14359
|
this._signal("destroy", this);
|
|
14875
|
-
if (this.session)
|
|
14360
|
+
if (this.session)
|
|
14876
14361
|
this.session.destroy();
|
|
14877
|
-
|
|
14362
|
+
if (this._$emitInputEvent)
|
|
14363
|
+
this._$emitInputEvent.cancel();
|
|
14364
|
+
this.removeAllListeners();
|
|
14878
14365
|
};
|
|
14879
14366
|
this.setAutoScrollEditorIntoView = function(enable) {
|
|
14880
14367
|
if (!enable)
|
|
@@ -14990,6 +14477,7 @@ config.defineOptions(Editor.prototype, "editor", {
|
|
|
14990
14477
|
},
|
|
14991
14478
|
behavioursEnabled: {initialValue: true},
|
|
14992
14479
|
wrapBehavioursEnabled: {initialValue: true},
|
|
14480
|
+
enableAutoIndent: {initialValue: true},
|
|
14993
14481
|
autoScrollEditorIntoView: {
|
|
14994
14482
|
set: function(val) {this.setAutoScrollEditorIntoView(val);}
|
|
14995
14483
|
},
|
|
@@ -15034,7 +14522,7 @@ config.defineOptions(Editor.prototype, "editor", {
|
|
|
15034
14522
|
set: function(message) {
|
|
15035
14523
|
if (!this.$updatePlaceholder) {
|
|
15036
14524
|
this.$updatePlaceholder = function() {
|
|
15037
|
-
var value = this.renderer.$composition || this.getValue();
|
|
14525
|
+
var value = this.session && (this.renderer.$composition || this.getValue());
|
|
15038
14526
|
if (value && this.renderer.placeholderNode) {
|
|
15039
14527
|
this.renderer.off("afterRender", this.$updatePlaceholder);
|
|
15040
14528
|
dom.removeCssClass(this.container, "ace_hasPlaceholder");
|
|
@@ -15048,6 +14536,8 @@ config.defineOptions(Editor.prototype, "editor", {
|
|
|
15048
14536
|
el.textContent = this.$placeholder || "";
|
|
15049
14537
|
this.renderer.placeholderNode = el;
|
|
15050
14538
|
this.renderer.content.appendChild(this.renderer.placeholderNode);
|
|
14539
|
+
} else if (!value && this.renderer.placeholderNode) {
|
|
14540
|
+
this.renderer.placeholderNode.textContent = this.$placeholder || "";
|
|
15051
14541
|
}
|
|
15052
14542
|
}.bind(this);
|
|
15053
14543
|
this.on("input", this.$updatePlaceholder);
|
|
@@ -15145,6 +14635,7 @@ var UndoManager = function() {
|
|
|
15145
14635
|
this.add = function(delta, allowMerge, session) {
|
|
15146
14636
|
if (this.$fromUndo) return;
|
|
15147
14637
|
if (delta == this.$lastDelta) return;
|
|
14638
|
+
if (!this.$keepRedoStack) this.$redoStack.length = 0;
|
|
15148
14639
|
if (allowMerge === false || !this.lastDeltas) {
|
|
15149
14640
|
this.lastDeltas = [];
|
|
15150
14641
|
this.$undoStack.push(this.lastDeltas);
|
|
@@ -15238,7 +14729,7 @@ var UndoManager = function() {
|
|
|
15238
14729
|
|
|
15239
14730
|
var deltaSet = stack.pop();
|
|
15240
14731
|
var undoSelectionRange = null;
|
|
15241
|
-
if (deltaSet
|
|
14732
|
+
if (deltaSet) {
|
|
15242
14733
|
undoSelectionRange = session.undoChanges(deltaSet, dontSelect);
|
|
15243
14734
|
this.$redoStack.push(deltaSet);
|
|
15244
14735
|
this.$syncRev();
|
|
@@ -15645,7 +15136,7 @@ var Lines = function(element, canvasHeight) {
|
|
|
15645
15136
|
};
|
|
15646
15137
|
|
|
15647
15138
|
this.computeLineHeight = function(row, config, session) {
|
|
15648
|
-
return config.lineHeight * session.
|
|
15139
|
+
return config.lineHeight * session.getRowLineCount(row);
|
|
15649
15140
|
};
|
|
15650
15141
|
|
|
15651
15142
|
this.getLength = function() {
|
|
@@ -15672,10 +15163,10 @@ var Lines = function(element, canvasHeight) {
|
|
|
15672
15163
|
fragment.appendChild(cell[i].element);
|
|
15673
15164
|
}
|
|
15674
15165
|
this.element.appendChild(fragment);
|
|
15675
|
-
|
|
15166
|
+
} else {
|
|
15676
15167
|
this.cells.push(cell);
|
|
15677
15168
|
this.element.appendChild(cell.element);
|
|
15678
|
-
|
|
15169
|
+
}
|
|
15679
15170
|
};
|
|
15680
15171
|
|
|
15681
15172
|
this.unshift = function(cell) {
|
|
@@ -15689,10 +15180,10 @@ var Lines = function(element, canvasHeight) {
|
|
|
15689
15180
|
this.element.insertBefore(fragment, this.element.firstChild);
|
|
15690
15181
|
else
|
|
15691
15182
|
this.element.appendChild(fragment);
|
|
15692
|
-
|
|
15183
|
+
} else {
|
|
15693
15184
|
this.cells.unshift(cell);
|
|
15694
15185
|
this.element.insertAdjacentElement("afterbegin", cell.element);
|
|
15695
|
-
|
|
15186
|
+
}
|
|
15696
15187
|
};
|
|
15697
15188
|
|
|
15698
15189
|
this.last = function() {
|
|
@@ -15766,7 +15257,7 @@ var Gutter = function(parentEl) {
|
|
|
15766
15257
|
|
|
15767
15258
|
this.setSession = function(session) {
|
|
15768
15259
|
if (this.session)
|
|
15769
|
-
this.session.
|
|
15260
|
+
this.session.off("change", this.$updateAnnotations);
|
|
15770
15261
|
this.session = session;
|
|
15771
15262
|
if (session)
|
|
15772
15263
|
session.on("change", this.$updateAnnotations);
|
|
@@ -16455,11 +15946,21 @@ var Text = function(parentEl) {
|
|
|
16455
15946
|
};
|
|
16456
15947
|
|
|
16457
15948
|
this.showInvisibles = false;
|
|
15949
|
+
this.showSpaces = false;
|
|
15950
|
+
this.showTabs = false;
|
|
15951
|
+
this.showEOL = false;
|
|
16458
15952
|
this.setShowInvisibles = function(showInvisibles) {
|
|
16459
15953
|
if (this.showInvisibles == showInvisibles)
|
|
16460
15954
|
return false;
|
|
16461
15955
|
|
|
16462
15956
|
this.showInvisibles = showInvisibles;
|
|
15957
|
+
if (typeof showInvisibles == "string") {
|
|
15958
|
+
this.showSpaces = /tab/i.test(showInvisibles);
|
|
15959
|
+
this.showTabs = /space/i.test(showInvisibles);
|
|
15960
|
+
this.showEOL = /eol/i.test(showInvisibles);
|
|
15961
|
+
} else {
|
|
15962
|
+
this.showSpaces = this.showTabs = this.showEOL = showInvisibles;
|
|
15963
|
+
}
|
|
16463
15964
|
this.$computeTabString();
|
|
16464
15965
|
return true;
|
|
16465
15966
|
};
|
|
@@ -16481,7 +15982,7 @@ var Text = function(parentEl) {
|
|
|
16481
15982
|
this.tabSize = tabSize;
|
|
16482
15983
|
var tabStr = this.$tabStrings = [0];
|
|
16483
15984
|
for (var i = 1; i < tabSize + 1; i++) {
|
|
16484
|
-
if (this.
|
|
15985
|
+
if (this.showTabs) {
|
|
16485
15986
|
var span = this.dom.createElement("span");
|
|
16486
15987
|
span.className = "ace_invisible ace_invisible_tab";
|
|
16487
15988
|
span.textContent = lang.stringRepeat(this.TAB_CHAR, i);
|
|
@@ -16493,18 +15994,15 @@ var Text = function(parentEl) {
|
|
|
16493
15994
|
if (this.displayIndentGuides) {
|
|
16494
15995
|
this.$indentGuideRe = /\s\S| \t|\t |\s$/;
|
|
16495
15996
|
var className = "ace_indent-guide";
|
|
16496
|
-
var spaceClass = "";
|
|
16497
|
-
var
|
|
16498
|
-
|
|
16499
|
-
|
|
16500
|
-
|
|
16501
|
-
|
|
16502
|
-
|
|
16503
|
-
|
|
16504
|
-
|
|
16505
|
-
var spaceContent = lang.stringRepeat(" ", this.tabSize);
|
|
16506
|
-
var tabContent = spaceContent;
|
|
16507
|
-
}
|
|
15997
|
+
var spaceClass = this.showSpaces ? " ace_invisible ace_invisible_space" : "";
|
|
15998
|
+
var spaceContent = this.showSpaces
|
|
15999
|
+
? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)
|
|
16000
|
+
: lang.stringRepeat(" ", this.tabSize);
|
|
16001
|
+
|
|
16002
|
+
var tabClass = this.showTabs ? " ace_invisible ace_invisible_tab" : "";
|
|
16003
|
+
var tabContent = this.showTabs
|
|
16004
|
+
? lang.stringRepeat(this.TAB_CHAR, this.tabSize)
|
|
16005
|
+
: spaceContent;
|
|
16508
16006
|
|
|
16509
16007
|
var span = this.dom.createElement("span");
|
|
16510
16008
|
span.className = className + spaceClass;
|
|
@@ -16697,7 +16195,7 @@ var Text = function(parentEl) {
|
|
|
16697
16195
|
var cjkSpace = m[4];
|
|
16698
16196
|
var cjk = m[5];
|
|
16699
16197
|
|
|
16700
|
-
if (!self.
|
|
16198
|
+
if (!self.showSpaces && simpleSpace)
|
|
16701
16199
|
continue;
|
|
16702
16200
|
|
|
16703
16201
|
var before = i != m.index ? value.slice(i, m.index) : "";
|
|
@@ -16713,7 +16211,7 @@ var Text = function(parentEl) {
|
|
|
16713
16211
|
valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));
|
|
16714
16212
|
screenColumn += tabSize - 1;
|
|
16715
16213
|
} else if (simpleSpace) {
|
|
16716
|
-
if (self.
|
|
16214
|
+
if (self.showSpaces) {
|
|
16717
16215
|
var span = this.dom.createElement("span");
|
|
16718
16216
|
span.className = "ace_invisible ace_invisible_space";
|
|
16719
16217
|
span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);
|
|
@@ -16731,8 +16229,8 @@ var Text = function(parentEl) {
|
|
|
16731
16229
|
|
|
16732
16230
|
var span = this.dom.createElement("span");
|
|
16733
16231
|
span.style.width = (self.config.characterWidth * 2) + "px";
|
|
16734
|
-
span.className = self.
|
|
16735
|
-
span.textContent = self.
|
|
16232
|
+
span.className = self.showSpaces ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk";
|
|
16233
|
+
span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;
|
|
16736
16234
|
valueFragment.appendChild(span);
|
|
16737
16235
|
} else if (cjk) {
|
|
16738
16236
|
screenColumn += 1;
|
|
@@ -16901,7 +16399,7 @@ var Text = function(parentEl) {
|
|
|
16901
16399
|
parent.appendChild(lastLineEl);
|
|
16902
16400
|
}
|
|
16903
16401
|
|
|
16904
|
-
if (this.
|
|
16402
|
+
if (this.showEOL && lastLineEl) {
|
|
16905
16403
|
if (foldLine)
|
|
16906
16404
|
row = foldLine.end.row;
|
|
16907
16405
|
|
|
@@ -17432,7 +16930,7 @@ var FontMetrics = exports.FontMetrics = function(parentEl) {
|
|
|
17432
16930
|
this.el.appendChild(this.$measureNode);
|
|
17433
16931
|
parentEl.appendChild(this.el);
|
|
17434
16932
|
|
|
17435
|
-
this.$measureNode.
|
|
16933
|
+
this.$measureNode.textContent = lang.stringRepeat("X", CHAR_COUNT);
|
|
17436
16934
|
|
|
17437
16935
|
this.$characterSize = {width: 0, height: 0};
|
|
17438
16936
|
|
|
@@ -17481,11 +16979,7 @@ var FontMetrics = exports.FontMetrics = function(parentEl) {
|
|
|
17481
16979
|
this.$addObserver = function() {
|
|
17482
16980
|
var self = this;
|
|
17483
16981
|
this.$observer = new window.ResizeObserver(function(e) {
|
|
17484
|
-
|
|
17485
|
-
self.checkForSizeChanges({
|
|
17486
|
-
height: rect.height,
|
|
17487
|
-
width: rect.width / CHAR_COUNT
|
|
17488
|
-
});
|
|
16982
|
+
self.checkForSizeChanges();
|
|
17489
16983
|
});
|
|
17490
16984
|
this.$observer.observe(this.$measureNode);
|
|
17491
16985
|
};
|
|
@@ -17521,7 +17015,7 @@ var FontMetrics = exports.FontMetrics = function(parentEl) {
|
|
|
17521
17015
|
};
|
|
17522
17016
|
|
|
17523
17017
|
this.$measureCharWidth = function(ch) {
|
|
17524
|
-
this.$main.
|
|
17018
|
+
this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);
|
|
17525
17019
|
var rect = this.$main.getBoundingClientRect();
|
|
17526
17020
|
return rect.width / CHAR_COUNT;
|
|
17527
17021
|
};
|
|
@@ -17544,7 +17038,7 @@ var FontMetrics = exports.FontMetrics = function(parentEl) {
|
|
|
17544
17038
|
|
|
17545
17039
|
|
|
17546
17040
|
this.$getZoom = function getZoom(element) {
|
|
17547
|
-
if (!element) return 1;
|
|
17041
|
+
if (!element || !element.parentElement) return 1;
|
|
17548
17042
|
return (window.getComputedStyle(element).zoom || 1) * getZoom(element.parentElement);
|
|
17549
17043
|
};
|
|
17550
17044
|
this.$initTransformMeasureNodes = function() {
|
|
@@ -17638,6 +17132,7 @@ var editorCss = "\
|
|
|
17638
17132
|
.ace_editor {\
|
|
17639
17133
|
position: relative;\
|
|
17640
17134
|
overflow: hidden;\
|
|
17135
|
+
padding: 0;\
|
|
17641
17136
|
font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\
|
|
17642
17137
|
direction: ltr;\
|
|
17643
17138
|
text-align: left;\
|
|
@@ -17660,6 +17155,7 @@ position: absolute;\
|
|
|
17660
17155
|
box-sizing: border-box;\
|
|
17661
17156
|
min-width: 100%;\
|
|
17662
17157
|
contain: style size layout;\
|
|
17158
|
+
font-variant-ligatures: no-common-ligatures;\
|
|
17663
17159
|
}\
|
|
17664
17160
|
.ace_dragging .ace_scroller:before{\
|
|
17665
17161
|
position: absolute;\
|
|
@@ -17791,7 +17287,6 @@ margin-top: 1px;\
|
|
|
17791
17287
|
[ace_nocontext=true] {\
|
|
17792
17288
|
transform: none!important;\
|
|
17793
17289
|
filter: none!important;\
|
|
17794
|
-
perspective: none!important;\
|
|
17795
17290
|
clip-path: none!important;\
|
|
17796
17291
|
mask : none!important;\
|
|
17797
17292
|
contain: none!important;\
|
|
@@ -17909,6 +17404,11 @@ z-index: 5;\
|
|
|
17909
17404
|
position: absolute;\
|
|
17910
17405
|
z-index: 6;\
|
|
17911
17406
|
}\
|
|
17407
|
+
.ace_marker-layer .ace_error_bracket {\
|
|
17408
|
+
position: absolute;\
|
|
17409
|
+
border-bottom: 1px solid #DE5555;\
|
|
17410
|
+
border-radius: 0;\
|
|
17411
|
+
}\
|
|
17912
17412
|
.ace_marker-layer .ace_active-line {\
|
|
17913
17413
|
position: absolute;\
|
|
17914
17414
|
z-index: 2;\
|
|
@@ -18096,9 +17596,10 @@ background-color: #ddd;\
|
|
|
18096
17596
|
.ace_placeholder {\
|
|
18097
17597
|
font-family: arial;\
|
|
18098
17598
|
transform: scale(0.9);\
|
|
18099
|
-
opacity: 0.7;\
|
|
18100
17599
|
transform-origin: left;\
|
|
18101
|
-
|
|
17600
|
+
white-space: pre;\
|
|
17601
|
+
opacity: 0.7;\
|
|
17602
|
+
margin: 0 10px;\
|
|
18102
17603
|
}";
|
|
18103
17604
|
|
|
18104
17605
|
var useragent = require("./lib/useragent");
|
|
@@ -18147,11 +17648,11 @@ var VirtualRenderer = function(container, theme) {
|
|
|
18147
17648
|
this.scrollBar =
|
|
18148
17649
|
this.scrollBarV = new VScrollBar(this.container, this);
|
|
18149
17650
|
this.scrollBarH = new HScrollBar(this.container, this);
|
|
18150
|
-
this.scrollBarV.
|
|
17651
|
+
this.scrollBarV.on("scroll", function(e) {
|
|
18151
17652
|
if (!_self.$scrollAnimation)
|
|
18152
17653
|
_self.session.setScrollTop(e.data - _self.scrollMargin.top);
|
|
18153
17654
|
});
|
|
18154
|
-
this.scrollBarH.
|
|
17655
|
+
this.scrollBarH.on("scroll", function(e) {
|
|
18155
17656
|
if (!_self.$scrollAnimation)
|
|
18156
17657
|
_self.session.setScrollLeft(e.data - _self.scrollMargin.left);
|
|
18157
17658
|
});
|
|
@@ -18166,7 +17667,7 @@ var VirtualRenderer = function(container, theme) {
|
|
|
18166
17667
|
|
|
18167
17668
|
this.$fontMetrics = new FontMetrics(this.container);
|
|
18168
17669
|
this.$textLayer.$setFontMetrics(this.$fontMetrics);
|
|
18169
|
-
this.$textLayer.
|
|
17670
|
+
this.$textLayer.on("changeCharacterSize", function(e) {
|
|
18170
17671
|
_self.updateCharacterSize();
|
|
18171
17672
|
_self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);
|
|
18172
17673
|
_self._signal("changeCharacterSize", e);
|
|
@@ -18685,7 +18186,7 @@ var VirtualRenderer = function(container, theme) {
|
|
|
18685
18186
|
this.$textLayer.checkForSizeChanges();
|
|
18686
18187
|
}
|
|
18687
18188
|
|
|
18688
|
-
this._signal("beforeRender");
|
|
18189
|
+
this._signal("beforeRender", changes);
|
|
18689
18190
|
|
|
18690
18191
|
if (this.session && this.session.$bidiHandler)
|
|
18691
18192
|
this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);
|
|
@@ -18733,7 +18234,7 @@ var VirtualRenderer = function(container, theme) {
|
|
|
18733
18234
|
this.$markerFront.update(config);
|
|
18734
18235
|
this.$cursorLayer.update(config);
|
|
18735
18236
|
this.$moveTextAreaToCursor();
|
|
18736
|
-
this._signal("afterRender");
|
|
18237
|
+
this._signal("afterRender", changes);
|
|
18737
18238
|
return;
|
|
18738
18239
|
}
|
|
18739
18240
|
if (changes & this.CHANGE_SCROLL) {
|
|
@@ -18753,7 +18254,7 @@ var VirtualRenderer = function(container, theme) {
|
|
|
18753
18254
|
this.$markerFront.update(config);
|
|
18754
18255
|
this.$cursorLayer.update(config);
|
|
18755
18256
|
this.$moveTextAreaToCursor();
|
|
18756
|
-
this._signal("afterRender");
|
|
18257
|
+
this._signal("afterRender", changes);
|
|
18757
18258
|
return;
|
|
18758
18259
|
}
|
|
18759
18260
|
|
|
@@ -18789,7 +18290,7 @@ var VirtualRenderer = function(container, theme) {
|
|
|
18789
18290
|
this.$markerBack.update(config);
|
|
18790
18291
|
}
|
|
18791
18292
|
|
|
18792
|
-
this._signal("afterRender");
|
|
18293
|
+
this._signal("afterRender", changes);
|
|
18793
18294
|
};
|
|
18794
18295
|
|
|
18795
18296
|
|
|
@@ -19103,6 +18604,8 @@ var VirtualRenderer = function(container, theme) {
|
|
|
19103
18604
|
_self.session.setScrollTop(steps.shift());
|
|
19104
18605
|
_self.session.$scrollTop = toValue;
|
|
19105
18606
|
this.$timer = setInterval(function() {
|
|
18607
|
+
if (!_self.session)
|
|
18608
|
+
return clearInterval(_self.$timer);
|
|
19106
18609
|
if (steps.length) {
|
|
19107
18610
|
_self.session.setScrollTop(steps.shift());
|
|
19108
18611
|
_self.session.$scrollTop = toValue;
|
|
@@ -19213,7 +18716,8 @@ var VirtualRenderer = function(container, theme) {
|
|
|
19213
18716
|
if (!composition.cssText) {
|
|
19214
18717
|
composition.cssText = this.textarea.style.cssText;
|
|
19215
18718
|
}
|
|
19216
|
-
composition.useTextareaForIME
|
|
18719
|
+
if (composition.useTextareaForIME == undefined)
|
|
18720
|
+
composition.useTextareaForIME = this.$useTextareaForIME;
|
|
19217
18721
|
|
|
19218
18722
|
if (this.$useTextareaForIME) {
|
|
19219
18723
|
dom.addCssClass(this.textarea, "ace_composition");
|
|
@@ -19239,6 +18743,8 @@ var VirtualRenderer = function(container, theme) {
|
|
|
19239
18743
|
|
|
19240
18744
|
dom.removeCssClass(this.textarea, "ace_composition");
|
|
19241
18745
|
this.textarea.style.cssText = this.$composition.cssText;
|
|
18746
|
+
var cursor = this.session.selection.cursor;
|
|
18747
|
+
this.removeExtraToken(cursor.row, cursor.column);
|
|
19242
18748
|
this.$composition = null;
|
|
19243
18749
|
this.$cursorLayer.element.style.display = "";
|
|
19244
18750
|
};
|
|
@@ -19267,6 +18773,10 @@ var VirtualRenderer = function(container, theme) {
|
|
|
19267
18773
|
}
|
|
19268
18774
|
this.updateLines(row, row);
|
|
19269
18775
|
};
|
|
18776
|
+
|
|
18777
|
+
this.removeExtraToken = function(row, column) {
|
|
18778
|
+
this.updateLines(row, row);
|
|
18779
|
+
};
|
|
19270
18780
|
this.setTheme = function(theme, cb) {
|
|
19271
18781
|
var _self = this;
|
|
19272
18782
|
this.$themeId = theme;
|
|
@@ -19337,6 +18847,8 @@ var VirtualRenderer = function(container, theme) {
|
|
|
19337
18847
|
this.freeze();
|
|
19338
18848
|
this.$fontMetrics.destroy();
|
|
19339
18849
|
this.$cursorLayer.destroy();
|
|
18850
|
+
this.removeAllListeners();
|
|
18851
|
+
this.container.textContent = "";
|
|
19340
18852
|
};
|
|
19341
18853
|
|
|
19342
18854
|
}).call(VirtualRenderer.prototype);
|
|
@@ -19863,8 +19375,8 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass)
|
|
|
19863
19375
|
this.detach = function() {
|
|
19864
19376
|
this.session.removeMarker(this.pos && this.pos.markerId);
|
|
19865
19377
|
this.hideOtherMarkers();
|
|
19866
|
-
this.doc.
|
|
19867
|
-
this.session.selection.
|
|
19378
|
+
this.doc.off("change", this.$onUpdate);
|
|
19379
|
+
this.session.selection.off("changeCursor", this.$onCursorChange);
|
|
19868
19380
|
this.session.setUndoSelect(true);
|
|
19869
19381
|
this.session = null;
|
|
19870
19382
|
};
|
|
@@ -20115,11 +19627,21 @@ exports.defaultCommands = [{
|
|
|
20115
19627
|
scrollIntoView: "cursor",
|
|
20116
19628
|
readOnly: true
|
|
20117
19629
|
}, {
|
|
20118
|
-
name: "
|
|
19630
|
+
name: "toggleSplitSelectionIntoLines",
|
|
20119
19631
|
description: "Split into lines",
|
|
20120
|
-
exec: function(editor) {
|
|
19632
|
+
exec: function(editor) {
|
|
19633
|
+
if (editor.multiSelect.rangeCount > 1)
|
|
19634
|
+
editor.multiSelect.joinSelections();
|
|
19635
|
+
else
|
|
19636
|
+
editor.multiSelect.splitIntoLines();
|
|
19637
|
+
},
|
|
20121
19638
|
bindKey: {win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L"},
|
|
20122
19639
|
readOnly: true
|
|
19640
|
+
}, {
|
|
19641
|
+
name: "splitSelectionIntoLines",
|
|
19642
|
+
description: "Split into lines",
|
|
19643
|
+
exec: function(editor) { editor.multiSelect.splitIntoLines(); },
|
|
19644
|
+
readOnly: true
|
|
20123
19645
|
}, {
|
|
20124
19646
|
name: "alignCursors",
|
|
20125
19647
|
description: "Align cursors",
|
|
@@ -20213,7 +19735,6 @@ var EditSession = require("./edit_session").EditSession;
|
|
|
20213
19735
|
|
|
20214
19736
|
return $blockChangeEvents || this.fromOrientedRange(range);
|
|
20215
19737
|
};
|
|
20216
|
-
|
|
20217
19738
|
this.toSingleRange = function(range) {
|
|
20218
19739
|
range = range || this.ranges[0];
|
|
20219
19740
|
var removed = this.rangeList.removeAll();
|
|
@@ -20278,45 +19799,36 @@ var EditSession = require("./edit_session").EditSession;
|
|
|
20278
19799
|
this.getAllRanges = function() {
|
|
20279
19800
|
return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];
|
|
20280
19801
|
};
|
|
20281
|
-
|
|
20282
19802
|
this.splitIntoLines = function () {
|
|
20283
|
-
|
|
20284
|
-
|
|
20285
|
-
|
|
20286
|
-
var range =
|
|
20287
|
-
|
|
20288
|
-
this.toSingleRange();
|
|
20289
|
-
this.setSelectionRange(range, lastRange.cursor == lastRange.start);
|
|
20290
|
-
} else {
|
|
20291
|
-
var range = this.getRange();
|
|
20292
|
-
var isBackwards = this.isBackwards();
|
|
20293
|
-
var startRow = range.start.row;
|
|
19803
|
+
var ranges = this.ranges.length ? this.ranges : [this.getRange()];
|
|
19804
|
+
var newRanges = [];
|
|
19805
|
+
for (var i = 0; i < ranges.length; i++) {
|
|
19806
|
+
var range = ranges[i];
|
|
19807
|
+
var row = range.start.row;
|
|
20294
19808
|
var endRow = range.end.row;
|
|
20295
|
-
if (
|
|
20296
|
-
|
|
20297
|
-
|
|
20298
|
-
|
|
20299
|
-
|
|
20300
|
-
|
|
20301
|
-
|
|
20302
|
-
this.addRange(Range.fromPoints(start, start));
|
|
20303
|
-
return;
|
|
19809
|
+
if (row === endRow) {
|
|
19810
|
+
newRanges.push(range.clone());
|
|
19811
|
+
} else {
|
|
19812
|
+
newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));
|
|
19813
|
+
while (++row < endRow)
|
|
19814
|
+
newRanges.push(this.getLineRange(row, true));
|
|
19815
|
+
newRanges.push(new Range(endRow, 0, endRow, range.end.column));
|
|
20304
19816
|
}
|
|
20305
|
-
|
|
20306
|
-
|
|
20307
|
-
var r = this.getLineRange(startRow, true);
|
|
20308
|
-
r.start.column = range.start.column;
|
|
20309
|
-
rectSel.push(r);
|
|
20310
|
-
|
|
20311
|
-
for (var i = startRow + 1; i < endRow; i++)
|
|
20312
|
-
rectSel.push(this.getLineRange(i, true));
|
|
20313
|
-
|
|
20314
|
-
r = this.getLineRange(endRow, true);
|
|
20315
|
-
r.end.column = range.end.column;
|
|
20316
|
-
rectSel.push(r);
|
|
20317
|
-
|
|
20318
|
-
rectSel.forEach(this.addRange, this);
|
|
19817
|
+
if (i == 0 && !this.isBackwards())
|
|
19818
|
+
newRanges = newRanges.reverse();
|
|
20319
19819
|
}
|
|
19820
|
+
this.toSingleRange();
|
|
19821
|
+
for (var i = newRanges.length; i--;)
|
|
19822
|
+
this.addRange(newRanges[i]);
|
|
19823
|
+
};
|
|
19824
|
+
|
|
19825
|
+
this.joinSelections = function () {
|
|
19826
|
+
var ranges = this.rangeList.ranges;
|
|
19827
|
+
var lastRange = ranges[ranges.length - 1];
|
|
19828
|
+
var range = Range.fromPoints(ranges[0].start, lastRange.end);
|
|
19829
|
+
|
|
19830
|
+
this.toSingleRange();
|
|
19831
|
+
this.setSelectionRange(range, lastRange.cursor == lastRange.start);
|
|
20320
19832
|
};
|
|
20321
19833
|
this.toggleBlockSelection = function () {
|
|
20322
19834
|
if (this.rangeCount > 1) {
|
|
@@ -20918,10 +20430,10 @@ function addAltCursorListeners(editor){
|
|
|
20918
20430
|
} else if (altCursor) {
|
|
20919
20431
|
reset();
|
|
20920
20432
|
}
|
|
20921
|
-
});
|
|
20433
|
+
}, editor);
|
|
20922
20434
|
|
|
20923
|
-
event.addListener(el, "keyup", reset);
|
|
20924
|
-
event.addListener(el, "blur", reset);
|
|
20435
|
+
event.addListener(el, "keyup", reset, editor);
|
|
20436
|
+
event.addListener(el, "blur", reset, editor);
|
|
20925
20437
|
function reset(e) {
|
|
20926
20438
|
if (altCursor) {
|
|
20927
20439
|
editor.renderer.setMouseCursor("");
|
|
@@ -21182,13 +20694,10 @@ var dom = require("../lib/dom");
|
|
|
21182
20694
|
dom.importCssString(exports.cssText, exports.cssClass);
|
|
21183
20695
|
});
|
|
21184
20696
|
|
|
21185
|
-
define("ace/line_widgets",["require","exports","module","ace/lib/
|
|
20697
|
+
define("ace/line_widgets",["require","exports","module","ace/lib/dom"], function(require, exports, module) {
|
|
21186
20698
|
"use strict";
|
|
21187
20699
|
|
|
21188
|
-
var oop = require("./lib/oop");
|
|
21189
20700
|
var dom = require("./lib/dom");
|
|
21190
|
-
var Range = require("./range").Range;
|
|
21191
|
-
|
|
21192
20701
|
|
|
21193
20702
|
function LineWidgets(session) {
|
|
21194
20703
|
this.session = session;
|
|
@@ -21302,14 +20811,21 @@ function LineWidgets(session) {
|
|
|
21302
20811
|
var len = delta.end.row - startRow;
|
|
21303
20812
|
|
|
21304
20813
|
if (len === 0) {
|
|
21305
|
-
} else if (delta.action ==
|
|
20814
|
+
} else if (delta.action == "remove") {
|
|
21306
20815
|
var removed = lineWidgets.splice(startRow + 1, len);
|
|
20816
|
+
if (!lineWidgets[startRow] && removed[removed.length - 1]) {
|
|
20817
|
+
lineWidgets[startRow] = removed.pop();
|
|
20818
|
+
}
|
|
21307
20819
|
removed.forEach(function(w) {
|
|
21308
20820
|
w && this.removeLineWidget(w);
|
|
21309
20821
|
}, this);
|
|
21310
20822
|
this.$updateRows();
|
|
21311
20823
|
} else {
|
|
21312
20824
|
var args = new Array(len);
|
|
20825
|
+
if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {
|
|
20826
|
+
if (delta.start.column > lineWidgets[startRow].column)
|
|
20827
|
+
startRow++;
|
|
20828
|
+
}
|
|
21313
20829
|
args.unshift(startRow, 0);
|
|
21314
20830
|
lineWidgets.splice.apply(lineWidgets, args);
|
|
21315
20831
|
this.$updateRows();
|
|
@@ -21334,7 +20850,7 @@ function LineWidgets(session) {
|
|
|
21334
20850
|
this.session.lineWidgets = null;
|
|
21335
20851
|
};
|
|
21336
20852
|
|
|
21337
|
-
this
|
|
20853
|
+
this.$registerLineWidget = function(w) {
|
|
21338
20854
|
if (!this.session.lineWidgets)
|
|
21339
20855
|
this.session.lineWidgets = new Array(this.session.getLength());
|
|
21340
20856
|
|
|
@@ -21348,9 +20864,15 @@ function LineWidgets(session) {
|
|
|
21348
20864
|
}
|
|
21349
20865
|
|
|
21350
20866
|
this.session.lineWidgets[w.row] = w;
|
|
21351
|
-
|
|
20867
|
+
return w;
|
|
20868
|
+
};
|
|
20869
|
+
|
|
20870
|
+
this.addLineWidget = function(w) {
|
|
20871
|
+
this.$registerLineWidget(w);
|
|
21352
20872
|
w.session = this.session;
|
|
21353
20873
|
|
|
20874
|
+
if (!this.editor) return w;
|
|
20875
|
+
|
|
21354
20876
|
var renderer = this.editor.renderer;
|
|
21355
20877
|
if (w.html && !w.el) {
|
|
21356
20878
|
w.el = dom.createElement("div");
|
|
@@ -21362,13 +20884,13 @@ function LineWidgets(session) {
|
|
|
21362
20884
|
w.el.style.zIndex = 5;
|
|
21363
20885
|
renderer.container.appendChild(w.el);
|
|
21364
20886
|
w._inDocument = true;
|
|
21365
|
-
|
|
21366
|
-
|
|
21367
|
-
|
|
21368
|
-
|
|
21369
|
-
|
|
21370
|
-
|
|
21371
|
-
|
|
20887
|
+
|
|
20888
|
+
if (!w.coverGutter) {
|
|
20889
|
+
w.el.style.zIndex = 3;
|
|
20890
|
+
}
|
|
20891
|
+
if (w.pixelHeight == null) {
|
|
20892
|
+
w.pixelHeight = w.el.offsetHeight;
|
|
20893
|
+
}
|
|
21372
20894
|
}
|
|
21373
20895
|
if (w.rowCount == null) {
|
|
21374
20896
|
w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;
|