ace-rails-ap 2.0.1 → 3.0.0
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/README.md +5 -4
- data/lib/ace/rails/version.rb +1 -1
- data/vendor/assets/javascripts/ace/ace.js +14194 -13349
- data/vendor/assets/javascripts/ace/ext-beautify.js +335 -0
- data/vendor/assets/javascripts/ace/ext-chromevox.js +6 -1
- data/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js +8 -33
- data/vendor/assets/javascripts/ace/ext-emmet.js +487 -424
- data/vendor/assets/javascripts/ace/ext-error_marker.js +6 -0
- data/vendor/assets/javascripts/ace/ext-keybinding_menu.js +45 -72
- data/vendor/assets/javascripts/ace/ext-language_tools.js +734 -578
- data/vendor/assets/javascripts/ace/ext-linking.js +53 -0
- data/vendor/assets/javascripts/ace/ext-modelist.js +25 -10
- data/vendor/assets/javascripts/ace/ext-old_ie.js +93 -120
- data/vendor/assets/javascripts/ace/ext-searchbox.js +8 -41
- data/vendor/assets/javascripts/ace/ext-settings_menu.js +229 -234
- data/vendor/assets/javascripts/ace/ext-spellcheck.js +7 -3
- data/vendor/assets/javascripts/ace/ext-split.js +13 -37
- data/vendor/assets/javascripts/ace/ext-static_highlight.js +16 -39
- data/vendor/assets/javascripts/ace/ext-statusbar.js +8 -2
- data/vendor/assets/javascripts/ace/ext-textarea.js +254 -99
- data/vendor/assets/javascripts/ace/ext-themelist.js +13 -40
- data/vendor/assets/javascripts/ace/ext-whitespace.js +17 -41
- data/vendor/assets/javascripts/ace/keybinding-emacs.js +803 -788
- data/vendor/assets/javascripts/ace/keybinding-vim.js +1559 -1560
- data/vendor/assets/javascripts/ace/mode-abap.js +52 -83
- data/vendor/assets/javascripts/ace/mode-actionscript.js +27 -63
- data/vendor/assets/javascripts/ace/mode-ada.js +27 -58
- data/vendor/assets/javascripts/ace/mode-apache_conf.js +310 -0
- data/vendor/assets/javascripts/ace/mode-applescript.js +226 -0
- data/vendor/assets/javascripts/ace/mode-asciidoc.js +39 -70
- data/vendor/assets/javascripts/ace/mode-assembly_x86.js +26 -58
- data/vendor/assets/javascripts/ace/mode-autohotkey.js +27 -63
- data/vendor/assets/javascripts/ace/mode-batchfile.js +27 -63
- data/vendor/assets/javascripts/ace/mode-c9search.js +92 -112
- data/vendor/assets/javascripts/ace/mode-c_cpp.js +224 -223
- data/vendor/assets/javascripts/ace/mode-cirru.js +202 -0
- data/vendor/assets/javascripts/ace/mode-clojure.js +98 -92
- data/vendor/assets/javascripts/ace/mode-cobol.js +27 -58
- data/vendor/assets/javascripts/ace/mode-coffee.js +90 -122
- data/vendor/assets/javascripts/ace/mode-coldfusion.js +1908 -1464
- data/vendor/assets/javascripts/ace/mode-csharp.js +291 -264
- data/vendor/assets/javascripts/ace/mode-css.js +266 -267
- data/vendor/assets/javascripts/ace/mode-curly.js +796 -815
- data/vendor/assets/javascripts/ace/mode-d.js +64 -95
- data/vendor/assets/javascripts/ace/mode-dart.js +254 -256
- data/vendor/assets/javascripts/ace/mode-diff.js +27 -58
- data/vendor/assets/javascripts/ace/mode-django.js +856 -866
- data/vendor/assets/javascripts/ace/mode-dockerfile.js +759 -0
- data/vendor/assets/javascripts/ace/mode-dot.js +106 -106
- data/vendor/assets/javascripts/ace/mode-eiffel.js +135 -0
- data/vendor/assets/javascripts/ace/mode-ejs.js +931 -938
- data/vendor/assets/javascripts/ace/mode-erlang.js +27 -58
- data/vendor/assets/javascripts/ace/mode-forth.js +27 -63
- data/vendor/assets/javascripts/ace/mode-ftl.js +457 -508
- data/vendor/assets/javascripts/ace/mode-gcode.js +85 -0
- data/vendor/assets/javascripts/ace/mode-gherkin.js +129 -0
- data/vendor/assets/javascripts/ace/mode-gitignore.js +50 -0
- data/vendor/assets/javascripts/ace/mode-glsl.js +252 -248
- data/vendor/assets/javascripts/ace/mode-golang.js +206 -179
- data/vendor/assets/javascripts/ace/mode-groovy.js +310 -242
- data/vendor/assets/javascripts/ace/mode-haml.js +156 -190
- data/vendor/assets/javascripts/ace/mode-handlebars.js +815 -784
- data/vendor/assets/javascripts/ace/mode-haskell.js +27 -63
- data/vendor/assets/javascripts/ace/mode-haxe.js +206 -176
- data/vendor/assets/javascripts/ace/mode-html.js +779 -792
- data/vendor/assets/javascripts/ace/mode-html_ruby.js +916 -923
- data/vendor/assets/javascripts/ace/mode-ini.js +27 -58
- data/vendor/assets/javascripts/ace/mode-io.js +201 -0
- data/vendor/assets/javascripts/ace/mode-jack.js +169 -170
- data/vendor/assets/javascripts/ace/mode-jade.js +722 -774
- data/vendor/assets/javascripts/ace/mode-java.js +310 -245
- data/vendor/assets/javascripts/ace/mode-javascript.js +285 -247
- data/vendor/assets/javascripts/ace/mode-json.js +183 -184
- data/vendor/assets/javascripts/ace/mode-jsoniq.js +3211 -1274
- data/vendor/assets/javascripts/ace/mode-jsp.js +481 -504
- data/vendor/assets/javascripts/ace/mode-jsx.js +206 -176
- data/vendor/assets/javascripts/ace/mode-julia.js +33 -69
- data/vendor/assets/javascripts/ace/mode-latex.js +74 -41
- data/vendor/assets/javascripts/ace/mode-less.js +250 -251
- data/vendor/assets/javascripts/ace/mode-liquid.js +424 -475
- data/vendor/assets/javascripts/ace/mode-lisp.js +24 -57
- data/vendor/assets/javascripts/ace/mode-livescript.js +42 -41
- data/vendor/assets/javascripts/ace/mode-logiql.js +229 -230
- data/vendor/assets/javascripts/ace/mode-lsl.js +200 -441
- data/vendor/assets/javascripts/ace/mode-lua.js +136 -167
- data/vendor/assets/javascripts/ace/mode-luapage.js +904 -884
- data/vendor/assets/javascripts/ace/mode-lucene.js +22 -17
- data/vendor/assets/javascripts/ace/mode-makefile.js +162 -137
- data/vendor/assets/javascripts/ace/mode-markdown.js +846 -854
- data/vendor/assets/javascripts/ace/mode-matlab.js +98 -72
- data/vendor/assets/javascripts/ace/mode-mel.js +569 -0
- data/vendor/assets/javascripts/ace/mode-mushcode.js +84 -115
- data/vendor/assets/javascripts/ace/mode-mysql.js +49 -80
- data/vendor/assets/javascripts/ace/mode-nix.js +252 -256
- data/vendor/assets/javascripts/ace/mode-objectivec.js +242 -274
- data/vendor/assets/javascripts/ace/mode-ocaml.js +71 -102
- data/vendor/assets/javascripts/ace/mode-pascal.js +32 -68
- data/vendor/assets/javascripts/ace/mode-perl.js +67 -98
- data/vendor/assets/javascripts/ace/mode-pgsql.js +990 -982
- data/vendor/assets/javascripts/ace/mode-php.js +1878 -1900
- data/vendor/assets/javascripts/ace/mode-plain_text.js +3 -34
- data/vendor/assets/javascripts/ace/mode-powershell.js +181 -151
- data/vendor/assets/javascripts/ace/mode-praat.js +418 -0
- data/vendor/assets/javascripts/ace/mode-prolog.js +27 -63
- data/vendor/assets/javascripts/ace/mode-properties.js +20 -48
- data/vendor/assets/javascripts/ace/mode-protobuf.js +252 -259
- data/vendor/assets/javascripts/ace/mode-python.js +84 -115
- data/vendor/assets/javascripts/ace/mode-r.js +105 -140
- data/vendor/assets/javascripts/ace/mode-rdoc.js +84 -89
- data/vendor/assets/javascripts/ace/mode-rhtml.js +892 -908
- data/vendor/assets/javascripts/ace/mode-ruby.js +434 -98
- data/vendor/assets/javascripts/ace/mode-rust.js +27 -63
- data/vendor/assets/javascripts/ace/mode-sass.js +75 -106
- data/vendor/assets/javascripts/ace/mode-scad.js +219 -220
- data/vendor/assets/javascripts/ace/mode-scala.js +311 -243
- data/vendor/assets/javascripts/ace/mode-scheme.js +24 -60
- data/vendor/assets/javascripts/ace/mode-scss.js +250 -251
- data/vendor/assets/javascripts/ace/mode-sh.js +506 -118
- data/vendor/assets/javascripts/ace/mode-sjs.js +314 -280
- data/vendor/assets/javascripts/ace/mode-smarty.js +2474 -0
- data/vendor/assets/javascripts/ace/mode-snippets.js +89 -89
- data/vendor/assets/javascripts/ace/mode-soy_template.js +792 -811
- data/vendor/assets/javascripts/ace/mode-space.js +22 -23
- data/vendor/assets/javascripts/ace/mode-sql.js +31 -58
- data/vendor/assets/javascripts/ace/mode-stylus.js +161 -197
- data/vendor/assets/javascripts/ace/mode-svg.js +906 -836
- data/vendor/assets/javascripts/ace/mode-tcl.js +61 -92
- data/vendor/assets/javascripts/ace/mode-tex.js +36 -73
- data/vendor/assets/javascripts/ace/mode-text.js +1 -0
- data/vendor/assets/javascripts/ace/mode-textile.js +41 -72
- data/vendor/assets/javascripts/ace/mode-toml.js +26 -62
- data/vendor/assets/javascripts/ace/mode-twig.js +1196 -892
- data/vendor/assets/javascripts/ace/mode-typescript.js +313 -277
- data/vendor/assets/javascripts/ace/mode-vala.js +982 -0
- data/vendor/assets/javascripts/ace/mode-vbscript.js +25 -62
- data/vendor/assets/javascripts/ace/mode-velocity.js +2251 -1242
- data/vendor/assets/javascripts/ace/mode-verilog.js +27 -59
- data/vendor/assets/javascripts/ace/mode-vhdl.js +26 -55
- data/vendor/assets/javascripts/ace/mode-xml.js +319 -644
- data/vendor/assets/javascripts/ace/mode-xquery.js +2503 -588
- data/vendor/assets/javascripts/ace/mode-yaml.js +56 -90
- data/vendor/assets/javascripts/ace/snippets/abap.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/actionscript.js +159 -0
- data/vendor/assets/javascripts/ace/snippets/ada.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/apache_conf.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/applescript.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/asciidoc.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/assembly_x86.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/autohotkey.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/batchfile.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/c9search.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/c_cpp.js +138 -0
- data/vendor/assets/javascripts/ace/snippets/cirru.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/clojure.js +97 -0
- data/vendor/assets/javascripts/ace/snippets/cobol.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/coffee.js +102 -0
- data/vendor/assets/javascripts/ace/snippets/coldfusion.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/csharp.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/css.js +974 -0
- data/vendor/assets/javascripts/ace/snippets/curly.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/d.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/dart.js +90 -0
- data/vendor/assets/javascripts/ace/snippets/diff.js +18 -0
- data/vendor/assets/javascripts/ace/snippets/django.js +115 -0
- data/vendor/assets/javascripts/ace/snippets/dockerfile.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/dot.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/eiffel.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/ejs.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/erlang.js +167 -0
- data/vendor/assets/javascripts/ace/snippets/forth.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/ftl.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/gcode.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/gherkin.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/gitignore.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/glsl.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/golang.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/groovy.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/haml.js +27 -0
- data/vendor/assets/javascripts/ace/snippets/handlebars.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/haskell.js +89 -0
- data/vendor/assets/javascripts/ace/snippets/haxe.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/html.js +835 -0
- data/vendor/assets/javascripts/ace/snippets/html_ruby.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/ini.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/io.js +69 -0
- data/vendor/assets/javascripts/ace/snippets/jack.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/jade.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/java.js +241 -0
- data/vendor/assets/javascripts/ace/snippets/javascript.js +189 -0
- data/vendor/assets/javascripts/ace/snippets/json.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/jsoniq.js +68 -0
- data/vendor/assets/javascripts/ace/snippets/jsp.js +106 -0
- data/vendor/assets/javascripts/ace/snippets/jsx.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/julia.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/latex.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/less.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/liquid.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/lisp.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/livescript.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/logiql.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/lsl.js +1073 -0
- data/vendor/assets/javascripts/ace/snippets/lua.js +28 -0
- data/vendor/assets/javascripts/ace/snippets/luapage.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/lucene.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/makefile.js +11 -0
- data/vendor/assets/javascripts/ace/snippets/markdown.js +95 -0
- data/vendor/assets/javascripts/ace/snippets/matlab.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/mel.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/mushcode.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/mysql.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/nix.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/objectivec.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/ocaml.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/pascal.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/perl.js +354 -0
- data/vendor/assets/javascripts/ace/snippets/pgsql.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/php.js +283 -0
- data/vendor/assets/javascripts/ace/snippets/plain_text.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/powershell.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/praat.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/prolog.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/properties.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/protobuf.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/python.js +165 -0
- data/vendor/assets/javascripts/ace/snippets/r.js +128 -0
- data/vendor/assets/javascripts/ace/snippets/rdoc.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/rhtml.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/ruby.js +935 -0
- data/vendor/assets/javascripts/ace/snippets/rust.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/sass.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/scad.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/scala.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/scheme.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/scss.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/sh.js +90 -0
- data/vendor/assets/javascripts/ace/snippets/sjs.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/smarty.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/snippets.js +16 -0
- data/vendor/assets/javascripts/ace/snippets/soy_template.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/space.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/sql.js +33 -0
- data/vendor/assets/javascripts/ace/snippets/stylus.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/svg.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/tcl.js +99 -0
- data/vendor/assets/javascripts/ace/snippets/tex.js +197 -0
- data/vendor/assets/javascripts/ace/snippets/text.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/textile.js +37 -0
- data/vendor/assets/javascripts/ace/snippets/toml.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/twig.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/typescript.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/vala.js +193 -0
- data/vendor/assets/javascripts/ace/snippets/vbscript.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/velocity.js +36 -0
- data/vendor/assets/javascripts/ace/snippets/verilog.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/vhdl.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/xml.js +7 -0
- data/vendor/assets/javascripts/ace/snippets/xquery.js +68 -0
- data/vendor/assets/javascripts/ace/snippets/yaml.js +7 -0
- data/vendor/assets/javascripts/ace/theme-ambiance.js +4 -24
- data/vendor/assets/javascripts/ace/theme-chaos.js +2 -25
- data/vendor/assets/javascripts/ace/theme-chrome.js +2 -31
- data/vendor/assets/javascripts/ace/theme-clouds.js +1 -31
- data/vendor/assets/javascripts/ace/theme-clouds_midnight.js +1 -31
- data/vendor/assets/javascripts/ace/theme-cobalt.js +1 -31
- data/vendor/assets/javascripts/ace/theme-crimson_editor.js +1 -31
- data/vendor/assets/javascripts/ace/theme-dawn.js +1 -31
- data/vendor/assets/javascripts/ace/theme-dreamweaver.js +5 -31
- data/vendor/assets/javascripts/ace/theme-eclipse.js +7 -33
- data/vendor/assets/javascripts/ace/theme-github.js +2 -35
- data/vendor/assets/javascripts/ace/theme-idle_fingers.js +1 -31
- data/vendor/assets/javascripts/ace/theme-katzenmilch.js +119 -0
- data/vendor/assets/javascripts/ace/theme-kr.js +1 -31
- data/vendor/assets/javascripts/ace/theme-kr_theme.js +57 -141
- data/vendor/assets/javascripts/ace/theme-kuroir.js +59 -0
- data/vendor/assets/javascripts/ace/theme-merbivore.js +1 -31
- data/vendor/assets/javascripts/ace/theme-merbivore_soft.js +1 -31
- data/vendor/assets/javascripts/ace/theme-mono_industrial.js +1 -31
- data/vendor/assets/javascripts/ace/theme-monokai.js +1 -31
- data/vendor/assets/javascripts/ace/theme-pastel_on_dark.js +1 -31
- data/vendor/assets/javascripts/ace/theme-solarized_dark.js +1 -31
- data/vendor/assets/javascripts/ace/theme-solarized_light.js +1 -31
- data/vendor/assets/javascripts/ace/theme-terminal.js +1 -31
- data/vendor/assets/javascripts/ace/theme-textmate.js +3 -32
- data/vendor/assets/javascripts/ace/theme-tomorrow.js +1 -31
- data/vendor/assets/javascripts/ace/theme-tomorrow_night.js +1 -31
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js +1 -31
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +1 -31
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js +1 -31
- data/vendor/assets/javascripts/ace/theme-twilight.js +1 -31
- data/vendor/assets/javascripts/ace/theme-vibrant_ink.js +1 -31
- data/vendor/assets/javascripts/ace/theme-xcode.js +2 -33
- data/vendor/assets/javascripts/ace/worker-coffee.js +5026 -5008
- data/vendor/assets/javascripts/ace/worker-css.js +5489 -5134
- data/vendor/assets/javascripts/ace/worker-html.js +11517 -0
- data/vendor/assets/javascripts/ace/worker-javascript.js +9810 -9501
- data/vendor/assets/javascripts/ace/worker-json.js +1583 -1564
- data/vendor/assets/javascripts/ace/worker-lua.js +2631 -2612
- data/vendor/assets/javascripts/ace/worker-php.js +2385 -2341
- data/vendor/assets/javascripts/ace/worker-xquery.js +31643 -3993
- metadata +147 -11
|
@@ -1,72 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl
|
|
5
|
-
* All rights reserved.
|
|
6
|
-
*
|
|
7
|
-
* Contributed to Ajax.org under the BSD license.
|
|
8
|
-
*
|
|
9
|
-
* Redistribution and use in source and binary forms, with or without
|
|
10
|
-
* modification, are permitted provided that the following conditions are met:
|
|
11
|
-
* * Redistributions of source code must retain the above copyright
|
|
12
|
-
* notice, this list of conditions and the following disclaimer.
|
|
13
|
-
* * Redistributions in binary form must reproduce the above copyright
|
|
14
|
-
* notice, this list of conditions and the following disclaimer in the
|
|
15
|
-
* documentation and/or other materials provided with the distribution.
|
|
16
|
-
* * Neither the name of Ajax.org B.V. nor the
|
|
17
|
-
* names of its contributors may be used to endorse or promote products
|
|
18
|
-
* derived from this software without specific prior written permission.
|
|
19
|
-
*
|
|
20
|
-
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
21
|
-
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
22
|
-
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
-
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
|
|
24
|
-
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
25
|
-
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
26
|
-
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
27
|
-
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
29
|
-
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
-
*
|
|
31
|
-
* ***** END LICENSE BLOCK ***** */
|
|
32
|
-
|
|
33
|
-
define('ace/ext/keybinding_menu', ['require', 'exports', 'module' , 'ace/editor', 'ace/ext/menu_tools/overlay_page', 'ace/ext/menu_tools/get_editor_keyboard_shortcuts'], function(require, exports, module) {
|
|
34
|
-
|
|
35
|
-
var Editor = require("ace/editor").Editor;
|
|
36
|
-
function showKeyboardShortcuts (editor) {
|
|
37
|
-
if(!document.getElementById('kbshortcutmenu')) {
|
|
38
|
-
var overlayPage = require('./menu_tools/overlay_page').overlayPage;
|
|
39
|
-
var getEditorKeybordShortcuts = require('./menu_tools/get_editor_keyboard_shortcuts').getEditorKeybordShortcuts;
|
|
40
|
-
var kb = getEditorKeybordShortcuts(editor);
|
|
41
|
-
var el = document.createElement('div');
|
|
42
|
-
var commands = kb.reduce(function(previous, current) {
|
|
43
|
-
return previous + '<div class="ace_optionsMenuEntry"><span class="ace_optionsMenuCommand">'
|
|
44
|
-
+ current.command + '</span> : '
|
|
45
|
-
+ '<span class="ace_optionsMenuKey">' + current.key + '</span></div>';
|
|
46
|
-
}, '');
|
|
47
|
-
|
|
48
|
-
el.id = 'kbshortcutmenu';
|
|
49
|
-
el.innerHTML = '<h1>Keyboard Shortcuts</h1>' + commands + '</div>';
|
|
50
|
-
overlayPage(editor, el, '0', '0', '0', null);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
module.exports.init = function(editor) {
|
|
54
|
-
Editor.prototype.showKeyboardShortcuts = function() {
|
|
55
|
-
showKeyboardShortcuts(this);
|
|
56
|
-
};
|
|
57
|
-
editor.commands.addCommands([{
|
|
58
|
-
name: "showKeyboardShortcuts",
|
|
59
|
-
bindKey: {win: "Ctrl-Alt-h", mac: "Command-Alt-h"},
|
|
60
|
-
exec: function(editor, line) {
|
|
61
|
-
editor.showKeyboardShortcuts();
|
|
62
|
-
}
|
|
63
|
-
}]);
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
define('ace/ext/menu_tools/overlay_page', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) {
|
|
69
|
-
|
|
1
|
+
define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"], function(require, exports, module) {
|
|
2
|
+
'use strict';
|
|
70
3
|
var dom = require("../../lib/dom");
|
|
71
4
|
var cssText = "#ace_settingsmenu, #kbshortcutmenu {\
|
|
72
5
|
background-color: #F7F7F7;\
|
|
@@ -166,8 +99,8 @@ module.exports.overlayPage = function overlayPage(editor, contentElement, top, r
|
|
|
166
99
|
|
|
167
100
|
});
|
|
168
101
|
|
|
169
|
-
define(
|
|
170
|
-
|
|
102
|
+
define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"], function(require, exports, module) {
|
|
103
|
+
"use strict";
|
|
171
104
|
var keys = require("../../lib/keys");
|
|
172
105
|
module.exports.getEditorKeybordShortcuts = function(editor) {
|
|
173
106
|
var KEY_MODS = keys.KEY_MODS;
|
|
@@ -204,4 +137,44 @@ module.exports.getEditorKeybordShortcuts = function(editor) {
|
|
|
204
137
|
return keybindings;
|
|
205
138
|
};
|
|
206
139
|
|
|
207
|
-
});
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"], function(require, exports, module) {
|
|
143
|
+
"use strict";
|
|
144
|
+
var Editor = require("ace/editor").Editor;
|
|
145
|
+
function showKeyboardShortcuts (editor) {
|
|
146
|
+
if(!document.getElementById('kbshortcutmenu')) {
|
|
147
|
+
var overlayPage = require('./menu_tools/overlay_page').overlayPage;
|
|
148
|
+
var getEditorKeybordShortcuts = require('./menu_tools/get_editor_keyboard_shortcuts').getEditorKeybordShortcuts;
|
|
149
|
+
var kb = getEditorKeybordShortcuts(editor);
|
|
150
|
+
var el = document.createElement('div');
|
|
151
|
+
var commands = kb.reduce(function(previous, current) {
|
|
152
|
+
return previous + '<div class="ace_optionsMenuEntry"><span class="ace_optionsMenuCommand">'
|
|
153
|
+
+ current.command + '</span> : '
|
|
154
|
+
+ '<span class="ace_optionsMenuKey">' + current.key + '</span></div>';
|
|
155
|
+
}, '');
|
|
156
|
+
|
|
157
|
+
el.id = 'kbshortcutmenu';
|
|
158
|
+
el.innerHTML = '<h1>Keyboard Shortcuts</h1>' + commands + '</div>';
|
|
159
|
+
overlayPage(editor, el, '0', '0', '0', null);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
module.exports.init = function(editor) {
|
|
163
|
+
Editor.prototype.showKeyboardShortcuts = function() {
|
|
164
|
+
showKeyboardShortcuts(this);
|
|
165
|
+
};
|
|
166
|
+
editor.commands.addCommands([{
|
|
167
|
+
name: "showKeyboardShortcuts",
|
|
168
|
+
bindKey: {win: "Ctrl-Alt-h", mac: "Command-Alt-h"},
|
|
169
|
+
exec: function(editor, line) {
|
|
170
|
+
editor.showKeyboardShortcuts();
|
|
171
|
+
}
|
|
172
|
+
}]);
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
});
|
|
176
|
+
;
|
|
177
|
+
(function() {
|
|
178
|
+
window.require(["ace/ext/keybinding_menu"], function() {});
|
|
179
|
+
})();
|
|
180
|
+
|
|
@@ -1,153 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* modification, are permitted provided that the following conditions are met:
|
|
9
|
-
* * Redistributions of source code must retain the above copyright
|
|
10
|
-
* notice, this list of conditions and the following disclaimer.
|
|
11
|
-
* * Redistributions in binary form must reproduce the above copyright
|
|
12
|
-
* notice, this list of conditions and the following disclaimer in the
|
|
13
|
-
* documentation and/or other materials provided with the distribution.
|
|
14
|
-
* * Neither the name of Ajax.org B.V. nor the
|
|
15
|
-
* names of its contributors may be used to endorse or promote products
|
|
16
|
-
* derived from this software without specific prior written permission.
|
|
17
|
-
*
|
|
18
|
-
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
19
|
-
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
-
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
-
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
|
|
22
|
-
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
-
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
24
|
-
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
25
|
-
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
27
|
-
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
-
*
|
|
29
|
-
* ***** END LICENSE BLOCK ***** */
|
|
30
|
-
|
|
31
|
-
define('ace/ext/language_tools', ['require', 'exports', 'module' , 'ace/snippets', 'ace/autocomplete', 'ace/config', 'ace/autocomplete/text_completer', 'ace/editor'], function(require, exports, module) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
var snippetManager = require("../snippets").snippetManager;
|
|
35
|
-
var Autocomplete = require("../autocomplete").Autocomplete;
|
|
36
|
-
var config = require("../config");
|
|
37
|
-
|
|
38
|
-
var textCompleter = require("../autocomplete/text_completer");
|
|
39
|
-
var keyWordCompleter = {
|
|
40
|
-
getCompletions: function(editor, session, pos, prefix, callback) {
|
|
41
|
-
var state = editor.session.getState(pos.row);
|
|
42
|
-
var completions = session.$mode.getCompletions(state, session, pos, prefix);
|
|
43
|
-
callback(null, completions);
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
var snippetCompleter = {
|
|
48
|
-
getCompletions: function(editor, session, pos, prefix, callback) {
|
|
49
|
-
var snippetMap = snippetManager.snippetMap;
|
|
50
|
-
var completions = [];
|
|
51
|
-
snippetManager.getActiveScopes(editor).forEach(function(scope) {
|
|
52
|
-
var snippets = snippetMap[scope] || [];
|
|
53
|
-
for (var i = snippets.length; i--;) {
|
|
54
|
-
var s = snippets[i];
|
|
55
|
-
var caption = s.name || s.tabTrigger;
|
|
56
|
-
if (!caption)
|
|
57
|
-
continue;
|
|
58
|
-
completions.push({
|
|
59
|
-
caption: caption,
|
|
60
|
-
snippet: s.content,
|
|
61
|
-
meta: s.tabTrigger && !s.name ? s.tabTrigger + "\u21E5 " : "snippet"
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
}, this);
|
|
65
|
-
callback(null, completions);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
var completers = [snippetCompleter, textCompleter, keyWordCompleter];
|
|
70
|
-
exports.addCompleter = function(completer) {
|
|
71
|
-
completers.push(completer);
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
var expandSnippet = {
|
|
75
|
-
name: "expandSnippet",
|
|
76
|
-
exec: function(editor) {
|
|
77
|
-
var success = snippetManager.expandWithTab(editor);
|
|
78
|
-
if (!success)
|
|
79
|
-
editor.execCommand("indent");
|
|
80
|
-
},
|
|
81
|
-
bindKey: "tab"
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
var onChangeMode = function(e, editor) {
|
|
85
|
-
loadSnippetsForMode(editor.session.$mode);
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
var loadSnippetsForMode = function(mode) {
|
|
89
|
-
var id = mode.$id;
|
|
90
|
-
if (!snippetManager.files)
|
|
91
|
-
snippetManager.files = {};
|
|
92
|
-
loadSnippetFile(id);
|
|
93
|
-
if (mode.modes)
|
|
94
|
-
mode.modes.forEach(loadSnippetsForMode);
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
var loadSnippetFile = function(id) {
|
|
98
|
-
if (!id || snippetManager.files[id])
|
|
99
|
-
return;
|
|
100
|
-
var snippetFilePath = id.replace("mode", "snippets");
|
|
101
|
-
snippetManager.files[id] = {};
|
|
102
|
-
config.loadModule(snippetFilePath, function(m) {
|
|
103
|
-
if (m) {
|
|
104
|
-
snippetManager.files[id] = m;
|
|
105
|
-
m.snippets = snippetManager.parseSnippetFile(m.snippetText);
|
|
106
|
-
snippetManager.register(m.snippets, m.scope);
|
|
107
|
-
if (m.includeScopes) {
|
|
108
|
-
snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes;
|
|
109
|
-
m.includeScopes.forEach(function(x) {
|
|
110
|
-
loadSnippetFile("ace/mode/" + x);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
var Editor = require("../editor").Editor;
|
|
118
|
-
require("../config").defineOptions(Editor.prototype, "editor", {
|
|
119
|
-
enableBasicAutocompletion: {
|
|
120
|
-
set: function(val) {
|
|
121
|
-
if (val) {
|
|
122
|
-
this.completers = completers;
|
|
123
|
-
this.commands.addCommand(Autocomplete.startCommand);
|
|
124
|
-
} else {
|
|
125
|
-
this.commands.removeCommand(Autocomplete.startCommand);
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
value: false
|
|
129
|
-
},
|
|
130
|
-
enableSnippets: {
|
|
131
|
-
set: function(val) {
|
|
132
|
-
if (val) {
|
|
133
|
-
this.commands.addCommand(expandSnippet);
|
|
134
|
-
this.on("changeMode", onChangeMode);
|
|
135
|
-
onChangeMode(null, this);
|
|
136
|
-
} else {
|
|
137
|
-
this.commands.removeCommand(expandSnippet);
|
|
138
|
-
this.off("changeMode", onChangeMode);
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
value: false
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
define('ace/snippets', ['require', 'exports', 'module' , 'ace/lib/lang', 'ace/range', 'ace/keyboard/hash_handler', 'ace/tokenizer', 'ace/lib/dom'], function(require, exports, module) {
|
|
148
|
-
|
|
149
|
-
var lang = require("./lib/lang")
|
|
150
|
-
var Range = require("./range").Range
|
|
1
|
+
define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"], function(require, exports, module) {
|
|
2
|
+
"use strict";
|
|
3
|
+
var oop = require("./lib/oop");
|
|
4
|
+
var EventEmitter = require("./lib/event_emitter").EventEmitter;
|
|
5
|
+
var lang = require("./lib/lang");
|
|
6
|
+
var Range = require("./range").Range;
|
|
7
|
+
var Anchor = require("./anchor").Anchor;
|
|
151
8
|
var HashHandler = require("./keyboard/hash_handler").HashHandler;
|
|
152
9
|
var Tokenizer = require("./tokenizer").Tokenizer;
|
|
153
10
|
var comparePoints = Range.comparePoints;
|
|
@@ -158,12 +15,14 @@ var SnippetManager = function() {
|
|
|
158
15
|
};
|
|
159
16
|
|
|
160
17
|
(function() {
|
|
18
|
+
oop.implement(this, EventEmitter);
|
|
19
|
+
|
|
161
20
|
this.getTokenizer = function() {
|
|
162
21
|
function TabstopToken(str, _, stack) {
|
|
163
22
|
str = str.substr(1);
|
|
164
23
|
if (/^\d+$/.test(str) && !stack.inFormatString)
|
|
165
24
|
return [{tabstopId: parseInt(str, 10)}];
|
|
166
|
-
return [{text: str}]
|
|
25
|
+
return [{text: str}];
|
|
167
26
|
}
|
|
168
27
|
function escape(ch) {
|
|
169
28
|
return "(?:[^\\\\" + ch + "]|\\\\.)";
|
|
@@ -241,7 +100,7 @@ var SnippetManager = function() {
|
|
|
241
100
|
});
|
|
242
101
|
SnippetManager.prototype.getTokenizer = function() {
|
|
243
102
|
return SnippetManager.$tokenizer;
|
|
244
|
-
}
|
|
103
|
+
};
|
|
245
104
|
return SnippetManager.$tokenizer;
|
|
246
105
|
};
|
|
247
106
|
|
|
@@ -284,7 +143,7 @@ var SnippetManager = function() {
|
|
|
284
143
|
return s.getTabSize();
|
|
285
144
|
case "FILENAME":
|
|
286
145
|
case "FILEPATH":
|
|
287
|
-
return "
|
|
146
|
+
return "";
|
|
288
147
|
case "FULLNAME":
|
|
289
148
|
return "Ace";
|
|
290
149
|
}
|
|
@@ -375,11 +234,14 @@ var SnippetManager = function() {
|
|
|
375
234
|
return result;
|
|
376
235
|
};
|
|
377
236
|
|
|
378
|
-
this.
|
|
237
|
+
this.insertSnippetForSelection = function(editor, snippetText) {
|
|
379
238
|
var cursor = editor.getCursorPosition();
|
|
380
239
|
var line = editor.session.getLine(cursor.row);
|
|
381
|
-
var indentString = line.match(/^\s*/)[0];
|
|
382
240
|
var tabString = editor.session.getTabString();
|
|
241
|
+
var indentString = line.match(/^\s*/)[0];
|
|
242
|
+
|
|
243
|
+
if (cursor.column < indentString.length)
|
|
244
|
+
indentString = indentString.slice(0, cursor.column);
|
|
383
245
|
|
|
384
246
|
var tokens = this.tokenizeTmSnippet(snippetText);
|
|
385
247
|
tokens = this.resolveVariables(tokens, editor);
|
|
@@ -419,7 +281,7 @@ var SnippetManager = function() {
|
|
|
419
281
|
tabstops.forEach(function(ts) {ts.length = 0});
|
|
420
282
|
var expanding = {};
|
|
421
283
|
function copyValue(val) {
|
|
422
|
-
var copy = []
|
|
284
|
+
var copy = [];
|
|
423
285
|
for (var i = 0; i < val.length; i++) {
|
|
424
286
|
var p = val[i];
|
|
425
287
|
if (typeof p == "object") {
|
|
@@ -438,8 +300,9 @@ var SnippetManager = function() {
|
|
|
438
300
|
continue;
|
|
439
301
|
var id = p.tabstopId;
|
|
440
302
|
var i1 = tokens.indexOf(p, i + 1);
|
|
441
|
-
if (expanding[id]
|
|
442
|
-
expanding[id]
|
|
303
|
+
if (expanding[id]) {
|
|
304
|
+
if (expanding[id] === p)
|
|
305
|
+
expanding[id] = null;
|
|
443
306
|
continue;
|
|
444
307
|
}
|
|
445
308
|
|
|
@@ -452,7 +315,7 @@ var SnippetManager = function() {
|
|
|
452
315
|
|
|
453
316
|
if (ts.indexOf(p) === -1)
|
|
454
317
|
ts.push(p);
|
|
455
|
-
}
|
|
318
|
+
}
|
|
456
319
|
var row = 0, column = 0;
|
|
457
320
|
var text = "";
|
|
458
321
|
tokens.forEach(function(t) {
|
|
@@ -474,17 +337,30 @@ var SnippetManager = function() {
|
|
|
474
337
|
var end = editor.session.replace(range, text);
|
|
475
338
|
|
|
476
339
|
var tabstopManager = new TabstopManager(editor);
|
|
477
|
-
|
|
478
|
-
tabstopManager.
|
|
340
|
+
var selectionId = editor.inVirtualSelectionMode && editor.selection.index;
|
|
341
|
+
tabstopManager.addTabstops(tabstops, range.start, end, selectionId);
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
this.insertSnippet = function(editor, snippetText) {
|
|
345
|
+
var self = this;
|
|
346
|
+
if (editor.inVirtualSelectionMode)
|
|
347
|
+
return self.insertSnippetForSelection(editor, snippetText);
|
|
348
|
+
|
|
349
|
+
editor.forEachSelection(function() {
|
|
350
|
+
self.insertSnippetForSelection(editor, snippetText);
|
|
351
|
+
}, null, {keepOrder: true});
|
|
352
|
+
|
|
353
|
+
if (editor.tabstopManager)
|
|
354
|
+
editor.tabstopManager.tabNext();
|
|
479
355
|
};
|
|
480
356
|
|
|
481
357
|
this.$getScope = function(editor) {
|
|
482
358
|
var scope = editor.session.$mode.$id || "";
|
|
483
359
|
scope = scope.split("/").pop();
|
|
484
360
|
if (scope === "html" || scope === "php") {
|
|
485
|
-
if (scope === "php")
|
|
361
|
+
if (scope === "php" && !editor.session.$mode.inlinePhp)
|
|
486
362
|
scope = "html";
|
|
487
|
-
var c = editor.getCursorPosition()
|
|
363
|
+
var c = editor.getCursorPosition();
|
|
488
364
|
var state = editor.session.getState(c.row);
|
|
489
365
|
if (typeof state === "object") {
|
|
490
366
|
state = state[0];
|
|
@@ -513,7 +389,17 @@ var SnippetManager = function() {
|
|
|
513
389
|
return scopes;
|
|
514
390
|
};
|
|
515
391
|
|
|
516
|
-
this.expandWithTab = function(editor) {
|
|
392
|
+
this.expandWithTab = function(editor, options) {
|
|
393
|
+
var self = this;
|
|
394
|
+
var result = editor.forEachSelection(function() {
|
|
395
|
+
return self.expandSnippetForSelection(editor, options);
|
|
396
|
+
}, null, {keepOrder: true});
|
|
397
|
+
if (result && editor.tabstopManager)
|
|
398
|
+
editor.tabstopManager.tabNext();
|
|
399
|
+
return result;
|
|
400
|
+
};
|
|
401
|
+
|
|
402
|
+
this.expandSnippetForSelection = function(editor, options) {
|
|
517
403
|
var cursor = editor.getCursorPosition();
|
|
518
404
|
var line = editor.session.getLine(cursor.row);
|
|
519
405
|
var before = line.substring(0, cursor.column);
|
|
@@ -529,7 +415,8 @@ var SnippetManager = function() {
|
|
|
529
415
|
}, this);
|
|
530
416
|
if (!snippet)
|
|
531
417
|
return false;
|
|
532
|
-
|
|
418
|
+
if (options && options.dryRun)
|
|
419
|
+
return true;
|
|
533
420
|
editor.session.doc.removeInLine(cursor.row,
|
|
534
421
|
cursor.column - snippet.replaceBefore.length,
|
|
535
422
|
cursor.column + snippet.replaceAfter.length
|
|
@@ -537,7 +424,7 @@ var SnippetManager = function() {
|
|
|
537
424
|
|
|
538
425
|
this.variables.M__ = snippet.matchBefore;
|
|
539
426
|
this.variables.T__ = snippet.matchAfter;
|
|
540
|
-
this.
|
|
427
|
+
this.insertSnippetForSelection(editor, snippet.content);
|
|
541
428
|
|
|
542
429
|
this.variables.M__ = this.variables.T__ = null;
|
|
543
430
|
return true;
|
|
@@ -567,9 +454,13 @@ var SnippetManager = function() {
|
|
|
567
454
|
var snippetMap = this.snippetMap;
|
|
568
455
|
var snippetNameMap = this.snippetNameMap;
|
|
569
456
|
var self = this;
|
|
457
|
+
|
|
458
|
+
if (!snippets)
|
|
459
|
+
snippets = [];
|
|
460
|
+
|
|
570
461
|
function wrapRegexp(src) {
|
|
571
462
|
if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src))
|
|
572
|
-
src = "(?:" + src + ")"
|
|
463
|
+
src = "(?:" + src + ")";
|
|
573
464
|
|
|
574
465
|
return src || "";
|
|
575
466
|
}
|
|
@@ -591,7 +482,7 @@ var SnippetManager = function() {
|
|
|
591
482
|
function addSnippet(s) {
|
|
592
483
|
if (!s.scope)
|
|
593
484
|
s.scope = scope || "_";
|
|
594
|
-
scope = s.scope
|
|
485
|
+
scope = s.scope;
|
|
595
486
|
if (!snippetMap[scope]) {
|
|
596
487
|
snippetMap[scope] = [];
|
|
597
488
|
snippetNameMap[scope] = {};
|
|
@@ -617,12 +508,14 @@ var SnippetManager = function() {
|
|
|
617
508
|
|
|
618
509
|
s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true);
|
|
619
510
|
s.endTriggerRe = new RegExp(s.endTrigger, "", true);
|
|
620
|
-
}
|
|
511
|
+
}
|
|
621
512
|
|
|
622
|
-
if (snippets.content)
|
|
513
|
+
if (snippets && snippets.content)
|
|
623
514
|
addSnippet(snippets);
|
|
624
515
|
else if (Array.isArray(snippets))
|
|
625
516
|
snippets.forEach(addSnippet);
|
|
517
|
+
|
|
518
|
+
this._signal("registerSnippets", {scope: scope});
|
|
626
519
|
};
|
|
627
520
|
this.unregister = function(snippets, scope) {
|
|
628
521
|
var snippetMap = this.snippetMap;
|
|
@@ -651,7 +544,7 @@ var SnippetManager = function() {
|
|
|
651
544
|
while (m = re.exec(str)) {
|
|
652
545
|
if (m[1]) {
|
|
653
546
|
try {
|
|
654
|
-
snippet = JSON.parse(m[1])
|
|
547
|
+
snippet = JSON.parse(m[1]);
|
|
655
548
|
list.push(snippet);
|
|
656
549
|
} catch (e) {}
|
|
657
550
|
} if (m[4]) {
|
|
@@ -704,9 +597,10 @@ var TabstopManager = function(editor) {
|
|
|
704
597
|
};
|
|
705
598
|
(function() {
|
|
706
599
|
this.attach = function(editor) {
|
|
707
|
-
this.index =
|
|
600
|
+
this.index = 0;
|
|
708
601
|
this.ranges = [];
|
|
709
602
|
this.tabstops = [];
|
|
603
|
+
this.$openTabstops = null;
|
|
710
604
|
this.selectedTabstop = null;
|
|
711
605
|
|
|
712
606
|
this.editor = editor;
|
|
@@ -746,7 +640,7 @@ var TabstopManager = function(editor) {
|
|
|
746
640
|
}
|
|
747
641
|
if (!this.$inChange && isRemove) {
|
|
748
642
|
var ts = this.selectedTabstop;
|
|
749
|
-
var changedOutside = !ts.some(function(r) {
|
|
643
|
+
var changedOutside = ts && !ts.some(function(r) {
|
|
750
644
|
return comparePoints(r.start, start) <= 0 && comparePoints(r.end, end) >= 0;
|
|
751
645
|
});
|
|
752
646
|
if (changedOutside)
|
|
@@ -758,7 +652,7 @@ var TabstopManager = function(editor) {
|
|
|
758
652
|
if (r.end.row < start.row)
|
|
759
653
|
continue;
|
|
760
654
|
|
|
761
|
-
if (comparePoints(start, r.start) < 0 && comparePoints(end, r.end) > 0) {
|
|
655
|
+
if (isRemove && comparePoints(start, r.start) < 0 && comparePoints(end, r.end) > 0) {
|
|
762
656
|
this.removeRange(r);
|
|
763
657
|
i--;
|
|
764
658
|
continue;
|
|
@@ -781,7 +675,7 @@ var TabstopManager = function(editor) {
|
|
|
781
675
|
};
|
|
782
676
|
this.updateLinkedFields = function() {
|
|
783
677
|
var ts = this.selectedTabstop;
|
|
784
|
-
if (!ts.hasLinkedRanges)
|
|
678
|
+
if (!ts || !ts.hasLinkedRanges)
|
|
785
679
|
return;
|
|
786
680
|
this.$inChange = true;
|
|
787
681
|
var session = this.editor.session;
|
|
@@ -790,7 +684,7 @@ var TabstopManager = function(editor) {
|
|
|
790
684
|
var range = ts[i];
|
|
791
685
|
if (!range.linked)
|
|
792
686
|
continue;
|
|
793
|
-
var fmt = exports.snippetManager.tmStrFormat(text, range.original)
|
|
687
|
+
var fmt = exports.snippetManager.tmStrFormat(text, range.original);
|
|
794
688
|
session.replace(range, fmt);
|
|
795
689
|
}
|
|
796
690
|
this.$inChange = false;
|
|
@@ -801,7 +695,7 @@ var TabstopManager = function(editor) {
|
|
|
801
695
|
};
|
|
802
696
|
this.onChangeSelection = function() {
|
|
803
697
|
if (!this.editor)
|
|
804
|
-
return
|
|
698
|
+
return;
|
|
805
699
|
var lead = this.editor.selection.lead;
|
|
806
700
|
var anchor = this.editor.selection.anchor;
|
|
807
701
|
var isEmpty = this.editor.selection.isEmpty();
|
|
@@ -819,14 +713,17 @@ var TabstopManager = function(editor) {
|
|
|
819
713
|
this.detach();
|
|
820
714
|
};
|
|
821
715
|
this.tabNext = function(dir) {
|
|
822
|
-
var max = this.tabstops.length
|
|
716
|
+
var max = this.tabstops.length;
|
|
823
717
|
var index = this.index + (dir || 1);
|
|
824
|
-
index = Math.min(Math.max(index,
|
|
825
|
-
this.selectTabstop(index);
|
|
718
|
+
index = Math.min(Math.max(index, 1), max);
|
|
826
719
|
if (index == max)
|
|
720
|
+
index = 0;
|
|
721
|
+
this.selectTabstop(index);
|
|
722
|
+
if (index === 0)
|
|
827
723
|
this.detach();
|
|
828
724
|
};
|
|
829
725
|
this.selectTabstop = function(index) {
|
|
726
|
+
this.$openTabstops = null;
|
|
830
727
|
var ts = this.tabstops[this.index];
|
|
831
728
|
if (ts)
|
|
832
729
|
this.addTabstopMarkers(ts);
|
|
@@ -844,6 +741,8 @@ var TabstopManager = function(editor) {
|
|
|
844
741
|
continue;
|
|
845
742
|
sel.addRange(ts[i].clone(), true);
|
|
846
743
|
}
|
|
744
|
+
if (sel.ranges[0])
|
|
745
|
+
sel.addRange(sel.ranges[0].clone());
|
|
847
746
|
} else {
|
|
848
747
|
this.editor.selection.setRange(ts.firstNonLinked);
|
|
849
748
|
}
|
|
@@ -851,6 +750,8 @@ var TabstopManager = function(editor) {
|
|
|
851
750
|
this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);
|
|
852
751
|
};
|
|
853
752
|
this.addTabstops = function(tabstops, start, end) {
|
|
753
|
+
if (!this.$openTabstops)
|
|
754
|
+
this.$openTabstops = [];
|
|
854
755
|
if (!tabstops[0]) {
|
|
855
756
|
var p = Range.fromPoints(end, end);
|
|
856
757
|
moveRelative(p.start, start);
|
|
@@ -860,32 +761,43 @@ var TabstopManager = function(editor) {
|
|
|
860
761
|
}
|
|
861
762
|
|
|
862
763
|
var i = this.index;
|
|
863
|
-
var arg = [i, 0];
|
|
764
|
+
var arg = [i + 1, 0];
|
|
864
765
|
var ranges = this.ranges;
|
|
865
|
-
|
|
866
|
-
|
|
766
|
+
tabstops.forEach(function(ts, index) {
|
|
767
|
+
var dest = this.$openTabstops[index] || ts;
|
|
768
|
+
|
|
867
769
|
for (var i = ts.length; i--;) {
|
|
868
770
|
var p = ts[i];
|
|
869
771
|
var range = Range.fromPoints(p.start, p.end || p.start);
|
|
870
772
|
movePoint(range.start, start);
|
|
871
773
|
movePoint(range.end, start);
|
|
872
774
|
range.original = p;
|
|
873
|
-
range.tabstop =
|
|
775
|
+
range.tabstop = dest;
|
|
874
776
|
ranges.push(range);
|
|
875
|
-
|
|
777
|
+
if (dest != ts)
|
|
778
|
+
dest.unshift(range);
|
|
779
|
+
else
|
|
780
|
+
dest[i] = range;
|
|
876
781
|
if (p.fmtString) {
|
|
877
782
|
range.linked = true;
|
|
878
|
-
|
|
879
|
-
} else if (!
|
|
880
|
-
|
|
783
|
+
dest.hasLinkedRanges = true;
|
|
784
|
+
} else if (!dest.firstNonLinked)
|
|
785
|
+
dest.firstNonLinked = range;
|
|
881
786
|
}
|
|
882
|
-
if (!
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
787
|
+
if (!dest.firstNonLinked)
|
|
788
|
+
dest.hasLinkedRanges = false;
|
|
789
|
+
if (dest === ts) {
|
|
790
|
+
arg.push(dest);
|
|
791
|
+
this.$openTabstops[index] = dest;
|
|
792
|
+
}
|
|
793
|
+
this.addTabstopMarkers(dest);
|
|
886
794
|
}, this);
|
|
887
|
-
|
|
888
|
-
|
|
795
|
+
|
|
796
|
+
if (arg.length > 2) {
|
|
797
|
+
if (this.tabstops.length)
|
|
798
|
+
arg.push(arg.splice(2, 1)[0]);
|
|
799
|
+
this.tabstops.splice.apply(this.tabstops, arg);
|
|
800
|
+
}
|
|
889
801
|
};
|
|
890
802
|
|
|
891
803
|
this.addTabstopMarkers = function(ts) {
|
|
@@ -908,6 +820,13 @@ var TabstopManager = function(editor) {
|
|
|
908
820
|
i = this.ranges.indexOf(range);
|
|
909
821
|
this.ranges.splice(i, 1);
|
|
910
822
|
this.editor.session.removeMarker(range.markerId);
|
|
823
|
+
if (!range.tabstop.length) {
|
|
824
|
+
i = this.tabstops.indexOf(range.tabstop);
|
|
825
|
+
if (i != -1)
|
|
826
|
+
this.tabstops.splice(i, 1);
|
|
827
|
+
if (!this.tabstops.length)
|
|
828
|
+
this.detach();
|
|
829
|
+
}
|
|
911
830
|
};
|
|
912
831
|
|
|
913
832
|
this.keyboardHandler = new HashHandler();
|
|
@@ -932,6 +851,19 @@ var TabstopManager = function(editor) {
|
|
|
932
851
|
}).call(TabstopManager.prototype);
|
|
933
852
|
|
|
934
853
|
|
|
854
|
+
|
|
855
|
+
var changeTracker = {};
|
|
856
|
+
changeTracker.onChange = Anchor.prototype.onChange;
|
|
857
|
+
changeTracker.setPosition = function(row, column) {
|
|
858
|
+
this.pos.row = row;
|
|
859
|
+
this.pos.column = column;
|
|
860
|
+
};
|
|
861
|
+
changeTracker.update = function(pos, delta, $insertRight) {
|
|
862
|
+
this.$insertRight = $insertRight;
|
|
863
|
+
this.pos = pos;
|
|
864
|
+
this.onChange(delta);
|
|
865
|
+
};
|
|
866
|
+
|
|
935
867
|
var movePoint = function(point, diff) {
|
|
936
868
|
if (point.row == 0)
|
|
937
869
|
point.column += diff.column;
|
|
@@ -957,372 +889,67 @@ require("./lib/dom").importCssString("\
|
|
|
957
889
|
exports.snippetManager = new SnippetManager();
|
|
958
890
|
|
|
959
891
|
|
|
892
|
+
var Editor = require("./editor").Editor;
|
|
893
|
+
(function() {
|
|
894
|
+
this.insertSnippet = function(content, options) {
|
|
895
|
+
return exports.snippetManager.insertSnippet(this, content, options);
|
|
896
|
+
};
|
|
897
|
+
this.expandSnippet = function(options) {
|
|
898
|
+
return exports.snippetManager.expandWithTab(this, options);
|
|
899
|
+
};
|
|
900
|
+
}).call(Editor.prototype);
|
|
901
|
+
|
|
960
902
|
});
|
|
961
903
|
|
|
962
|
-
define(
|
|
904
|
+
define("ace/autocomplete/popup",["require","exports","module","ace/edit_session","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"], function(require, exports, module) {
|
|
905
|
+
"use strict";
|
|
963
906
|
|
|
907
|
+
var EditSession = require("../edit_session").EditSession;
|
|
908
|
+
var Renderer = require("../virtual_renderer").VirtualRenderer;
|
|
909
|
+
var Editor = require("../editor").Editor;
|
|
910
|
+
var Range = require("../range").Range;
|
|
911
|
+
var event = require("../lib/event");
|
|
912
|
+
var lang = require("../lib/lang");
|
|
913
|
+
var dom = require("../lib/dom");
|
|
964
914
|
|
|
965
|
-
var
|
|
966
|
-
var
|
|
967
|
-
var util = require("./autocomplete/util");
|
|
968
|
-
var event = require("./lib/event");
|
|
969
|
-
var lang = require("./lib/lang");
|
|
970
|
-
var snippetManager = require("./snippets").snippetManager;
|
|
915
|
+
var $singleLineEditor = function(el) {
|
|
916
|
+
var renderer = new Renderer(el);
|
|
971
917
|
|
|
972
|
-
|
|
973
|
-
this.autoInsert = true;
|
|
974
|
-
this.keyboardHandler = new HashHandler();
|
|
975
|
-
this.keyboardHandler.bindKeys(this.commands);
|
|
918
|
+
renderer.$maxLines = 4;
|
|
976
919
|
|
|
977
|
-
|
|
978
|
-
this.changeListener = this.changeListener.bind(this);
|
|
979
|
-
this.mousedownListener = this.mousedownListener.bind(this);
|
|
980
|
-
this.mousewheelListener = this.mousewheelListener.bind(this);
|
|
981
|
-
|
|
982
|
-
this.changeTimer = lang.delayedCall(function() {
|
|
983
|
-
this.updateCompletions(true);
|
|
984
|
-
}.bind(this))
|
|
985
|
-
};
|
|
920
|
+
var editor = new Editor(renderer);
|
|
986
921
|
|
|
987
|
-
(
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
this.insertMatch();
|
|
992
|
-
e.stop();
|
|
993
|
-
}.bind(this));
|
|
994
|
-
};
|
|
922
|
+
editor.setHighlightActiveLine(false);
|
|
923
|
+
editor.setShowPrintMargin(false);
|
|
924
|
+
editor.renderer.setShowGutter(false);
|
|
925
|
+
editor.renderer.setHighlightGutterLine(false);
|
|
995
926
|
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
this.$init();
|
|
927
|
+
editor.$mouseHandler.$focusWaitTimout = 0;
|
|
928
|
+
editor.$highlightTagPending = true;
|
|
999
929
|
|
|
1000
|
-
|
|
930
|
+
return editor;
|
|
931
|
+
};
|
|
1001
932
|
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
this.popup.setFontSize(editor.getFontSize());
|
|
933
|
+
var AcePopup = function(parentNode) {
|
|
934
|
+
var el = dom.createElement("div");
|
|
935
|
+
var popup = new $singleLineEditor(el);
|
|
1006
936
|
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
var rect = editor.container.getBoundingClientRect();
|
|
1013
|
-
pos.top += rect.top - renderer.layerConfig.offset;
|
|
1014
|
-
pos.left += rect.left - editor.renderer.scrollLeft;
|
|
1015
|
-
pos.left += renderer.$gutterLayer.gutterWidth;
|
|
937
|
+
if (parentNode)
|
|
938
|
+
parentNode.appendChild(el);
|
|
939
|
+
el.style.display = "none";
|
|
940
|
+
popup.renderer.content.style.cursor = "default";
|
|
941
|
+
popup.renderer.setStyle("ace_autocomplete");
|
|
1016
942
|
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
};
|
|
943
|
+
popup.setOption("displayIndentGuides", false);
|
|
944
|
+
popup.setOption("dragDelay", 150);
|
|
1020
945
|
|
|
1021
|
-
|
|
1022
|
-
this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);
|
|
1023
|
-
this.editor.off("changeSelection", this.changeListener);
|
|
1024
|
-
this.editor.off("blur", this.changeListener);
|
|
1025
|
-
this.editor.off("mousedown", this.mousedownListener);
|
|
1026
|
-
this.editor.off("mousewheel", this.mousewheelListener);
|
|
1027
|
-
this.changeTimer.cancel();
|
|
1028
|
-
|
|
1029
|
-
if (this.popup)
|
|
1030
|
-
this.popup.hide();
|
|
946
|
+
var noop = function(){};
|
|
1031
947
|
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
};
|
|
948
|
+
popup.focus = noop;
|
|
949
|
+
popup.$isFocused = true;
|
|
1035
950
|
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
if (cursor.row != this.base.row || cursor.column < this.base.column) {
|
|
1039
|
-
this.detach();
|
|
1040
|
-
}
|
|
1041
|
-
if (this.activated)
|
|
1042
|
-
this.changeTimer.schedule();
|
|
1043
|
-
else
|
|
1044
|
-
this.detach();
|
|
1045
|
-
};
|
|
1046
|
-
|
|
1047
|
-
this.blurListener = function() {
|
|
1048
|
-
if (document.activeElement != this.editor.textInput.getElement())
|
|
1049
|
-
this.detach();
|
|
1050
|
-
};
|
|
1051
|
-
|
|
1052
|
-
this.mousedownListener = function(e) {
|
|
1053
|
-
this.detach();
|
|
1054
|
-
};
|
|
1055
|
-
|
|
1056
|
-
this.mousewheelListener = function(e) {
|
|
1057
|
-
this.detach();
|
|
1058
|
-
};
|
|
1059
|
-
|
|
1060
|
-
this.goTo = function(where) {
|
|
1061
|
-
var row = this.popup.getRow();
|
|
1062
|
-
var max = this.popup.session.getLength() - 1;
|
|
1063
|
-
|
|
1064
|
-
switch(where) {
|
|
1065
|
-
case "up": row = row < 0 ? max : row - 1; break;
|
|
1066
|
-
case "down": row = row >= max ? -1 : row + 1; break;
|
|
1067
|
-
case "start": row = 0; break;
|
|
1068
|
-
case "end": row = max; break;
|
|
1069
|
-
}
|
|
1070
|
-
|
|
1071
|
-
this.popup.setRow(row);
|
|
1072
|
-
};
|
|
1073
|
-
|
|
1074
|
-
this.insertMatch = function(data) {
|
|
1075
|
-
if (!data)
|
|
1076
|
-
data = this.popup.getData(this.popup.getRow());
|
|
1077
|
-
if (!data)
|
|
1078
|
-
return false;
|
|
1079
|
-
if (data.completer && data.completer.insertMatch) {
|
|
1080
|
-
data.completer.insertMatch(this.editor);
|
|
1081
|
-
} else {
|
|
1082
|
-
if (this.completions.filterText) {
|
|
1083
|
-
var ranges = this.editor.selection.getAllRanges();
|
|
1084
|
-
for (var i = 0, range; range = ranges[i]; i++) {
|
|
1085
|
-
range.start.column -= this.completions.filterText.length;
|
|
1086
|
-
this.editor.session.remove(range);
|
|
1087
|
-
}
|
|
1088
|
-
}
|
|
1089
|
-
if (data.snippet)
|
|
1090
|
-
snippetManager.insertSnippet(this.editor, data.snippet);
|
|
1091
|
-
else
|
|
1092
|
-
this.editor.execCommand("insertstring", data.value || data);
|
|
1093
|
-
}
|
|
1094
|
-
this.detach();
|
|
1095
|
-
};
|
|
1096
|
-
|
|
1097
|
-
this.commands = {
|
|
1098
|
-
"Up": function(editor) { editor.completer.goTo("up"); },
|
|
1099
|
-
"Down": function(editor) { editor.completer.goTo("down"); },
|
|
1100
|
-
"Ctrl-Up|Ctrl-Home": function(editor) { editor.completer.goTo("start"); },
|
|
1101
|
-
"Ctrl-Down|Ctrl-End": function(editor) { editor.completer.goTo("end"); },
|
|
1102
|
-
|
|
1103
|
-
"Esc": function(editor) { editor.completer.detach(); },
|
|
1104
|
-
"Space": function(editor) { editor.completer.detach(); editor.insert(" ");},
|
|
1105
|
-
"Return": function(editor) { editor.completer.insertMatch(); },
|
|
1106
|
-
"Shift-Return": function(editor) { editor.completer.insertMatch(true); },
|
|
1107
|
-
"Tab": function(editor) { editor.completer.insertMatch(); },
|
|
1108
|
-
|
|
1109
|
-
"PageUp": function(editor) { editor.completer.popup.gotoPageUp(); },
|
|
1110
|
-
"PageDown": function(editor) { editor.completer.popup.gotoPageDown(); }
|
|
1111
|
-
};
|
|
1112
|
-
|
|
1113
|
-
this.gatherCompletions = function(editor, callback) {
|
|
1114
|
-
var session = editor.getSession();
|
|
1115
|
-
var pos = editor.getCursorPosition();
|
|
1116
|
-
|
|
1117
|
-
var line = session.getLine(pos.row);
|
|
1118
|
-
var prefix = util.retrievePrecedingIdentifier(line, pos.column);
|
|
1119
|
-
|
|
1120
|
-
this.base = editor.getCursorPosition();
|
|
1121
|
-
this.base.column -= prefix.length;
|
|
1122
|
-
|
|
1123
|
-
var matches = [];
|
|
1124
|
-
util.parForEach(editor.completers, function(completer, next) {
|
|
1125
|
-
completer.getCompletions(editor, session, pos, prefix, function(err, results) {
|
|
1126
|
-
if (!err)
|
|
1127
|
-
matches = matches.concat(results);
|
|
1128
|
-
next();
|
|
1129
|
-
});
|
|
1130
|
-
}, function() {
|
|
1131
|
-
callback(null, {
|
|
1132
|
-
prefix: prefix,
|
|
1133
|
-
matches: matches
|
|
1134
|
-
});
|
|
1135
|
-
});
|
|
1136
|
-
return true;
|
|
1137
|
-
};
|
|
1138
|
-
|
|
1139
|
-
this.showPopup = function(editor) {
|
|
1140
|
-
if (this.editor)
|
|
1141
|
-
this.detach();
|
|
1142
|
-
|
|
1143
|
-
this.activated = true;
|
|
1144
|
-
|
|
1145
|
-
this.editor = editor;
|
|
1146
|
-
if (editor.completer != this) {
|
|
1147
|
-
if (editor.completer)
|
|
1148
|
-
editor.completer.detach();
|
|
1149
|
-
editor.completer = this;
|
|
1150
|
-
}
|
|
1151
|
-
|
|
1152
|
-
editor.keyBinding.addKeyboardHandler(this.keyboardHandler);
|
|
1153
|
-
editor.on("changeSelection", this.changeListener);
|
|
1154
|
-
editor.on("blur", this.blurListener);
|
|
1155
|
-
editor.on("mousedown", this.mousedownListener);
|
|
1156
|
-
editor.on("mousewheel", this.mousewheelListener);
|
|
1157
|
-
|
|
1158
|
-
this.updateCompletions();
|
|
1159
|
-
};
|
|
1160
|
-
|
|
1161
|
-
this.updateCompletions = function(keepPopupPosition) {
|
|
1162
|
-
if (keepPopupPosition && this.base && this.completions) {
|
|
1163
|
-
var pos = this.editor.getCursorPosition();
|
|
1164
|
-
var prefix = this.editor.session.getTextRange({start: this.base, end: pos});
|
|
1165
|
-
if (prefix == this.completions.filterText)
|
|
1166
|
-
return;
|
|
1167
|
-
this.completions.setFilter(prefix);
|
|
1168
|
-
if (!this.completions.filtered.length)
|
|
1169
|
-
return this.detach();
|
|
1170
|
-
this.openPopup(this.editor, prefix, keepPopupPosition);
|
|
1171
|
-
return;
|
|
1172
|
-
}
|
|
1173
|
-
this.gatherCompletions(this.editor, function(err, results) {
|
|
1174
|
-
var matches = results && results.matches;
|
|
1175
|
-
if (!matches || !matches.length)
|
|
1176
|
-
return this.detach();
|
|
1177
|
-
|
|
1178
|
-
this.completions = new FilteredList(matches);
|
|
1179
|
-
this.completions.setFilter(results.prefix);
|
|
1180
|
-
var filtered = this.completions.filtered;
|
|
1181
|
-
if (!filtered.length)
|
|
1182
|
-
return this.detach();
|
|
1183
|
-
if (this.autoInsert && filtered.length == 1)
|
|
1184
|
-
return this.insertMatch(filtered[0]);
|
|
1185
|
-
this.openPopup(this.editor, results.prefix, keepPopupPosition);
|
|
1186
|
-
}.bind(this));
|
|
1187
|
-
};
|
|
1188
|
-
|
|
1189
|
-
this.cancelContextMenu = function() {
|
|
1190
|
-
var stop = function(e) {
|
|
1191
|
-
this.editor.off("nativecontextmenu", stop);
|
|
1192
|
-
if (e && e.domEvent)
|
|
1193
|
-
event.stopEvent(e.domEvent);
|
|
1194
|
-
}.bind(this);
|
|
1195
|
-
setTimeout(stop, 10);
|
|
1196
|
-
this.editor.on("nativecontextmenu", stop);
|
|
1197
|
-
};
|
|
1198
|
-
|
|
1199
|
-
}).call(Autocomplete.prototype);
|
|
1200
|
-
|
|
1201
|
-
Autocomplete.startCommand = {
|
|
1202
|
-
name: "startAutocomplete",
|
|
1203
|
-
exec: function(editor) {
|
|
1204
|
-
if (!editor.completer)
|
|
1205
|
-
editor.completer = new Autocomplete();
|
|
1206
|
-
editor.completer.showPopup(editor);
|
|
1207
|
-
editor.completer.cancelContextMenu();
|
|
1208
|
-
},
|
|
1209
|
-
bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space"
|
|
1210
|
-
};
|
|
1211
|
-
|
|
1212
|
-
var FilteredList = function(array, filterText, mutateData) {
|
|
1213
|
-
this.all = array;
|
|
1214
|
-
this.filtered = array;
|
|
1215
|
-
this.filterText = filterText || "";
|
|
1216
|
-
};
|
|
1217
|
-
(function(){
|
|
1218
|
-
this.setFilter = function(str) {
|
|
1219
|
-
if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0)
|
|
1220
|
-
var matches = this.filtered;
|
|
1221
|
-
else
|
|
1222
|
-
var matches = this.all;
|
|
1223
|
-
|
|
1224
|
-
this.filterText = str;
|
|
1225
|
-
matches = this.filterCompletions(matches, this.filterText);
|
|
1226
|
-
matches = matches.sort(function(a, b) {
|
|
1227
|
-
return b.exactMatch - a.exactMatch || b.score - a.score;
|
|
1228
|
-
});
|
|
1229
|
-
var prev = null;
|
|
1230
|
-
matches = matches.filter(function(item){
|
|
1231
|
-
var caption = item.value || item.caption || item.snippet;
|
|
1232
|
-
if (caption === prev) return false;
|
|
1233
|
-
prev = caption;
|
|
1234
|
-
return true;
|
|
1235
|
-
});
|
|
1236
|
-
|
|
1237
|
-
this.filtered = matches;
|
|
1238
|
-
};
|
|
1239
|
-
this.filterCompletions = function(items, needle) {
|
|
1240
|
-
var results = [];
|
|
1241
|
-
var upper = needle.toUpperCase();
|
|
1242
|
-
var lower = needle.toLowerCase();
|
|
1243
|
-
loop: for (var i = 0, item; item = items[i]; i++) {
|
|
1244
|
-
var caption = item.value || item.caption || item.snippet;
|
|
1245
|
-
if (!caption) continue;
|
|
1246
|
-
var lastIndex = -1;
|
|
1247
|
-
var matchMask = 0;
|
|
1248
|
-
var penalty = 0;
|
|
1249
|
-
var index, distance;
|
|
1250
|
-
for (var j = 0; j < needle.length; j++) {
|
|
1251
|
-
var i1 = caption.indexOf(lower[j], lastIndex + 1);
|
|
1252
|
-
var i2 = caption.indexOf(upper[j], lastIndex + 1);
|
|
1253
|
-
index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2;
|
|
1254
|
-
if (index < 0)
|
|
1255
|
-
continue loop;
|
|
1256
|
-
distance = index - lastIndex - 1;
|
|
1257
|
-
if (distance > 0) {
|
|
1258
|
-
if (lastIndex === -1)
|
|
1259
|
-
penalty += 10;
|
|
1260
|
-
penalty += distance;
|
|
1261
|
-
}
|
|
1262
|
-
matchMask = matchMask | (1 << index);
|
|
1263
|
-
lastIndex = index;
|
|
1264
|
-
}
|
|
1265
|
-
item.matchMask = matchMask;
|
|
1266
|
-
item.exactMatch = penalty ? 0 : 1;
|
|
1267
|
-
item.score = (item.score || 0) - penalty;
|
|
1268
|
-
results.push(item);
|
|
1269
|
-
}
|
|
1270
|
-
return results;
|
|
1271
|
-
};
|
|
1272
|
-
}).call(FilteredList.prototype);
|
|
1273
|
-
|
|
1274
|
-
exports.Autocomplete = Autocomplete;
|
|
1275
|
-
exports.FilteredList = FilteredList;
|
|
1276
|
-
|
|
1277
|
-
});
|
|
1278
|
-
|
|
1279
|
-
define('ace/autocomplete/popup', ['require', 'exports', 'module' , 'ace/edit_session', 'ace/virtual_renderer', 'ace/editor', 'ace/range', 'ace/lib/event', 'ace/lib/lang', 'ace/lib/dom'], function(require, exports, module) {
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
var EditSession = require("../edit_session").EditSession;
|
|
1283
|
-
var Renderer = require("../virtual_renderer").VirtualRenderer;
|
|
1284
|
-
var Editor = require("../editor").Editor;
|
|
1285
|
-
var Range = require("../range").Range;
|
|
1286
|
-
var event = require("../lib/event");
|
|
1287
|
-
var lang = require("../lib/lang");
|
|
1288
|
-
var dom = require("../lib/dom");
|
|
1289
|
-
|
|
1290
|
-
var $singleLineEditor = function(el) {
|
|
1291
|
-
var renderer = new Renderer(el);
|
|
1292
|
-
|
|
1293
|
-
renderer.$maxLines = 4;
|
|
1294
|
-
|
|
1295
|
-
var editor = new Editor(renderer);
|
|
1296
|
-
|
|
1297
|
-
editor.setHighlightActiveLine(false);
|
|
1298
|
-
editor.setShowPrintMargin(false);
|
|
1299
|
-
editor.renderer.setShowGutter(false);
|
|
1300
|
-
editor.renderer.setHighlightGutterLine(false);
|
|
1301
|
-
|
|
1302
|
-
editor.$mouseHandler.$focusWaitTimout = 0;
|
|
1303
|
-
|
|
1304
|
-
return editor;
|
|
1305
|
-
};
|
|
1306
|
-
|
|
1307
|
-
var AcePopup = function(parentNode) {
|
|
1308
|
-
var el = dom.createElement("div");
|
|
1309
|
-
var popup = new $singleLineEditor(el);
|
|
1310
|
-
|
|
1311
|
-
if (parentNode)
|
|
1312
|
-
parentNode.appendChild(el);
|
|
1313
|
-
el.style.display = "none";
|
|
1314
|
-
popup.renderer.content.style.cursor = "default";
|
|
1315
|
-
popup.renderer.setStyle("ace_autocomplete");
|
|
1316
|
-
|
|
1317
|
-
popup.setOption("displayIndentGuides", false);
|
|
1318
|
-
|
|
1319
|
-
var noop = function(){};
|
|
1320
|
-
|
|
1321
|
-
popup.focus = noop;
|
|
1322
|
-
popup.$isFocused = true;
|
|
1323
|
-
|
|
1324
|
-
popup.renderer.$cursorLayer.restartTimer = noop;
|
|
1325
|
-
popup.renderer.$cursorLayer.element.style.opacity = 0;
|
|
951
|
+
popup.renderer.$cursorLayer.restartTimer = noop;
|
|
952
|
+
popup.renderer.$cursorLayer.element.style.opacity = 0;
|
|
1326
953
|
|
|
1327
954
|
popup.renderer.$maxLines = 8;
|
|
1328
955
|
popup.renderer.$keepTextAreaAtCursor = false;
|
|
@@ -1333,8 +960,7 @@ var AcePopup = function(parentNode) {
|
|
|
1333
960
|
|
|
1334
961
|
popup.on("mousedown", function(e) {
|
|
1335
962
|
var pos = e.getDocumentPosition();
|
|
1336
|
-
popup.
|
|
1337
|
-
popup.selection.clearSelection();
|
|
963
|
+
popup.selection.moveToPosition(pos);
|
|
1338
964
|
selectionMarker.start.row = selectionMarker.end.row = pos.row;
|
|
1339
965
|
e.stop();
|
|
1340
966
|
});
|
|
@@ -1350,7 +976,7 @@ var AcePopup = function(parentNode) {
|
|
|
1350
976
|
popup.session.removeMarker(hoverMarker.id);
|
|
1351
977
|
hoverMarker.id = null;
|
|
1352
978
|
}
|
|
1353
|
-
}
|
|
979
|
+
};
|
|
1354
980
|
popup.setSelectOnHover(false);
|
|
1355
981
|
popup.on("mousemove", function(e) {
|
|
1356
982
|
if (!lastMouseEvent) {
|
|
@@ -1402,11 +1028,11 @@ var AcePopup = function(parentNode) {
|
|
|
1402
1028
|
popup.getHoveredRow = function() {
|
|
1403
1029
|
return hoverMarker.start.row;
|
|
1404
1030
|
};
|
|
1405
|
-
|
|
1031
|
+
|
|
1406
1032
|
event.addListener(popup.container, "mouseout", hideHoverMarker);
|
|
1407
1033
|
popup.on("hide", hideHoverMarker);
|
|
1408
1034
|
popup.on("changeSelection", hideHoverMarker);
|
|
1409
|
-
|
|
1035
|
+
|
|
1410
1036
|
popup.session.doc.getLength = function() {
|
|
1411
1037
|
return popup.data.length;
|
|
1412
1038
|
};
|
|
@@ -1418,15 +1044,15 @@ var AcePopup = function(parentNode) {
|
|
|
1418
1044
|
};
|
|
1419
1045
|
|
|
1420
1046
|
var bgTokenizer = popup.session.bgTokenizer;
|
|
1421
|
-
bgTokenizer.$tokenizeRow = function(
|
|
1422
|
-
var data = popup.data[
|
|
1047
|
+
bgTokenizer.$tokenizeRow = function(row) {
|
|
1048
|
+
var data = popup.data[row];
|
|
1423
1049
|
var tokens = [];
|
|
1424
1050
|
if (!data)
|
|
1425
1051
|
return tokens;
|
|
1426
1052
|
if (typeof data == "string")
|
|
1427
1053
|
data = {value: data};
|
|
1428
1054
|
if (!data.caption)
|
|
1429
|
-
data.caption = data.value;
|
|
1055
|
+
data.caption = data.value || data.name;
|
|
1430
1056
|
|
|
1431
1057
|
var last = -1;
|
|
1432
1058
|
var flag, c;
|
|
@@ -1450,13 +1076,13 @@ var AcePopup = function(parentNode) {
|
|
|
1450
1076
|
};
|
|
1451
1077
|
bgTokenizer.$updateOnChange = noop;
|
|
1452
1078
|
bgTokenizer.start = noop;
|
|
1453
|
-
|
|
1079
|
+
|
|
1454
1080
|
popup.session.$computeWidth = function() {
|
|
1455
1081
|
return this.screenWidth = 0;
|
|
1456
|
-
}
|
|
1082
|
+
};
|
|
1457
1083
|
popup.isOpen = false;
|
|
1458
1084
|
popup.isTopdown = false;
|
|
1459
|
-
|
|
1085
|
+
|
|
1460
1086
|
popup.data = [];
|
|
1461
1087
|
popup.setData = function(list) {
|
|
1462
1088
|
popup.data = list || [];
|
|
@@ -1481,7 +1107,7 @@ var AcePopup = function(parentNode) {
|
|
|
1481
1107
|
popup._signal("select");
|
|
1482
1108
|
}
|
|
1483
1109
|
};
|
|
1484
|
-
|
|
1110
|
+
|
|
1485
1111
|
popup.on("changeSelection", function() {
|
|
1486
1112
|
if (popup.isOpen)
|
|
1487
1113
|
popup.setRow(popup.selection.lead.row);
|
|
@@ -1512,22 +1138,22 @@ var AcePopup = function(parentNode) {
|
|
|
1512
1138
|
|
|
1513
1139
|
el.style.display = "";
|
|
1514
1140
|
this.renderer.$textLayer.checkForSizeChanges();
|
|
1515
|
-
|
|
1141
|
+
|
|
1516
1142
|
var left = pos.left;
|
|
1517
1143
|
if (left + el.offsetWidth > screenWidth)
|
|
1518
1144
|
left = screenWidth - el.offsetWidth;
|
|
1519
|
-
|
|
1145
|
+
|
|
1520
1146
|
el.style.left = left + "px";
|
|
1521
|
-
|
|
1147
|
+
|
|
1522
1148
|
this._signal("show");
|
|
1523
1149
|
lastMouseEvent = null;
|
|
1524
1150
|
popup.isOpen = true;
|
|
1525
1151
|
};
|
|
1526
|
-
|
|
1152
|
+
|
|
1527
1153
|
popup.getTextLeftOffset = function() {
|
|
1528
1154
|
return this.$borderSize + this.renderer.$padding + this.$imageSize;
|
|
1529
1155
|
};
|
|
1530
|
-
|
|
1156
|
+
|
|
1531
1157
|
popup.$imageSize = 0;
|
|
1532
1158
|
popup.$borderSize = 1;
|
|
1533
1159
|
|
|
@@ -1535,19 +1161,24 @@ var AcePopup = function(parentNode) {
|
|
|
1535
1161
|
};
|
|
1536
1162
|
|
|
1537
1163
|
dom.importCssString("\
|
|
1538
|
-
.ace_autocomplete
|
|
1164
|
+
.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\
|
|
1539
1165
|
background-color: #CAD6FA;\
|
|
1540
1166
|
z-index: 1;\
|
|
1541
1167
|
}\
|
|
1542
|
-
.ace_autocomplete
|
|
1168
|
+
.ace_editor.ace_autocomplete .ace_line-hover {\
|
|
1543
1169
|
border: 1px solid #abbffe;\
|
|
1544
1170
|
margin-top: -1px;\
|
|
1545
1171
|
background: rgba(233,233,253,0.4);\
|
|
1546
1172
|
}\
|
|
1547
|
-
.ace_autocomplete .ace_line-hover {\
|
|
1173
|
+
.ace_editor.ace_autocomplete .ace_line-hover {\
|
|
1548
1174
|
position: absolute;\
|
|
1549
1175
|
z-index: 2;\
|
|
1550
1176
|
}\
|
|
1177
|
+
.ace_editor.ace_autocomplete .ace_scroller {\
|
|
1178
|
+
background: none;\
|
|
1179
|
+
border: none;\
|
|
1180
|
+
box-shadow: none;\
|
|
1181
|
+
}\
|
|
1551
1182
|
.ace_rightAlignedText {\
|
|
1552
1183
|
color: gray;\
|
|
1553
1184
|
display: inline-block;\
|
|
@@ -1556,11 +1187,11 @@ dom.importCssString("\
|
|
|
1556
1187
|
text-align: right;\
|
|
1557
1188
|
z-index: -1;\
|
|
1558
1189
|
}\
|
|
1559
|
-
.ace_autocomplete .ace_completion-highlight{\
|
|
1190
|
+
.ace_editor.ace_autocomplete .ace_completion-highlight{\
|
|
1560
1191
|
color: #000;\
|
|
1561
1192
|
text-shadow: 0 0 0.01em;\
|
|
1562
1193
|
}\
|
|
1563
|
-
.ace_autocomplete {\
|
|
1194
|
+
.ace_editor.ace_autocomplete {\
|
|
1564
1195
|
width: 280px;\
|
|
1565
1196
|
z-index: 200000;\
|
|
1566
1197
|
background: #fbfbfb;\
|
|
@@ -1575,8 +1206,8 @@ exports.AcePopup = AcePopup;
|
|
|
1575
1206
|
|
|
1576
1207
|
});
|
|
1577
1208
|
|
|
1578
|
-
define(
|
|
1579
|
-
|
|
1209
|
+
define("ace/autocomplete/util",["require","exports","module"], function(require, exports, module) {
|
|
1210
|
+
"use strict";
|
|
1580
1211
|
|
|
1581
1212
|
exports.parForEach = function(array, fn, callback) {
|
|
1582
1213
|
var completed = 0;
|
|
@@ -1590,9 +1221,9 @@ exports.parForEach = function(array, fn, callback) {
|
|
|
1590
1221
|
callback(result, err);
|
|
1591
1222
|
});
|
|
1592
1223
|
}
|
|
1593
|
-
}
|
|
1224
|
+
};
|
|
1594
1225
|
|
|
1595
|
-
var ID_REGEX = /[a-zA-Z_0-9
|
|
1226
|
+
var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\uFFFF]/;
|
|
1596
1227
|
|
|
1597
1228
|
exports.retrievePrecedingIdentifier = function(text, pos, regex) {
|
|
1598
1229
|
regex = regex || ID_REGEX;
|
|
@@ -1604,7 +1235,7 @@ exports.retrievePrecedingIdentifier = function(text, pos, regex) {
|
|
|
1604
1235
|
break;
|
|
1605
1236
|
}
|
|
1606
1237
|
return buf.reverse().join("");
|
|
1607
|
-
}
|
|
1238
|
+
};
|
|
1608
1239
|
|
|
1609
1240
|
exports.retrieveFollowingIdentifier = function(text, pos, regex) {
|
|
1610
1241
|
regex = regex || ID_REGEX;
|
|
@@ -1616,14 +1247,365 @@ exports.retrieveFollowingIdentifier = function(text, pos, regex) {
|
|
|
1616
1247
|
break;
|
|
1617
1248
|
}
|
|
1618
1249
|
return buf;
|
|
1619
|
-
}
|
|
1250
|
+
};
|
|
1251
|
+
|
|
1252
|
+
});
|
|
1253
|
+
|
|
1254
|
+
define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/snippets"], function(require, exports, module) {
|
|
1255
|
+
"use strict";
|
|
1256
|
+
|
|
1257
|
+
var HashHandler = require("./keyboard/hash_handler").HashHandler;
|
|
1258
|
+
var AcePopup = require("./autocomplete/popup").AcePopup;
|
|
1259
|
+
var util = require("./autocomplete/util");
|
|
1260
|
+
var event = require("./lib/event");
|
|
1261
|
+
var lang = require("./lib/lang");
|
|
1262
|
+
var snippetManager = require("./snippets").snippetManager;
|
|
1263
|
+
|
|
1264
|
+
var Autocomplete = function() {
|
|
1265
|
+
this.autoInsert = true;
|
|
1266
|
+
this.autoSelect = true;
|
|
1267
|
+
this.keyboardHandler = new HashHandler();
|
|
1268
|
+
this.keyboardHandler.bindKeys(this.commands);
|
|
1269
|
+
|
|
1270
|
+
this.blurListener = this.blurListener.bind(this);
|
|
1271
|
+
this.changeListener = this.changeListener.bind(this);
|
|
1272
|
+
this.mousedownListener = this.mousedownListener.bind(this);
|
|
1273
|
+
this.mousewheelListener = this.mousewheelListener.bind(this);
|
|
1274
|
+
|
|
1275
|
+
this.changeTimer = lang.delayedCall(function() {
|
|
1276
|
+
this.updateCompletions(true);
|
|
1277
|
+
}.bind(this));
|
|
1278
|
+
};
|
|
1279
|
+
|
|
1280
|
+
(function() {
|
|
1281
|
+
this.gatherCompletionsId = 0;
|
|
1282
|
+
|
|
1283
|
+
this.$init = function() {
|
|
1284
|
+
this.popup = new AcePopup(document.body || document.documentElement);
|
|
1285
|
+
this.popup.on("click", function(e) {
|
|
1286
|
+
this.insertMatch();
|
|
1287
|
+
e.stop();
|
|
1288
|
+
}.bind(this));
|
|
1289
|
+
this.popup.focus = this.editor.focus.bind(this.editor);
|
|
1290
|
+
};
|
|
1291
|
+
|
|
1292
|
+
this.openPopup = function(editor, prefix, keepPopupPosition) {
|
|
1293
|
+
if (!this.popup)
|
|
1294
|
+
this.$init();
|
|
1295
|
+
|
|
1296
|
+
this.popup.setData(this.completions.filtered);
|
|
1297
|
+
|
|
1298
|
+
var renderer = editor.renderer;
|
|
1299
|
+
this.popup.setRow(this.autoSelect ? 0 : -1);
|
|
1300
|
+
if (!keepPopupPosition) {
|
|
1301
|
+
this.popup.setTheme(editor.getTheme());
|
|
1302
|
+
this.popup.setFontSize(editor.getFontSize());
|
|
1303
|
+
|
|
1304
|
+
var lineHeight = renderer.layerConfig.lineHeight;
|
|
1305
|
+
|
|
1306
|
+
var pos = renderer.$cursorLayer.getPixelPosition(this.base, true);
|
|
1307
|
+
pos.left -= this.popup.getTextLeftOffset();
|
|
1308
|
+
|
|
1309
|
+
var rect = editor.container.getBoundingClientRect();
|
|
1310
|
+
pos.top += rect.top - renderer.layerConfig.offset;
|
|
1311
|
+
pos.left += rect.left - editor.renderer.scrollLeft;
|
|
1312
|
+
pos.left += renderer.$gutterLayer.gutterWidth;
|
|
1313
|
+
|
|
1314
|
+
this.popup.show(pos, lineHeight);
|
|
1315
|
+
} else if (keepPopupPosition && !prefix) {
|
|
1316
|
+
this.detach();
|
|
1317
|
+
}
|
|
1318
|
+
};
|
|
1319
|
+
|
|
1320
|
+
this.detach = function() {
|
|
1321
|
+
this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);
|
|
1322
|
+
this.editor.off("changeSelection", this.changeListener);
|
|
1323
|
+
this.editor.off("blur", this.blurListener);
|
|
1324
|
+
this.editor.off("mousedown", this.mousedownListener);
|
|
1325
|
+
this.editor.off("mousewheel", this.mousewheelListener);
|
|
1326
|
+
this.changeTimer.cancel();
|
|
1327
|
+
|
|
1328
|
+
if (this.popup && this.popup.isOpen) {
|
|
1329
|
+
this.gatherCompletionsId += 1;
|
|
1330
|
+
this.popup.hide();
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
if (this.base)
|
|
1334
|
+
this.base.detach();
|
|
1335
|
+
this.activated = false;
|
|
1336
|
+
this.completions = this.base = null;
|
|
1337
|
+
};
|
|
1338
|
+
|
|
1339
|
+
this.changeListener = function(e) {
|
|
1340
|
+
var cursor = this.editor.selection.lead;
|
|
1341
|
+
if (cursor.row != this.base.row || cursor.column < this.base.column) {
|
|
1342
|
+
this.detach();
|
|
1343
|
+
}
|
|
1344
|
+
if (this.activated)
|
|
1345
|
+
this.changeTimer.schedule();
|
|
1346
|
+
else
|
|
1347
|
+
this.detach();
|
|
1348
|
+
};
|
|
1349
|
+
|
|
1350
|
+
this.blurListener = function() {
|
|
1351
|
+
var el = document.activeElement;
|
|
1352
|
+
if (el != this.editor.textInput.getElement() && el.parentNode != this.popup.container)
|
|
1353
|
+
this.detach();
|
|
1354
|
+
};
|
|
1355
|
+
|
|
1356
|
+
this.mousedownListener = function(e) {
|
|
1357
|
+
this.detach();
|
|
1358
|
+
};
|
|
1359
|
+
|
|
1360
|
+
this.mousewheelListener = function(e) {
|
|
1361
|
+
this.detach();
|
|
1362
|
+
};
|
|
1363
|
+
|
|
1364
|
+
this.goTo = function(where) {
|
|
1365
|
+
var row = this.popup.getRow();
|
|
1366
|
+
var max = this.popup.session.getLength() - 1;
|
|
1367
|
+
|
|
1368
|
+
switch(where) {
|
|
1369
|
+
case "up": row = row <= 0 ? max : row - 1; break;
|
|
1370
|
+
case "down": row = row >= max ? -1 : row + 1; break;
|
|
1371
|
+
case "start": row = 0; break;
|
|
1372
|
+
case "end": row = max; break;
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1375
|
+
this.popup.setRow(row);
|
|
1376
|
+
};
|
|
1377
|
+
|
|
1378
|
+
this.insertMatch = function(data) {
|
|
1379
|
+
if (!data)
|
|
1380
|
+
data = this.popup.getData(this.popup.getRow());
|
|
1381
|
+
if (!data)
|
|
1382
|
+
return false;
|
|
1383
|
+
|
|
1384
|
+
if (data.completer && data.completer.insertMatch) {
|
|
1385
|
+
data.completer.insertMatch(this.editor);
|
|
1386
|
+
} else {
|
|
1387
|
+
if (this.completions.filterText) {
|
|
1388
|
+
var ranges = this.editor.selection.getAllRanges();
|
|
1389
|
+
for (var i = 0, range; range = ranges[i]; i++) {
|
|
1390
|
+
range.start.column -= this.completions.filterText.length;
|
|
1391
|
+
this.editor.session.remove(range);
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
if (data.snippet)
|
|
1395
|
+
snippetManager.insertSnippet(this.editor, data.snippet);
|
|
1396
|
+
else
|
|
1397
|
+
this.editor.execCommand("insertstring", data.value || data);
|
|
1398
|
+
}
|
|
1399
|
+
this.detach();
|
|
1400
|
+
};
|
|
1401
|
+
|
|
1402
|
+
this.commands = {
|
|
1403
|
+
"Up": function(editor) { editor.completer.goTo("up"); },
|
|
1404
|
+
"Down": function(editor) { editor.completer.goTo("down"); },
|
|
1405
|
+
"Ctrl-Up|Ctrl-Home": function(editor) { editor.completer.goTo("start"); },
|
|
1406
|
+
"Ctrl-Down|Ctrl-End": function(editor) { editor.completer.goTo("end"); },
|
|
1407
|
+
|
|
1408
|
+
"Esc": function(editor) { editor.completer.detach(); },
|
|
1409
|
+
"Space": function(editor) { editor.completer.detach(); editor.insert(" ");},
|
|
1410
|
+
"Return": function(editor) { return editor.completer.insertMatch(); },
|
|
1411
|
+
"Shift-Return": function(editor) { editor.completer.insertMatch(true); },
|
|
1412
|
+
"Tab": function(editor) {
|
|
1413
|
+
var result = editor.completer.insertMatch();
|
|
1414
|
+
if (!result && !editor.tabstopManager)
|
|
1415
|
+
editor.completer.goTo("down");
|
|
1416
|
+
else
|
|
1417
|
+
return result;
|
|
1418
|
+
},
|
|
1419
|
+
|
|
1420
|
+
"PageUp": function(editor) { editor.completer.popup.gotoPageUp(); },
|
|
1421
|
+
"PageDown": function(editor) { editor.completer.popup.gotoPageDown(); }
|
|
1422
|
+
};
|
|
1423
|
+
|
|
1424
|
+
this.gatherCompletions = function(editor, callback) {
|
|
1425
|
+
var session = editor.getSession();
|
|
1426
|
+
var pos = editor.getCursorPosition();
|
|
1427
|
+
|
|
1428
|
+
var line = session.getLine(pos.row);
|
|
1429
|
+
var prefix = util.retrievePrecedingIdentifier(line, pos.column);
|
|
1430
|
+
|
|
1431
|
+
this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length);
|
|
1432
|
+
this.base.$insertRight = true;
|
|
1433
|
+
|
|
1434
|
+
var matches = [];
|
|
1435
|
+
var total = editor.completers.length;
|
|
1436
|
+
editor.completers.forEach(function(completer, i) {
|
|
1437
|
+
completer.getCompletions(editor, session, pos, prefix, function(err, results) {
|
|
1438
|
+
if (!err)
|
|
1439
|
+
matches = matches.concat(results);
|
|
1440
|
+
var pos = editor.getCursorPosition();
|
|
1441
|
+
var line = session.getLine(pos.row);
|
|
1442
|
+
callback(null, {
|
|
1443
|
+
prefix: util.retrievePrecedingIdentifier(line, pos.column, results[0] && results[0].identifierRegex),
|
|
1444
|
+
matches: matches,
|
|
1445
|
+
finished: (--total === 0)
|
|
1446
|
+
});
|
|
1447
|
+
});
|
|
1448
|
+
});
|
|
1449
|
+
return true;
|
|
1450
|
+
};
|
|
1451
|
+
|
|
1452
|
+
this.showPopup = function(editor) {
|
|
1453
|
+
if (this.editor)
|
|
1454
|
+
this.detach();
|
|
1455
|
+
|
|
1456
|
+
this.activated = true;
|
|
1457
|
+
|
|
1458
|
+
this.editor = editor;
|
|
1459
|
+
if (editor.completer != this) {
|
|
1460
|
+
if (editor.completer)
|
|
1461
|
+
editor.completer.detach();
|
|
1462
|
+
editor.completer = this;
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
editor.keyBinding.addKeyboardHandler(this.keyboardHandler);
|
|
1466
|
+
editor.on("changeSelection", this.changeListener);
|
|
1467
|
+
editor.on("blur", this.blurListener);
|
|
1468
|
+
editor.on("mousedown", this.mousedownListener);
|
|
1469
|
+
editor.on("mousewheel", this.mousewheelListener);
|
|
1470
|
+
|
|
1471
|
+
this.updateCompletions();
|
|
1472
|
+
};
|
|
1473
|
+
|
|
1474
|
+
this.updateCompletions = function(keepPopupPosition) {
|
|
1475
|
+
if (keepPopupPosition && this.base && this.completions) {
|
|
1476
|
+
var pos = this.editor.getCursorPosition();
|
|
1477
|
+
var prefix = this.editor.session.getTextRange({start: this.base, end: pos});
|
|
1478
|
+
if (prefix == this.completions.filterText)
|
|
1479
|
+
return;
|
|
1480
|
+
this.completions.setFilter(prefix);
|
|
1481
|
+
if (!this.completions.filtered.length)
|
|
1482
|
+
return this.detach();
|
|
1483
|
+
if (this.completions.filtered.length == 1
|
|
1484
|
+
&& this.completions.filtered[0].value == prefix
|
|
1485
|
+
&& !this.completions.filtered[0].snippet)
|
|
1486
|
+
return this.detach();
|
|
1487
|
+
this.openPopup(this.editor, prefix, keepPopupPosition);
|
|
1488
|
+
return;
|
|
1489
|
+
}
|
|
1490
|
+
var _id = this.gatherCompletionsId;
|
|
1491
|
+
this.gatherCompletions(this.editor, function(err, results) {
|
|
1492
|
+
var detachIfFinished = function() {
|
|
1493
|
+
if (!results.finished) return;
|
|
1494
|
+
return this.detach();
|
|
1495
|
+
}.bind(this);
|
|
1496
|
+
|
|
1497
|
+
var prefix = results.prefix;
|
|
1498
|
+
var matches = results && results.matches;
|
|
1499
|
+
|
|
1500
|
+
if (!matches || !matches.length)
|
|
1501
|
+
return detachIfFinished();
|
|
1502
|
+
if (prefix.indexOf(results.prefix) !== 0 || _id != this.gatherCompletionsId)
|
|
1503
|
+
return;
|
|
1504
|
+
|
|
1505
|
+
this.completions = new FilteredList(matches);
|
|
1506
|
+
this.completions.setFilter(prefix);
|
|
1507
|
+
var filtered = this.completions.filtered;
|
|
1508
|
+
if (!filtered.length)
|
|
1509
|
+
return detachIfFinished();
|
|
1510
|
+
if (filtered.length == 1 && filtered[0].value == prefix && !filtered[0].snippet)
|
|
1511
|
+
return detachIfFinished();
|
|
1512
|
+
if (this.autoInsert && filtered.length == 1 && results.finished)
|
|
1513
|
+
return this.insertMatch(filtered[0]);
|
|
1514
|
+
|
|
1515
|
+
this.openPopup(this.editor, prefix, keepPopupPosition);
|
|
1516
|
+
}.bind(this));
|
|
1517
|
+
};
|
|
1518
|
+
|
|
1519
|
+
this.cancelContextMenu = function() {
|
|
1520
|
+
this.editor.$mouseHandler.cancelContextMenu();
|
|
1521
|
+
};
|
|
1522
|
+
|
|
1523
|
+
}).call(Autocomplete.prototype);
|
|
1524
|
+
|
|
1525
|
+
Autocomplete.startCommand = {
|
|
1526
|
+
name: "startAutocomplete",
|
|
1527
|
+
exec: function(editor) {
|
|
1528
|
+
if (!editor.completer)
|
|
1529
|
+
editor.completer = new Autocomplete();
|
|
1530
|
+
editor.completer.autoInsert =
|
|
1531
|
+
editor.completer.autoSelect = true;
|
|
1532
|
+
editor.completer.showPopup(editor);
|
|
1533
|
+
editor.completer.cancelContextMenu();
|
|
1534
|
+
},
|
|
1535
|
+
bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space"
|
|
1536
|
+
};
|
|
1537
|
+
|
|
1538
|
+
var FilteredList = function(array, filterText, mutateData) {
|
|
1539
|
+
this.all = array;
|
|
1540
|
+
this.filtered = array;
|
|
1541
|
+
this.filterText = filterText || "";
|
|
1542
|
+
};
|
|
1543
|
+
(function(){
|
|
1544
|
+
this.setFilter = function(str) {
|
|
1545
|
+
if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0)
|
|
1546
|
+
var matches = this.filtered;
|
|
1547
|
+
else
|
|
1548
|
+
var matches = this.all;
|
|
1549
|
+
|
|
1550
|
+
this.filterText = str;
|
|
1551
|
+
matches = this.filterCompletions(matches, this.filterText);
|
|
1552
|
+
matches = matches.sort(function(a, b) {
|
|
1553
|
+
return b.exactMatch - a.exactMatch || b.score - a.score;
|
|
1554
|
+
});
|
|
1555
|
+
var prev = null;
|
|
1556
|
+
matches = matches.filter(function(item){
|
|
1557
|
+
var caption = item.snippet || item.caption || item.value;
|
|
1558
|
+
if (caption === prev) return false;
|
|
1559
|
+
prev = caption;
|
|
1560
|
+
return true;
|
|
1561
|
+
});
|
|
1562
|
+
|
|
1563
|
+
this.filtered = matches;
|
|
1564
|
+
};
|
|
1565
|
+
this.filterCompletions = function(items, needle) {
|
|
1566
|
+
var results = [];
|
|
1567
|
+
var upper = needle.toUpperCase();
|
|
1568
|
+
var lower = needle.toLowerCase();
|
|
1569
|
+
loop: for (var i = 0, item; item = items[i]; i++) {
|
|
1570
|
+
var caption = item.value || item.caption || item.snippet;
|
|
1571
|
+
if (!caption) continue;
|
|
1572
|
+
var lastIndex = -1;
|
|
1573
|
+
var matchMask = 0;
|
|
1574
|
+
var penalty = 0;
|
|
1575
|
+
var index, distance;
|
|
1576
|
+
for (var j = 0; j < needle.length; j++) {
|
|
1577
|
+
var i1 = caption.indexOf(lower[j], lastIndex + 1);
|
|
1578
|
+
var i2 = caption.indexOf(upper[j], lastIndex + 1);
|
|
1579
|
+
index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2;
|
|
1580
|
+
if (index < 0)
|
|
1581
|
+
continue loop;
|
|
1582
|
+
distance = index - lastIndex - 1;
|
|
1583
|
+
if (distance > 0) {
|
|
1584
|
+
if (lastIndex === -1)
|
|
1585
|
+
penalty += 10;
|
|
1586
|
+
penalty += distance;
|
|
1587
|
+
}
|
|
1588
|
+
matchMask = matchMask | (1 << index);
|
|
1589
|
+
lastIndex = index;
|
|
1590
|
+
}
|
|
1591
|
+
item.matchMask = matchMask;
|
|
1592
|
+
item.exactMatch = penalty ? 0 : 1;
|
|
1593
|
+
item.score = (item.score || 0) - penalty;
|
|
1594
|
+
results.push(item);
|
|
1595
|
+
}
|
|
1596
|
+
return results;
|
|
1597
|
+
};
|
|
1598
|
+
}).call(FilteredList.prototype);
|
|
1599
|
+
|
|
1600
|
+
exports.Autocomplete = Autocomplete;
|
|
1601
|
+
exports.FilteredList = FilteredList;
|
|
1620
1602
|
|
|
1621
1603
|
});
|
|
1622
1604
|
|
|
1623
|
-
define(
|
|
1624
|
-
var Range = require("
|
|
1605
|
+
define("ace/autocomplete/text_completer",["require","exports","module","ace/range"], function(require, exports, module) {
|
|
1606
|
+
var Range = require("../range").Range;
|
|
1625
1607
|
|
|
1626
|
-
var splitRegex = /[^a-zA-Z_0-9
|
|
1608
|
+
var splitRegex = /[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/;
|
|
1627
1609
|
|
|
1628
1610
|
function getWordIndex(doc, pos) {
|
|
1629
1611
|
var textBefore = doc.getTextRange(Range.fromPoints({row: 0, column:0}, pos));
|
|
@@ -1655,11 +1637,185 @@ define('ace/autocomplete/text_completer', ['require', 'exports', 'module' , 'ace
|
|
|
1655
1637
|
var wordList = Object.keys(wordScore);
|
|
1656
1638
|
callback(null, wordList.map(function(word) {
|
|
1657
1639
|
return {
|
|
1658
|
-
|
|
1640
|
+
caption: word,
|
|
1659
1641
|
value: word,
|
|
1660
1642
|
score: wordScore[word],
|
|
1661
1643
|
meta: "local"
|
|
1662
1644
|
};
|
|
1663
1645
|
}));
|
|
1664
1646
|
};
|
|
1665
|
-
});
|
|
1647
|
+
});
|
|
1648
|
+
|
|
1649
|
+
define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"], function(require, exports, module) {
|
|
1650
|
+
"use strict";
|
|
1651
|
+
|
|
1652
|
+
var snippetManager = require("../snippets").snippetManager;
|
|
1653
|
+
var Autocomplete = require("../autocomplete").Autocomplete;
|
|
1654
|
+
var config = require("../config");
|
|
1655
|
+
var util = require("../autocomplete/util");
|
|
1656
|
+
|
|
1657
|
+
var textCompleter = require("../autocomplete/text_completer");
|
|
1658
|
+
var keyWordCompleter = {
|
|
1659
|
+
getCompletions: function(editor, session, pos, prefix, callback) {
|
|
1660
|
+
var state = editor.session.getState(pos.row);
|
|
1661
|
+
var completions = session.$mode.getCompletions(state, session, pos, prefix);
|
|
1662
|
+
callback(null, completions);
|
|
1663
|
+
}
|
|
1664
|
+
};
|
|
1665
|
+
|
|
1666
|
+
var snippetCompleter = {
|
|
1667
|
+
getCompletions: function(editor, session, pos, prefix, callback) {
|
|
1668
|
+
var snippetMap = snippetManager.snippetMap;
|
|
1669
|
+
var completions = [];
|
|
1670
|
+
snippetManager.getActiveScopes(editor).forEach(function(scope) {
|
|
1671
|
+
var snippets = snippetMap[scope] || [];
|
|
1672
|
+
for (var i = snippets.length; i--;) {
|
|
1673
|
+
var s = snippets[i];
|
|
1674
|
+
var caption = s.name || s.tabTrigger;
|
|
1675
|
+
if (!caption)
|
|
1676
|
+
continue;
|
|
1677
|
+
completions.push({
|
|
1678
|
+
caption: caption,
|
|
1679
|
+
snippet: s.content,
|
|
1680
|
+
meta: s.tabTrigger && !s.name ? s.tabTrigger + "\u21E5 " : "snippet"
|
|
1681
|
+
});
|
|
1682
|
+
}
|
|
1683
|
+
}, this);
|
|
1684
|
+
callback(null, completions);
|
|
1685
|
+
}
|
|
1686
|
+
};
|
|
1687
|
+
|
|
1688
|
+
var completers = [snippetCompleter, textCompleter, keyWordCompleter];
|
|
1689
|
+
exports.addCompleter = function(completer) {
|
|
1690
|
+
completers.push(completer);
|
|
1691
|
+
};
|
|
1692
|
+
exports.textCompleter = textCompleter;
|
|
1693
|
+
exports.keyWordCompleter = keyWordCompleter;
|
|
1694
|
+
exports.snippetCompleter = snippetCompleter;
|
|
1695
|
+
|
|
1696
|
+
var expandSnippet = {
|
|
1697
|
+
name: "expandSnippet",
|
|
1698
|
+
exec: function(editor) {
|
|
1699
|
+
var success = snippetManager.expandWithTab(editor);
|
|
1700
|
+
if (!success)
|
|
1701
|
+
editor.execCommand("indent");
|
|
1702
|
+
},
|
|
1703
|
+
bindKey: "Tab"
|
|
1704
|
+
};
|
|
1705
|
+
|
|
1706
|
+
var onChangeMode = function(e, editor) {
|
|
1707
|
+
loadSnippetsForMode(editor.session.$mode);
|
|
1708
|
+
};
|
|
1709
|
+
|
|
1710
|
+
var loadSnippetsForMode = function(mode) {
|
|
1711
|
+
var id = mode.$id;
|
|
1712
|
+
if (!snippetManager.files)
|
|
1713
|
+
snippetManager.files = {};
|
|
1714
|
+
loadSnippetFile(id);
|
|
1715
|
+
if (mode.modes)
|
|
1716
|
+
mode.modes.forEach(loadSnippetsForMode);
|
|
1717
|
+
};
|
|
1718
|
+
|
|
1719
|
+
var loadSnippetFile = function(id) {
|
|
1720
|
+
if (!id || snippetManager.files[id])
|
|
1721
|
+
return;
|
|
1722
|
+
var snippetFilePath = id.replace("mode", "snippets");
|
|
1723
|
+
snippetManager.files[id] = {};
|
|
1724
|
+
config.loadModule(snippetFilePath, function(m) {
|
|
1725
|
+
if (m) {
|
|
1726
|
+
snippetManager.files[id] = m;
|
|
1727
|
+
if (!m.snippets && m.snippetText)
|
|
1728
|
+
m.snippets = snippetManager.parseSnippetFile(m.snippetText);
|
|
1729
|
+
snippetManager.register(m.snippets || [], m.scope);
|
|
1730
|
+
if (m.includeScopes) {
|
|
1731
|
+
snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes;
|
|
1732
|
+
m.includeScopes.forEach(function(x) {
|
|
1733
|
+
loadSnippetFile("ace/mode/" + x);
|
|
1734
|
+
});
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1737
|
+
});
|
|
1738
|
+
};
|
|
1739
|
+
|
|
1740
|
+
function getCompletionPrefix(editor) {
|
|
1741
|
+
var pos = editor.getCursorPosition();
|
|
1742
|
+
var line = editor.session.getLine(pos.row);
|
|
1743
|
+
var prefix = util.retrievePrecedingIdentifier(line, pos.column);
|
|
1744
|
+
editor.completers.forEach(function(completer) {
|
|
1745
|
+
if (completer.identifierRegexps) {
|
|
1746
|
+
completer.identifierRegexps.forEach(function(identifierRegex) {
|
|
1747
|
+
if (!prefix && identifierRegex)
|
|
1748
|
+
prefix = util.retrievePrecedingIdentifier(line, pos.column, identifierRegex);
|
|
1749
|
+
});
|
|
1750
|
+
}
|
|
1751
|
+
});
|
|
1752
|
+
return prefix;
|
|
1753
|
+
}
|
|
1754
|
+
|
|
1755
|
+
var doLiveAutocomplete = function(e) {
|
|
1756
|
+
var editor = e.editor;
|
|
1757
|
+
var text = e.args || "";
|
|
1758
|
+
var hasCompleter = editor.completer && editor.completer.activated;
|
|
1759
|
+
if (e.command.name === "backspace") {
|
|
1760
|
+
if (hasCompleter && !getCompletionPrefix(editor))
|
|
1761
|
+
editor.completer.detach();
|
|
1762
|
+
}
|
|
1763
|
+
else if (e.command.name === "insertstring") {
|
|
1764
|
+
var prefix = getCompletionPrefix(editor);
|
|
1765
|
+
if (prefix && !hasCompleter) {
|
|
1766
|
+
if (!editor.completer) {
|
|
1767
|
+
editor.completer = new Autocomplete();
|
|
1768
|
+
}
|
|
1769
|
+
editor.completer.autoSelect = false;
|
|
1770
|
+
editor.completer.autoInsert = false;
|
|
1771
|
+
editor.completer.showPopup(editor);
|
|
1772
|
+
}
|
|
1773
|
+
}
|
|
1774
|
+
};
|
|
1775
|
+
|
|
1776
|
+
var Editor = require("../editor").Editor;
|
|
1777
|
+
require("../config").defineOptions(Editor.prototype, "editor", {
|
|
1778
|
+
enableBasicAutocompletion: {
|
|
1779
|
+
set: function(val) {
|
|
1780
|
+
if (val) {
|
|
1781
|
+
if (!this.completers)
|
|
1782
|
+
this.completers = Array.isArray(val)? val: completers;
|
|
1783
|
+
this.commands.addCommand(Autocomplete.startCommand);
|
|
1784
|
+
} else {
|
|
1785
|
+
this.commands.removeCommand(Autocomplete.startCommand);
|
|
1786
|
+
}
|
|
1787
|
+
},
|
|
1788
|
+
value: false
|
|
1789
|
+
},
|
|
1790
|
+
enableLiveAutocompletion: {
|
|
1791
|
+
set: function(val) {
|
|
1792
|
+
if (val) {
|
|
1793
|
+
if (!this.completers)
|
|
1794
|
+
this.completers = Array.isArray(val)? val: completers;
|
|
1795
|
+
this.commands.on('afterExec', doLiveAutocomplete);
|
|
1796
|
+
} else {
|
|
1797
|
+
this.commands.removeListener('afterExec', doLiveAutocomplete);
|
|
1798
|
+
}
|
|
1799
|
+
},
|
|
1800
|
+
value: false
|
|
1801
|
+
},
|
|
1802
|
+
enableSnippets: {
|
|
1803
|
+
set: function(val) {
|
|
1804
|
+
if (val) {
|
|
1805
|
+
this.commands.addCommand(expandSnippet);
|
|
1806
|
+
this.on("changeMode", onChangeMode);
|
|
1807
|
+
onChangeMode(null, this);
|
|
1808
|
+
} else {
|
|
1809
|
+
this.commands.removeCommand(expandSnippet);
|
|
1810
|
+
this.off("changeMode", onChangeMode);
|
|
1811
|
+
}
|
|
1812
|
+
},
|
|
1813
|
+
value: false
|
|
1814
|
+
}
|
|
1815
|
+
});
|
|
1816
|
+
});
|
|
1817
|
+
;
|
|
1818
|
+
(function() {
|
|
1819
|
+
window.require(["ace/ext/language_tools"], function() {});
|
|
1820
|
+
})();
|
|
1821
|
+
|