ace-rails-ap 4.2 → 4.3

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