ace-rails-ap 4.1.3 → 4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitmodules +1 -1
- data/Gemfile +2 -3
- data/ace-rails-ap.gemspec +0 -2
- data/lib/ace/rails/version.rb +1 -1
- data/update.sh +1 -1
- data/vendor/assets/javascripts/ace/ace.js +5192 -3414
- data/vendor/assets/javascripts/ace/ext-beautify.js +281 -288
- data/vendor/assets/javascripts/ace/ext-code_lens.js +238 -0
- data/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js +6 -3
- data/vendor/assets/javascripts/ace/ext-emmet.js +353 -246
- data/vendor/assets/javascripts/ace/ext-error_marker.js +6 -3
- data/vendor/assets/javascripts/ace/ext-keybinding_menu.js +61 -38
- data/vendor/assets/javascripts/ace/ext-language_tools.js +532 -343
- data/vendor/assets/javascripts/ace/ext-linking.js +8 -5
- data/vendor/assets/javascripts/ace/ext-modelist.js +46 -12
- data/vendor/assets/javascripts/ace/ext-options.js +793 -0
- data/vendor/assets/javascripts/ace/ext-prompt.js +2783 -0
- data/vendor/assets/javascripts/ace/ext-rtl.js +122 -0
- data/vendor/assets/javascripts/ace/ext-searchbox.js +45 -40
- data/vendor/assets/javascripts/ace/ext-settings_menu.js +520 -369
- data/vendor/assets/javascripts/ace/ext-spellcheck.js +6 -4
- data/vendor/assets/javascripts/ace/ext-split.js +7 -46
- data/vendor/assets/javascripts/ace/ext-static_highlight.js +90 -22
- data/vendor/assets/javascripts/ace/ext-statusbar.js +9 -6
- data/vendor/assets/javascripts/ace/ext-textarea.js +21 -18
- data/vendor/assets/javascripts/ace/ext-themelist.js +10 -6
- data/vendor/assets/javascripts/ace/ext-whitespace.js +13 -6
- data/vendor/assets/javascripts/ace/keybinding-emacs.js +49 -61
- data/vendor/assets/javascripts/ace/keybinding-sublime.js +422 -0
- data/vendor/assets/javascripts/ace/keybinding-vim.js +620 -287
- data/vendor/assets/javascripts/ace/keybinding-vscode.js +262 -0
- data/vendor/assets/javascripts/ace/mode-abap.js +10 -3
- data/vendor/assets/javascripts/ace/mode-abc.js +14 -4
- data/vendor/assets/javascripts/ace/mode-actionscript.js +13 -5
- data/vendor/assets/javascripts/ace/mode-ada.js +54 -4
- data/vendor/assets/javascripts/ace/mode-alda.js +311 -0
- data/vendor/assets/javascripts/ace/mode-apache_conf.js +12 -5
- data/vendor/assets/javascripts/ace/mode-apex.js +457 -0
- data/vendor/assets/javascripts/ace/mode-applescript.js +11 -4
- data/vendor/assets/javascripts/ace/mode-aql.js +102 -0
- data/vendor/assets/javascripts/ace/mode-asciidoc.js +9 -2
- data/vendor/assets/javascripts/ace/mode-asl.js +422 -0
- data/vendor/assets/javascripts/ace/mode-assembly_x86.js +11 -4
- data/vendor/assets/javascripts/ace/mode-autohotkey.js +17 -8
- data/vendor/assets/javascripts/ace/mode-batchfile.js +12 -5
- data/vendor/assets/javascripts/ace/mode-c9search.js +9 -3
- data/vendor/assets/javascripts/ace/mode-c_cpp.js +23 -7
- data/vendor/assets/javascripts/ace/mode-cirru.js +11 -4
- data/vendor/assets/javascripts/ace/mode-clojure.js +9 -1
- data/vendor/assets/javascripts/ace/mode-cobol.js +8 -1
- data/vendor/assets/javascripts/ace/mode-coffee.js +12 -4
- data/vendor/assets/javascripts/ace/mode-coldfusion.js +163 -134
- data/vendor/assets/javascripts/ace/mode-crystal.js +642 -0
- data/vendor/assets/javascripts/ace/mode-csharp.js +13 -6
- data/vendor/assets/javascripts/ace/mode-csound_document.js +4036 -0
- data/vendor/assets/javascripts/ace/mode-csound_orchestra.js +2966 -0
- data/vendor/assets/javascripts/ace/mode-csound_score.js +462 -0
- data/vendor/assets/javascripts/ace/mode-csp.js +59 -0
- data/vendor/assets/javascripts/ace/mode-css.js +48 -27
- data/vendor/assets/javascripts/ace/mode-curly.js +162 -133
- data/vendor/assets/javascripts/ace/mode-d.js +12 -5
- data/vendor/assets/javascripts/ace/mode-dart.js +46 -20
- data/vendor/assets/javascripts/ace/mode-diff.js +11 -3
- data/vendor/assets/javascripts/ace/mode-django.js +164 -134
- data/vendor/assets/javascripts/ace/mode-dockerfile.js +12 -4
- data/vendor/assets/javascripts/ace/mode-dot.js +11 -4
- data/vendor/assets/javascripts/ace/mode-drools.js +46 -5
- data/vendor/assets/javascripts/ace/mode-edifact.js +166 -0
- data/vendor/assets/javascripts/ace/mode-eiffel.js +8 -1
- data/vendor/assets/javascripts/ace/mode-ejs.js +832 -298
- data/vendor/assets/javascripts/ace/mode-elixir.js +11 -4
- data/vendor/assets/javascripts/ace/mode-elm.js +10 -3
- data/vendor/assets/javascripts/ace/mode-erlang.js +13 -5
- data/vendor/assets/javascripts/ace/mode-forth.js +12 -5
- data/vendor/assets/javascripts/ace/mode-fortran.js +10 -3
- data/vendor/assets/javascripts/ace/mode-fsharp.js +316 -0
- data/vendor/assets/javascripts/ace/{mode-mipsassembler.js → mode-fsl.js} +91 -28
- data/vendor/assets/javascripts/ace/mode-ftl.js +23 -12
- data/vendor/assets/javascripts/ace/mode-gcode.js +8 -1
- data/vendor/assets/javascripts/ace/mode-gherkin.js +9 -4
- data/vendor/assets/javascripts/ace/mode-gitignore.js +8 -1
- data/vendor/assets/javascripts/ace/mode-glsl.js +24 -8
- data/vendor/assets/javascripts/ace/mode-gobstones.js +267 -99
- data/vendor/assets/javascripts/ace/mode-golang.js +11 -4
- data/vendor/assets/javascripts/ace/mode-graphqlschema.js +11 -3
- data/vendor/assets/javascripts/ace/mode-groovy.js +14 -5
- data/vendor/assets/javascripts/ace/mode-haml.js +442 -116
- data/vendor/assets/javascripts/ace/mode-handlebars.js +162 -133
- data/vendor/assets/javascripts/ace/mode-haskell.js +14 -6
- data/vendor/assets/javascripts/ace/mode-haskell_cabal.js +8 -1
- data/vendor/assets/javascripts/ace/mode-haxe.js +11 -4
- data/vendor/assets/javascripts/ace/mode-hjson.js +13 -6
- data/vendor/assets/javascripts/ace/mode-html.js +162 -133
- data/vendor/assets/javascripts/ace/mode-html_elixir.js +165 -136
- data/vendor/assets/javascripts/ace/mode-html_ruby.js +832 -298
- data/vendor/assets/javascripts/ace/mode-ini.js +8 -1
- data/vendor/assets/javascripts/ace/mode-io.js +14 -12
- data/vendor/assets/javascripts/ace/mode-jack.js +10 -3
- data/vendor/assets/javascripts/ace/mode-jade.js +272 -376
- data/vendor/assets/javascripts/ace/mode-java.js +110 -7
- data/vendor/assets/javascripts/ace/mode-javascript.js +14 -5
- data/vendor/assets/javascripts/ace/mode-json.js +13 -3
- data/vendor/assets/javascripts/ace/mode-json5.js +360 -0
- data/vendor/assets/javascripts/ace/mode-jsoniq.js +25 -12
- data/vendor/assets/javascripts/ace/mode-jsp.js +60 -15
- data/vendor/assets/javascripts/ace/mode-jssm.js +325 -0
- data/vendor/assets/javascripts/ace/mode-jsx.js +11 -4
- data/vendor/assets/javascripts/ace/mode-julia.js +12 -5
- data/vendor/assets/javascripts/ace/mode-kotlin.js +18 -7
- data/vendor/assets/javascripts/ace/mode-latex.js +87 -15
- data/vendor/assets/javascripts/ace/mode-less.js +47 -27
- data/vendor/assets/javascripts/ace/mode-liquid.js +2030 -472
- data/vendor/assets/javascripts/ace/mode-lisp.js +9 -2
- data/vendor/assets/javascripts/ace/mode-livescript.js +10 -2
- data/vendor/assets/javascripts/ace/mode-logiql.js +10 -3
- data/vendor/assets/javascripts/ace/mode-logtalk.js +352 -0
- data/vendor/assets/javascripts/ace/mode-lsl.js +11 -3
- data/vendor/assets/javascripts/ace/mode-lua.js +40 -12
- data/vendor/assets/javascripts/ace/mode-luapage.js +194 -144
- data/vendor/assets/javascripts/ace/mode-lucene.js +106 -22
- data/vendor/assets/javascripts/ace/mode-makefile.js +11 -3
- data/vendor/assets/javascripts/ace/mode-markdown.js +530 -201
- data/vendor/assets/javascripts/ace/mode-mask.js +101 -84
- data/vendor/assets/javascripts/ace/mode-matlab.js +8 -1
- data/vendor/assets/javascripts/ace/mode-maze.js +11 -3
- data/vendor/assets/javascripts/ace/mode-mediawiki.js +592 -0
- data/vendor/assets/javascripts/ace/mode-mel.js +11 -4
- data/vendor/assets/javascripts/ace/mode-mixal.js +122 -0
- data/vendor/assets/javascripts/ace/mode-mushcode.js +9 -2
- data/vendor/assets/javascripts/ace/mode-mysql.js +11 -4
- data/vendor/assets/javascripts/ace/mode-nginx.js +298 -0
- data/vendor/assets/javascripts/ace/mode-nim.js +363 -0
- data/vendor/assets/javascripts/ace/mode-nix.js +23 -7
- data/vendor/assets/javascripts/ace/mode-nsis.js +15 -8
- data/vendor/assets/javascripts/ace/mode-nunjucks.js +2698 -0
- data/vendor/assets/javascripts/ace/mode-objectivec.js +23 -8
- data/vendor/assets/javascripts/ace/mode-ocaml.js +8 -1
- data/vendor/assets/javascripts/ace/mode-pascal.js +92 -67
- data/vendor/assets/javascripts/ace/mode-perl.js +11 -3
- data/vendor/assets/javascripts/ace/mode-perl6.js +593 -0
- data/vendor/assets/javascripts/ace/mode-pgsql.js +314 -71
- data/vendor/assets/javascripts/ace/mode-php.js +1042 -995
- data/vendor/assets/javascripts/ace/mode-php_laravel_blade.js +13104 -0
- data/vendor/assets/javascripts/ace/mode-pig.js +13 -6
- data/vendor/assets/javascripts/ace/mode-plain_text.js +8 -1
- data/vendor/assets/javascripts/ace/mode-powershell.js +10 -3
- data/vendor/assets/javascripts/ace/mode-praat.js +17 -7
- data/vendor/assets/javascripts/ace/mode-prisma.js +489 -0
- data/vendor/assets/javascripts/ace/mode-prolog.js +12 -5
- data/vendor/assets/javascripts/ace/mode-properties.js +8 -1
- data/vendor/assets/javascripts/ace/mode-protobuf.js +23 -7
- data/vendor/assets/javascripts/ace/mode-puppet.js +368 -0
- data/vendor/assets/javascripts/ace/mode-python.js +306 -63
- data/vendor/assets/javascripts/ace/mode-qml.js +381 -0
- data/vendor/assets/javascripts/ace/mode-r.js +15 -4
- data/vendor/assets/javascripts/ace/mode-razor.js +166 -136
- data/vendor/assets/javascripts/ace/mode-rdoc.js +41 -3
- data/vendor/assets/javascripts/ace/mode-red.js +450 -0
- data/vendor/assets/javascripts/ace/mode-redshift.js +360 -0
- data/vendor/assets/javascripts/ace/mode-rhtml.js +162 -133
- data/vendor/assets/javascripts/ace/mode-rst.js +9 -1
- data/vendor/assets/javascripts/ace/mode-ruby.js +678 -166
- data/vendor/assets/javascripts/ace/mode-rust.js +16 -7
- data/vendor/assets/javascripts/ace/mode-sass.js +211 -116
- data/vendor/assets/javascripts/ace/mode-scad.js +11 -4
- data/vendor/assets/javascripts/ace/mode-scala.js +14 -5
- data/vendor/assets/javascripts/ace/mode-scheme.js +9 -2
- data/vendor/assets/javascripts/ace/mode-scss.js +412 -125
- data/vendor/assets/javascripts/ace/mode-sh.js +12 -4
- data/vendor/assets/javascripts/ace/mode-sjs.js +16 -7
- data/vendor/assets/javascripts/ace/mode-slim.js +5240 -0
- data/vendor/assets/javascripts/ace/mode-smarty.js +164 -135
- data/vendor/assets/javascripts/ace/mode-snippets.js +24 -16
- data/vendor/assets/javascripts/ace/mode-soy_template.js +164 -135
- data/vendor/assets/javascripts/ace/mode-space.js +8 -1
- data/vendor/assets/javascripts/ace/mode-sparql.js +13 -6
- data/vendor/assets/javascripts/ace/mode-sql.js +10 -2
- data/vendor/assets/javascripts/ace/mode-sqlserver.js +13 -5
- data/vendor/assets/javascripts/ace/mode-stylus.js +20 -10
- data/vendor/assets/javascripts/ace/mode-svg.js +27 -13
- data/vendor/assets/javascripts/ace/mode-swift.js +21 -8
- data/vendor/assets/javascripts/ace/mode-tcl.js +14 -3
- data/vendor/assets/javascripts/ace/mode-terraform.js +400 -0
- data/vendor/assets/javascripts/ace/mode-tex.js +9 -1
- data/vendor/assets/javascripts/ace/mode-text.js +8 -0
- data/vendor/assets/javascripts/ace/mode-textile.js +9 -1
- data/vendor/assets/javascripts/ace/mode-toml.js +9 -2
- data/vendor/assets/javascripts/ace/mode-tsx.js +28 -31
- data/vendor/assets/javascripts/ace/mode-turtle.js +13 -6
- data/vendor/assets/javascripts/ace/mode-twig.js +163 -134
- data/vendor/assets/javascripts/ace/mode-typescript.js +28 -31
- data/vendor/assets/javascripts/ace/mode-vala.js +14 -6
- data/vendor/assets/javascripts/ace/mode-vbscript.js +453 -17
- data/vendor/assets/javascripts/ace/mode-velocity.js +163 -133
- data/vendor/assets/javascripts/ace/mode-verilog.js +19 -5
- data/vendor/assets/javascripts/ace/mode-vhdl.js +13 -7
- data/vendor/assets/javascripts/ace/mode-visualforce.js +2640 -0
- data/vendor/assets/javascripts/ace/mode-wollok.js +17 -8
- data/vendor/assets/javascripts/ace/mode-xml.js +21 -9
- data/vendor/assets/javascripts/ace/mode-xquery.js +25 -12
- data/vendor/assets/javascripts/ace/mode-yaml.js +59 -18
- data/vendor/assets/javascripts/ace/mode-zeek.js +539 -0
- data/vendor/assets/javascripts/ace/snippets/abap.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/abc.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/actionscript.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/ada.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/alda.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/apache_conf.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/apex.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/applescript.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/aql.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/asciidoc.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/asl.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/assembly_x86.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/autohotkey.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/batchfile.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/c9search.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/c_cpp.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/cirru.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/clojure.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/cobol.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/coffee.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/coldfusion.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/crystal.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/csharp.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/csound_document.js +24 -0
- data/vendor/assets/javascripts/ace/snippets/csound_orchestra.js +61 -0
- data/vendor/assets/javascripts/ace/snippets/csound_score.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/csp.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/css.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/curly.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/d.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/dart.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/diff.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/django.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/dockerfile.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/dot.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/drools.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/edifact.js +254 -0
- data/vendor/assets/javascripts/ace/snippets/eiffel.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/ejs.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/elixir.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/elm.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/erlang.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/forth.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/fortran.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/fsharp.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/fsl.js +14 -0
- data/vendor/assets/javascripts/ace/snippets/ftl.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/gcode.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/gherkin.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/gitignore.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/glsl.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/gobstones.js +1701 -24
- data/vendor/assets/javascripts/ace/snippets/golang.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/graphqlschema.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/groovy.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/haml.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/handlebars.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/haskell.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/haskell_cabal.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/haxe.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/hjson.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/html.js +36 -2
- data/vendor/assets/javascripts/ace/snippets/html_elixir.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/html_ruby.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/ini.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/io.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/jack.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/jade.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/java.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/javascript.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/json.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/json5.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/jsoniq.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/jsp.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/jssm.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/jsx.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/julia.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/kotlin.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/latex.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/less.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/liquid.js +890 -2
- data/vendor/assets/javascripts/ace/snippets/lisp.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/livescript.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/logiql.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/logtalk.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/lsl.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/lua.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/luapage.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/lucene.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/makefile.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/markdown.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/mask.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/matlab.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/maze.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/mediawiki.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/mel.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/mixal.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/mushcode.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/mysql.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/nginx.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/nim.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/nix.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/nsis.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/nunjucks.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/objectivec.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/ocaml.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/pascal.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/perl.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/perl6.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/pgsql.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/php.js +49 -36
- data/vendor/assets/javascripts/ace/snippets/php_laravel_blade.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/pig.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/plain_text.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/powershell.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/praat.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/prisma.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/prolog.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/properties.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/protobuf.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/puppet.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/python.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/qml.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/r.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/razor.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/rdoc.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/red.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/redshift.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/rhtml.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/rst.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/ruby.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/rust.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/sass.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/scad.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/scala.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/scheme.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/scss.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/sh.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/sjs.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/slim.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/smarty.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/snippets.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/soy_template.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/space.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/sparql.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/sql.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/sqlserver.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/stylus.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/svg.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/swift.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/tcl.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/terraform.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/tex.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/text.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/textile.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/toml.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/tsx.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/turtle.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/twig.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/typescript.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/vala.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/vbscript.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/velocity.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/verilog.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/vhdl.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/visualforce.js +9 -0
- data/vendor/assets/javascripts/ace/snippets/wollok.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/xml.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/xquery.js +8 -1
- data/vendor/assets/javascripts/ace/snippets/yaml.js +8 -6
- data/vendor/assets/javascripts/ace/snippets/zeek.js +9 -0
- data/vendor/assets/javascripts/ace/theme-ambiance.js +11 -8
- data/vendor/assets/javascripts/ace/theme-chaos.js +9 -2
- data/vendor/assets/javascripts/ace/theme-chrome.js +8 -1
- data/vendor/assets/javascripts/ace/theme-clouds.js +8 -1
- data/vendor/assets/javascripts/ace/theme-clouds_midnight.js +8 -1
- data/vendor/assets/javascripts/ace/theme-cobalt.js +8 -1
- data/vendor/assets/javascripts/ace/theme-crimson_editor.js +8 -1
- data/vendor/assets/javascripts/ace/theme-dawn.js +8 -1
- data/vendor/assets/javascripts/ace/theme-dracula.js +135 -0
- data/vendor/assets/javascripts/ace/theme-dreamweaver.js +8 -1
- data/vendor/assets/javascripts/ace/theme-eclipse.js +8 -1
- data/vendor/assets/javascripts/ace/theme-github.js +8 -1
- data/vendor/assets/javascripts/ace/theme-gob.js +8 -1
- data/vendor/assets/javascripts/ace/theme-gruvbox.js +8 -1
- data/vendor/assets/javascripts/ace/theme-idle_fingers.js +8 -1
- data/vendor/assets/javascripts/ace/theme-iplastic.js +8 -1
- data/vendor/assets/javascripts/ace/theme-katzenmilch.js +8 -1
- data/vendor/assets/javascripts/ace/theme-kr_theme.js +8 -1
- data/vendor/assets/javascripts/ace/theme-kuroir.js +8 -1
- data/vendor/assets/javascripts/ace/theme-merbivore.js +8 -1
- data/vendor/assets/javascripts/ace/theme-merbivore_soft.js +8 -1
- data/vendor/assets/javascripts/ace/theme-mono_industrial.js +8 -1
- data/vendor/assets/javascripts/ace/theme-monokai.js +8 -1
- data/vendor/assets/javascripts/ace/theme-nord_dark.js +102 -0
- data/vendor/assets/javascripts/ace/theme-pastel_on_dark.js +8 -1
- data/vendor/assets/javascripts/ace/theme-solarized_dark.js +8 -1
- data/vendor/assets/javascripts/ace/theme-solarized_light.js +9 -2
- data/vendor/assets/javascripts/ace/theme-sqlserver.js +8 -1
- data/vendor/assets/javascripts/ace/theme-terminal.js +8 -1
- data/vendor/assets/javascripts/ace/theme-textmate.js +9 -1
- data/vendor/assets/javascripts/ace/theme-tomorrow.js +8 -1
- data/vendor/assets/javascripts/ace/theme-tomorrow_night.js +8 -1
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js +8 -1
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +8 -1
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js +8 -1
- data/vendor/assets/javascripts/ace/theme-twilight.js +8 -1
- data/vendor/assets/javascripts/ace/theme-vibrant_ink.js +8 -1
- data/vendor/assets/javascripts/ace/theme-xcode.js +8 -1
- data/vendor/assets/javascripts/ace/worker-base.js +1421 -0
- data/vendor/assets/javascripts/ace/worker-coffee.js +55 -742
- data/vendor/assets/javascripts/ace/worker-css.js +66 -739
- data/vendor/assets/javascripts/ace/worker-html.js +55 -738
- data/vendor/assets/javascripts/ace/worker-javascript.js +6693 -4209
- data/vendor/assets/javascripts/ace/worker-json.js +56 -737
- data/vendor/assets/javascripts/ace/worker-lua.js +56 -738
- data/vendor/assets/javascripts/ace/worker-php.js +897 -1512
- data/vendor/assets/javascripts/ace/worker-xml.js +129 -808
- data/vendor/assets/javascripts/ace/worker-xquery.js +54 -737
- metadata +74 -19
- data/vendor/assets/javascripts/ace/ext-chromevox.js +0 -540
- data/vendor/assets/javascripts/ace/ext-old_ie.js +0 -502
- data/vendor/assets/javascripts/ace/mode-bash.js +0 -247
- data/vendor/assets/javascripts/ace/mode-bro.js +0 -327
- data/vendor/assets/javascripts/ace/mode-lean.js +0 -281
- data/vendor/assets/javascripts/ace/mode-live_script.js +0 -481
- data/vendor/assets/javascripts/ace/mode-mips_assembler.js +0 -235
- data/vendor/assets/javascripts/ace/mode-swig.js +0 -1099
- data/vendor/assets/javascripts/ace/snippets/bro.js +0 -7
- data/vendor/assets/javascripts/ace/snippets/lean.js +0 -7
- data/vendor/assets/javascripts/ace/snippets/live_script.js +0 -7
- data/vendor/assets/javascripts/ace/snippets/mips_assembler.js +0 -7
- data/vendor/assets/javascripts/ace/snippets/mipsassembler.js +0 -7
- data/vendor/assets/javascripts/ace/snippets/swig.js +0 -7
@@ -61,11 +61,10 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
61
61
|
newlineAndIndent: function(cm) { cm.ace.insert("\n"); }
|
62
62
|
};
|
63
63
|
CodeMirror.keyMap = {};
|
64
|
-
CodeMirror.addClass = CodeMirror.rmClass =
|
65
|
-
CodeMirror.e_stop =
|
64
|
+
CodeMirror.addClass = CodeMirror.rmClass = function() {};
|
65
|
+
CodeMirror.e_stop = CodeMirror.e_preventDefault = event.stopEvent;
|
66
66
|
CodeMirror.keyName = function(e) {
|
67
|
-
|
68
|
-
var key = (KEYS[e.keyCode] || "");
|
67
|
+
var key = (KEYS[e.keyCode] || e.key || "");
|
69
68
|
if (key.length == 1) key = key.toUpperCase();
|
70
69
|
key = event.getModifierString(e).replace(/(^|-)\w/g, function(m) {
|
71
70
|
return m.toUpperCase();
|
@@ -79,6 +78,7 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
79
78
|
};
|
80
79
|
};
|
81
80
|
CodeMirror.lookupKey = function lookupKey(key, map, handle) {
|
81
|
+
if (!map) map = "default";
|
82
82
|
if (typeof map == "string")
|
83
83
|
map = CodeMirror.keyMap[map];
|
84
84
|
var found = typeof map == "function" ? map(key) : map[key];
|
@@ -122,7 +122,6 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
122
122
|
var curOp = this.curOp = this.curOp || {};
|
123
123
|
if (!curOp.changeHandlers)
|
124
124
|
curOp.changeHandlers = this._eventRegistry["change"] && this._eventRegistry["change"].slice();
|
125
|
-
if (this.virtualSelectionMode()) return;
|
126
125
|
if (!curOp.lastChange) {
|
127
126
|
curOp.lastChange = curOp.change = change;
|
128
127
|
} else {
|
@@ -157,6 +156,8 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
157
156
|
this.curOp.force = force;
|
158
157
|
var result = fn();
|
159
158
|
if (this.ace.curOp && this.ace.curOp.command.name == "vim") {
|
159
|
+
if (this.state.dialog)
|
160
|
+
this.ace.curOp.command.scrollIntoView = false;
|
160
161
|
this.ace.endOperation();
|
161
162
|
if (!curOp.cursorActivity && !curOp.lastChange && prevOp)
|
162
163
|
this.ace.prevOp = prevOp;
|
@@ -280,7 +281,7 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
280
281
|
if (point.bias == 1) {
|
281
282
|
cmp = 1;
|
282
283
|
} else {
|
283
|
-
point.bias
|
284
|
+
point.bias = -1;
|
284
285
|
continue;
|
285
286
|
}
|
286
287
|
}
|
@@ -434,6 +435,7 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
434
435
|
if (!e) e = s;
|
435
436
|
return this.ace.session.replace(new Range(s.line, s.ch, e.line, e.ch), text);
|
436
437
|
};
|
438
|
+
this.replaceSelection =
|
437
439
|
this.replaceSelections = function(p) {
|
438
440
|
var sel = this.ace.selection;
|
439
441
|
if (this.ace.inVirtualSelectionMode) {
|
@@ -459,7 +461,7 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
459
461
|
return this.ace.textInput.getElement();
|
460
462
|
};
|
461
463
|
this.getWrapperElement = function() {
|
462
|
-
return this.ace.
|
464
|
+
return this.ace.container;
|
463
465
|
};
|
464
466
|
var optMap = {
|
465
467
|
indentWithTabs: "useSoftTabs",
|
@@ -475,6 +477,10 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
475
477
|
name = optMap[name];
|
476
478
|
val = !val;
|
477
479
|
break;
|
480
|
+
case 'keyMap':
|
481
|
+
this.state.$keyMap = val;
|
482
|
+
return;
|
483
|
+
break;
|
478
484
|
default:
|
479
485
|
name = optMap[name];
|
480
486
|
}
|
@@ -489,6 +495,8 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
489
495
|
case 'indentWithTabs':
|
490
496
|
name = optMap[name];
|
491
497
|
return !val;
|
498
|
+
case 'keyMap':
|
499
|
+
return this.state.$keyMap;
|
492
500
|
}
|
493
501
|
return aceOpt ? val : this.state[name];
|
494
502
|
};
|
@@ -542,7 +550,7 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
542
550
|
return this.ace.getValue();
|
543
551
|
};
|
544
552
|
this.setValue = function(v) {
|
545
|
-
return this.ace.setValue(v);
|
553
|
+
return this.ace.setValue(v, -1);
|
546
554
|
};
|
547
555
|
this.getTokenTypeAt = function(pos) {
|
548
556
|
var token = this.ace.session.getTokenAt(pos.line, pos.ch);
|
@@ -565,7 +573,7 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
565
573
|
return toCmPos(this.ace.session.doc.indexToPosition(index));
|
566
574
|
};
|
567
575
|
this.focus = function(index) {
|
568
|
-
return this.ace.focus();
|
576
|
+
return this.ace.textInput.focus();
|
569
577
|
};
|
570
578
|
this.blur = function(index) {
|
571
579
|
return this.ace.blur();
|
@@ -575,10 +583,11 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
575
583
|
};
|
576
584
|
this.scanForBracket = function(pos, dir, _, options) {
|
577
585
|
var re = options.bracketRegex.source;
|
586
|
+
var tokenRe = /paren|text|operator|tag/;
|
578
587
|
if (dir == 1) {
|
579
|
-
var m = this.ace.session.$findClosingBracket(re.slice(1, 2), toAcePos(pos),
|
588
|
+
var m = this.ace.session.$findClosingBracket(re.slice(1, 2), toAcePos(pos), tokenRe);
|
580
589
|
} else {
|
581
|
-
var m = this.ace.session.$findOpeningBracket(re.slice(-2, -1), {row: pos.line, column: pos.ch + 1},
|
590
|
+
var m = this.ace.session.$findOpeningBracket(re.slice(-2, -1), {row: pos.line, column: pos.ch + 1}, tokenRe);
|
582
591
|
}
|
583
592
|
return m && {pos: toCmPos(m)};
|
584
593
|
};
|
@@ -587,7 +596,11 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve
|
|
587
596
|
};
|
588
597
|
this.getMode = function() {
|
589
598
|
return { name : this.getOption("mode") };
|
590
|
-
}
|
599
|
+
};
|
600
|
+
this.execCommand = function(name) {
|
601
|
+
if (name == "indentAuto") this.ace.execCommand("autoindent");
|
602
|
+
else console.log(name + " is not implemented");
|
603
|
+
};
|
591
604
|
}).call(CodeMirror.prototype);
|
592
605
|
function toAcePos(cmPos) {
|
593
606
|
return {row: cmPos.line, column: cmPos.ch};
|
@@ -666,28 +679,29 @@ CodeMirror.defineExtension = function(name, fn) {
|
|
666
679
|
CodeMirror.prototype[name] = fn;
|
667
680
|
};
|
668
681
|
dom.importCssString(".normal-mode .ace_cursor{\
|
669
|
-
|
670
|
-
|
671
|
-
opacity: 0.5;\
|
682
|
+
border: none;\
|
683
|
+
background-color: rgba(255,0,0,0.5);\
|
672
684
|
}\
|
673
685
|
.normal-mode .ace_hidden-cursors .ace_cursor{\
|
674
686
|
background-color: transparent;\
|
687
|
+
border: 1px solid red;\
|
688
|
+
opacity: 0.7\
|
675
689
|
}\
|
676
690
|
.ace_dialog {\
|
677
691
|
position: absolute;\
|
678
692
|
left: 0; right: 0;\
|
679
|
-
background:
|
693
|
+
background: inherit;\
|
680
694
|
z-index: 15;\
|
681
695
|
padding: .1em .8em;\
|
682
696
|
overflow: hidden;\
|
683
|
-
color:
|
697
|
+
color: inherit;\
|
684
698
|
}\
|
685
699
|
.ace_dialog-top {\
|
686
|
-
border-bottom: 1px solid #
|
700
|
+
border-bottom: 1px solid #444;\
|
687
701
|
top: 0;\
|
688
702
|
}\
|
689
703
|
.ace_dialog-bottom {\
|
690
|
-
border-top: 1px solid #
|
704
|
+
border-top: 1px solid #444;\
|
691
705
|
bottom: 0;\
|
692
706
|
}\
|
693
707
|
.ace_dialog input {\
|
@@ -730,11 +744,19 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
730
744
|
|
731
745
|
var dialog = dialogDiv(this, template, options.bottom);
|
732
746
|
var closed = false, me = this;
|
747
|
+
this.state.dialog = dialog;
|
733
748
|
function close(newVal) {
|
734
749
|
if (typeof newVal == 'string') {
|
735
750
|
inp.value = newVal;
|
736
751
|
} else {
|
737
752
|
if (closed) return;
|
753
|
+
|
754
|
+
if (newVal && newVal.type == "blur") {
|
755
|
+
if (document.activeElement === inp)
|
756
|
+
return;
|
757
|
+
}
|
758
|
+
|
759
|
+
me.state.dialog = null;
|
738
760
|
closed = true;
|
739
761
|
dialog.parentNode.removeChild(dialog);
|
740
762
|
me.focus();
|
@@ -747,7 +769,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
747
769
|
if (inp) {
|
748
770
|
if (options.value) {
|
749
771
|
inp.value = options.value;
|
750
|
-
if (options.
|
772
|
+
if (options.selectValueOnOpen !== false) inp.select();
|
751
773
|
}
|
752
774
|
|
753
775
|
if (options.onInput)
|
@@ -757,12 +779,12 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
757
779
|
|
758
780
|
CodeMirror.on(inp, "keydown", function(e) {
|
759
781
|
if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }
|
782
|
+
if (e.keyCode == 13) callback(inp.value);
|
760
783
|
if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {
|
761
784
|
inp.blur();
|
762
785
|
CodeMirror.e_stop(e);
|
763
786
|
close();
|
764
787
|
}
|
765
|
-
if (e.keyCode == 13) callback(inp.value);
|
766
788
|
});
|
767
789
|
|
768
790
|
if (options.closeOnBlur !== false) CodeMirror.on(inp, "blur", close);
|
@@ -815,6 +837,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
815
837
|
{ keys: '<Down>', type: 'keyToKey', toKeys: 'j' },
|
816
838
|
{ keys: '<Space>', type: 'keyToKey', toKeys: 'l' },
|
817
839
|
{ keys: '<BS>', type: 'keyToKey', toKeys: 'h', context: 'normal'},
|
840
|
+
{ keys: '<Del>', type: 'keyToKey', toKeys: 'x', context: 'normal'},
|
818
841
|
{ keys: '<C-Space>', type: 'keyToKey', toKeys: 'W' },
|
819
842
|
{ keys: '<C-BS>', type: 'keyToKey', toKeys: 'B', context: 'normal' },
|
820
843
|
{ keys: '<S-Space>', type: 'keyToKey', toKeys: 'w' },
|
@@ -825,6 +848,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
825
848
|
{ keys: '<C-c>', type: 'keyToKey', toKeys: '<Esc>' },
|
826
849
|
{ keys: '<C-[>', type: 'keyToKey', toKeys: '<Esc>', context: 'insert' },
|
827
850
|
{ keys: '<C-c>', type: 'keyToKey', toKeys: '<Esc>', context: 'insert' },
|
851
|
+
{ keys: '<C-Esc>', type: 'keyToKey', toKeys: '<Esc>' }, // ace_patch ipad keyboard sends C-Esc instead of C-[
|
852
|
+
{ keys: '<C-Esc>', type: 'keyToKey', toKeys: '<Esc>', context: 'insert' },
|
828
853
|
{ keys: 's', type: 'keyToKey', toKeys: 'cl', context: 'normal' },
|
829
854
|
{ keys: 's', type: 'keyToKey', toKeys: 'c', context: 'visual'},
|
830
855
|
{ keys: 'S', type: 'keyToKey', toKeys: 'cc', context: 'normal' },
|
@@ -834,6 +859,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
834
859
|
{ keys: '<PageUp>', type: 'keyToKey', toKeys: '<C-b>' },
|
835
860
|
{ keys: '<PageDown>', type: 'keyToKey', toKeys: '<C-f>' },
|
836
861
|
{ keys: '<CR>', type: 'keyToKey', toKeys: 'j^', context: 'normal' },
|
862
|
+
{ keys: '<Ins>', type: 'action', action: 'toggleOverwrite', context: 'insert' },
|
837
863
|
{ keys: 'H', type: 'motion', motion: 'moveToTopLine', motionArgs: { linewise: true, toJumplist: true }},
|
838
864
|
{ keys: 'M', type: 'motion', motion: 'moveToMiddleLine', motionArgs: { linewise: true, toJumplist: true }},
|
839
865
|
{ keys: 'L', type: 'motion', motion: 'moveToBottomLine', motionArgs: { linewise: true, toJumplist: true }},
|
@@ -853,6 +879,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
853
879
|
{ keys: 'gE', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, bigWord: true, inclusive: true }},
|
854
880
|
{ keys: '{', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: false, toJumplist: true }},
|
855
881
|
{ keys: '}', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: true, toJumplist: true }},
|
882
|
+
{ keys: '(', type: 'motion', motion: 'moveBySentence', motionArgs: { forward: false }},
|
883
|
+
{ keys: ')', type: 'motion', motion: 'moveBySentence', motionArgs: { forward: true }},
|
856
884
|
{ keys: '<C-f>', type: 'motion', motion: 'moveByPage', motionArgs: { forward: true }},
|
857
885
|
{ keys: '<C-b>', type: 'motion', motion: 'moveByPage', motionArgs: { forward: false }},
|
858
886
|
{ keys: '<C-d>', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: true, explicitRepeat: true }},
|
@@ -888,6 +916,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
888
916
|
{ keys: 'd', type: 'operator', operator: 'delete' },
|
889
917
|
{ keys: 'y', type: 'operator', operator: 'yank' },
|
890
918
|
{ keys: 'c', type: 'operator', operator: 'change' },
|
919
|
+
{ keys: '=', type: 'operator', operator: 'indentAuto' },
|
891
920
|
{ keys: '>', type: 'operator', operator: 'indent', operatorArgs: { indentRight: true }},
|
892
921
|
{ keys: '<', type: 'operator', operator: 'indent', operatorArgs: { indentRight: false }},
|
893
922
|
{ keys: 'g~', type: 'operator', operator: 'changeCase' },
|
@@ -899,13 +928,14 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
899
928
|
{ keys: 'X', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: false }, operatorMotionArgs: { visualLine: true }},
|
900
929
|
{ keys: 'D', type: 'operatorMotion', operator: 'delete', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'},
|
901
930
|
{ keys: 'D', type: 'operator', operator: 'delete', operatorArgs: { linewise: true }, context: 'visual'},
|
902
|
-
{ keys: 'Y', type: 'operatorMotion', operator: 'yank', motion: '
|
931
|
+
{ keys: 'Y', type: 'operatorMotion', operator: 'yank', motion: 'expandToLine', motionArgs: { linewise: true }, context: 'normal'},
|
903
932
|
{ keys: 'Y', type: 'operator', operator: 'yank', operatorArgs: { linewise: true }, context: 'visual'},
|
904
933
|
{ keys: 'C', type: 'operatorMotion', operator: 'change', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'},
|
905
934
|
{ keys: 'C', type: 'operator', operator: 'change', operatorArgs: { linewise: true }, context: 'visual'},
|
906
935
|
{ keys: '~', type: 'operatorMotion', operator: 'changeCase', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorArgs: { shouldMoveCursor: true }, context: 'normal'},
|
907
936
|
{ keys: '~', type: 'operator', operator: 'changeCase', context: 'visual'},
|
908
937
|
{ keys: '<C-w>', type: 'operatorMotion', operator: 'delete', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }, context: 'insert' },
|
938
|
+
{ keys: '<C-w>', type: 'idle', context: 'normal' },
|
909
939
|
{ keys: '<C-i>', type: 'action', action: 'jumpListWalk', actionArgs: { forward: true }},
|
910
940
|
{ keys: '<C-o>', type: 'action', action: 'jumpListWalk', actionArgs: { forward: false }},
|
911
941
|
{ keys: '<C-e>', type: 'action', action: 'scroll', actionArgs: { forward: true, linewise: true }},
|
@@ -914,7 +944,9 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
914
944
|
{ keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'eol' }, context: 'normal' },
|
915
945
|
{ keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'endOfSelectedArea' }, context: 'visual' },
|
916
946
|
{ keys: 'i', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'inplace' }, context: 'normal' },
|
947
|
+
{ keys: 'gi', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'lastEdit' }, context: 'normal' },
|
917
948
|
{ keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'firstNonBlank'}, context: 'normal' },
|
949
|
+
{ keys: 'gI', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'bol'}, context: 'normal' },
|
918
950
|
{ keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'startOfSelectedArea' }, context: 'visual' },
|
919
951
|
{ keys: 'o', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: true }, context: 'normal' },
|
920
952
|
{ keys: 'O', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: false }, context: 'normal' },
|
@@ -924,12 +956,14 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
924
956
|
{ keys: '<C-q>', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true }},
|
925
957
|
{ keys: 'gv', type: 'action', action: 'reselectLastSelection' },
|
926
958
|
{ keys: 'J', type: 'action', action: 'joinLines', isEdit: true },
|
959
|
+
{ keys: 'gJ', type: 'action', action: 'joinLines', actionArgs: { keepSpaces: true }, isEdit: true },
|
927
960
|
{ keys: 'p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true }},
|
928
961
|
{ keys: 'P', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true }},
|
929
962
|
{ keys: 'r<character>', type: 'action', action: 'replace', isEdit: true },
|
930
963
|
{ keys: '@<character>', type: 'action', action: 'replayMacro' },
|
931
964
|
{ keys: 'q<character>', type: 'action', action: 'enterMacroRecordMode' },
|
932
|
-
{ keys: 'R', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { replace: true }},
|
965
|
+
{ keys: 'R', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { replace: true }, context: 'normal'},
|
966
|
+
{ keys: 'R', type: 'operator', operator: 'change', operatorArgs: { linewise: true, fullLine: true }, context: 'visual', exitVisualBlock: true},
|
933
967
|
{ keys: 'u', type: 'action', action: 'undo', context: 'normal' },
|
934
968
|
{ keys: 'u', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, context: 'visual', isEdit: true },
|
935
969
|
{ keys: 'U', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, context: 'visual', isEdit: true },
|
@@ -945,6 +979,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
945
979
|
{ keys: '.', type: 'action', action: 'repeatLastEdit' },
|
946
980
|
{ keys: '<C-a>', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: true, backtrack: false}},
|
947
981
|
{ keys: '<C-x>', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: false, backtrack: false}},
|
982
|
+
{ keys: '<C-t>', type: 'action', action: 'indent', actionArgs: { indentRight: true }, context: 'insert' },
|
983
|
+
{ keys: '<C-d>', type: 'action', action: 'indent', actionArgs: { indentRight: false }, context: 'insert' },
|
948
984
|
{ keys: 'a<character>', type: 'motion', motion: 'textObjectManipulation' },
|
949
985
|
{ keys: 'i<character>', type: 'motion', motion: 'textObjectManipulation', motionArgs: { textObjectInner: true }},
|
950
986
|
{ keys: '/', type: 'search', searchArgs: { forward: true, querySrc: 'prompt', toJumplist: true }},
|
@@ -955,6 +991,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
955
991
|
{ keys: 'g#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', toJumplist: true }},
|
956
992
|
{ keys: ':', type: 'ex' }
|
957
993
|
];
|
994
|
+
var defaultKeymapLength = defaultKeymap.length;
|
958
995
|
var defaultExCommandMap = [
|
959
996
|
{ name: 'colorscheme', shortName: 'colo' },
|
960
997
|
{ name: 'map' },
|
@@ -972,6 +1009,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
972
1009
|
{ name: 'sort', shortName: 'sor' },
|
973
1010
|
{ name: 'substitute', shortName: 's', possiblyAsync: true },
|
974
1011
|
{ name: 'nohlsearch', shortName: 'noh' },
|
1012
|
+
{ name: 'yank', shortName: 'y' },
|
975
1013
|
{ name: 'delmarks', shortName: 'delm' },
|
976
1014
|
{ name: 'registers', shortName: 'reg', excludeFromCommandHistory: true },
|
977
1015
|
{ name: 'global', shortName: 'g' }
|
@@ -995,13 +1033,12 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
995
1033
|
CodeMirror.off(cm.getInputField(), 'paste', getOnPasteFn(cm));
|
996
1034
|
cm.state.vim = null;
|
997
1035
|
}
|
998
|
-
|
999
1036
|
function detachVimMap(cm, next) {
|
1000
1037
|
if (this == CodeMirror.keyMap.vim)
|
1001
1038
|
CodeMirror.rmClass(cm.getWrapperElement(), "cm-fat-cursor");
|
1002
1039
|
|
1003
1040
|
if (!next || next.attach != attachVimMap)
|
1004
|
-
leaveVimMode(cm
|
1041
|
+
leaveVimMode(cm);
|
1005
1042
|
}
|
1006
1043
|
function attachVimMap(cm, prev) {
|
1007
1044
|
if (this == CodeMirror.keyMap.vim)
|
@@ -1019,6 +1056,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1019
1056
|
|
1020
1057
|
function cmKey(key, cm) {
|
1021
1058
|
if (!cm) { return undefined; }
|
1059
|
+
if (this[key]) { return this[key]; }
|
1022
1060
|
var vimKey = cmKeyToVimKey(key);
|
1023
1061
|
if (!vimKey) {
|
1024
1062
|
return false;
|
@@ -1031,7 +1069,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1031
1069
|
}
|
1032
1070
|
|
1033
1071
|
var modifiers = {'Shift': 'S', 'Ctrl': 'C', 'Alt': 'A', 'Cmd': 'D', 'Mod': 'A'};
|
1034
|
-
var specialKeys = {Enter:'CR',Backspace:'BS',Delete:'Del'};
|
1072
|
+
var specialKeys = {Enter:'CR',Backspace:'BS',Delete:'Del',Insert:'Ins'};
|
1035
1073
|
function cmKeyToVimKey(key) {
|
1036
1074
|
if (key.charAt(0) == '\'') {
|
1037
1075
|
return key.charAt(1);
|
@@ -1109,6 +1147,9 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1109
1147
|
function isWhiteSpaceString(k) {
|
1110
1148
|
return (/^\s*$/).test(k);
|
1111
1149
|
}
|
1150
|
+
function isEndOfSentenceSymbol(k) {
|
1151
|
+
return '.?!'.indexOf(k) != -1;
|
1152
|
+
}
|
1112
1153
|
function inArray(val, arr) {
|
1113
1154
|
for (var i = 0; i < arr.length; i++) {
|
1114
1155
|
if (arr[i] == val) {
|
@@ -1144,11 +1185,11 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1144
1185
|
cfg = cfg || {};
|
1145
1186
|
var scope = cfg.scope;
|
1146
1187
|
if (!option) {
|
1147
|
-
|
1188
|
+
return new Error('Unknown option: ' + name);
|
1148
1189
|
}
|
1149
1190
|
if (option.type == 'boolean') {
|
1150
1191
|
if (value && value !== true) {
|
1151
|
-
|
1192
|
+
return new Error('Invalid argument: ' + name + '=' + value);
|
1152
1193
|
} else if (value !== false) {
|
1153
1194
|
value = true;
|
1154
1195
|
}
|
@@ -1175,7 +1216,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1175
1216
|
cfg = cfg || {};
|
1176
1217
|
var scope = cfg.scope;
|
1177
1218
|
if (!option) {
|
1178
|
-
|
1219
|
+
return new Error('Unknown option: ' + name);
|
1179
1220
|
}
|
1180
1221
|
if (option.callback) {
|
1181
1222
|
var local = cm && option.callback(undefined, cm);
|
@@ -1261,9 +1302,16 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1261
1302
|
}
|
1262
1303
|
return mark;
|
1263
1304
|
}
|
1305
|
+
function find(cm, offset) {
|
1306
|
+
var oldPointer = pointer;
|
1307
|
+
var mark = move(cm, offset);
|
1308
|
+
pointer = oldPointer;
|
1309
|
+
return mark && mark.find();
|
1310
|
+
}
|
1264
1311
|
return {
|
1265
1312
|
cachedCursor: undefined, //used for # and * jumps
|
1266
1313
|
add: add,
|
1314
|
+
find: find,
|
1267
1315
|
move: move
|
1268
1316
|
};
|
1269
1317
|
};
|
@@ -1344,10 +1392,10 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1344
1392
|
lastSubstituteReplacePart: undefined,
|
1345
1393
|
jumpList: createCircularJumpList(),
|
1346
1394
|
macroModeState: new MacroModeState,
|
1347
|
-
|
1395
|
+
lastCharacterSearch: {increment:0, forward:true, selectedCharacter:''},
|
1348
1396
|
registerController: new RegisterController({}),
|
1349
|
-
searchHistoryController: new HistoryController(
|
1350
|
-
exCommandHistoryController : new HistoryController(
|
1397
|
+
searchHistoryController: new HistoryController(),
|
1398
|
+
exCommandHistoryController : new HistoryController()
|
1351
1399
|
};
|
1352
1400
|
for (var optionName in options) {
|
1353
1401
|
var option = options[optionName];
|
@@ -1377,6 +1425,62 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1377
1425
|
unmap: function(lhs, ctx) {
|
1378
1426
|
exCommandDispatcher.unmap(lhs, ctx);
|
1379
1427
|
},
|
1428
|
+
noremap: function(lhs, rhs, ctx) {
|
1429
|
+
function toCtxArray(ctx) {
|
1430
|
+
return ctx ? [ctx] : ['normal', 'insert', 'visual'];
|
1431
|
+
}
|
1432
|
+
var ctxsToMap = toCtxArray(ctx);
|
1433
|
+
var actualLength = defaultKeymap.length, origLength = defaultKeymapLength;
|
1434
|
+
for (var i = actualLength - origLength;
|
1435
|
+
i < actualLength && ctxsToMap.length;
|
1436
|
+
i++) {
|
1437
|
+
var mapping = defaultKeymap[i];
|
1438
|
+
if (mapping.keys == rhs &&
|
1439
|
+
(!ctx || !mapping.context || mapping.context === ctx) &&
|
1440
|
+
mapping.type.substr(0, 2) !== 'ex' &&
|
1441
|
+
mapping.type.substr(0, 3) !== 'key') {
|
1442
|
+
var newMapping = {};
|
1443
|
+
for (var key in mapping) {
|
1444
|
+
newMapping[key] = mapping[key];
|
1445
|
+
}
|
1446
|
+
newMapping.keys = lhs;
|
1447
|
+
if (ctx && !newMapping.context) {
|
1448
|
+
newMapping.context = ctx;
|
1449
|
+
}
|
1450
|
+
this._mapCommand(newMapping);
|
1451
|
+
var mappedCtxs = toCtxArray(mapping.context);
|
1452
|
+
ctxsToMap = ctxsToMap.filter(function(el) { return mappedCtxs.indexOf(el) === -1; });
|
1453
|
+
}
|
1454
|
+
}
|
1455
|
+
},
|
1456
|
+
mapclear: function(ctx) {
|
1457
|
+
var actualLength = defaultKeymap.length,
|
1458
|
+
origLength = defaultKeymapLength;
|
1459
|
+
var userKeymap = defaultKeymap.slice(0, actualLength - origLength);
|
1460
|
+
defaultKeymap = defaultKeymap.slice(actualLength - origLength);
|
1461
|
+
if (ctx) {
|
1462
|
+
for (var i = userKeymap.length - 1; i >= 0; i--) {
|
1463
|
+
var mapping = userKeymap[i];
|
1464
|
+
if (ctx !== mapping.context) {
|
1465
|
+
if (mapping.context) {
|
1466
|
+
this._mapCommand(mapping);
|
1467
|
+
} else {
|
1468
|
+
var contexts = ['normal', 'insert', 'visual'];
|
1469
|
+
for (var j in contexts) {
|
1470
|
+
if (contexts[j] !== ctx) {
|
1471
|
+
var newMapping = {};
|
1472
|
+
for (var key in mapping) {
|
1473
|
+
newMapping[key] = mapping[key];
|
1474
|
+
}
|
1475
|
+
newMapping.context = contexts[j];
|
1476
|
+
this._mapCommand(newMapping);
|
1477
|
+
}
|
1478
|
+
}
|
1479
|
+
}
|
1480
|
+
}
|
1481
|
+
}
|
1482
|
+
}
|
1483
|
+
},
|
1380
1484
|
setOption: setOption,
|
1381
1485
|
getOption: getOption,
|
1382
1486
|
defineOption: defineOption,
|
@@ -1489,7 +1593,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1489
1593
|
if (vim.insertMode) { command = handleKeyInsertMode(); }
|
1490
1594
|
else { command = handleKeyNonInsertMode(); }
|
1491
1595
|
if (command === false) {
|
1492
|
-
return undefined;
|
1596
|
+
return undefined; //ace_patch
|
1493
1597
|
} else if (command === true) {
|
1494
1598
|
return function() { return true; };
|
1495
1599
|
} else {
|
@@ -1608,7 +1712,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1608
1712
|
}
|
1609
1713
|
};
|
1610
1714
|
function defineRegister(name, register) {
|
1611
|
-
var registers = vimGlobalState.registerController.registers
|
1715
|
+
var registers = vimGlobalState.registerController.registers;
|
1612
1716
|
if (!name || name.length != 1) {
|
1613
1717
|
throw Error('Register name must be 1 character');
|
1614
1718
|
}
|
@@ -1624,9 +1728,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1624
1728
|
}
|
1625
1729
|
RegisterController.prototype = {
|
1626
1730
|
pushText: function(registerName, operator, text, linewise, blockwise) {
|
1627
|
-
if (linewise && text.charAt(0) == '\n') {
|
1628
|
-
text = text.slice(1) + '\n';
|
1629
|
-
}
|
1630
1731
|
if (linewise && text.charAt(text.length - 1) !== '\n'){
|
1631
1732
|
text += '\n';
|
1632
1733
|
}
|
@@ -1679,7 +1780,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1679
1780
|
};
|
1680
1781
|
function HistoryController() {
|
1681
1782
|
this.historyBuffer = [];
|
1682
|
-
this.iterator;
|
1783
|
+
this.iterator = 0;
|
1683
1784
|
this.initialPrefix = null;
|
1684
1785
|
}
|
1685
1786
|
HistoryController.prototype = {
|
@@ -1730,7 +1831,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1730
1831
|
}
|
1731
1832
|
if (bestMatch.keys.slice(-11) == '<character>') {
|
1732
1833
|
var character = lastChar(keys);
|
1733
|
-
if (/<C-.>/.test(character)) return {type: 'none'};
|
1834
|
+
if (/<C-.>/.test(character) || !character) return {type: 'none'}; //ace_patch
|
1734
1835
|
inputState.selectedCharacter = character;
|
1735
1836
|
}
|
1736
1837
|
return {type: 'full', command: bestMatch};
|
@@ -1780,6 +1881,10 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1780
1881
|
}
|
1781
1882
|
inputState.operator = command.operator;
|
1782
1883
|
inputState.operatorArgs = copyArgs(command.operatorArgs);
|
1884
|
+
if (command.exitVisualBlock) {
|
1885
|
+
vim.visualBlock = false;
|
1886
|
+
updateCmSelection(cm);
|
1887
|
+
}
|
1783
1888
|
if (vim.visualMode) {
|
1784
1889
|
this.evalInput(cm, vim);
|
1785
1890
|
}
|
@@ -1859,11 +1964,13 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1859
1964
|
}
|
1860
1965
|
}
|
1861
1966
|
function onPromptKeyUp(e, query, close) {
|
1862
|
-
var keyName = CodeMirror.keyName(e), up;
|
1967
|
+
var keyName = CodeMirror.keyName(e), up, offset;
|
1863
1968
|
if (keyName == 'Up' || keyName == 'Down') {
|
1864
1969
|
up = keyName == 'Up' ? true : false;
|
1970
|
+
offset = e.target ? e.target.selectionEnd : 0;
|
1865
1971
|
query = vimGlobalState.searchHistoryController.nextMatch(query, up) || '';
|
1866
1972
|
close(query);
|
1973
|
+
if (offset && e.target) e.target.selectionEnd = e.target.selectionStart = Math.min(offset, e.target.value.length);
|
1867
1974
|
} else {
|
1868
1975
|
if ( keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift')
|
1869
1976
|
vimGlobalState.searchHistoryController.reset();
|
@@ -1894,6 +2001,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1894
2001
|
clearInputState(cm);
|
1895
2002
|
close();
|
1896
2003
|
cm.focus();
|
2004
|
+
} else if (keyName == 'Up' || keyName == 'Down') {
|
2005
|
+
CodeMirror.e_stop(e);
|
1897
2006
|
} else if (keyName == 'Ctrl-U') {
|
1898
2007
|
CodeMirror.e_stop(e);
|
1899
2008
|
close('');
|
@@ -1950,7 +2059,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1950
2059
|
exCommandDispatcher.processCommand(cm, input);
|
1951
2060
|
}
|
1952
2061
|
function onPromptKeyDown(e, input, close) {
|
1953
|
-
var keyName = CodeMirror.keyName(e), up;
|
2062
|
+
var keyName = CodeMirror.keyName(e), up, offset;
|
1954
2063
|
if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' ||
|
1955
2064
|
(keyName == 'Backspace' && input == '')) {
|
1956
2065
|
vimGlobalState.exCommandHistoryController.pushInput(input);
|
@@ -1961,9 +2070,12 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1961
2070
|
cm.focus();
|
1962
2071
|
}
|
1963
2072
|
if (keyName == 'Up' || keyName == 'Down') {
|
2073
|
+
CodeMirror.e_stop(e);
|
1964
2074
|
up = keyName == 'Up' ? true : false;
|
2075
|
+
offset = e.target ? e.target.selectionEnd : 0;
|
1965
2076
|
input = vimGlobalState.exCommandHistoryController.nextMatch(input, up) || '';
|
1966
2077
|
close(input);
|
2078
|
+
if (offset && e.target) e.target.selectionEnd = e.target.selectionStart = Math.min(offset, e.target.value.length);
|
1967
2079
|
} else if (keyName == 'Ctrl-U') {
|
1968
2080
|
CodeMirror.e_stop(e);
|
1969
2081
|
close('');
|
@@ -1977,7 +2089,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
1977
2089
|
} else {
|
1978
2090
|
if (vim.visualMode) {
|
1979
2091
|
showPrompt(cm, { onClose: onPromptClose, prefix: ':', value: '\'<,\'>',
|
1980
|
-
onKeyDown: onPromptKeyDown});
|
2092
|
+
onKeyDown: onPromptKeyDown, selectValueOnOpen: false});
|
1981
2093
|
} else {
|
1982
2094
|
showPrompt(cm, { onClose: onPromptClose, prefix: ':',
|
1983
2095
|
onKeyDown: onPromptKeyDown});
|
@@ -2165,6 +2277,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2165
2277
|
vim.lastEditActionCommand = actionCommand;
|
2166
2278
|
macroModeState.lastInsertModeChanges.changes = [];
|
2167
2279
|
macroModeState.lastInsertModeChanges.expectCursorActivityForChange = false;
|
2280
|
+
macroModeState.lastInsertModeChanges.visualBlock = vim.visualBlock ? vim.sel.head.line - vim.sel.anchor.line : 0;
|
2168
2281
|
}
|
2169
2282
|
};
|
2170
2283
|
var motions = {
|
@@ -2197,9 +2310,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2197
2310
|
return findNext(cm, prev/** prev */, query, motionArgs.repeat);
|
2198
2311
|
},
|
2199
2312
|
goToMark: function(cm, _head, motionArgs, vim) {
|
2200
|
-
var
|
2201
|
-
if (
|
2202
|
-
var pos = mark.find();
|
2313
|
+
var pos = getMarkPos(cm, vim, motionArgs.selectedCharacter);
|
2314
|
+
if (pos) {
|
2203
2315
|
return motionArgs.linewise ? { line: pos.line, ch: findFirstNonWhiteSpaceCharacter(cm.getLine(pos.line)) } : pos;
|
2204
2316
|
}
|
2205
2317
|
return null;
|
@@ -2274,9 +2386,10 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2274
2386
|
var line = motionArgs.forward ? cur.line + repeat : cur.line - repeat;
|
2275
2387
|
var first = cm.firstLine();
|
2276
2388
|
var last = cm.lastLine();
|
2277
|
-
if (
|
2278
|
-
|
2279
|
-
|
2389
|
+
if (line < first && cur.line == first){
|
2390
|
+
return this.moveToStartOfLine(cm, head, motionArgs, vim);
|
2391
|
+
}else if (line > last && cur.line == last){
|
2392
|
+
return this.moveToEol(cm, head, motionArgs, vim, true);
|
2280
2393
|
}
|
2281
2394
|
var fold = cm.ace.session.getFoldLine(line);
|
2282
2395
|
if (fold) {
|
@@ -2331,6 +2444,10 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2331
2444
|
var dir = motionArgs.forward ? 1 : -1;
|
2332
2445
|
return findParagraph(cm, head, motionArgs.repeat, dir);
|
2333
2446
|
},
|
2447
|
+
moveBySentence: function(cm, head, motionArgs) {
|
2448
|
+
var dir = motionArgs.forward ? 1 : -1;
|
2449
|
+
return findSentence(cm, head, motionArgs.repeat, dir);
|
2450
|
+
},
|
2334
2451
|
moveByScroll: function(cm, head, motionArgs, vim) {
|
2335
2452
|
var scrollbox = cm.getScrollInfo();
|
2336
2453
|
var curEnd = null;
|
@@ -2379,13 +2496,15 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2379
2496
|
vim.lastHSPos = cm.charCoords(head,'div').left;
|
2380
2497
|
return moveToColumn(cm, repeat);
|
2381
2498
|
},
|
2382
|
-
moveToEol: function(cm, head, motionArgs, vim) {
|
2499
|
+
moveToEol: function(cm, head, motionArgs, vim, keepHPos) {
|
2383
2500
|
var cur = head;
|
2384
|
-
vim.lastHPos = Infinity;
|
2385
2501
|
var retval= Pos(cur.line + motionArgs.repeat - 1, Infinity);
|
2386
2502
|
var end=cm.clipPos(retval);
|
2387
2503
|
end.ch--;
|
2388
|
-
|
2504
|
+
if (!keepHPos) {
|
2505
|
+
vim.lastHPos = Infinity;
|
2506
|
+
vim.lastHSPos = cm.charCoords(end,'div').left;
|
2507
|
+
}
|
2389
2508
|
return retval;
|
2390
2509
|
},
|
2391
2510
|
moveToFirstNonWhiteSpaceCharacter: function(cm, head) {
|
@@ -2399,17 +2518,18 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2399
2518
|
var ch = cursor.ch;
|
2400
2519
|
var lineText = cm.getLine(line);
|
2401
2520
|
var symbol;
|
2402
|
-
|
2403
|
-
symbol = lineText.charAt(ch
|
2521
|
+
for (; ch < lineText.length; ch++) {
|
2522
|
+
symbol = lineText.charAt(ch);
|
2404
2523
|
if (symbol && isMatchableSymbol(symbol)) {
|
2405
|
-
var style = cm.getTokenTypeAt(Pos(line, ch));
|
2524
|
+
var style = cm.getTokenTypeAt(Pos(line, ch + 1));
|
2406
2525
|
if (style !== "string" && style !== "comment") {
|
2407
2526
|
break;
|
2408
2527
|
}
|
2409
2528
|
}
|
2410
|
-
}
|
2411
|
-
if (
|
2412
|
-
var
|
2529
|
+
}
|
2530
|
+
if (ch < lineText.length) {
|
2531
|
+
var re = /[<>]/.test(lineText[ch]) ? /[(){}[\]<>]/ : /[(){}[\]]/; //ace_patch?
|
2532
|
+
var matched = cm.findMatchingBracket(Pos(line, ch+1), {bracketRegex: re});
|
2413
2533
|
return matched.to;
|
2414
2534
|
} else {
|
2415
2535
|
return cursor;
|
@@ -2429,8 +2549,9 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2429
2549
|
textObjectManipulation: function(cm, head, motionArgs, vim) {
|
2430
2550
|
var mirroredPairs = {'(': ')', ')': '(',
|
2431
2551
|
'{': '}', '}': '{',
|
2432
|
-
'[': ']', ']': '['
|
2433
|
-
|
2552
|
+
'[': ']', ']': '[',
|
2553
|
+
'<': '>', '>': '<'};
|
2554
|
+
var selfPaired = {'\'': true, '"': true, '`': true};
|
2434
2555
|
|
2435
2556
|
var character = motionArgs.selectedCharacter;
|
2436
2557
|
if (character == 'b') {
|
@@ -2473,7 +2594,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2473
2594
|
},
|
2474
2595
|
|
2475
2596
|
repeatLastCharacterSearch: function(cm, head, motionArgs) {
|
2476
|
-
var lastSearch = vimGlobalState.
|
2597
|
+
var lastSearch = vimGlobalState.lastCharacterSearch;
|
2477
2598
|
var repeat = motionArgs.repeat;
|
2478
2599
|
var forward = motionArgs.forward === lastSearch.forward;
|
2479
2600
|
var increment = (lastSearch.increment ? 1 : 0) * (forward ? -1 : 1);
|
@@ -2504,10 +2625,9 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2504
2625
|
change: function(cm, args, ranges) {
|
2505
2626
|
var finalHead, text;
|
2506
2627
|
var vim = cm.state.vim;
|
2507
|
-
|
2628
|
+
var anchor = ranges[0].anchor,
|
2629
|
+
head = ranges[0].head;
|
2508
2630
|
if (!vim.visualMode) {
|
2509
|
-
var anchor = ranges[0].anchor,
|
2510
|
-
head = ranges[0].head;
|
2511
2631
|
text = cm.getRange(anchor, head);
|
2512
2632
|
var lastState = vim.lastEditInputState || {};
|
2513
2633
|
if (lastState.motion == "moveByWords" && !isWhiteSpaceString(text)) {
|
@@ -2532,6 +2652,13 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2532
2652
|
anchor.ch = Number.MAX_VALUE;
|
2533
2653
|
}
|
2534
2654
|
finalHead = anchor;
|
2655
|
+
} else if (args.fullLine) {
|
2656
|
+
head.ch = Number.MAX_VALUE;
|
2657
|
+
head.line--;
|
2658
|
+
cm.setSelection(anchor, head)
|
2659
|
+
text = cm.getSelection();
|
2660
|
+
cm.replaceSelection("");
|
2661
|
+
finalHead = anchor;
|
2535
2662
|
} else {
|
2536
2663
|
text = cm.getSelection();
|
2537
2664
|
var replacement = fillArray('', ranges.length);
|
@@ -2574,7 +2701,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2574
2701
|
vimGlobalState.registerController.pushText(
|
2575
2702
|
args.registerName, 'delete', text,
|
2576
2703
|
args.linewise, vim.visualBlock);
|
2577
|
-
|
2704
|
+
var includeLineBreak = vim.insertMode
|
2705
|
+
return clipCursorToContent(cm, finalHead, includeLineBreak);
|
2578
2706
|
},
|
2579
2707
|
indent: function(cm, args, ranges) {
|
2580
2708
|
var vim = cm.state.vim;
|
@@ -2593,6 +2721,10 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2593
2721
|
}
|
2594
2722
|
return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor);
|
2595
2723
|
},
|
2724
|
+
indentAuto: function(cm, _args, ranges) {
|
2725
|
+
cm.execCommand("indentAuto");
|
2726
|
+
return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor);
|
2727
|
+
},
|
2596
2728
|
changeCase: function(cm, args, ranges, oldAnchor, newHead) {
|
2597
2729
|
var selections = cm.getSelections();
|
2598
2730
|
var swapped = [];
|
@@ -2700,9 +2832,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2700
2832
|
switch (actionArgs.position) {
|
2701
2833
|
case 'center': y = y - (height / 2) + lineHeight;
|
2702
2834
|
break;
|
2703
|
-
case 'bottom': y = y - height + lineHeight
|
2704
|
-
break;
|
2705
|
-
case 'top': y = y + lineHeight*0.4;
|
2835
|
+
case 'bottom': y = y - height + lineHeight;
|
2706
2836
|
break;
|
2707
2837
|
}
|
2708
2838
|
cm.scrollTo(null, y);
|
@@ -2713,6 +2843,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2713
2843
|
var macroModeState = vimGlobalState.macroModeState;
|
2714
2844
|
if (registerName == '@') {
|
2715
2845
|
registerName = macroModeState.latestRegister;
|
2846
|
+
} else {
|
2847
|
+
macroModeState.latestRegister = registerName;
|
2716
2848
|
}
|
2717
2849
|
while(repeat--){
|
2718
2850
|
executeMacroRegister(cm, vim, macroModeState, registerName);
|
@@ -2721,7 +2853,20 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2721
2853
|
enterMacroRecordMode: function(cm, actionArgs) {
|
2722
2854
|
var macroModeState = vimGlobalState.macroModeState;
|
2723
2855
|
var registerName = actionArgs.selectedCharacter;
|
2724
|
-
|
2856
|
+
if (vimGlobalState.registerController.isValidRegister(registerName)) {
|
2857
|
+
macroModeState.enterMacroRecordMode(cm, registerName);
|
2858
|
+
}
|
2859
|
+
},
|
2860
|
+
toggleOverwrite: function(cm) {
|
2861
|
+
if (!cm.state.overwrite) {
|
2862
|
+
cm.toggleOverwrite(true);
|
2863
|
+
cm.setOption('keyMap', 'vim-replace');
|
2864
|
+
CodeMirror.signal(cm, "vim-mode-change", {mode: "replace"});
|
2865
|
+
} else {
|
2866
|
+
cm.toggleOverwrite(false);
|
2867
|
+
cm.setOption('keyMap', 'vim-insert');
|
2868
|
+
CodeMirror.signal(cm, "vim-mode-change", {mode: "insert"});
|
2869
|
+
}
|
2725
2870
|
},
|
2726
2871
|
enterInsertMode: function(cm, actionArgs, vim) {
|
2727
2872
|
if (cm.getOption('readOnly')) { return; }
|
@@ -2733,11 +2878,15 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2733
2878
|
var height = cm.listSelections().length;
|
2734
2879
|
if (insertAt == 'eol') {
|
2735
2880
|
head = Pos(head.line, lineLength(cm, head.line));
|
2881
|
+
} else if (insertAt == 'bol') {
|
2882
|
+
head = Pos(head.line, 0);
|
2736
2883
|
} else if (insertAt == 'charAfter') {
|
2737
2884
|
head = offsetCursor(head, 0, 1);
|
2738
2885
|
} else if (insertAt == 'firstNonBlank') {
|
2739
2886
|
head = motions.moveToFirstNonWhiteSpaceCharacter(cm, head);
|
2740
2887
|
} else if (insertAt == 'startOfSelectedArea') {
|
2888
|
+
if (!vim.visualMode)
|
2889
|
+
return;
|
2741
2890
|
if (!vim.visualBlock) {
|
2742
2891
|
if (sel.head.line < sel.anchor.line) {
|
2743
2892
|
head = sel.head;
|
@@ -2751,6 +2900,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2751
2900
|
height = Math.abs(sel.head.line - sel.anchor.line) + 1;
|
2752
2901
|
}
|
2753
2902
|
} else if (insertAt == 'endOfSelectedArea') {
|
2903
|
+
if (!vim.visualMode)
|
2904
|
+
return;
|
2754
2905
|
if (!vim.visualBlock) {
|
2755
2906
|
if (sel.head.line >= sel.anchor.line) {
|
2756
2907
|
head = offsetCursor(sel.head, 0, 1);
|
@@ -2767,14 +2918,16 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2767
2918
|
if (vim.visualMode){
|
2768
2919
|
return;
|
2769
2920
|
}
|
2921
|
+
} else if (insertAt == 'lastEdit') {
|
2922
|
+
head = getLastEditPos(cm) || head;
|
2770
2923
|
}
|
2771
|
-
cm.setOption('keyMap', 'vim-insert');
|
2772
2924
|
cm.setOption('disableInput', false);
|
2773
2925
|
if (actionArgs && actionArgs.replace) {
|
2774
2926
|
cm.toggleOverwrite(true);
|
2775
2927
|
cm.setOption('keyMap', 'vim-replace');
|
2776
2928
|
CodeMirror.signal(cm, "vim-mode-change", {mode: "replace"});
|
2777
2929
|
} else {
|
2930
|
+
cm.toggleOverwrite(false);
|
2778
2931
|
cm.setOption('keyMap', 'vim-insert');
|
2779
2932
|
CodeMirror.signal(cm, "vim-mode-change", {mode: "insert"});
|
2780
2933
|
}
|
@@ -2866,7 +3019,9 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2866
3019
|
var tmp = Pos(curStart.line + 1,
|
2867
3020
|
lineLength(cm, curStart.line + 1));
|
2868
3021
|
var text = cm.getRange(curStart, tmp);
|
2869
|
-
text =
|
3022
|
+
text = actionArgs.keepSpaces
|
3023
|
+
? text.replace(/\n\r?/g, '')
|
3024
|
+
: text.replace(/\n\s*/g, ' ');
|
2870
3025
|
cm.replaceRange(text, curStart, tmp);
|
2871
3026
|
}
|
2872
3027
|
var curFinalPos = Pos(curStart.line, finalCh);
|
@@ -2932,7 +3087,17 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2932
3087
|
}
|
2933
3088
|
var linewise = register.linewise;
|
2934
3089
|
var blockwise = register.blockwise;
|
2935
|
-
if (
|
3090
|
+
if (blockwise) {
|
3091
|
+
text = text.split('\n');
|
3092
|
+
if (linewise) {
|
3093
|
+
text.pop();
|
3094
|
+
}
|
3095
|
+
for (var i = 0; i < text.length; i++) {
|
3096
|
+
text[i] = (text[i] == '') ? ' ' : text[i];
|
3097
|
+
}
|
3098
|
+
cur.ch += actionArgs.after ? 1 : 0;
|
3099
|
+
cur.ch = Math.min(lineLength(cm, cur.line), cur.ch);
|
3100
|
+
} else if (linewise) {
|
2936
3101
|
if(vim.visualMode) {
|
2937
3102
|
text = vim.visualLine ? text.slice(0, -1) : '\n' + text.slice(0, text.length - 1) + '\n';
|
2938
3103
|
} else if (actionArgs.after) {
|
@@ -2942,12 +3107,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
2942
3107
|
cur.ch = 0;
|
2943
3108
|
}
|
2944
3109
|
} else {
|
2945
|
-
if (blockwise) {
|
2946
|
-
text = text.split('\n');
|
2947
|
-
for (var i = 0; i < text.length; i++) {
|
2948
|
-
text[i] = (text[i] == '') ? ' ' : text[i];
|
2949
|
-
}
|
2950
|
-
}
|
2951
3110
|
cur.ch += actionArgs.after ? 1 : 0;
|
2952
3111
|
}
|
2953
3112
|
var curPosFinal;
|
@@ -3088,25 +3247,32 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3088
3247
|
incrementNumberToken: function(cm, actionArgs) {
|
3089
3248
|
var cur = cm.getCursor();
|
3090
3249
|
var lineStr = cm.getLine(cur.line);
|
3091
|
-
var re =
|
3250
|
+
var re = /(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;
|
3092
3251
|
var match;
|
3093
3252
|
var start;
|
3094
3253
|
var end;
|
3095
3254
|
var numberStr;
|
3096
|
-
var token;
|
3097
3255
|
while ((match = re.exec(lineStr)) !== null) {
|
3098
|
-
token = match[0];
|
3099
3256
|
start = match.index;
|
3100
|
-
end = start +
|
3257
|
+
end = start + match[0].length;
|
3101
3258
|
if (cur.ch < end)break;
|
3102
3259
|
}
|
3103
3260
|
if (!actionArgs.backtrack && (end <= cur.ch))return;
|
3104
|
-
if (
|
3261
|
+
if (match) {
|
3262
|
+
var baseStr = match[2] || match[4]
|
3263
|
+
var digits = match[3] || match[5]
|
3105
3264
|
var increment = actionArgs.increase ? 1 : -1;
|
3106
|
-
var
|
3265
|
+
var base = {'0b': 2, '0': 8, '': 10, '0x': 16}[baseStr.toLowerCase()];
|
3266
|
+
var number = parseInt(match[1] + digits, base) + (increment * actionArgs.repeat);
|
3267
|
+
numberStr = number.toString(base);
|
3268
|
+
var zeroPadding = baseStr ? new Array(digits.length - numberStr.length + 1 + match[1].length).join('0') : ''
|
3269
|
+
if (numberStr.charAt(0) === '-') {
|
3270
|
+
numberStr = '-' + baseStr + zeroPadding + numberStr.substr(1);
|
3271
|
+
} else {
|
3272
|
+
numberStr = baseStr + zeroPadding + numberStr;
|
3273
|
+
}
|
3107
3274
|
var from = Pos(cur.line, start);
|
3108
3275
|
var to = Pos(cur.line, end);
|
3109
|
-
numberStr = number.toString();
|
3110
3276
|
cm.replaceRange(numberStr, from, to);
|
3111
3277
|
} else {
|
3112
3278
|
return;
|
@@ -3124,6 +3290,9 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3124
3290
|
}
|
3125
3291
|
repeatLastEdit(cm, vim, repeat, false /** repeatForInsert */);
|
3126
3292
|
},
|
3293
|
+
indent: function(cm, actionArgs) {
|
3294
|
+
cm.indentLine(cm.getCursor().line, actionArgs.indentRight);
|
3295
|
+
},
|
3127
3296
|
exitInsertMode: exitInsertMode
|
3128
3297
|
};
|
3129
3298
|
|
@@ -3153,12 +3322,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3153
3322
|
}
|
3154
3323
|
return Pos(cur.line + offsetLine, cur.ch + offsetCh);
|
3155
3324
|
}
|
3156
|
-
function getOffset(anchor, head) {
|
3157
|
-
return {
|
3158
|
-
line: head.line - anchor.line,
|
3159
|
-
ch: head.line - anchor.line
|
3160
|
-
};
|
3161
|
-
}
|
3162
3325
|
function commandMatches(keys, keyMap, context, inputState) {
|
3163
3326
|
var match, partial = [], full = [];
|
3164
3327
|
for (var i = 0; i < keyMap.length; i++) {
|
@@ -3188,7 +3351,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3188
3351
|
}
|
3189
3352
|
}
|
3190
3353
|
function lastChar(keys) {
|
3191
|
-
var match = /^.*(<[
|
3354
|
+
var match = /^.*(<[^>]+>)$/.exec(keys);
|
3192
3355
|
var selectedCharacter = match ? match[1] : keys.slice(-1);
|
3193
3356
|
if (selectedCharacter.length > 1){
|
3194
3357
|
switch(selectedCharacter){
|
@@ -3199,6 +3362,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3199
3362
|
selectedCharacter=' ';
|
3200
3363
|
break;
|
3201
3364
|
default:
|
3365
|
+
selectedCharacter='';
|
3202
3366
|
break;
|
3203
3367
|
}
|
3204
3368
|
}
|
@@ -3292,7 +3456,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3292
3456
|
var range = {anchor: new Pos(line, baseCh), head: new Pos(line, headCh)};
|
3293
3457
|
selections.push(range);
|
3294
3458
|
}
|
3295
|
-
primIndex = head.line == lastLine ? selections.length - 1 : 0;
|
3296
3459
|
cm.setSelections(selections);
|
3297
3460
|
selectionEnd.ch = headCh;
|
3298
3461
|
base.ch = baseCh;
|
@@ -3554,9 +3717,9 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3554
3717
|
}
|
3555
3718
|
|
3556
3719
|
function recordLastCharacterSearch(increment, args) {
|
3557
|
-
vimGlobalState.
|
3558
|
-
vimGlobalState.
|
3559
|
-
vimGlobalState.
|
3720
|
+
vimGlobalState.lastCharacterSearch.increment = increment;
|
3721
|
+
vimGlobalState.lastCharacterSearch.forward = args.forward;
|
3722
|
+
vimGlobalState.lastCharacterSearch.selectedCharacter = args.selectedCharacter;
|
3560
3723
|
}
|
3561
3724
|
|
3562
3725
|
var symbolToMode = {
|
@@ -3730,7 +3893,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3730
3893
|
line = cm.getLine(lineNum);
|
3731
3894
|
pos = (dir > 0) ? 0 : line.length;
|
3732
3895
|
}
|
3733
|
-
throw new Error('The impossible happened.');
|
3734
3896
|
}
|
3735
3897
|
function moveToWord(cm, cur, repeat, forward, wordEnd, bigWord) {
|
3736
3898
|
var curStart = copyCursor(cur);
|
@@ -3872,22 +4034,160 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3872
4034
|
start = new Pos(i, 0);
|
3873
4035
|
return { start: start, end: end };
|
3874
4036
|
}
|
4037
|
+
|
4038
|
+
function findSentence(cm, cur, repeat, dir) {
|
4039
|
+
function nextChar(cm, idx) {
|
4040
|
+
if (idx.pos + idx.dir < 0 || idx.pos + idx.dir >= idx.line.length) {
|
4041
|
+
idx.ln += idx.dir;
|
4042
|
+
if (!isLine(cm, idx.ln)) {
|
4043
|
+
idx.line = null;
|
4044
|
+
idx.ln = null;
|
4045
|
+
idx.pos = null;
|
4046
|
+
return;
|
4047
|
+
}
|
4048
|
+
idx.line = cm.getLine(idx.ln);
|
4049
|
+
idx.pos = (idx.dir > 0) ? 0 : idx.line.length - 1;
|
4050
|
+
}
|
4051
|
+
else {
|
4052
|
+
idx.pos += idx.dir;
|
4053
|
+
}
|
4054
|
+
}
|
4055
|
+
function forward(cm, ln, pos, dir) {
|
4056
|
+
var line = cm.getLine(ln);
|
4057
|
+
var stop = (line === "");
|
4058
|
+
|
4059
|
+
var curr = {
|
4060
|
+
line: line,
|
4061
|
+
ln: ln,
|
4062
|
+
pos: pos,
|
4063
|
+
dir: dir,
|
4064
|
+
}
|
4065
|
+
|
4066
|
+
var last_valid = {
|
4067
|
+
ln: curr.ln,
|
4068
|
+
pos: curr.pos,
|
4069
|
+
}
|
4070
|
+
|
4071
|
+
var skip_empty_lines = (curr.line === "");
|
4072
|
+
nextChar(cm, curr);
|
4073
|
+
|
4074
|
+
while (curr.line !== null) {
|
4075
|
+
last_valid.ln = curr.ln;
|
4076
|
+
last_valid.pos = curr.pos;
|
4077
|
+
|
4078
|
+
if (curr.line === "" && !skip_empty_lines) {
|
4079
|
+
return { ln: curr.ln, pos: curr.pos, };
|
4080
|
+
}
|
4081
|
+
else if (stop && curr.line !== "" && !isWhiteSpaceString(curr.line[curr.pos])) {
|
4082
|
+
return { ln: curr.ln, pos: curr.pos, };
|
4083
|
+
}
|
4084
|
+
else if (isEndOfSentenceSymbol(curr.line[curr.pos])
|
4085
|
+
&& !stop
|
4086
|
+
&& (curr.pos === curr.line.length - 1
|
4087
|
+
|| isWhiteSpaceString(curr.line[curr.pos + 1]))) {
|
4088
|
+
stop = true;
|
4089
|
+
}
|
4090
|
+
|
4091
|
+
nextChar(cm, curr);
|
4092
|
+
}
|
4093
|
+
var line = cm.getLine(last_valid.ln);
|
4094
|
+
last_valid.pos = 0;
|
4095
|
+
for(var i = line.length - 1; i >= 0; --i) {
|
4096
|
+
if (!isWhiteSpaceString(line[i])) {
|
4097
|
+
last_valid.pos = i;
|
4098
|
+
break;
|
4099
|
+
}
|
4100
|
+
}
|
4101
|
+
|
4102
|
+
return last_valid;
|
4103
|
+
|
4104
|
+
}
|
4105
|
+
function reverse(cm, ln, pos, dir) {
|
4106
|
+
var line = cm.getLine(ln);
|
4107
|
+
|
4108
|
+
var curr = {
|
4109
|
+
line: line,
|
4110
|
+
ln: ln,
|
4111
|
+
pos: pos,
|
4112
|
+
dir: dir,
|
4113
|
+
}
|
4114
|
+
|
4115
|
+
var last_valid = {
|
4116
|
+
ln: curr.ln,
|
4117
|
+
pos: null,
|
4118
|
+
};
|
4119
|
+
|
4120
|
+
var skip_empty_lines = (curr.line === "");
|
4121
|
+
nextChar(cm, curr);
|
4122
|
+
|
4123
|
+
while (curr.line !== null) {
|
4124
|
+
|
4125
|
+
if (curr.line === "" && !skip_empty_lines) {
|
4126
|
+
if (last_valid.pos !== null) {
|
4127
|
+
return last_valid;
|
4128
|
+
}
|
4129
|
+
else {
|
4130
|
+
return { ln: curr.ln, pos: curr.pos };
|
4131
|
+
}
|
4132
|
+
}
|
4133
|
+
else if (isEndOfSentenceSymbol(curr.line[curr.pos])
|
4134
|
+
&& last_valid.pos !== null
|
4135
|
+
&& !(curr.ln === last_valid.ln && curr.pos + 1 === last_valid.pos)) {
|
4136
|
+
return last_valid;
|
4137
|
+
}
|
4138
|
+
else if (curr.line !== "" && !isWhiteSpaceString(curr.line[curr.pos])) {
|
4139
|
+
skip_empty_lines = false;
|
4140
|
+
last_valid = { ln: curr.ln, pos: curr.pos }
|
4141
|
+
}
|
4142
|
+
|
4143
|
+
nextChar(cm, curr);
|
4144
|
+
}
|
4145
|
+
var line = cm.getLine(last_valid.ln);
|
4146
|
+
last_valid.pos = 0;
|
4147
|
+
for(var i = 0; i < line.length; ++i) {
|
4148
|
+
if (!isWhiteSpaceString(line[i])) {
|
4149
|
+
last_valid.pos = i;
|
4150
|
+
break;
|
4151
|
+
}
|
4152
|
+
}
|
4153
|
+
return last_valid;
|
4154
|
+
}
|
4155
|
+
|
4156
|
+
var curr_index = {
|
4157
|
+
ln: cur.line,
|
4158
|
+
pos: cur.ch,
|
4159
|
+
};
|
4160
|
+
|
4161
|
+
while (repeat > 0) {
|
4162
|
+
if (dir < 0) {
|
4163
|
+
curr_index = reverse(cm, curr_index.ln, curr_index.pos, dir);
|
4164
|
+
}
|
4165
|
+
else {
|
4166
|
+
curr_index = forward(cm, curr_index.ln, curr_index.pos, dir);
|
4167
|
+
}
|
4168
|
+
repeat--;
|
4169
|
+
}
|
4170
|
+
|
4171
|
+
return Pos(curr_index.ln, curr_index.pos);
|
4172
|
+
}
|
3875
4173
|
function selectCompanionObject(cm, head, symb, inclusive) {
|
3876
4174
|
var cur = head, start, end;
|
3877
4175
|
|
3878
4176
|
var bracketRegexp = ({
|
3879
4177
|
'(': /[()]/, ')': /[()]/,
|
3880
4178
|
'[': /[[\]]/, ']': /[[\]]/,
|
3881
|
-
'{': /[{}]/, '}': /[{}]
|
4179
|
+
'{': /[{}]/, '}': /[{}]/,
|
4180
|
+
'<': /[<>]/, '>': /[<>]/})[symb];
|
3882
4181
|
var openSym = ({
|
3883
4182
|
'(': '(', ')': '(',
|
3884
4183
|
'[': '[', ']': '[',
|
3885
|
-
'{': '{', '}': '{'
|
4184
|
+
'{': '{', '}': '{',
|
4185
|
+
'<': '<', '>': '<'})[symb];
|
3886
4186
|
var curChar = cm.getLine(cur.line).charAt(cur.ch);
|
3887
4187
|
var offset = curChar === openSym ? 1 : 0;
|
3888
4188
|
|
3889
|
-
start = cm.scanForBracket(Pos(cur.line, cur.ch + offset), -1,
|
3890
|
-
end = cm.scanForBracket(Pos(cur.line, cur.ch + offset), 1,
|
4189
|
+
start = cm.scanForBracket(Pos(cur.line, cur.ch + offset), -1, undefined, {'bracketRegex': bracketRegexp});
|
4190
|
+
end = cm.scanForBracket(Pos(cur.line, cur.ch + offset), 1, undefined, {'bracketRegex': bracketRegexp});
|
3891
4191
|
|
3892
4192
|
if (!start || !end) {
|
3893
4193
|
return { start: cur, end: cur };
|
@@ -3988,14 +4288,27 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
3988
4288
|
if (cm.openDialog) {
|
3989
4289
|
cm.openDialog(template, onClose, { bottom: true, value: options.value,
|
3990
4290
|
onKeyDown: options.onKeyDown, onKeyUp: options.onKeyUp,
|
3991
|
-
selectValueOnOpen: false
|
4291
|
+
selectValueOnOpen: false, onClose: function() {
|
4292
|
+
if (cm.state.vim) {
|
4293
|
+
cm.state.vim.status = "";
|
4294
|
+
cm.ace.renderer.$loop.schedule(cm.ace.renderer.CHANGE_CURSOR);
|
4295
|
+
}
|
4296
|
+
}});
|
3992
4297
|
}
|
3993
4298
|
else {
|
3994
4299
|
onClose(prompt(shortText, ''));
|
3995
4300
|
}
|
3996
4301
|
}
|
3997
4302
|
function splitBySlash(argString) {
|
3998
|
-
|
4303
|
+
return splitBySeparator(argString, '/');
|
4304
|
+
}
|
4305
|
+
|
4306
|
+
function findUnescapedSlashes(argString) {
|
4307
|
+
return findUnescapedSeparators(argString, '/');
|
4308
|
+
}
|
4309
|
+
|
4310
|
+
function splitBySeparator(argString, separator) {
|
4311
|
+
var slashes = findUnescapedSeparators(argString, separator) || [];
|
3999
4312
|
if (!slashes.length) return [];
|
4000
4313
|
var tokens = [];
|
4001
4314
|
if (slashes[0] !== 0) return;
|
@@ -4006,12 +4319,15 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4006
4319
|
return tokens;
|
4007
4320
|
}
|
4008
4321
|
|
4009
|
-
function
|
4322
|
+
function findUnescapedSeparators(str, separator) {
|
4323
|
+
if (!separator)
|
4324
|
+
separator = '/';
|
4325
|
+
|
4010
4326
|
var escapeNextChar = false;
|
4011
4327
|
var slashes = [];
|
4012
4328
|
for (var i = 0; i < str.length; i++) {
|
4013
4329
|
var c = str.charAt(i);
|
4014
|
-
if (!escapeNextChar && c ==
|
4330
|
+
if (!escapeNextChar && c == separator) {
|
4015
4331
|
slashes.push(i);
|
4016
4332
|
}
|
4017
4333
|
escapeNextChar = !escapeNextChar && (c == '\\');
|
@@ -4143,17 +4459,10 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4143
4459
|
}
|
4144
4460
|
}
|
4145
4461
|
function makePrompt(prefix, desc) {
|
4146
|
-
var raw = ''
|
4147
|
-
|
4148
|
-
|
4149
|
-
|
4150
|
-
raw += '<input type="text"/> ' +
|
4151
|
-
'<span style="color: #888">';
|
4152
|
-
if (desc) {
|
4153
|
-
raw += '<span style="color: #888">';
|
4154
|
-
raw += desc;
|
4155
|
-
raw += '</span>';
|
4156
|
-
}
|
4462
|
+
var raw = '<span style="font-family: monospace; white-space: pre">' +
|
4463
|
+
(prefix || "") + '<input type="text" autocorrect="off" autocapitalize="none" autocomplete="off"></span>';
|
4464
|
+
if (desc)
|
4465
|
+
raw += ' <span style="color: #888">' + desc + '</span>';
|
4157
4466
|
return raw;
|
4158
4467
|
}
|
4159
4468
|
var searchPromptDesc = '(Javascript regexp)';
|
@@ -4293,6 +4602,23 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4293
4602
|
}
|
4294
4603
|
}
|
4295
4604
|
|
4605
|
+
function getMarkPos(cm, vim, markName) {
|
4606
|
+
if (markName == '\'' || markName == '`') {
|
4607
|
+
return vimGlobalState.jumpList.find(cm, -1) || Pos(0, 0);
|
4608
|
+
} else if (markName == '.') {
|
4609
|
+
return getLastEditPos(cm);
|
4610
|
+
}
|
4611
|
+
|
4612
|
+
var mark = vim.marks[markName];
|
4613
|
+
return mark && mark.find();
|
4614
|
+
}
|
4615
|
+
|
4616
|
+
function getLastEditPos(cm) {
|
4617
|
+
var undoManager = cm.ace.session.$undoManager;
|
4618
|
+
if (undoManager && undoManager.$lastDelta)
|
4619
|
+
return toCmPos(undoManager.$lastDelta.end);
|
4620
|
+
}
|
4621
|
+
|
4296
4622
|
var ExCommandDispatcher = function() {
|
4297
4623
|
this.buildCommandMap_();
|
4298
4624
|
};
|
@@ -4387,20 +4713,35 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4387
4713
|
}
|
4388
4714
|
switch (inputStream.next()) {
|
4389
4715
|
case '.':
|
4390
|
-
return cm.getCursor().line;
|
4716
|
+
return this.parseLineSpecOffset_(inputStream, cm.getCursor().line);
|
4391
4717
|
case '$':
|
4392
|
-
return cm.lastLine();
|
4718
|
+
return this.parseLineSpecOffset_(inputStream, cm.lastLine());
|
4393
4719
|
case '\'':
|
4394
|
-
var
|
4395
|
-
|
4396
|
-
|
4397
|
-
|
4398
|
-
|
4720
|
+
var markName = inputStream.next();
|
4721
|
+
var markPos = getMarkPos(cm, cm.state.vim, markName);
|
4722
|
+
if (!markPos) throw new Error('Mark not set');
|
4723
|
+
return this.parseLineSpecOffset_(inputStream, markPos.line);
|
4724
|
+
case '-':
|
4725
|
+
case '+':
|
4726
|
+
inputStream.backUp(1);
|
4727
|
+
return this.parseLineSpecOffset_(inputStream, cm.getCursor().line);
|
4399
4728
|
default:
|
4400
4729
|
inputStream.backUp(1);
|
4401
4730
|
return undefined;
|
4402
4731
|
}
|
4403
4732
|
},
|
4733
|
+
parseLineSpecOffset_: function(inputStream, line) {
|
4734
|
+
var offsetMatch = inputStream.match(/^([+-])?(\d+)/);
|
4735
|
+
if (offsetMatch) {
|
4736
|
+
var offset = parseInt(offsetMatch[2], 10);
|
4737
|
+
if (offsetMatch[1] == "-") {
|
4738
|
+
line -= offset;
|
4739
|
+
} else {
|
4740
|
+
line += offset;
|
4741
|
+
}
|
4742
|
+
}
|
4743
|
+
return line;
|
4744
|
+
},
|
4404
4745
|
parseCommandArgs_: function(inputStream, params, command) {
|
4405
4746
|
if (inputStream.eol()) {
|
4406
4747
|
return;
|
@@ -4456,16 +4797,15 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4456
4797
|
var mapping = {
|
4457
4798
|
keys: lhs,
|
4458
4799
|
type: 'keyToEx',
|
4459
|
-
exArgs: { input: rhs.substring(1) }
|
4460
|
-
|
4800
|
+
exArgs: { input: rhs.substring(1) }
|
4801
|
+
};
|
4461
4802
|
if (ctx) { mapping.context = ctx; }
|
4462
4803
|
defaultKeymap.unshift(mapping);
|
4463
4804
|
} else {
|
4464
4805
|
var mapping = {
|
4465
4806
|
keys: lhs,
|
4466
4807
|
type: 'keyToKey',
|
4467
|
-
toKeys: rhs
|
4468
|
-
user: true
|
4808
|
+
toKeys: rhs
|
4469
4809
|
};
|
4470
4810
|
if (ctx) { mapping.context = ctx; }
|
4471
4811
|
defaultKeymap.unshift(mapping);
|
@@ -4484,8 +4824,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4484
4824
|
var keys = lhs;
|
4485
4825
|
for (var i = 0; i < defaultKeymap.length; i++) {
|
4486
4826
|
if (keys == defaultKeymap[i].keys
|
4487
|
-
&& defaultKeymap[i].context === ctx
|
4488
|
-
&& defaultKeymap[i].user) {
|
4827
|
+
&& defaultKeymap[i].context === ctx) {
|
4489
4828
|
defaultKeymap.splice(i, 1);
|
4490
4829
|
return;
|
4491
4830
|
}
|
@@ -4563,13 +4902,18 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4563
4902
|
}
|
4564
4903
|
if (!optionIsBoolean && value === undefined || forceGet) {
|
4565
4904
|
var oldValue = getOption(optionName, cm, setCfg);
|
4566
|
-
if (oldValue
|
4905
|
+
if (oldValue instanceof Error) {
|
4906
|
+
showConfirm(cm, oldValue.message);
|
4907
|
+
} else if (oldValue === true || oldValue === false) {
|
4567
4908
|
showConfirm(cm, ' ' + (oldValue ? '' : 'no') + optionName);
|
4568
4909
|
} else {
|
4569
4910
|
showConfirm(cm, ' ' + optionName + '=' + oldValue);
|
4570
4911
|
}
|
4571
4912
|
} else {
|
4572
|
-
setOption(optionName, value, cm, setCfg);
|
4913
|
+
var setOptionReturn = setOption(optionName, value, cm, setCfg);
|
4914
|
+
if (setOptionReturn instanceof Error) {
|
4915
|
+
showConfirm(cm, setOptionReturn.message);
|
4916
|
+
}
|
4573
4917
|
}
|
4574
4918
|
},
|
4575
4919
|
setlocal: function (cm, params) {
|
@@ -4606,25 +4950,27 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4606
4950
|
showConfirm(cm, regInfo);
|
4607
4951
|
},
|
4608
4952
|
sort: function(cm, params) {
|
4609
|
-
var reverse, ignoreCase, unique, number;
|
4953
|
+
var reverse, ignoreCase, unique, number, pattern;
|
4610
4954
|
function parseArgs() {
|
4611
4955
|
if (params.argString) {
|
4612
4956
|
var args = new CodeMirror.StringStream(params.argString);
|
4613
4957
|
if (args.eat('!')) { reverse = true; }
|
4614
4958
|
if (args.eol()) { return; }
|
4615
4959
|
if (!args.eatSpace()) { return 'Invalid arguments'; }
|
4616
|
-
var opts = args.match(/[
|
4617
|
-
if (opts) {
|
4618
|
-
|
4619
|
-
ignoreCase = opts.indexOf('i') != -1;
|
4620
|
-
unique = opts.indexOf('u') != -1;
|
4621
|
-
var decimal = opts.indexOf('d') != -1 && 1;
|
4622
|
-
var hex = opts.indexOf('x') != -1 && 1;
|
4623
|
-
var octal = opts.indexOf('o') != -1 && 1;
|
4960
|
+
var opts = args.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);
|
4961
|
+
if (!opts && !args.eol()) { return 'Invalid arguments'; }
|
4962
|
+
if (opts[1]) {
|
4963
|
+
ignoreCase = opts[1].indexOf('i') != -1;
|
4964
|
+
unique = opts[1].indexOf('u') != -1;
|
4965
|
+
var decimal = opts[1].indexOf('d') != -1 || opts[1].indexOf('n') != -1 && 1;
|
4966
|
+
var hex = opts[1].indexOf('x') != -1 && 1;
|
4967
|
+
var octal = opts[1].indexOf('o') != -1 && 1;
|
4624
4968
|
if (decimal + hex + octal > 1) { return 'Invalid arguments'; }
|
4625
4969
|
number = decimal && 'decimal' || hex && 'hex' || octal && 'octal';
|
4626
4970
|
}
|
4627
|
-
if (
|
4971
|
+
if (opts[2]) {
|
4972
|
+
pattern = new RegExp(opts[2].substr(1, opts[2].length - 2), ignoreCase ? 'i' : '');
|
4973
|
+
}
|
4628
4974
|
}
|
4629
4975
|
}
|
4630
4976
|
var err = parseArgs();
|
@@ -4638,14 +4984,18 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4638
4984
|
var curStart = Pos(lineStart, 0);
|
4639
4985
|
var curEnd = Pos(lineEnd, lineLength(cm, lineEnd));
|
4640
4986
|
var text = cm.getRange(curStart, curEnd).split('\n');
|
4641
|
-
var numberRegex =
|
4987
|
+
var numberRegex = pattern ? pattern :
|
4988
|
+
(number == 'decimal') ? /(-?)([\d]+)/ :
|
4642
4989
|
(number == 'hex') ? /(-?)(?:0x)?([0-9a-f]+)/i :
|
4643
4990
|
(number == 'octal') ? /([0-7]+)/ : null;
|
4644
4991
|
var radix = (number == 'decimal') ? 10 : (number == 'hex') ? 16 : (number == 'octal') ? 8 : null;
|
4645
4992
|
var numPart = [], textPart = [];
|
4646
|
-
if (number) {
|
4993
|
+
if (number || pattern) {
|
4647
4994
|
for (var i = 0; i < text.length; i++) {
|
4648
|
-
|
4995
|
+
var matchPart = pattern ? text[i].match(pattern) : null;
|
4996
|
+
if (matchPart && matchPart[0] != '') {
|
4997
|
+
numPart.push(matchPart);
|
4998
|
+
} else if (!pattern && numberRegex.exec(text[i])) {
|
4649
4999
|
numPart.push(text[i]);
|
4650
5000
|
} else {
|
4651
5001
|
textPart.push(text[i]);
|
@@ -4664,8 +5014,17 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4664
5014
|
bnum = parseInt((bnum[1] + bnum[2]).toLowerCase(), radix);
|
4665
5015
|
return anum - bnum;
|
4666
5016
|
}
|
4667
|
-
|
4668
|
-
|
5017
|
+
function comparePatternFn(a, b) {
|
5018
|
+
if (reverse) { var tmp; tmp = a; a = b; b = tmp; }
|
5019
|
+
if (ignoreCase) { a[0] = a[0].toLowerCase(); b[0] = b[0].toLowerCase(); }
|
5020
|
+
return (a[0] < b[0]) ? -1 : 1;
|
5021
|
+
}
|
5022
|
+
numPart.sort(pattern ? comparePatternFn : compareFn);
|
5023
|
+
if (pattern) {
|
5024
|
+
for (var i = 0; i < numPart.length; i++) {
|
5025
|
+
numPart[i] = numPart[i].input;
|
5026
|
+
}
|
5027
|
+
} else if (!number) { textPart.sort(compareFn); }
|
4669
5028
|
text = (!reverse) ? textPart.concat(numPart) : numPart.concat(textPart);
|
4670
5029
|
if (unique) { // Remove duplicate lines
|
4671
5030
|
var textOld = text;
|
@@ -4734,16 +5093,23 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4734
5093
|
'any other getSearchCursor implementation.');
|
4735
5094
|
}
|
4736
5095
|
var argString = params.argString;
|
4737
|
-
var tokens = argString ?
|
5096
|
+
var tokens = argString ? splitBySeparator(argString, argString[0]) : [];
|
4738
5097
|
var regexPart, replacePart = '', trailing, flagsPart, count;
|
4739
5098
|
var confirm = false; // Whether to confirm each replace.
|
4740
5099
|
var global = false; // True to replace all instances on a line, false to replace only 1.
|
4741
5100
|
if (tokens.length) {
|
4742
5101
|
regexPart = tokens[0];
|
5102
|
+
if (getOption('pcre') && regexPart !== '') {
|
5103
|
+
regexPart = new RegExp(regexPart).source; //normalize not escaped characters
|
5104
|
+
}
|
4743
5105
|
replacePart = tokens[1];
|
5106
|
+
if (regexPart && regexPart[regexPart.length - 1] === '$') {
|
5107
|
+
regexPart = regexPart.slice(0, regexPart.length - 1) + '\\n';
|
5108
|
+
replacePart = replacePart ? replacePart + '\n' : '\n';
|
5109
|
+
}
|
4744
5110
|
if (replacePart !== undefined) {
|
4745
5111
|
if (getOption('pcre')) {
|
4746
|
-
replacePart = unescapeRegexReplace(replacePart);
|
5112
|
+
replacePart = unescapeRegexReplace(replacePart.replace(/([^\\])&/g,"$1$$&"));
|
4747
5113
|
} else {
|
4748
5114
|
replacePart = translateRegexReplace(replacePart);
|
4749
5115
|
}
|
@@ -4769,7 +5135,11 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4769
5135
|
global = true;
|
4770
5136
|
flagsPart.replace('g', '');
|
4771
5137
|
}
|
4772
|
-
|
5138
|
+
if (getOption('pcre')) {
|
5139
|
+
regexPart = regexPart + '/' + flagsPart;
|
5140
|
+
} else {
|
5141
|
+
regexPart = regexPart.replace(/\//g, "\\/") + '/' + flagsPart;
|
5142
|
+
}
|
4773
5143
|
}
|
4774
5144
|
}
|
4775
5145
|
if (regexPart) {
|
@@ -4806,13 +5176,20 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4806
5176
|
write: function(cm) {
|
4807
5177
|
if (CodeMirror.commands.save) {
|
4808
5178
|
CodeMirror.commands.save(cm);
|
4809
|
-
} else {
|
5179
|
+
} else if (cm.save) {
|
4810
5180
|
cm.save();
|
4811
5181
|
}
|
4812
5182
|
},
|
4813
5183
|
nohlsearch: function(cm) {
|
4814
5184
|
clearSearchHighlight(cm);
|
4815
5185
|
},
|
5186
|
+
yank: function (cm) {
|
5187
|
+
var cur = copyCursor(cm.getCursor());
|
5188
|
+
var line = cur.line;
|
5189
|
+
var lineText = cm.getLine(line);
|
5190
|
+
vimGlobalState.registerController.pushText(
|
5191
|
+
'0', 'yank', lineText, true, true);
|
5192
|
+
},
|
4816
5193
|
delmarks: function(cm, params) {
|
4817
5194
|
if (!params.argString || !trim(params.argString)) {
|
4818
5195
|
showConfirm(cm, 'Argument required');
|
@@ -4961,21 +5338,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4961
5338
|
var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.');
|
4962
5339
|
var isPlaying = macroModeState.isPlaying;
|
4963
5340
|
var lastChange = macroModeState.lastInsertModeChanges;
|
4964
|
-
var text = [];
|
4965
5341
|
if (!isPlaying) {
|
4966
|
-
var selLength = lastChange.inVisualBlock ? vim.lastSelection.visualBlock.height : 1;
|
4967
|
-
var changes = lastChange.changes;
|
4968
|
-
var text = [];
|
4969
|
-
var i = 0;
|
4970
|
-
while (i < changes.length) {
|
4971
|
-
text.push(changes[i]);
|
4972
|
-
if (changes[i] instanceof InsertModeKey) {
|
4973
|
-
i++;
|
4974
|
-
} else {
|
4975
|
-
i+= selLength;
|
4976
|
-
}
|
4977
|
-
}
|
4978
|
-
lastChange.changes = text;
|
4979
5342
|
cm.off('change', onChange);
|
4980
5343
|
CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown);
|
4981
5344
|
}
|
@@ -4989,8 +5352,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
4989
5352
|
cm.setCursor(cm.getCursor().line, cm.getCursor().ch-1);
|
4990
5353
|
cm.setOption('keyMap', 'vim');
|
4991
5354
|
cm.setOption('disableInput', true);
|
4992
|
-
|
4993
|
-
lastChange.overwrite = cm.state.overwrite;
|
4994
5355
|
cm.toggleOverwrite(false); // exit replace mode if we were in it.
|
4995
5356
|
insertModeChangeRegister.setText(lastChange.changes.join(''));
|
4996
5357
|
CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"});
|
@@ -5014,13 +5375,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5014
5375
|
defineOption('insertModeEscKeysTimeout', 200, 'number');
|
5015
5376
|
|
5016
5377
|
CodeMirror.keyMap['vim-insert'] = {
|
5017
|
-
'Ctrl-N': 'autocomplete',
|
5018
|
-
'Ctrl-P': 'autocomplete',
|
5019
|
-
'Enter': function(cm) {
|
5020
|
-
var fn = CodeMirror.commands.newlineAndIndentContinueComment ||
|
5021
|
-
CodeMirror.commands.newlineAndIndent;
|
5022
|
-
fn(cm);
|
5023
|
-
},
|
5024
5378
|
fallthrough: ['default'],
|
5025
5379
|
attach: attachVimMap,
|
5026
5380
|
detach: detachVimMap,
|
@@ -5094,20 +5448,31 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5094
5448
|
register.pushSearchQuery(query);
|
5095
5449
|
}
|
5096
5450
|
}
|
5097
|
-
function onChange(
|
5451
|
+
function onChange(cm, changeObj) {
|
5098
5452
|
var macroModeState = vimGlobalState.macroModeState;
|
5099
5453
|
var lastChange = macroModeState.lastInsertModeChanges;
|
5100
5454
|
if (!macroModeState.isPlaying) {
|
5101
5455
|
while(changeObj) {
|
5102
5456
|
lastChange.expectCursorActivityForChange = true;
|
5103
|
-
if (
|
5457
|
+
if (lastChange.ignoreCount > 1) {
|
5458
|
+
lastChange.ignoreCount--;
|
5459
|
+
} else if (changeObj.origin == '+input' || changeObj.origin == 'paste'
|
5104
5460
|
|| changeObj.origin === undefined /* only in testing */) {
|
5461
|
+
var selectionCount = cm.listSelections().length;
|
5462
|
+
if (selectionCount > 1)
|
5463
|
+
lastChange.ignoreCount = selectionCount;
|
5105
5464
|
var text = changeObj.text.join('\n');
|
5106
5465
|
if (lastChange.maybeReset) {
|
5107
5466
|
lastChange.changes = [];
|
5108
5467
|
lastChange.maybeReset = false;
|
5109
5468
|
}
|
5110
|
-
|
5469
|
+
if (text) {
|
5470
|
+
if (cm.state.overwrite && !/\n/.test(text)) {
|
5471
|
+
lastChange.changes.push([text]);
|
5472
|
+
} else {
|
5473
|
+
lastChange.changes.push(text);
|
5474
|
+
}
|
5475
|
+
}
|
5111
5476
|
}
|
5112
5477
|
changeObj = changeObj.next;
|
5113
5478
|
}
|
@@ -5140,7 +5505,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5140
5505
|
}
|
5141
5506
|
vim.fakeCursor = cm.markText(from, to, {className: 'cm-animate-fat-cursor'});
|
5142
5507
|
}
|
5143
|
-
function handleExternalSelection(cm, vim) {
|
5508
|
+
function handleExternalSelection(cm, vim, keepHPos) {
|
5144
5509
|
var anchor = cm.getCursor('anchor');
|
5145
5510
|
var head = cm.getCursor('head');
|
5146
5511
|
if (vim.visualMode && !cm.somethingSelected()) {
|
@@ -5161,7 +5526,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5161
5526
|
};
|
5162
5527
|
updateMark(cm, vim, '<', cursorMin(head, anchor));
|
5163
5528
|
updateMark(cm, vim, '>', cursorMax(head, anchor));
|
5164
|
-
} else if (!vim.insertMode) {
|
5529
|
+
} else if (!vim.insertMode && !keepHPos) {
|
5165
5530
|
vim.lastHPos = cm.getCursor().ch;
|
5166
5531
|
}
|
5167
5532
|
}
|
@@ -5201,7 +5566,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5201
5566
|
if (macroModeState.lastInsertModeChanges.changes.length > 0) {
|
5202
5567
|
repeat = !vim.lastEditActionCommand ? 1 : repeat;
|
5203
5568
|
var changeObject = macroModeState.lastInsertModeChanges;
|
5204
|
-
repeatInsertModeChanges(cm, changeObject.changes, repeat
|
5569
|
+
repeatInsertModeChanges(cm, changeObject.changes, repeat);
|
5205
5570
|
}
|
5206
5571
|
}
|
5207
5572
|
vim.inputState = vim.lastEditInputState;
|
@@ -5223,7 +5588,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5223
5588
|
macroModeState.isPlaying = false;
|
5224
5589
|
}
|
5225
5590
|
|
5226
|
-
function repeatInsertModeChanges(cm, changes, repeat
|
5591
|
+
function repeatInsertModeChanges(cm, changes, repeat) {
|
5227
5592
|
function keyHandler(binding) {
|
5228
5593
|
if (typeof binding == 'string') {
|
5229
5594
|
CodeMirror.commands[binding](cm);
|
@@ -5233,34 +5598,31 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5233
5598
|
return true;
|
5234
5599
|
}
|
5235
5600
|
var head = cm.getCursor('head');
|
5236
|
-
var
|
5237
|
-
if (
|
5238
|
-
|
5239
|
-
var lastSel = vim.lastSelection;
|
5240
|
-
var offset = getOffset(lastSel.anchor, lastSel.head);
|
5241
|
-
selectForInsert(cm, head, offset.line + 1);
|
5601
|
+
var visualBlock = vimGlobalState.macroModeState.lastInsertModeChanges.visualBlock;
|
5602
|
+
if (visualBlock) {
|
5603
|
+
selectForInsert(cm, head, visualBlock + 1);
|
5242
5604
|
repeat = cm.listSelections().length;
|
5243
5605
|
cm.setCursor(head);
|
5244
5606
|
}
|
5245
5607
|
for (var i = 0; i < repeat; i++) {
|
5246
|
-
if (
|
5608
|
+
if (visualBlock) {
|
5247
5609
|
cm.setCursor(offsetCursor(head, i, 0));
|
5248
5610
|
}
|
5249
5611
|
for (var j = 0; j < changes.length; j++) {
|
5250
5612
|
var change = changes[j];
|
5251
5613
|
if (change instanceof InsertModeKey) {
|
5252
5614
|
CodeMirror.lookupKey(change.keyName, 'vim-insert', keyHandler);
|
5253
|
-
} else {
|
5615
|
+
} else if (typeof change == "string") {
|
5254
5616
|
var cur = cm.getCursor();
|
5255
|
-
|
5256
|
-
|
5257
|
-
|
5258
|
-
|
5259
|
-
cm.replaceRange(change,
|
5617
|
+
cm.replaceRange(change, cur, cur);
|
5618
|
+
} else {
|
5619
|
+
var start = cm.getCursor();
|
5620
|
+
var end = offsetCursor(start, 0, change[0].length);
|
5621
|
+
cm.replaceRange(change[0], start, end);
|
5260
5622
|
}
|
5261
5623
|
}
|
5262
5624
|
}
|
5263
|
-
if (
|
5625
|
+
if (visualBlock) {
|
5264
5626
|
cm.setCursor(offsetCursor(head, 0, 1));
|
5265
5627
|
}
|
5266
5628
|
}
|
@@ -5282,7 +5644,7 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5282
5644
|
var name = '';
|
5283
5645
|
if (e.ctrlKey) { name += 'C-'; }
|
5284
5646
|
if (e.altKey) { name += 'A-'; }
|
5285
|
-
if (e.shiftKey) { name += 'S-'; }
|
5647
|
+
if ((name || key.length > 1) && e.shiftKey) { name += 'S-'; }
|
5286
5648
|
|
5287
5649
|
name += key;
|
5288
5650
|
if (name.length > 1) { name = '<' + name + '>'; }
|
@@ -5316,15 +5678,17 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5316
5678
|
var isHandled = false;
|
5317
5679
|
var vim = Vim.maybeInitVimState_(cm);
|
5318
5680
|
var visualBlock = vim.visualBlock || vim.wasInVisualBlock;
|
5319
|
-
|
5681
|
+
|
5682
|
+
var wasMultiselect = cm.ace.inMultiSelectMode;
|
5683
|
+
if (vim.wasInVisualBlock && !wasMultiselect) {
|
5320
5684
|
vim.wasInVisualBlock = false;
|
5321
|
-
} else if (
|
5685
|
+
} else if (wasMultiselect && vim.visualBlock) {
|
5322
5686
|
vim.wasInVisualBlock = true;
|
5323
5687
|
}
|
5324
5688
|
|
5325
|
-
if (key == '<Esc>' && !vim.insertMode && !vim.visualMode &&
|
5689
|
+
if (key == '<Esc>' && !vim.insertMode && !vim.visualMode && wasMultiselect) {
|
5326
5690
|
cm.ace.exitMultiSelectMode();
|
5327
|
-
} else if (visualBlock || !
|
5691
|
+
} else if (visualBlock || !wasMultiselect || cm.ace.inVirtualSelectionMode) {
|
5328
5692
|
isHandled = Vim.handleKey(cm, key, origin);
|
5329
5693
|
} else {
|
5330
5694
|
var old = cloneVimState(vim);
|
@@ -5351,13 +5715,16 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5351
5715
|
cm.curOp.cursorActivity = false;
|
5352
5716
|
}, true);
|
5353
5717
|
}
|
5718
|
+
if (isHandled && !vim.visualMode && !vim.insert && vim.visualMode != cm.somethingSelected()) {
|
5719
|
+
handleExternalSelection(cm, vim, true);
|
5720
|
+
}
|
5354
5721
|
return isHandled;
|
5355
5722
|
}
|
5356
5723
|
exports.CodeMirror = CodeMirror;
|
5357
5724
|
var getVim = Vim.maybeInitVimState_;
|
5358
5725
|
exports.handler = {
|
5359
5726
|
$id: "ace/keyboard/vim",
|
5360
|
-
drawCursor: function(
|
5727
|
+
drawCursor: function(element, pixelPos, config, sel, session) {
|
5361
5728
|
var vim = this.state.vim || {};
|
5362
5729
|
var w = config.characterWidth;
|
5363
5730
|
var h = config.lineHeight;
|
@@ -5374,17 +5741,41 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5374
5741
|
h = h / 2;
|
5375
5742
|
top += h;
|
5376
5743
|
}
|
5377
|
-
|
5378
|
-
style
|
5379
|
-
style
|
5380
|
-
style.height = h + "px";
|
5744
|
+
dom.translate(element, left, top);
|
5745
|
+
dom.setStyle(element.style, "width", w + "px");
|
5746
|
+
dom.setStyle(element.style, "height", h + "px");
|
5381
5747
|
},
|
5382
5748
|
handleKeyboard: function(data, hashId, key, keyCode, e) {
|
5383
5749
|
var editor = data.editor;
|
5384
5750
|
var cm = editor.state.cm;
|
5385
5751
|
var vim = getVim(cm);
|
5386
5752
|
if (keyCode == -1) return;
|
5387
|
-
|
5753
|
+
if (!vim.insertMode) {
|
5754
|
+
if (hashId == -1) {
|
5755
|
+
if (key.charCodeAt(0) > 0xFF) {
|
5756
|
+
if (data.inputKey) {
|
5757
|
+
key = data.inputKey;
|
5758
|
+
if (key && data.inputHash == 4)
|
5759
|
+
key = key.toUpperCase();
|
5760
|
+
}
|
5761
|
+
}
|
5762
|
+
data.inputChar = key;
|
5763
|
+
}
|
5764
|
+
else if (hashId == 4 || hashId == 0) {
|
5765
|
+
if (data.inputKey == key && data.inputHash == hashId && data.inputChar) {
|
5766
|
+
key = data.inputChar;
|
5767
|
+
hashId = -1
|
5768
|
+
}
|
5769
|
+
else {
|
5770
|
+
data.inputChar = null;
|
5771
|
+
data.inputKey = key;
|
5772
|
+
data.inputHash = hashId;
|
5773
|
+
}
|
5774
|
+
}
|
5775
|
+
else {
|
5776
|
+
data.inputChar = data.inputKey = null;
|
5777
|
+
}
|
5778
|
+
}
|
5388
5779
|
if (key == "c" && hashId == 1) { // key == "ctrl-c"
|
5389
5780
|
if (!useragent.isMac && editor.getCopyText()) {
|
5390
5781
|
editor.once("copy", function() {
|
@@ -5392,11 +5783,12 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5392
5783
|
});
|
5393
5784
|
return {command: "null", passEvent: true};
|
5394
5785
|
}
|
5395
|
-
}
|
5396
|
-
|
5397
|
-
|
5398
|
-
|
5399
|
-
|
5786
|
+
}
|
5787
|
+
|
5788
|
+
if (key == "esc" && !vim.insertMode && !vim.visualMode && !cm.ace.inMultiSelectMode) {
|
5789
|
+
var searchState = getSearchState(cm);
|
5790
|
+
var overlay = searchState.getOverlay();
|
5791
|
+
if (overlay) cm.removeOverlay(overlay);
|
5400
5792
|
}
|
5401
5793
|
|
5402
5794
|
if (hashId == -1 || hashId & 1 || hashId === 0 && key.length > 1) {
|
@@ -5435,12 +5827,18 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5435
5827
|
});
|
5436
5828
|
cm.on("vim-mode-change", function() {
|
5437
5829
|
if (cm.virtualSelectionMode()) return;
|
5438
|
-
|
5830
|
+
updateInputMode();
|
5439
5831
|
cm._signal("changeStatus");
|
5440
5832
|
});
|
5441
|
-
|
5833
|
+
function updateInputMode() {
|
5834
|
+
var isIntsert = getVim(cm).insertMode;
|
5835
|
+
cm.ace.renderer.setStyle("normal-mode", !isIntsert);
|
5836
|
+
editor.textInput.setCommandMode(!isIntsert);
|
5837
|
+
editor.renderer.$keepTextAreaAtCursor = isIntsert;
|
5838
|
+
editor.renderer.$blockCursor = !isIntsert;
|
5839
|
+
}
|
5840
|
+
updateInputMode();
|
5442
5841
|
editor.renderer.$cursorLayer.drawCursor = this.drawCursor.bind(cm);
|
5443
|
-
this.updateMacCompositionHandlers(editor, true);
|
5444
5842
|
},
|
5445
5843
|
detach: function(editor) {
|
5446
5844
|
var cm = editor.state.cm;
|
@@ -5450,7 +5848,8 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5450
5848
|
editor.$vimModeHandler = null;
|
5451
5849
|
editor.renderer.$cursorLayer.drawCursor = null;
|
5452
5850
|
editor.renderer.setStyle("normal-mode", false);
|
5453
|
-
|
5851
|
+
editor.textInput.setCommandMode(false);
|
5852
|
+
editor.renderer.$keepTextAreaAtCursor = true;
|
5454
5853
|
},
|
5455
5854
|
getStatusText: function(editor) {
|
5456
5855
|
var cm = editor.state.cm;
|
@@ -5468,77 +5867,6 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5468
5867
|
if (vim.status)
|
5469
5868
|
status += (status ? " " : "") + vim.status;
|
5470
5869
|
return status;
|
5471
|
-
},
|
5472
|
-
handleMacRepeat: function(data, hashId, key) {
|
5473
|
-
if (hashId == -1) {
|
5474
|
-
data.inputChar = key;
|
5475
|
-
data.lastEvent = "input";
|
5476
|
-
} else if (data.inputChar && data.$lastHash == hashId && data.$lastKey == key) {
|
5477
|
-
if (data.lastEvent == "input") {
|
5478
|
-
data.lastEvent = "input1";
|
5479
|
-
} else if (data.lastEvent == "input1") {
|
5480
|
-
return true;
|
5481
|
-
}
|
5482
|
-
} else {
|
5483
|
-
data.$lastHash = hashId;
|
5484
|
-
data.$lastKey = key;
|
5485
|
-
data.lastEvent = "keypress";
|
5486
|
-
}
|
5487
|
-
},
|
5488
|
-
updateMacCompositionHandlers: function(editor, enable) {
|
5489
|
-
var onCompositionUpdateOverride = function(text) {
|
5490
|
-
var cm = editor.state.cm;
|
5491
|
-
var vim = getVim(cm);
|
5492
|
-
if (!vim.insertMode) {
|
5493
|
-
var el = this.textInput.getElement();
|
5494
|
-
el.blur();
|
5495
|
-
el.focus();
|
5496
|
-
el.value = text;
|
5497
|
-
} else {
|
5498
|
-
this.onCompositionUpdateOrig(text);
|
5499
|
-
}
|
5500
|
-
};
|
5501
|
-
var onCompositionStartOverride = function(text) {
|
5502
|
-
var cm = editor.state.cm;
|
5503
|
-
var vim = getVim(cm);
|
5504
|
-
if (!vim.insertMode) {
|
5505
|
-
this.onCompositionStartOrig(text);
|
5506
|
-
}
|
5507
|
-
};
|
5508
|
-
if (enable) {
|
5509
|
-
if (!editor.onCompositionUpdateOrig) {
|
5510
|
-
editor.onCompositionUpdateOrig = editor.onCompositionUpdate;
|
5511
|
-
editor.onCompositionUpdate = onCompositionUpdateOverride;
|
5512
|
-
editor.onCompositionStartOrig = editor.onCompositionStart;
|
5513
|
-
editor.onCompositionStart = onCompositionStartOverride;
|
5514
|
-
}
|
5515
|
-
} else {
|
5516
|
-
if (editor.onCompositionUpdateOrig) {
|
5517
|
-
editor.onCompositionUpdate = editor.onCompositionUpdateOrig;
|
5518
|
-
editor.onCompositionUpdateOrig = null;
|
5519
|
-
editor.onCompositionStart = editor.onCompositionStartOrig;
|
5520
|
-
editor.onCompositionStartOrig = null;
|
5521
|
-
}
|
5522
|
-
}
|
5523
|
-
}
|
5524
|
-
};
|
5525
|
-
var renderVirtualNumbers = {
|
5526
|
-
getText: function(session, row) {
|
5527
|
-
return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9? "\xb7" : "" ))) + "";
|
5528
|
-
},
|
5529
|
-
getWidth: function(session, lastLineNumber, config) {
|
5530
|
-
return session.getLength().toString().length * config.characterWidth;
|
5531
|
-
},
|
5532
|
-
update: function(e, editor) {
|
5533
|
-
editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);
|
5534
|
-
},
|
5535
|
-
attach: function(editor) {
|
5536
|
-
editor.renderer.$gutterLayer.$renderer = this;
|
5537
|
-
editor.on("changeSelection", this.update);
|
5538
|
-
},
|
5539
|
-
detach: function(editor) {
|
5540
|
-
editor.renderer.$gutterLayer.$renderer = null;
|
5541
|
-
editor.off("changeSelection", this.update);
|
5542
5870
|
}
|
5543
5871
|
};
|
5544
5872
|
Vim.defineOption({
|
@@ -5593,6 +5921,11 @@ dom.importCssString(".normal-mode .ace_cursor{\
|
|
5593
5921
|
exports.handler.defaultKeymap = defaultKeymap;
|
5594
5922
|
exports.handler.actions = actions;
|
5595
5923
|
exports.Vim = Vim;
|
5596
|
-
|
5597
|
-
|
5598
|
-
|
5924
|
+
}); (function() {
|
5925
|
+
window.require(["ace/keyboard/vim"], function(m) {
|
5926
|
+
if (typeof module == "object" && typeof exports == "object" && module) {
|
5927
|
+
module.exports = m;
|
5928
|
+
}
|
5929
|
+
});
|
5930
|
+
})();
|
5931
|
+
|