ace-rails-ap 4.1.3 → 4.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|