ace-rails-ap 4.1.3 → 4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. checksums.yaml +5 -5
  2. data/.gitmodules +1 -1
  3. data/Gemfile +2 -3
  4. data/ace-rails-ap.gemspec +0 -2
  5. data/lib/ace/rails/version.rb +1 -1
  6. data/update.sh +1 -1
  7. data/vendor/assets/javascripts/ace/ace.js +5192 -3414
  8. data/vendor/assets/javascripts/ace/ext-beautify.js +281 -288
  9. data/vendor/assets/javascripts/ace/ext-code_lens.js +238 -0
  10. data/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js +6 -3
  11. data/vendor/assets/javascripts/ace/ext-emmet.js +353 -246
  12. data/vendor/assets/javascripts/ace/ext-error_marker.js +6 -3
  13. data/vendor/assets/javascripts/ace/ext-keybinding_menu.js +61 -38
  14. data/vendor/assets/javascripts/ace/ext-language_tools.js +532 -343
  15. data/vendor/assets/javascripts/ace/ext-linking.js +8 -5
  16. data/vendor/assets/javascripts/ace/ext-modelist.js +46 -12
  17. data/vendor/assets/javascripts/ace/ext-options.js +793 -0
  18. data/vendor/assets/javascripts/ace/ext-prompt.js +2783 -0
  19. data/vendor/assets/javascripts/ace/ext-rtl.js +122 -0
  20. data/vendor/assets/javascripts/ace/ext-searchbox.js +45 -40
  21. data/vendor/assets/javascripts/ace/ext-settings_menu.js +520 -369
  22. data/vendor/assets/javascripts/ace/ext-spellcheck.js +6 -4
  23. data/vendor/assets/javascripts/ace/ext-split.js +7 -46
  24. data/vendor/assets/javascripts/ace/ext-static_highlight.js +90 -22
  25. data/vendor/assets/javascripts/ace/ext-statusbar.js +9 -6
  26. data/vendor/assets/javascripts/ace/ext-textarea.js +21 -18
  27. data/vendor/assets/javascripts/ace/ext-themelist.js +10 -6
  28. data/vendor/assets/javascripts/ace/ext-whitespace.js +13 -6
  29. data/vendor/assets/javascripts/ace/keybinding-emacs.js +49 -61
  30. data/vendor/assets/javascripts/ace/keybinding-sublime.js +422 -0
  31. data/vendor/assets/javascripts/ace/keybinding-vim.js +620 -287
  32. data/vendor/assets/javascripts/ace/keybinding-vscode.js +262 -0
  33. data/vendor/assets/javascripts/ace/mode-abap.js +10 -3
  34. data/vendor/assets/javascripts/ace/mode-abc.js +14 -4
  35. data/vendor/assets/javascripts/ace/mode-actionscript.js +13 -5
  36. data/vendor/assets/javascripts/ace/mode-ada.js +54 -4
  37. data/vendor/assets/javascripts/ace/mode-alda.js +311 -0
  38. data/vendor/assets/javascripts/ace/mode-apache_conf.js +12 -5
  39. data/vendor/assets/javascripts/ace/mode-apex.js +457 -0
  40. data/vendor/assets/javascripts/ace/mode-applescript.js +11 -4
  41. data/vendor/assets/javascripts/ace/mode-aql.js +102 -0
  42. data/vendor/assets/javascripts/ace/mode-asciidoc.js +9 -2
  43. data/vendor/assets/javascripts/ace/mode-asl.js +422 -0
  44. data/vendor/assets/javascripts/ace/mode-assembly_x86.js +11 -4
  45. data/vendor/assets/javascripts/ace/mode-autohotkey.js +17 -8
  46. data/vendor/assets/javascripts/ace/mode-batchfile.js +12 -5
  47. data/vendor/assets/javascripts/ace/mode-c9search.js +9 -3
  48. data/vendor/assets/javascripts/ace/mode-c_cpp.js +23 -7
  49. data/vendor/assets/javascripts/ace/mode-cirru.js +11 -4
  50. data/vendor/assets/javascripts/ace/mode-clojure.js +9 -1
  51. data/vendor/assets/javascripts/ace/mode-cobol.js +8 -1
  52. data/vendor/assets/javascripts/ace/mode-coffee.js +12 -4
  53. data/vendor/assets/javascripts/ace/mode-coldfusion.js +163 -134
  54. data/vendor/assets/javascripts/ace/mode-crystal.js +642 -0
  55. data/vendor/assets/javascripts/ace/mode-csharp.js +13 -6
  56. data/vendor/assets/javascripts/ace/mode-csound_document.js +4036 -0
  57. data/vendor/assets/javascripts/ace/mode-csound_orchestra.js +2966 -0
  58. data/vendor/assets/javascripts/ace/mode-csound_score.js +462 -0
  59. data/vendor/assets/javascripts/ace/mode-csp.js +59 -0
  60. data/vendor/assets/javascripts/ace/mode-css.js +48 -27
  61. data/vendor/assets/javascripts/ace/mode-curly.js +162 -133
  62. data/vendor/assets/javascripts/ace/mode-d.js +12 -5
  63. data/vendor/assets/javascripts/ace/mode-dart.js +46 -20
  64. data/vendor/assets/javascripts/ace/mode-diff.js +11 -3
  65. data/vendor/assets/javascripts/ace/mode-django.js +164 -134
  66. data/vendor/assets/javascripts/ace/mode-dockerfile.js +12 -4
  67. data/vendor/assets/javascripts/ace/mode-dot.js +11 -4
  68. data/vendor/assets/javascripts/ace/mode-drools.js +46 -5
  69. data/vendor/assets/javascripts/ace/mode-edifact.js +166 -0
  70. data/vendor/assets/javascripts/ace/mode-eiffel.js +8 -1
  71. data/vendor/assets/javascripts/ace/mode-ejs.js +832 -298
  72. data/vendor/assets/javascripts/ace/mode-elixir.js +11 -4
  73. data/vendor/assets/javascripts/ace/mode-elm.js +10 -3
  74. data/vendor/assets/javascripts/ace/mode-erlang.js +13 -5
  75. data/vendor/assets/javascripts/ace/mode-forth.js +12 -5
  76. data/vendor/assets/javascripts/ace/mode-fortran.js +10 -3
  77. data/vendor/assets/javascripts/ace/mode-fsharp.js +316 -0
  78. data/vendor/assets/javascripts/ace/{mode-mipsassembler.js → mode-fsl.js} +91 -28
  79. data/vendor/assets/javascripts/ace/mode-ftl.js +23 -12
  80. data/vendor/assets/javascripts/ace/mode-gcode.js +8 -1
  81. data/vendor/assets/javascripts/ace/mode-gherkin.js +9 -4
  82. data/vendor/assets/javascripts/ace/mode-gitignore.js +8 -1
  83. data/vendor/assets/javascripts/ace/mode-glsl.js +24 -8
  84. data/vendor/assets/javascripts/ace/mode-gobstones.js +267 -99
  85. data/vendor/assets/javascripts/ace/mode-golang.js +11 -4
  86. data/vendor/assets/javascripts/ace/mode-graphqlschema.js +11 -3
  87. data/vendor/assets/javascripts/ace/mode-groovy.js +14 -5
  88. data/vendor/assets/javascripts/ace/mode-haml.js +442 -116
  89. data/vendor/assets/javascripts/ace/mode-handlebars.js +162 -133
  90. data/vendor/assets/javascripts/ace/mode-haskell.js +14 -6
  91. data/vendor/assets/javascripts/ace/mode-haskell_cabal.js +8 -1
  92. data/vendor/assets/javascripts/ace/mode-haxe.js +11 -4
  93. data/vendor/assets/javascripts/ace/mode-hjson.js +13 -6
  94. data/vendor/assets/javascripts/ace/mode-html.js +162 -133
  95. data/vendor/assets/javascripts/ace/mode-html_elixir.js +165 -136
  96. data/vendor/assets/javascripts/ace/mode-html_ruby.js +832 -298
  97. data/vendor/assets/javascripts/ace/mode-ini.js +8 -1
  98. data/vendor/assets/javascripts/ace/mode-io.js +14 -12
  99. data/vendor/assets/javascripts/ace/mode-jack.js +10 -3
  100. data/vendor/assets/javascripts/ace/mode-jade.js +272 -376
  101. data/vendor/assets/javascripts/ace/mode-java.js +110 -7
  102. data/vendor/assets/javascripts/ace/mode-javascript.js +14 -5
  103. data/vendor/assets/javascripts/ace/mode-json.js +13 -3
  104. data/vendor/assets/javascripts/ace/mode-json5.js +360 -0
  105. data/vendor/assets/javascripts/ace/mode-jsoniq.js +25 -12
  106. data/vendor/assets/javascripts/ace/mode-jsp.js +60 -15
  107. data/vendor/assets/javascripts/ace/mode-jssm.js +325 -0
  108. data/vendor/assets/javascripts/ace/mode-jsx.js +11 -4
  109. data/vendor/assets/javascripts/ace/mode-julia.js +12 -5
  110. data/vendor/assets/javascripts/ace/mode-kotlin.js +18 -7
  111. data/vendor/assets/javascripts/ace/mode-latex.js +87 -15
  112. data/vendor/assets/javascripts/ace/mode-less.js +47 -27
  113. data/vendor/assets/javascripts/ace/mode-liquid.js +2030 -472
  114. data/vendor/assets/javascripts/ace/mode-lisp.js +9 -2
  115. data/vendor/assets/javascripts/ace/mode-livescript.js +10 -2
  116. data/vendor/assets/javascripts/ace/mode-logiql.js +10 -3
  117. data/vendor/assets/javascripts/ace/mode-logtalk.js +352 -0
  118. data/vendor/assets/javascripts/ace/mode-lsl.js +11 -3
  119. data/vendor/assets/javascripts/ace/mode-lua.js +40 -12
  120. data/vendor/assets/javascripts/ace/mode-luapage.js +194 -144
  121. data/vendor/assets/javascripts/ace/mode-lucene.js +106 -22
  122. data/vendor/assets/javascripts/ace/mode-makefile.js +11 -3
  123. data/vendor/assets/javascripts/ace/mode-markdown.js +530 -201
  124. data/vendor/assets/javascripts/ace/mode-mask.js +101 -84
  125. data/vendor/assets/javascripts/ace/mode-matlab.js +8 -1
  126. data/vendor/assets/javascripts/ace/mode-maze.js +11 -3
  127. data/vendor/assets/javascripts/ace/mode-mediawiki.js +592 -0
  128. data/vendor/assets/javascripts/ace/mode-mel.js +11 -4
  129. data/vendor/assets/javascripts/ace/mode-mixal.js +122 -0
  130. data/vendor/assets/javascripts/ace/mode-mushcode.js +9 -2
  131. data/vendor/assets/javascripts/ace/mode-mysql.js +11 -4
  132. data/vendor/assets/javascripts/ace/mode-nginx.js +298 -0
  133. data/vendor/assets/javascripts/ace/mode-nim.js +363 -0
  134. data/vendor/assets/javascripts/ace/mode-nix.js +23 -7
  135. data/vendor/assets/javascripts/ace/mode-nsis.js +15 -8
  136. data/vendor/assets/javascripts/ace/mode-nunjucks.js +2698 -0
  137. data/vendor/assets/javascripts/ace/mode-objectivec.js +23 -8
  138. data/vendor/assets/javascripts/ace/mode-ocaml.js +8 -1
  139. data/vendor/assets/javascripts/ace/mode-pascal.js +92 -67
  140. data/vendor/assets/javascripts/ace/mode-perl.js +11 -3
  141. data/vendor/assets/javascripts/ace/mode-perl6.js +593 -0
  142. data/vendor/assets/javascripts/ace/mode-pgsql.js +314 -71
  143. data/vendor/assets/javascripts/ace/mode-php.js +1042 -995
  144. data/vendor/assets/javascripts/ace/mode-php_laravel_blade.js +13104 -0
  145. data/vendor/assets/javascripts/ace/mode-pig.js +13 -6
  146. data/vendor/assets/javascripts/ace/mode-plain_text.js +8 -1
  147. data/vendor/assets/javascripts/ace/mode-powershell.js +10 -3
  148. data/vendor/assets/javascripts/ace/mode-praat.js +17 -7
  149. data/vendor/assets/javascripts/ace/mode-prisma.js +489 -0
  150. data/vendor/assets/javascripts/ace/mode-prolog.js +12 -5
  151. data/vendor/assets/javascripts/ace/mode-properties.js +8 -1
  152. data/vendor/assets/javascripts/ace/mode-protobuf.js +23 -7
  153. data/vendor/assets/javascripts/ace/mode-puppet.js +368 -0
  154. data/vendor/assets/javascripts/ace/mode-python.js +306 -63
  155. data/vendor/assets/javascripts/ace/mode-qml.js +381 -0
  156. data/vendor/assets/javascripts/ace/mode-r.js +15 -4
  157. data/vendor/assets/javascripts/ace/mode-razor.js +166 -136
  158. data/vendor/assets/javascripts/ace/mode-rdoc.js +41 -3
  159. data/vendor/assets/javascripts/ace/mode-red.js +450 -0
  160. data/vendor/assets/javascripts/ace/mode-redshift.js +360 -0
  161. data/vendor/assets/javascripts/ace/mode-rhtml.js +162 -133
  162. data/vendor/assets/javascripts/ace/mode-rst.js +9 -1
  163. data/vendor/assets/javascripts/ace/mode-ruby.js +678 -166
  164. data/vendor/assets/javascripts/ace/mode-rust.js +16 -7
  165. data/vendor/assets/javascripts/ace/mode-sass.js +211 -116
  166. data/vendor/assets/javascripts/ace/mode-scad.js +11 -4
  167. data/vendor/assets/javascripts/ace/mode-scala.js +14 -5
  168. data/vendor/assets/javascripts/ace/mode-scheme.js +9 -2
  169. data/vendor/assets/javascripts/ace/mode-scss.js +412 -125
  170. data/vendor/assets/javascripts/ace/mode-sh.js +12 -4
  171. data/vendor/assets/javascripts/ace/mode-sjs.js +16 -7
  172. data/vendor/assets/javascripts/ace/mode-slim.js +5240 -0
  173. data/vendor/assets/javascripts/ace/mode-smarty.js +164 -135
  174. data/vendor/assets/javascripts/ace/mode-snippets.js +24 -16
  175. data/vendor/assets/javascripts/ace/mode-soy_template.js +164 -135
  176. data/vendor/assets/javascripts/ace/mode-space.js +8 -1
  177. data/vendor/assets/javascripts/ace/mode-sparql.js +13 -6
  178. data/vendor/assets/javascripts/ace/mode-sql.js +10 -2
  179. data/vendor/assets/javascripts/ace/mode-sqlserver.js +13 -5
  180. data/vendor/assets/javascripts/ace/mode-stylus.js +20 -10
  181. data/vendor/assets/javascripts/ace/mode-svg.js +27 -13
  182. data/vendor/assets/javascripts/ace/mode-swift.js +21 -8
  183. data/vendor/assets/javascripts/ace/mode-tcl.js +14 -3
  184. data/vendor/assets/javascripts/ace/mode-terraform.js +400 -0
  185. data/vendor/assets/javascripts/ace/mode-tex.js +9 -1
  186. data/vendor/assets/javascripts/ace/mode-text.js +8 -0
  187. data/vendor/assets/javascripts/ace/mode-textile.js +9 -1
  188. data/vendor/assets/javascripts/ace/mode-toml.js +9 -2
  189. data/vendor/assets/javascripts/ace/mode-tsx.js +28 -31
  190. data/vendor/assets/javascripts/ace/mode-turtle.js +13 -6
  191. data/vendor/assets/javascripts/ace/mode-twig.js +163 -134
  192. data/vendor/assets/javascripts/ace/mode-typescript.js +28 -31
  193. data/vendor/assets/javascripts/ace/mode-vala.js +14 -6
  194. data/vendor/assets/javascripts/ace/mode-vbscript.js +453 -17
  195. data/vendor/assets/javascripts/ace/mode-velocity.js +163 -133
  196. data/vendor/assets/javascripts/ace/mode-verilog.js +19 -5
  197. data/vendor/assets/javascripts/ace/mode-vhdl.js +13 -7
  198. data/vendor/assets/javascripts/ace/mode-visualforce.js +2640 -0
  199. data/vendor/assets/javascripts/ace/mode-wollok.js +17 -8
  200. data/vendor/assets/javascripts/ace/mode-xml.js +21 -9
  201. data/vendor/assets/javascripts/ace/mode-xquery.js +25 -12
  202. data/vendor/assets/javascripts/ace/mode-yaml.js +59 -18
  203. data/vendor/assets/javascripts/ace/mode-zeek.js +539 -0
  204. data/vendor/assets/javascripts/ace/snippets/abap.js +8 -6
  205. data/vendor/assets/javascripts/ace/snippets/abc.js +8 -1
  206. data/vendor/assets/javascripts/ace/snippets/actionscript.js +8 -1
  207. data/vendor/assets/javascripts/ace/snippets/ada.js +8 -6
  208. data/vendor/assets/javascripts/ace/snippets/alda.js +9 -0
  209. data/vendor/assets/javascripts/ace/snippets/apache_conf.js +8 -6
  210. data/vendor/assets/javascripts/ace/snippets/apex.js +9 -0
  211. data/vendor/assets/javascripts/ace/snippets/applescript.js +8 -6
  212. data/vendor/assets/javascripts/ace/snippets/aql.js +9 -0
  213. data/vendor/assets/javascripts/ace/snippets/asciidoc.js +8 -6
  214. data/vendor/assets/javascripts/ace/snippets/asl.js +9 -0
  215. data/vendor/assets/javascripts/ace/snippets/assembly_x86.js +8 -6
  216. data/vendor/assets/javascripts/ace/snippets/autohotkey.js +8 -6
  217. data/vendor/assets/javascripts/ace/snippets/batchfile.js +8 -6
  218. data/vendor/assets/javascripts/ace/snippets/c9search.js +8 -6
  219. data/vendor/assets/javascripts/ace/snippets/c_cpp.js +8 -1
  220. data/vendor/assets/javascripts/ace/snippets/cirru.js +8 -6
  221. data/vendor/assets/javascripts/ace/snippets/clojure.js +8 -1
  222. data/vendor/assets/javascripts/ace/snippets/cobol.js +8 -6
  223. data/vendor/assets/javascripts/ace/snippets/coffee.js +8 -1
  224. data/vendor/assets/javascripts/ace/snippets/coldfusion.js +8 -6
  225. data/vendor/assets/javascripts/ace/snippets/crystal.js +9 -0
  226. data/vendor/assets/javascripts/ace/snippets/csharp.js +8 -6
  227. data/vendor/assets/javascripts/ace/snippets/csound_document.js +24 -0
  228. data/vendor/assets/javascripts/ace/snippets/csound_orchestra.js +61 -0
  229. data/vendor/assets/javascripts/ace/snippets/csound_score.js +9 -0
  230. data/vendor/assets/javascripts/ace/snippets/csp.js +9 -0
  231. data/vendor/assets/javascripts/ace/snippets/css.js +8 -1
  232. data/vendor/assets/javascripts/ace/snippets/curly.js +8 -6
  233. data/vendor/assets/javascripts/ace/snippets/d.js +8 -6
  234. data/vendor/assets/javascripts/ace/snippets/dart.js +8 -1
  235. data/vendor/assets/javascripts/ace/snippets/diff.js +8 -1
  236. data/vendor/assets/javascripts/ace/snippets/django.js +8 -1
  237. data/vendor/assets/javascripts/ace/snippets/dockerfile.js +8 -6
  238. data/vendor/assets/javascripts/ace/snippets/dot.js +8 -6
  239. data/vendor/assets/javascripts/ace/snippets/drools.js +8 -1
  240. data/vendor/assets/javascripts/ace/snippets/edifact.js +254 -0
  241. data/vendor/assets/javascripts/ace/snippets/eiffel.js +8 -6
  242. data/vendor/assets/javascripts/ace/snippets/ejs.js +8 -6
  243. data/vendor/assets/javascripts/ace/snippets/elixir.js +8 -6
  244. data/vendor/assets/javascripts/ace/snippets/elm.js +8 -6
  245. data/vendor/assets/javascripts/ace/snippets/erlang.js +8 -1
  246. data/vendor/assets/javascripts/ace/snippets/forth.js +8 -6
  247. data/vendor/assets/javascripts/ace/snippets/fortran.js +8 -6
  248. data/vendor/assets/javascripts/ace/snippets/fsharp.js +9 -0
  249. data/vendor/assets/javascripts/ace/snippets/fsl.js +14 -0
  250. data/vendor/assets/javascripts/ace/snippets/ftl.js +8 -6
  251. data/vendor/assets/javascripts/ace/snippets/gcode.js +8 -6
  252. data/vendor/assets/javascripts/ace/snippets/gherkin.js +8 -6
  253. data/vendor/assets/javascripts/ace/snippets/gitignore.js +8 -6
  254. data/vendor/assets/javascripts/ace/snippets/glsl.js +8 -6
  255. data/vendor/assets/javascripts/ace/snippets/gobstones.js +1701 -24
  256. data/vendor/assets/javascripts/ace/snippets/golang.js +8 -6
  257. data/vendor/assets/javascripts/ace/snippets/graphqlschema.js +8 -1
  258. data/vendor/assets/javascripts/ace/snippets/groovy.js +8 -6
  259. data/vendor/assets/javascripts/ace/snippets/haml.js +8 -1
  260. data/vendor/assets/javascripts/ace/snippets/handlebars.js +8 -6
  261. data/vendor/assets/javascripts/ace/snippets/haskell.js +8 -1
  262. data/vendor/assets/javascripts/ace/snippets/haskell_cabal.js +8 -6
  263. data/vendor/assets/javascripts/ace/snippets/haxe.js +8 -6
  264. data/vendor/assets/javascripts/ace/snippets/hjson.js +8 -6
  265. data/vendor/assets/javascripts/ace/snippets/html.js +36 -2
  266. data/vendor/assets/javascripts/ace/snippets/html_elixir.js +8 -6
  267. data/vendor/assets/javascripts/ace/snippets/html_ruby.js +8 -6
  268. data/vendor/assets/javascripts/ace/snippets/ini.js +8 -6
  269. data/vendor/assets/javascripts/ace/snippets/io.js +8 -1
  270. data/vendor/assets/javascripts/ace/snippets/jack.js +8 -6
  271. data/vendor/assets/javascripts/ace/snippets/jade.js +8 -6
  272. data/vendor/assets/javascripts/ace/snippets/java.js +8 -1
  273. data/vendor/assets/javascripts/ace/snippets/javascript.js +8 -1
  274. data/vendor/assets/javascripts/ace/snippets/json.js +8 -6
  275. data/vendor/assets/javascripts/ace/snippets/json5.js +9 -0
  276. data/vendor/assets/javascripts/ace/snippets/jsoniq.js +8 -1
  277. data/vendor/assets/javascripts/ace/snippets/jsp.js +8 -1
  278. data/vendor/assets/javascripts/ace/snippets/jssm.js +9 -0
  279. data/vendor/assets/javascripts/ace/snippets/jsx.js +8 -6
  280. data/vendor/assets/javascripts/ace/snippets/julia.js +8 -6
  281. data/vendor/assets/javascripts/ace/snippets/kotlin.js +8 -6
  282. data/vendor/assets/javascripts/ace/snippets/latex.js +8 -6
  283. data/vendor/assets/javascripts/ace/snippets/less.js +8 -6
  284. data/vendor/assets/javascripts/ace/snippets/liquid.js +890 -2
  285. data/vendor/assets/javascripts/ace/snippets/lisp.js +8 -6
  286. data/vendor/assets/javascripts/ace/snippets/livescript.js +8 -6
  287. data/vendor/assets/javascripts/ace/snippets/logiql.js +8 -6
  288. data/vendor/assets/javascripts/ace/snippets/logtalk.js +9 -0
  289. data/vendor/assets/javascripts/ace/snippets/lsl.js +8 -1
  290. data/vendor/assets/javascripts/ace/snippets/lua.js +8 -1
  291. data/vendor/assets/javascripts/ace/snippets/luapage.js +8 -6
  292. data/vendor/assets/javascripts/ace/snippets/lucene.js +8 -6
  293. data/vendor/assets/javascripts/ace/snippets/makefile.js +8 -1
  294. data/vendor/assets/javascripts/ace/snippets/markdown.js +8 -1
  295. data/vendor/assets/javascripts/ace/snippets/mask.js +8 -6
  296. data/vendor/assets/javascripts/ace/snippets/matlab.js +8 -6
  297. data/vendor/assets/javascripts/ace/snippets/maze.js +8 -1
  298. data/vendor/assets/javascripts/ace/snippets/mediawiki.js +9 -0
  299. data/vendor/assets/javascripts/ace/snippets/mel.js +8 -6
  300. data/vendor/assets/javascripts/ace/snippets/mixal.js +9 -0
  301. data/vendor/assets/javascripts/ace/snippets/mushcode.js +8 -6
  302. data/vendor/assets/javascripts/ace/snippets/mysql.js +8 -6
  303. data/vendor/assets/javascripts/ace/snippets/nginx.js +9 -0
  304. data/vendor/assets/javascripts/ace/snippets/nim.js +9 -0
  305. data/vendor/assets/javascripts/ace/snippets/nix.js +8 -6
  306. data/vendor/assets/javascripts/ace/snippets/nsis.js +8 -6
  307. data/vendor/assets/javascripts/ace/snippets/nunjucks.js +9 -0
  308. data/vendor/assets/javascripts/ace/snippets/objectivec.js +8 -6
  309. data/vendor/assets/javascripts/ace/snippets/ocaml.js +8 -6
  310. data/vendor/assets/javascripts/ace/snippets/pascal.js +8 -6
  311. data/vendor/assets/javascripts/ace/snippets/perl.js +8 -1
  312. data/vendor/assets/javascripts/ace/snippets/perl6.js +9 -0
  313. data/vendor/assets/javascripts/ace/snippets/pgsql.js +8 -6
  314. data/vendor/assets/javascripts/ace/snippets/php.js +49 -36
  315. data/vendor/assets/javascripts/ace/snippets/php_laravel_blade.js +9 -0
  316. data/vendor/assets/javascripts/ace/snippets/pig.js +8 -6
  317. data/vendor/assets/javascripts/ace/snippets/plain_text.js +8 -6
  318. data/vendor/assets/javascripts/ace/snippets/powershell.js +8 -6
  319. data/vendor/assets/javascripts/ace/snippets/praat.js +8 -6
  320. data/vendor/assets/javascripts/ace/snippets/prisma.js +9 -0
  321. data/vendor/assets/javascripts/ace/snippets/prolog.js +8 -6
  322. data/vendor/assets/javascripts/ace/snippets/properties.js +8 -6
  323. data/vendor/assets/javascripts/ace/snippets/protobuf.js +8 -6
  324. data/vendor/assets/javascripts/ace/snippets/puppet.js +9 -0
  325. data/vendor/assets/javascripts/ace/snippets/python.js +8 -1
  326. data/vendor/assets/javascripts/ace/snippets/qml.js +9 -0
  327. data/vendor/assets/javascripts/ace/snippets/r.js +8 -1
  328. data/vendor/assets/javascripts/ace/snippets/razor.js +8 -1
  329. data/vendor/assets/javascripts/ace/snippets/rdoc.js +8 -6
  330. data/vendor/assets/javascripts/ace/snippets/red.js +9 -0
  331. data/vendor/assets/javascripts/ace/snippets/redshift.js +9 -0
  332. data/vendor/assets/javascripts/ace/snippets/rhtml.js +8 -6
  333. data/vendor/assets/javascripts/ace/snippets/rst.js +8 -1
  334. data/vendor/assets/javascripts/ace/snippets/ruby.js +8 -1
  335. data/vendor/assets/javascripts/ace/snippets/rust.js +8 -6
  336. data/vendor/assets/javascripts/ace/snippets/sass.js +8 -6
  337. data/vendor/assets/javascripts/ace/snippets/scad.js +8 -6
  338. data/vendor/assets/javascripts/ace/snippets/scala.js +8 -6
  339. data/vendor/assets/javascripts/ace/snippets/scheme.js +8 -6
  340. data/vendor/assets/javascripts/ace/snippets/scss.js +8 -6
  341. data/vendor/assets/javascripts/ace/snippets/sh.js +8 -1
  342. data/vendor/assets/javascripts/ace/snippets/sjs.js +8 -6
  343. data/vendor/assets/javascripts/ace/snippets/slim.js +9 -0
  344. data/vendor/assets/javascripts/ace/snippets/smarty.js +8 -6
  345. data/vendor/assets/javascripts/ace/snippets/snippets.js +8 -1
  346. data/vendor/assets/javascripts/ace/snippets/soy_template.js +8 -6
  347. data/vendor/assets/javascripts/ace/snippets/space.js +8 -6
  348. data/vendor/assets/javascripts/ace/snippets/sparql.js +8 -6
  349. data/vendor/assets/javascripts/ace/snippets/sql.js +8 -1
  350. data/vendor/assets/javascripts/ace/snippets/sqlserver.js +8 -1
  351. data/vendor/assets/javascripts/ace/snippets/stylus.js +8 -6
  352. data/vendor/assets/javascripts/ace/snippets/svg.js +8 -6
  353. data/vendor/assets/javascripts/ace/snippets/swift.js +8 -6
  354. data/vendor/assets/javascripts/ace/snippets/tcl.js +8 -1
  355. data/vendor/assets/javascripts/ace/snippets/terraform.js +9 -0
  356. data/vendor/assets/javascripts/ace/snippets/tex.js +8 -1
  357. data/vendor/assets/javascripts/ace/snippets/text.js +8 -6
  358. data/vendor/assets/javascripts/ace/snippets/textile.js +8 -1
  359. data/vendor/assets/javascripts/ace/snippets/toml.js +8 -6
  360. data/vendor/assets/javascripts/ace/snippets/tsx.js +8 -6
  361. data/vendor/assets/javascripts/ace/snippets/turtle.js +8 -6
  362. data/vendor/assets/javascripts/ace/snippets/twig.js +8 -6
  363. data/vendor/assets/javascripts/ace/snippets/typescript.js +8 -6
  364. data/vendor/assets/javascripts/ace/snippets/vala.js +8 -1
  365. data/vendor/assets/javascripts/ace/snippets/vbscript.js +8 -6
  366. data/vendor/assets/javascripts/ace/snippets/velocity.js +8 -1
  367. data/vendor/assets/javascripts/ace/snippets/verilog.js +8 -6
  368. data/vendor/assets/javascripts/ace/snippets/vhdl.js +8 -6
  369. data/vendor/assets/javascripts/ace/snippets/visualforce.js +9 -0
  370. data/vendor/assets/javascripts/ace/snippets/wollok.js +8 -1
  371. data/vendor/assets/javascripts/ace/snippets/xml.js +8 -6
  372. data/vendor/assets/javascripts/ace/snippets/xquery.js +8 -1
  373. data/vendor/assets/javascripts/ace/snippets/yaml.js +8 -6
  374. data/vendor/assets/javascripts/ace/snippets/zeek.js +9 -0
  375. data/vendor/assets/javascripts/ace/theme-ambiance.js +11 -8
  376. data/vendor/assets/javascripts/ace/theme-chaos.js +9 -2
  377. data/vendor/assets/javascripts/ace/theme-chrome.js +8 -1
  378. data/vendor/assets/javascripts/ace/theme-clouds.js +8 -1
  379. data/vendor/assets/javascripts/ace/theme-clouds_midnight.js +8 -1
  380. data/vendor/assets/javascripts/ace/theme-cobalt.js +8 -1
  381. data/vendor/assets/javascripts/ace/theme-crimson_editor.js +8 -1
  382. data/vendor/assets/javascripts/ace/theme-dawn.js +8 -1
  383. data/vendor/assets/javascripts/ace/theme-dracula.js +135 -0
  384. data/vendor/assets/javascripts/ace/theme-dreamweaver.js +8 -1
  385. data/vendor/assets/javascripts/ace/theme-eclipse.js +8 -1
  386. data/vendor/assets/javascripts/ace/theme-github.js +8 -1
  387. data/vendor/assets/javascripts/ace/theme-gob.js +8 -1
  388. data/vendor/assets/javascripts/ace/theme-gruvbox.js +8 -1
  389. data/vendor/assets/javascripts/ace/theme-idle_fingers.js +8 -1
  390. data/vendor/assets/javascripts/ace/theme-iplastic.js +8 -1
  391. data/vendor/assets/javascripts/ace/theme-katzenmilch.js +8 -1
  392. data/vendor/assets/javascripts/ace/theme-kr_theme.js +8 -1
  393. data/vendor/assets/javascripts/ace/theme-kuroir.js +8 -1
  394. data/vendor/assets/javascripts/ace/theme-merbivore.js +8 -1
  395. data/vendor/assets/javascripts/ace/theme-merbivore_soft.js +8 -1
  396. data/vendor/assets/javascripts/ace/theme-mono_industrial.js +8 -1
  397. data/vendor/assets/javascripts/ace/theme-monokai.js +8 -1
  398. data/vendor/assets/javascripts/ace/theme-nord_dark.js +102 -0
  399. data/vendor/assets/javascripts/ace/theme-pastel_on_dark.js +8 -1
  400. data/vendor/assets/javascripts/ace/theme-solarized_dark.js +8 -1
  401. data/vendor/assets/javascripts/ace/theme-solarized_light.js +9 -2
  402. data/vendor/assets/javascripts/ace/theme-sqlserver.js +8 -1
  403. data/vendor/assets/javascripts/ace/theme-terminal.js +8 -1
  404. data/vendor/assets/javascripts/ace/theme-textmate.js +9 -1
  405. data/vendor/assets/javascripts/ace/theme-tomorrow.js +8 -1
  406. data/vendor/assets/javascripts/ace/theme-tomorrow_night.js +8 -1
  407. data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js +8 -1
  408. data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +8 -1
  409. data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js +8 -1
  410. data/vendor/assets/javascripts/ace/theme-twilight.js +8 -1
  411. data/vendor/assets/javascripts/ace/theme-vibrant_ink.js +8 -1
  412. data/vendor/assets/javascripts/ace/theme-xcode.js +8 -1
  413. data/vendor/assets/javascripts/ace/worker-base.js +1421 -0
  414. data/vendor/assets/javascripts/ace/worker-coffee.js +55 -742
  415. data/vendor/assets/javascripts/ace/worker-css.js +66 -739
  416. data/vendor/assets/javascripts/ace/worker-html.js +55 -738
  417. data/vendor/assets/javascripts/ace/worker-javascript.js +6693 -4209
  418. data/vendor/assets/javascripts/ace/worker-json.js +56 -737
  419. data/vendor/assets/javascripts/ace/worker-lua.js +56 -738
  420. data/vendor/assets/javascripts/ace/worker-php.js +897 -1512
  421. data/vendor/assets/javascripts/ace/worker-xml.js +129 -808
  422. data/vendor/assets/javascripts/ace/worker-xquery.js +54 -737
  423. metadata +74 -19
  424. data/vendor/assets/javascripts/ace/ext-chromevox.js +0 -540
  425. data/vendor/assets/javascripts/ace/ext-old_ie.js +0 -502
  426. data/vendor/assets/javascripts/ace/mode-bash.js +0 -247
  427. data/vendor/assets/javascripts/ace/mode-bro.js +0 -327
  428. data/vendor/assets/javascripts/ace/mode-lean.js +0 -281
  429. data/vendor/assets/javascripts/ace/mode-live_script.js +0 -481
  430. data/vendor/assets/javascripts/ace/mode-mips_assembler.js +0 -235
  431. data/vendor/assets/javascripts/ace/mode-swig.js +0 -1099
  432. data/vendor/assets/javascripts/ace/snippets/bro.js +0 -7
  433. data/vendor/assets/javascripts/ace/snippets/lean.js +0 -7
  434. data/vendor/assets/javascripts/ace/snippets/live_script.js +0 -7
  435. data/vendor/assets/javascripts/ace/snippets/mips_assembler.js +0 -7
  436. data/vendor/assets/javascripts/ace/snippets/mipsassembler.js +0 -7
  437. data/vendor/assets/javascripts/ace/snippets/swig.js +0 -7
@@ -39,7 +39,7 @@ var ShHighlightRules = function() {
39
39
  var fileDescriptor = "(?:&" + intPart + ")";
40
40
 
41
41
  var variableName = "[a-zA-Z_][a-zA-Z0-9_]*";
42
- var variable = "(?:" + variableName + "=)";
42
+ var variable = "(?:" + variableName + "(?==))";
43
43
 
44
44
  var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))";
45
45
 
@@ -238,8 +238,8 @@ oop.inherits(FoldMode, BaseFoldMode);
238
238
 
239
239
  (function() {
240
240
 
241
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
242
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
241
+ this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
242
+ this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
243
243
  this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
244
244
  this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
245
245
  this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
@@ -435,6 +435,7 @@ oop.inherits(Mode, TextMode);
435
435
  };
436
436
 
437
437
  this.$id = "ace/mode/sh";
438
+ this.snippetFileId = "ace/snippets/sh";
438
439
  }).call(Mode.prototype);
439
440
 
440
441
  exports.Mode = Mode;
@@ -489,4 +490,11 @@ oop.inherits(Mode, ShMode);
489
490
  }).call(Mode.prototype);
490
491
 
491
492
  exports.Mode = Mode;
492
- });
493
+ }); (function() {
494
+ window.require(["ace/mode/dockerfile"], function(m) {
495
+ if (typeof module == "object" && typeof exports == "object" && module) {
496
+ module.exports = m;
497
+ }
498
+ });
499
+ })();
500
+
@@ -65,7 +65,7 @@ DocCommentHighlightRules.getTagRule = function(start) {
65
65
  token : "comment.doc.tag.storage.type",
66
66
  regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b"
67
67
  };
68
- }
68
+ };
69
69
 
70
70
  DocCommentHighlightRules.getStartRule = function(start) {
71
71
  return {
@@ -233,8 +233,8 @@ oop.inherits(FoldMode, BaseFoldMode);
233
233
 
234
234
  (function() {
235
235
 
236
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
237
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
236
+ this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
237
+ this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
238
238
  this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
239
239
  this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
240
240
  this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
@@ -407,4 +407,11 @@ oop.inherits(Mode, TextMode);
407
407
  }).call(Mode.prototype);
408
408
 
409
409
  exports.Mode = Mode;
410
- });
410
+ }); (function() {
411
+ window.require(["ace/mode/dot"], function(m) {
412
+ if (typeof module == "object" && typeof exports == "object" && module) {
413
+ module.exports = m;
414
+ }
415
+ });
416
+ })();
417
+
@@ -25,7 +25,7 @@ DocCommentHighlightRules.getTagRule = function(start) {
25
25
  token : "comment.doc.tag.storage.type",
26
26
  regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b"
27
27
  };
28
- }
28
+ };
29
29
 
30
30
  DocCommentHighlightRules.getStartRule = function(start) {
31
31
  return {
@@ -66,7 +66,8 @@ var JavaHighlightRules = function() {
66
66
  "catch|extends|int|short|try|" +
67
67
  "char|final|interface|static|void|" +
68
68
  "class|finally|long|strictfp|volatile|" +
69
- "const|float|native|super|while"
69
+ "const|float|native|super|while|" +
70
+ "var"
70
71
  );
71
72
 
72
73
  var buildinConstants = ("null|Infinity|NaN|undefined");
@@ -132,6 +133,36 @@ var JavaHighlightRules = function() {
132
133
  }, {
133
134
  token : "constant.language.boolean",
134
135
  regex : "(?:true|false)\\b"
136
+ }, {
137
+ regex: "(open(?:\\s+))?module(?=\\s*\\w)",
138
+ token: "keyword",
139
+ next: [{
140
+ regex: "{",
141
+ token: "paren.lparen",
142
+ next: [{
143
+ regex: "}",
144
+ token: "paren.rparen",
145
+ next: "start"
146
+ }, {
147
+ regex: "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b",
148
+ token: "keyword"
149
+ }]
150
+ }, {
151
+ token : "text",
152
+ regex : "\\s+"
153
+ }, {
154
+ token : "identifier",
155
+ regex : "\\w+"
156
+ }, {
157
+ token : "punctuation.operator",
158
+ regex : "."
159
+ }, {
160
+ token : "text",
161
+ regex : "\\s+"
162
+ }, {
163
+ regex: "", // exit if there is anything else
164
+ next: "start"
165
+ }]
135
166
  }, {
136
167
  token : keywordMapper,
137
168
  regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
@@ -160,8 +191,10 @@ var JavaHighlightRules = function() {
160
191
  ]
161
192
  };
162
193
 
194
+
163
195
  this.embedRules(DocCommentHighlightRules, "doc-",
164
196
  [ DocCommentHighlightRules.getEndRule("start") ]);
197
+ this.normalizeRules();
165
198
  };
166
199
 
167
200
  oop.inherits(JavaHighlightRules, TextHighlightRules);
@@ -272,7 +305,7 @@ var DroolsHighlightRules = function() {
272
305
  defaultToken : "comment.block"
273
306
  }
274
307
  ];
275
- }
308
+ };
276
309
 
277
310
  var basicPostRules = function() {
278
311
  return [{
@@ -425,7 +458,7 @@ oop.inherits(FoldMode, BaseFoldMode);
425
458
  }
426
459
 
427
460
  }
428
- }
461
+ };
429
462
 
430
463
  }).call(FoldMode.prototype);
431
464
 
@@ -450,8 +483,16 @@ oop.inherits(Mode, TextMode);
450
483
  (function() {
451
484
  this.lineCommentStart = "//";
452
485
  this.$id = "ace/mode/drools";
486
+ this.snippetFileId = "ace/snippets/drools";
453
487
  }).call(Mode.prototype);
454
488
 
455
489
  exports.Mode = Mode;
456
490
 
457
- });
491
+ }); (function() {
492
+ window.require(["ace/mode/drools"], function(m) {
493
+ if (typeof module == "object" && typeof exports == "object" && module) {
494
+ module.exports = m;
495
+ }
496
+ });
497
+ })();
498
+
@@ -0,0 +1,166 @@
1
+ define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
2
+ "use strict";
3
+
4
+ var oop = require("../lib/oop");
5
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
6
+
7
+ var DocCommentHighlightRules = function() {
8
+ this.$rules = {
9
+ "start" : [ {
10
+ token : "comment.doc.tag",
11
+ regex : "@[\\w\\d_]+" // TODO: fix email addresses
12
+ },
13
+ DocCommentHighlightRules.getTagRule(),
14
+ {
15
+ defaultToken : "comment.doc",
16
+ caseInsensitive: true
17
+ }]
18
+ };
19
+ };
20
+
21
+ oop.inherits(DocCommentHighlightRules, TextHighlightRules);
22
+
23
+ DocCommentHighlightRules.getTagRule = function(start) {
24
+ return {
25
+ token : "comment.doc.tag.storage.type",
26
+ regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b"
27
+ };
28
+ };
29
+
30
+ DocCommentHighlightRules.getStartRule = function(start) {
31
+ return {
32
+ token : "comment.doc", // doc comment
33
+ regex : "\\/\\*(?=\\*)",
34
+ next : start
35
+ };
36
+ };
37
+
38
+ DocCommentHighlightRules.getEndRule = function (start) {
39
+ return {
40
+ token : "comment.doc", // closing comment
41
+ regex : "\\*\\/",
42
+ next : start
43
+ };
44
+ };
45
+
46
+
47
+ exports.DocCommentHighlightRules = DocCommentHighlightRules;
48
+
49
+ });
50
+
51
+ define("ace/mode/edifact_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) {
52
+ "use strict";
53
+
54
+ var oop = require("../lib/oop");
55
+ var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
56
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
57
+
58
+ var EdifactHighlightRules = function() {
59
+
60
+ var header = (
61
+ "UNH"
62
+ );
63
+ var segment = (
64
+ "ADR|AGR|AJT|ALC|ALI|APP|APR|ARD|ARR|ASI|ATT|AUT|"+
65
+ "BAS|BGM|BII|BUS|"+
66
+ "CAV|CCD|CCI|CDI|CDS|CDV|CED|CIN|CLA|CLI|CMP|CNI|CNT|COD|COM|COT|CPI|CPS|CPT|CST|CTA|CUX|"+
67
+ "DAM|DFN|DGS|DII|DIM|DLI|DLM|DMS|DOC|DRD|DSG|DSI|DTM|"+
68
+ "EDT|EFI|ELM|ELU|ELV|EMP|EQA|EQD|EQN|ERC|ERP|EVE|FCA|FII|FNS|FNT|FOR|FSQ|FTX|"+
69
+ "GDS|GEI|GID|GIN|GIR|GOR|GPO|GRU|HAN|HYN|ICD|IDE|IFD|IHC|IMD|IND|INP|INV|IRQ|"+
70
+ "LAN|LIN|LOC|MEA|MEM|MKS|MOA|MSG|MTD|NAD|NAT|"+
71
+ "PAC|PAI|PAS|PCC|PCD|PCI|PDI|PER|PGI|PIA|PNA|POC|PRC|PRI|PRV|PSD|PTY|PYT|"+
72
+ "QRS|QTY|QUA|QVR|"+
73
+ "RCS|REL|RFF|RJL|RNG|ROD|RSL|RTE|"+
74
+ "SAL|SCC|SCD|SEG|SEL|SEQ|SFI|SGP|SGU|SPR|SPS|STA|STC|STG|STS|"+
75
+ "TAX|TCC|TDT|TEM|TMD|TMP|TOD|TPL|TRU|TSR|"+
76
+ "UNB|UNZ|UNT|UGH|UGT|UNS|"+
77
+ "VLI"
78
+ );
79
+
80
+ var header = (
81
+ "UNH"
82
+ );
83
+
84
+ var buildinConstants = ("null|Infinity|NaN|undefined");
85
+ var langClasses = (
86
+ ""
87
+ );
88
+
89
+ var keywords = (
90
+ "BY|SE|ON|INV|JP|UNOA"
91
+ );
92
+
93
+ var keywordMapper = this.createKeywordMapper({
94
+ "variable.language": "this",
95
+ "keyword": keywords,
96
+ "entity.name.segment":segment,
97
+ "entity.name.header":header,
98
+ "constant.language": buildinConstants,
99
+ "support.function": langClasses
100
+ }, "identifier");
101
+
102
+ this.$rules = {
103
+ "start" : [
104
+ {
105
+ token : "punctuation.operator",
106
+ regex : "\\+.\\+"
107
+ }, {
108
+ token : "constant.language.boolean",
109
+ regex : "(?:true|false)\\b"
110
+ }, {
111
+ token : keywordMapper,
112
+ regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
113
+ }, {
114
+ token : "keyword.operator",
115
+ regex : "\\+"
116
+ }, {
117
+ token : "punctuation.operator",
118
+ regex : "\\:|'"
119
+ },{
120
+ token : "identifier",
121
+ regex : "\\:D\\:"
122
+ }
123
+ ]
124
+ };
125
+
126
+ this.embedRules(DocCommentHighlightRules, "doc-",
127
+ [ DocCommentHighlightRules.getEndRule("start") ]);
128
+ };
129
+
130
+ EdifactHighlightRules.metaData = { fileTypes: [ 'edi' ],
131
+ keyEquivalent: '^~E',
132
+ name: 'Edifact',
133
+ scopeName: 'source.edifact' };
134
+
135
+ oop.inherits(EdifactHighlightRules, TextHighlightRules);
136
+
137
+ exports.EdifactHighlightRules = EdifactHighlightRules;
138
+ });
139
+
140
+ define("ace/mode/edifact",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/edifact_highlight_rules"], function(require, exports, module) {
141
+ "use strict";
142
+
143
+ var oop = require("../lib/oop");
144
+ var TextMode = require("./text").Mode;
145
+ var EdifactHighlightRules = require("./edifact_highlight_rules").EdifactHighlightRules;
146
+
147
+ var Mode = function() {
148
+
149
+ this.HighlightRules = EdifactHighlightRules;
150
+ };
151
+ oop.inherits(Mode, TextMode);
152
+
153
+ (function() {
154
+ this.$id = "ace/mode/edifact";
155
+ this.snippetFileId = "ace/snippets/edifact";
156
+ }).call(Mode.prototype);
157
+
158
+ exports.Mode = Mode;
159
+ }); (function() {
160
+ window.require(["ace/mode/edifact"], function(m) {
161
+ if (typeof module == "object" && typeof exports == "object" && module) {
162
+ module.exports = m;
163
+ }
164
+ });
165
+ })();
166
+
@@ -125,4 +125,11 @@ oop.inherits(Mode, TextMode);
125
125
 
126
126
  exports.Mode = Mode;
127
127
 
128
- });
128
+ }); (function() {
129
+ window.require(["ace/mode/eiffel"], function(m) {
130
+ if (typeof module == "object" && typeof exports == "object" && module) {
131
+ module.exports = m;
132
+ }
133
+ });
134
+ })();
135
+
@@ -4,9 +4,9 @@ define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop
4
4
  var oop = require("../lib/oop");
5
5
  var lang = require("../lib/lang");
6
6
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
7
- var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index";
7
+ var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index";
8
8
  var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters";
9
- var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero";
9
+ var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom";
10
10
  var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen";
11
11
  var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace";
12
12
 
@@ -36,7 +36,7 @@ var CssHighlightRules = function() {
36
36
  regex: "\\}"
37
37
  }, {
38
38
  token: "string",
39
- regex: "@",
39
+ regex: "@(?!viewport)",
40
40
  next: "media"
41
41
  }, {
42
42
  token: "keyword",
@@ -59,7 +59,7 @@ var CssHighlightRules = function() {
59
59
  }, {
60
60
  caseInsensitive: true
61
61
  }],
62
-
62
+
63
63
  "media": [{
64
64
  include : ["strings", "url", "comments"]
65
65
  }, {
@@ -96,6 +96,9 @@ var CssHighlightRules = function() {
96
96
  "ruleset" : [{
97
97
  regex : "-(webkit|ms|moz|o)-",
98
98
  token : "text"
99
+ }, {
100
+ token : "punctuation.operator",
101
+ regex : "[:;]"
99
102
  }, {
100
103
  token : "paren.rparen",
101
104
  regex : "\\}",
@@ -104,7 +107,7 @@ var CssHighlightRules = function() {
104
107
  include : ["strings", "url", "comments"]
105
108
  }, {
106
109
  token : ["constant.numeric", "keyword"],
107
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
110
+ regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
108
111
  }, {
109
112
  token : "constant.numeric",
110
113
  regex : numRe
@@ -128,7 +131,7 @@ var CssHighlightRules = function() {
128
131
  }, {
129
132
  caseInsensitive: true
130
133
  }],
131
-
134
+
132
135
  url: [{
133
136
  token : "support.function",
134
137
  regex : "(?:url(:?-prefix)?|domain|regexp)\\(",
@@ -140,7 +143,7 @@ var CssHighlightRules = function() {
140
143
  defaultToken: "string"
141
144
  }]
142
145
  }],
143
-
146
+
144
147
  strings: [{
145
148
  token : "string.start",
146
149
  regex : "'",
@@ -178,7 +181,7 @@ var CssHighlightRules = function() {
178
181
  token : "constant.language.escape",
179
182
  regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
180
183
  }]
181
-
184
+
182
185
  };
183
186
 
184
187
  this.normalizeRules();
@@ -217,7 +220,7 @@ DocCommentHighlightRules.getTagRule = function(start) {
217
220
  token : "comment.doc.tag.storage.type",
218
221
  regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b"
219
222
  };
220
- }
223
+ };
221
224
 
222
225
  DocCommentHighlightRules.getStartRule = function(start) {
223
226
  return {
@@ -373,7 +376,8 @@ var JavaScriptHighlightRules = function(options) {
373
376
  next : "property"
374
377
  }, {
375
378
  token : "storage.type",
376
- regex : /=>/
379
+ regex : /=>/,
380
+ next : "start"
377
381
  }, {
378
382
  token : "keyword.operator",
379
383
  regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
@@ -894,7 +898,7 @@ var XmlHighlightRules = function(normalize) {
894
898
  stack.splice(0);
895
899
  return this.token;
896
900
  }}
897
- ]
901
+ ];
898
902
 
899
903
  this.embedRules(HighlightRules, prefix, [{
900
904
  token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
@@ -1059,8 +1063,8 @@ oop.inherits(FoldMode, BaseFoldMode);
1059
1063
 
1060
1064
  (function() {
1061
1065
 
1062
- this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
1063
- this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
1066
+ this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
1067
+ this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
1064
1068
  this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
1065
1069
  this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
1066
1070
  this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
@@ -1260,6 +1264,7 @@ oop.inherits(Mode, TextMode);
1260
1264
  };
1261
1265
 
1262
1266
  this.$id = "ace/mode/javascript";
1267
+ this.snippetFileId = "ace/snippets/javascript";
1263
1268
  }).call(Mode.prototype);
1264
1269
 
1265
1270
  exports.Mode = Mode;
@@ -1377,18 +1382,14 @@ var CssCompletions = function() {
1377
1382
  }
1378
1383
 
1379
1384
  this.completionsDefined = true;
1380
- }
1385
+ };
1381
1386
 
1382
1387
  this.getCompletions = function(state, session, pos, prefix) {
1383
1388
  if (!this.completionsDefined) {
1384
1389
  this.defineCompletions();
1385
1390
  }
1386
1391
 
1387
- var token = session.getTokenAt(pos.row, pos.column);
1388
-
1389
- if (!token)
1390
- return [];
1391
- if (state==='ruleset'){
1392
+ if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") {
1392
1393
  var line = session.getLine(pos.row).substr(0, pos.column);
1393
1394
  if (/:[^;]+$/.test(line)) {
1394
1395
  /([\w\-]+):[^:]*$/.test(line);
@@ -1407,9 +1408,9 @@ var CssCompletions = function() {
1407
1408
  return properties.map(function(property){
1408
1409
  return {
1409
1410
  caption: property,
1410
- snippet: property + ': $0',
1411
+ snippet: property + ': $0;',
1411
1412
  meta: "property",
1412
- score: Number.MAX_VALUE
1413
+ score: 1000000
1413
1414
  };
1414
1415
  });
1415
1416
  };
@@ -1429,7 +1430,7 @@ var CssCompletions = function() {
1429
1430
  caption: value,
1430
1431
  snippet: value,
1431
1432
  meta: "property value",
1432
- score: Number.MAX_VALUE
1433
+ score: 1000000
1433
1434
  };
1434
1435
  });
1435
1436
  };
@@ -1452,7 +1453,7 @@ var CssBehaviour = function () {
1452
1453
  this.inherit(CstyleBehaviour);
1453
1454
 
1454
1455
  this.add("colon", "insertion", function (state, action, editor, session, text) {
1455
- if (text === ':') {
1456
+ if (text === ':' && editor.selection.isEmpty()) {
1456
1457
  var cursor = editor.getCursorPosition();
1457
1458
  var iterator = new TokenIterator(session, cursor.row, cursor.column);
1458
1459
  var token = iterator.getCurrentToken();
@@ -1466,13 +1467,13 @@ var CssBehaviour = function () {
1466
1467
  return {
1467
1468
  text: '',
1468
1469
  selection: [1, 1]
1469
- }
1470
+ };
1470
1471
  }
1471
- if (!line.substring(cursor.column).match(/^\s*;/)) {
1472
+ if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) {
1472
1473
  return {
1473
1474
  text: ':;',
1474
1475
  selection: [1, 1]
1475
- }
1476
+ };
1476
1477
  }
1477
1478
  }
1478
1479
  }
@@ -1499,7 +1500,7 @@ var CssBehaviour = function () {
1499
1500
  });
1500
1501
 
1501
1502
  this.add("semicolon", "insertion", function (state, action, editor, session, text) {
1502
- if (text === ';') {
1503
+ if (text === ';' && editor.selection.isEmpty()) {
1503
1504
  var cursor = editor.getCursorPosition();
1504
1505
  var line = session.doc.getLine(cursor.row);
1505
1506
  var rightChar = line.substring(cursor.column, cursor.column + 1);
@@ -1507,12 +1508,26 @@ var CssBehaviour = function () {
1507
1508
  return {
1508
1509
  text: '',
1509
1510
  selection: [1, 1]
1510
- }
1511
+ };
1511
1512
  }
1512
1513
  }
1513
1514
  });
1514
1515
 
1515
- }
1516
+ this.add("!important", "insertion", function (state, action, editor, session, text) {
1517
+ if (text === '!' && editor.selection.isEmpty()) {
1518
+ var cursor = editor.getCursorPosition();
1519
+ var line = session.doc.getLine(cursor.row);
1520
+
1521
+ if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) {
1522
+ return {
1523
+ text: '!important',
1524
+ selection: [10, 10]
1525
+ };
1526
+ }
1527
+ }
1528
+ });
1529
+
1530
+ };
1516
1531
  oop.inherits(CssBehaviour, CstyleBehaviour);
1517
1532
 
1518
1533
  exports.CssBehaviour = CssBehaviour;
@@ -1587,6 +1602,7 @@ oop.inherits(Mode, TextMode);
1587
1602
  };
1588
1603
 
1589
1604
  this.$id = "ace/mode/css";
1605
+ this.snippetFileId = "ace/snippets/css";
1590
1606
  }).call(Mode.prototype);
1591
1607
 
1592
1608
  exports.Mode = Mode;
@@ -1602,7 +1618,7 @@ var TokenIterator = require("../../token_iterator").TokenIterator;
1602
1618
  var lang = require("../../lib/lang");
1603
1619
 
1604
1620
  function is(token, type) {
1605
- return token.type.lastIndexOf(type + ".xml") > -1;
1621
+ return token && token.type.lastIndexOf(type + ".xml") > -1;
1606
1622
  }
1607
1623
 
1608
1624
  var XmlBehaviour = function () {
@@ -1672,14 +1688,19 @@ var XmlBehaviour = function () {
1672
1688
  if (is(token, "reference.attribute-value"))
1673
1689
  return;
1674
1690
  if (is(token, "attribute-value")) {
1675
- var firstChar = token.value.charAt(0);
1676
- if (firstChar == '"' || firstChar == "'") {
1677
- var lastChar = token.value.charAt(token.value.length - 1);
1678
- var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;
1679
- if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)
1691
+ var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;
1692
+ if (position.column < tokenEndColumn)
1693
+ return;
1694
+ if (position.column == tokenEndColumn) {
1695
+ var nextToken = iterator.stepForward();
1696
+ if (nextToken && is(nextToken, "attribute-value"))
1680
1697
  return;
1698
+ iterator.stepBackward();
1681
1699
  }
1682
1700
  }
1701
+
1702
+ if (/^\s*>/.test(session.getLine(position.row).slice(position.column)))
1703
+ return;
1683
1704
  while (!is(token, "tag-name")) {
1684
1705
  token = iterator.stepBackward();
1685
1706
  if (token.value == "<") {
@@ -1869,7 +1890,7 @@ function is(token, type) {
1869
1890
  if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row)))
1870
1891
  return "start";
1871
1892
  return "";
1872
- }
1893
+ };
1873
1894
  this._getFirstTagInLine = function(session, row) {
1874
1895
  var tokens = session.getTokens(row);
1875
1896
  var tag = new Tag();
@@ -2172,120 +2193,120 @@ var eventAttributes = [
2172
2193
  var globalAttributes = commonAttributes.concat(eventAttributes);
2173
2194
 
2174
2195
  var attributeMap = {
2175
- "html": {"manifest": 1},
2176
- "head": {},
2177
- "title": {},
2178
- "base": {"href": 1, "target": 1},
2179
- "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1},
2180
- "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1},
2181
- "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1},
2182
- "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1},
2183
- "noscript": {"href": 1},
2184
- "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1},
2185
- "section": {},
2186
- "nav": {},
2196
+ "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1},
2197
+ "abbr": {},
2198
+ "address": {},
2199
+ "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1},
2187
2200
  "article": {"pubdate": 1},
2188
2201
  "aside": {},
2202
+ "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }},
2203
+ "b": {},
2204
+ "base": {"href": 1, "target": 1},
2205
+ "bdi": {},
2206
+ "bdo": {},
2207
+ "blockquote": {"cite": 1},
2208
+ "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1},
2209
+ "br": {},
2210
+ "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}},
2211
+ "canvas": {"width": 1, "height": 1},
2212
+ "caption": {},
2213
+ "cite": {},
2214
+ "code": {},
2215
+ "col": {"span": 1},
2216
+ "colgroup": {"span": 1},
2217
+ "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1},
2218
+ "data": {},
2219
+ "datalist": {},
2220
+ "dd": {},
2221
+ "del": {"cite": 1, "datetime": 1},
2222
+ "details": {"open": 1},
2223
+ "dfn": {},
2224
+ "dialog": {"open": 1},
2225
+ "div": {},
2226
+ "dl": {},
2227
+ "dt": {},
2228
+ "em": {},
2229
+ "embed": {"src": 1, "height": 1, "width": 1, "type": 1},
2230
+ "fieldset": {"disabled": 1, "form": 1, "name": 1},
2231
+ "figcaption": {},
2232
+ "figure": {},
2233
+ "footer": {},
2234
+ "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}},
2189
2235
  "h1": {},
2190
2236
  "h2": {},
2191
2237
  "h3": {},
2192
2238
  "h4": {},
2193
2239
  "h5": {},
2194
2240
  "h6": {},
2241
+ "head": {},
2195
2242
  "header": {},
2196
- "footer": {},
2197
- "address": {},
2243
+ "hr": {},
2244
+ "html": {"manifest": 1},
2245
+ "i": {},
2246
+ "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}},
2247
+ "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1},
2248
+ "input": {
2249
+ "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1},
2250
+ "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1},
2251
+ "ins": {"cite": 1, "datetime": 1},
2252
+ "kbd": {},
2253
+ "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1},
2254
+ "label": {"form": 1, "for": 1},
2255
+ "legend": {},
2256
+ "li": {"value": 1},
2257
+ "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1},
2198
2258
  "main": {},
2259
+ "map": {"name": 1},
2260
+ "mark": {},
2261
+ "math": {},
2262
+ "menu": {"type": 1, "label": 1},
2263
+ "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1},
2264
+ "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1},
2265
+ "nav": {},
2266
+ "noscript": {"href": 1},
2267
+ "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1},
2268
+ "ol": {"start": 1, "reversed": 1},
2269
+ "optgroup": {"disabled": 1, "label": 1},
2270
+ "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1},
2271
+ "output": {"for": 1, "form": 1, "name": 1},
2199
2272
  "p": {},
2200
- "hr": {},
2273
+ "param": {"name": 1, "value": 1},
2201
2274
  "pre": {},
2202
- "blockquote": {"cite": 1},
2203
- "ol": {"start": 1, "reversed": 1},
2204
- "ul": {},
2205
- "li": {"value": 1},
2206
- "dl": {},
2207
- "dt": {},
2208
- "dd": {},
2209
- "figure": {},
2210
- "figcaption": {},
2211
- "div": {},
2212
- "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1},
2213
- "em": {},
2214
- "strong": {},
2215
- "small": {},
2216
- "s": {},
2217
- "cite": {},
2275
+ "progress": {"value": 1, "max": 1},
2218
2276
  "q": {"cite": 1},
2219
- "dfn": {},
2220
- "abbr": {},
2221
- "data": {},
2222
- "time": {"datetime": 1},
2223
- "code": {},
2224
- "var": {},
2277
+ "rp": {},
2278
+ "rt": {},
2279
+ "ruby": {},
2280
+ "s": {},
2225
2281
  "samp": {},
2226
- "kbd": {},
2282
+ "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1},
2283
+ "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}},
2284
+ "small": {},
2285
+ "source": {"src": 1, "type": 1, "media": 1},
2286
+ "span": {},
2287
+ "strong": {},
2288
+ "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1},
2227
2289
  "sub": {},
2228
2290
  "sup": {},
2229
- "i": {},
2230
- "b": {},
2231
- "u": {},
2232
- "mark": {},
2233
- "ruby": {},
2234
- "rt": {},
2235
- "rp": {},
2236
- "bdi": {},
2237
- "bdo": {},
2238
- "span": {},
2239
- "br": {},
2240
- "wbr": {},
2241
- "ins": {"cite": 1, "datetime": 1},
2242
- "del": {"cite": 1, "datetime": 1},
2243
- "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1},
2244
- "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}},
2245
- "embed": {"src": 1, "height": 1, "width": 1, "type": 1},
2246
- "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1},
2247
- "param": {"name": 1, "value": 1},
2248
- "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}},
2249
- "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }},
2250
- "source": {"src": 1, "type": 1, "media": 1},
2251
- "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1},
2252
- "canvas": {"width": 1, "height": 1},
2253
- "map": {"name": 1},
2254
- "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1},
2255
2291
  "svg": {},
2256
- "math": {},
2257
2292
  "table": {"summary": 1},
2258
- "caption": {},
2259
- "colgroup": {"span": 1},
2260
- "col": {"span": 1},
2261
2293
  "tbody": {},
2262
- "thead": {},
2263
- "tfoot": {},
2264
- "tr": {},
2265
2294
  "td": {"headers": 1, "rowspan": 1, "colspan": 1},
2266
- "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1},
2267
- "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}},
2268
- "fieldset": {"disabled": 1, "form": 1, "name": 1},
2269
- "legend": {},
2270
- "label": {"form": 1, "for": 1},
2271
- "input": {
2272
- "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1},
2273
- "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1},
2274
- "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}},
2275
- "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}},
2276
- "datalist": {},
2277
- "optgroup": {"disabled": 1, "label": 1},
2278
- "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1},
2279
2295
  "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}},
2280
- "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1},
2281
- "output": {"for": 1, "form": 1, "name": 1},
2282
- "progress": {"value": 1, "max": 1},
2283
- "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1},
2284
- "details": {"open": 1},
2296
+ "tfoot": {},
2297
+ "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1},
2298
+ "thead": {},
2299
+ "time": {"datetime": 1},
2300
+ "title": {},
2301
+ "tr": {},
2302
+ "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1},
2303
+ "section": {},
2285
2304
  "summary": {},
2286
- "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1},
2287
- "menu": {"type": 1, "label": 1},
2288
- "dialog": {"open": 1}
2305
+ "u": {},
2306
+ "ul": {},
2307
+ "var": {},
2308
+ "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}},
2309
+ "wbr": {}
2289
2310
  };
2290
2311
 
2291
2312
  var elements = Object.keys(attributeMap);
@@ -2343,7 +2364,7 @@ var HtmlCompletions = function() {
2343
2364
  return {
2344
2365
  value: element,
2345
2366
  meta: "tag",
2346
- score: Number.MAX_VALUE
2367
+ score: 1000000
2347
2368
  };
2348
2369
  });
2349
2370
  };
@@ -2361,7 +2382,7 @@ var HtmlCompletions = function() {
2361
2382
  caption: attribute,
2362
2383
  snippet: attribute + '="$0"',
2363
2384
  meta: "attribute",
2364
- score: Number.MAX_VALUE
2385
+ score: 1000000
2365
2386
  };
2366
2387
  });
2367
2388
  };
@@ -2381,7 +2402,7 @@ var HtmlCompletions = function() {
2381
2402
  caption: value,
2382
2403
  snippet: value,
2383
2404
  meta: "attribute value",
2384
- score: Number.MAX_VALUE
2405
+ score: 1000000
2385
2406
  };
2386
2407
  });
2387
2408
  };
@@ -2394,7 +2415,7 @@ var HtmlCompletions = function() {
2394
2415
  caption: value,
2395
2416
  snippet: value,
2396
2417
  meta: "html entity",
2397
- score: Number.MAX_VALUE
2418
+ score: 1000000
2398
2419
  };
2399
2420
  });
2400
2421
  };
@@ -2474,6 +2495,7 @@ oop.inherits(Mode, TextMode);
2474
2495
  };
2475
2496
 
2476
2497
  this.$id = "ace/mode/html";
2498
+ this.snippetFileId = "ace/snippets/html";
2477
2499
  }).call(Mode.prototype);
2478
2500
 
2479
2501
  exports.Mode = Mode;
@@ -2489,17 +2511,17 @@ var constantOtherSymbol = exports.constantOtherSymbol = {
2489
2511
  regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"
2490
2512
  };
2491
2513
 
2492
- var qString = exports.qString = {
2514
+ exports.qString = {
2493
2515
  token : "string", // single line
2494
2516
  regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
2495
2517
  };
2496
2518
 
2497
- var qqString = exports.qqString = {
2519
+ exports.qqString = {
2498
2520
  token : "string", // single line
2499
2521
  regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
2500
2522
  };
2501
2523
 
2502
- var tString = exports.tString = {
2524
+ exports.tString = {
2503
2525
  token : "string", // backtick string
2504
2526
  regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"
2505
2527
  };
@@ -2509,9 +2531,34 @@ var constantNumericHex = exports.constantNumericHex = {
2509
2531
  regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"
2510
2532
  };
2511
2533
 
2534
+ var constantNumericBinary = exports.constantNumericBinary = {
2535
+ token: "constant.numeric",
2536
+ regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/
2537
+ };
2538
+
2539
+ var constantNumericDecimal = exports.constantNumericDecimal = {
2540
+ token: "constant.numeric",
2541
+ regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/
2542
+ };
2543
+
2544
+ var constantNumericOctal = exports.constantNumericDecimal = {
2545
+ token: "constant.numeric",
2546
+ regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/
2547
+ };
2548
+
2549
+ var constantNumericRational = exports.constantNumericRational = {
2550
+ token: "constant.numeric", //rational + complex
2551
+ regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/
2552
+ };
2553
+
2554
+ var constantNumericComplex = exports.constantNumericComplex = {
2555
+ token: "constant.numeric", //simple complex numbers
2556
+ regex: /\b([\d]i)\b/
2557
+ };
2558
+
2512
2559
  var constantNumericFloat = exports.constantNumericFloat = {
2513
- token : "constant.numeric", // float
2514
- regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b"
2560
+ token : "constant.numeric", // float + complex
2561
+ regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"
2515
2562
  };
2516
2563
 
2517
2564
  var instanceVariable = exports.instanceVariable = {
@@ -2551,18 +2598,19 @@ var RubyHighlightRules = function() {
2551
2598
  "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" +
2552
2599
  "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" +
2553
2600
  "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" +
2554
- "has_many|has_one|belongs_to|has_and_belongs_to_many"
2601
+ "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" +
2602
+ "private_class_method|remove_method|undef_method"
2555
2603
  );
2556
2604
 
2557
2605
  var keywords = (
2558
2606
  "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" +
2559
2607
  "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" +
2560
- "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield"
2608
+ "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend"
2561
2609
  );
2562
2610
 
2563
2611
  var buildinConstants = (
2564
2612
  "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" +
2565
- "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING"
2613
+ "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION"
2566
2614
  );
2567
2615
 
2568
2616
  var builtinVariables = (
@@ -2578,126 +2626,191 @@ var RubyHighlightRules = function() {
2578
2626
  "invalid.deprecated": "debugger" // TODO is this a remnant from js mode?
2579
2627
  }, "identifier");
2580
2628
 
2629
+ var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})";
2630
+
2631
+ var closeParen = {
2632
+ "(": ")",
2633
+ "[": "]",
2634
+ "{": "}",
2635
+ "<": ">",
2636
+ "^": "^",
2637
+ "|": "|",
2638
+ "%": "%"
2639
+ };
2640
+
2581
2641
  this.$rules = {
2582
- "start" : [
2642
+ "start": [
2583
2643
  {
2584
- token : "comment",
2585
- regex : "#.*$"
2644
+ token: "comment",
2645
+ regex: "#.*$"
2586
2646
  }, {
2587
- token : "comment", // multi line comment
2588
- regex : "^=begin(?:$|\\s.*$)",
2589
- next : "comment"
2647
+ token: "comment.multiline", // multi line comment
2648
+ regex: "^=begin(?=$|\\s.*$)",
2649
+ next: "comment"
2590
2650
  }, {
2591
- token : "string.regexp",
2592
- regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
2651
+ token: "string.regexp",
2652
+ regex: /[/](?=.*\/)/,
2653
+ next: "regex"
2593
2654
  },
2594
2655
 
2595
2656
  [{
2596
- regex: "[{}]", onMatch: function(val, state, stack) {
2597
- this.next = val == "{" ? this.nextState : "";
2598
- if (val == "{" && stack.length) {
2599
- stack.unshift("start", state);
2600
- return "paren.lparen";
2601
- }
2602
- if (val == "}" && stack.length) {
2603
- stack.shift();
2604
- this.next = stack.shift();
2605
- if (this.next.indexOf("string") != -1)
2606
- return "paren.end";
2607
- }
2608
- return val == "{" ? "paren.lparen" : "paren.rparen";
2609
- },
2610
- nextState: "start"
2611
- }, {
2612
- token : "string.start",
2613
- regex : /"/,
2614
- push : [{
2615
- token : "constant.language.escape",
2616
- regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/
2657
+ token: ["constant.other.symbol.ruby", "string.start"],
2658
+ regex: /(:)?(")/,
2659
+ push: [{
2660
+ token: "constant.language.escape",
2661
+ regex: escapedChars
2617
2662
  }, {
2618
- token : "paren.start",
2619
- regex : /#{/,
2620
- push : "start"
2663
+ token: "paren.start",
2664
+ regex: /#{/,
2665
+ push: "start"
2621
2666
  }, {
2622
- token : "string.end",
2623
- regex : /"/,
2624
- next : "pop"
2667
+ token: "string.end",
2668
+ regex: /"/,
2669
+ next: "pop"
2625
2670
  }, {
2626
2671
  defaultToken: "string"
2627
2672
  }]
2628
2673
  }, {
2629
- token : "string.start",
2630
- regex : /`/,
2631
- push : [{
2632
- token : "constant.language.escape",
2633
- regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/
2674
+ token: "string.start",
2675
+ regex: /`/,
2676
+ push: [{
2677
+ token: "constant.language.escape",
2678
+ regex: escapedChars
2634
2679
  }, {
2635
- token : "paren.start",
2636
- regex : /#{/,
2637
- push : "start"
2680
+ token: "paren.start",
2681
+ regex: /#{/,
2682
+ push: "start"
2638
2683
  }, {
2639
- token : "string.end",
2640
- regex : /`/,
2641
- next : "pop"
2684
+ token: "string.end",
2685
+ regex: /`/,
2686
+ next: "pop"
2642
2687
  }, {
2643
2688
  defaultToken: "string"
2644
2689
  }]
2645
2690
  }, {
2646
- token : "string.start",
2647
- regex : /'/,
2648
- push : [{
2649
- token : "constant.language.escape",
2650
- regex : /\\['\\]/
2651
- }, {
2652
- token : "string.end",
2653
- regex : /'/,
2654
- next : "pop"
2691
+ token: ["constant.other.symbol.ruby", "string.start"],
2692
+ regex: /(:)?(')/,
2693
+ push: [{
2694
+ token: "constant.language.escape",
2695
+ regex: /\\['\\]/
2696
+ }, {
2697
+ token: "string.end",
2698
+ regex: /'/,
2699
+ next: "pop"
2655
2700
  }, {
2656
2701
  defaultToken: "string"
2657
2702
  }]
2703
+ }, {
2704
+ token: "string.start",//doesn't see any differences between strings and array of strings in highlighting
2705
+ regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2706
+ if (stack.length)
2707
+ stack = [];
2708
+ var paren = val[val.length - 1];
2709
+ stack.unshift(paren, state);
2710
+ this.next = "qStateWithoutInterpolation";
2711
+ return this.token;
2712
+ }
2713
+ }, {
2714
+ token: "string.start", //doesn't see any differences between strings and array of strings in highlighting
2715
+ regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) {
2716
+ if (stack.length)
2717
+ stack = [];
2718
+ var paren = val[val.length - 1];
2719
+ stack.unshift(paren, state);
2720
+ this.next = "qStateWithInterpolation";
2721
+ return this.token;
2722
+ }
2723
+ }, {
2724
+ token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting
2725
+ regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2726
+ if (stack.length)
2727
+ stack = [];
2728
+ var paren = val[val.length - 1];
2729
+ stack.unshift(paren, state);
2730
+ this.next = "sStateWithoutInterpolation";
2731
+ return this.token;
2732
+ }
2733
+ }, {
2734
+ token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting
2735
+ regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2736
+ if (stack.length)
2737
+ stack = [];
2738
+ var paren = val[val.length - 1];
2739
+ stack.unshift(paren, state);
2740
+ this.next = "sStateWithInterpolation";
2741
+ return this.token;
2742
+ }
2743
+ }, {
2744
+ token: "string.regexp",
2745
+ regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2746
+ if (stack.length)
2747
+ stack = [];
2748
+ var paren = val[val.length - 1];
2749
+ stack.unshift(paren, state);
2750
+ this.next = "rState";
2751
+ return this.token;
2752
+ }
2658
2753
  }],
2659
2754
 
2660
2755
  {
2661
- token : "text", // namespaces aren't symbols
2662
- regex : "::"
2756
+ token: "punctuation", // namespaces aren't symbols
2757
+ regex: "::"
2758
+ },
2759
+ instanceVariable,
2760
+ {
2761
+ token: "variable.global", // global variable
2762
+ regex: "[$][a-zA-Z_\\d]+"
2663
2763
  }, {
2664
- token : "variable.instance", // instance variable
2665
- regex : "@{1,2}[a-zA-Z_\\d]+"
2764
+ token: "support.class", // class name
2765
+ regex: "[A-Z][a-zA-Z_\\d]*"
2666
2766
  }, {
2667
- token : "support.class", // class name
2668
- regex : "[A-Z][a-zA-Z_\\d]+"
2767
+ token: ["punctuation.operator", "support.function"],
2768
+ regex: /(\.)([a-zA-Z_\d]+)(?=\()/
2769
+ }, {
2770
+ token: ["punctuation.operator", "identifier"],
2771
+ regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/
2772
+ }, {
2773
+ token: "string.character",
2774
+ regex: "\\B\\?(?:" + escapedChars + "|\\S)"
2775
+ }, {
2776
+ token: "punctuation.operator",
2777
+ regex: /\?(?=.+:)/
2669
2778
  },
2670
2779
 
2780
+ constantNumericRational,
2781
+ constantNumericComplex,
2671
2782
  constantOtherSymbol,
2672
2783
  constantNumericHex,
2673
2784
  constantNumericFloat,
2674
-
2785
+ constantNumericBinary,
2786
+ constantNumericDecimal,
2787
+ constantNumericOctal,
2675
2788
  {
2676
- token : "constant.language.boolean",
2677
- regex : "(?:true|false)\\b"
2789
+ token: "constant.language.boolean",
2790
+ regex: "(?:true|false)\\b"
2678
2791
  }, {
2679
- token : keywordMapper,
2680
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
2792
+ token: keywordMapper,
2793
+ regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
2681
2794
  }, {
2682
- token : "punctuation.separator.key-value",
2683
- regex : "=>"
2795
+ token: "punctuation.separator.key-value",
2796
+ regex: "=>"
2684
2797
  }, {
2685
2798
  stateName: "heredoc",
2686
- onMatch : function(value, currentState, stack) {
2687
- var next = value[2] == '-' ? "indentedHeredoc" : "heredoc";
2799
+ onMatch: function (value, currentState, stack) {
2800
+ var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc";
2688
2801
  var tokens = value.split(this.splitRegex);
2689
2802
  stack.push(next, tokens[3]);
2690
2803
  return [
2691
- {type:"constant", value: tokens[1]},
2692
- {type:"string", value: tokens[2]},
2693
- {type:"support.class", value: tokens[3]},
2694
- {type:"string", value: tokens[4]}
2804
+ {type: "constant", value: tokens[1]},
2805
+ {type: "string", value: tokens[2]},
2806
+ {type: "support.class", value: tokens[3]},
2807
+ {type: "string", value: tokens[4]}
2695
2808
  ];
2696
2809
  },
2697
- regex : "(<<-?)(['\"`]?)([\\w]+)(['\"`]?)",
2810
+ regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",
2698
2811
  rules: {
2699
2812
  heredoc: [{
2700
- onMatch: function(value, currentState, stack) {
2813
+ onMatch: function(value, currentState, stack) {
2701
2814
  if (value === stack[1]) {
2702
2815
  stack.shift();
2703
2816
  stack.shift();
@@ -2714,7 +2827,7 @@ var RubyHighlightRules = function() {
2714
2827
  token: "string",
2715
2828
  regex: "^ +"
2716
2829
  }, {
2717
- onMatch: function(value, currentState, stack) {
2830
+ onMatch: function(value, currentState, stack) {
2718
2831
  if (value === stack[1]) {
2719
2832
  stack.shift();
2720
2833
  stack.shift();
@@ -2729,38 +2842,261 @@ var RubyHighlightRules = function() {
2729
2842
  }]
2730
2843
  }
2731
2844
  }, {
2732
- regex : "$",
2733
- token : "empty",
2734
- next : function(currentState, stack) {
2845
+ regex: "$",
2846
+ token: "empty",
2847
+ next: function(currentState, stack) {
2735
2848
  if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc")
2736
2849
  return stack[0];
2737
2850
  return currentState;
2738
2851
  }
2852
+ }, {
2853
+ token: "keyword.operator",
2854
+ regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"
2855
+ }, {
2856
+ token: "paren.lparen",
2857
+ regex: "[[({]"
2858
+ }, {
2859
+ token: "paren.rparen",
2860
+ regex: "[\\])}]",
2861
+ onMatch: function(value, currentState, stack) {
2862
+ this.next = '';
2863
+ if (value == "}" && stack.length > 1 && stack[1] != "start") {
2864
+ stack.shift();
2865
+ this.next = stack.shift();
2866
+ }
2867
+ return this.token;
2868
+ }
2739
2869
  }, {
2740
- token : "string.character",
2741
- regex : "\\B\\?."
2870
+ token: "text",
2871
+ regex: "\\s+"
2742
2872
  }, {
2743
- token : "keyword.operator",
2744
- regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
2873
+ token: "punctuation.operator",
2874
+ regex: /[?:,;.]/
2875
+ }
2876
+ ],
2877
+ "comment": [
2878
+ {
2879
+ token: "comment.multiline", // closing comment
2880
+ regex: "^=end(?=$|\\s.*$)",
2881
+ next: "start"
2745
2882
  }, {
2746
- token : "paren.lparen",
2747
- regex : "[[({]"
2883
+ token: "comment", // comment spanning whole line
2884
+ regex: ".+"
2885
+ }
2886
+ ],
2887
+ "qStateWithInterpolation": [{
2888
+ token: "string.start",// excluded nested |^% due to difficulty in realization
2889
+ regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2890
+ if (stack.length && val === stack[0]) {
2891
+ stack.unshift(val, state);
2892
+ return this.token;
2893
+ }
2894
+ return "string";
2895
+ }
2896
+ }, {
2897
+ token: "constant.language.escape",
2898
+ regex: escapedChars
2899
+ }, {
2900
+ token: "constant.language.escape",
2901
+ regex: /\\./
2902
+ }, {
2903
+ token: "paren.start",
2904
+ regex: /#{/,
2905
+ push: "start"
2906
+ }, {
2907
+ token: "string.end",
2908
+ regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2909
+ if (stack.length && val === closeParen[stack[0]]) {
2910
+ stack.shift();
2911
+ this.next = stack.shift();
2912
+ return this.token;
2913
+ }
2914
+ this.next = '';
2915
+ return "string";
2916
+ }
2917
+ }, {
2918
+ defaultToken: "string"
2919
+ }],
2920
+ "qStateWithoutInterpolation": [{
2921
+ token: "string.start",// excluded nested |^% due to difficulty in realization
2922
+ regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2923
+ if (stack.length && val === stack[0]) {
2924
+ stack.unshift(val, state);
2925
+ return this.token;
2926
+ }
2927
+ return "string";
2928
+ }
2929
+ }, {
2930
+ token: "constant.language.escape",
2931
+ regex: /\\['\\]/
2932
+ }, {
2933
+ token: "constant.language.escape",
2934
+ regex: /\\./
2935
+ }, {
2936
+ token: "string.end",
2937
+ regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2938
+ if (stack.length && val === closeParen[stack[0]]) {
2939
+ stack.shift();
2940
+ this.next = stack.shift();
2941
+ return this.token;
2942
+ }
2943
+ this.next = '';
2944
+ return "string";
2945
+ }
2946
+ }, {
2947
+ defaultToken: "string"
2948
+ }],
2949
+ "sStateWithoutInterpolation": [{
2950
+ token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization
2951
+ regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2952
+ if (stack.length && val === stack[0]) {
2953
+ stack.unshift(val, state);
2954
+ return this.token;
2955
+ }
2956
+ return "constant.other.symbol.ruby";
2957
+ }
2958
+ }, {
2959
+ token: "constant.other.symbol.ruby",
2960
+ regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2961
+ if (stack.length && val === closeParen[stack[0]]) {
2962
+ stack.shift();
2963
+ this.next = stack.shift();
2964
+ return this.token;
2965
+ }
2966
+ this.next = '';
2967
+ return "constant.other.symbol.ruby";
2968
+ }
2969
+ }, {
2970
+ defaultToken: "constant.other.symbol.ruby"
2971
+ }],
2972
+ "sStateWithInterpolation": [{
2973
+ token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization
2974
+ regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2975
+ if (stack.length && val === stack[0]) {
2976
+ stack.unshift(val, state);
2977
+ return this.token;
2978
+ }
2979
+ return "constant.other.symbol.ruby";
2980
+ }
2981
+ }, {
2982
+ token: "constant.language.escape",
2983
+ regex: escapedChars
2984
+ }, {
2985
+ token: "constant.language.escape",
2986
+ regex: /\\./
2987
+ }, {
2988
+ token: "paren.start",
2989
+ regex: /#{/,
2990
+ push: "start"
2991
+ }, {
2992
+ token: "constant.other.symbol.ruby",
2993
+ regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2994
+ if (stack.length && val === closeParen[stack[0]]) {
2995
+ stack.shift();
2996
+ this.next = stack.shift();
2997
+ return this.token;
2998
+ }
2999
+ this.next = '';
3000
+ return "constant.other.symbol.ruby";
3001
+ }
3002
+ }, {
3003
+ defaultToken: "constant.other.symbol.ruby"
3004
+ }],
3005
+ "rState": [{
3006
+ token: "string.regexp",// excluded nested |^% due to difficulty in realization
3007
+ regex: /[(\[<{]/, onMatch: function (val, state, stack) {
3008
+ if (stack.length && val === stack[0]) {
3009
+ stack.unshift(val, state);
3010
+ return this.token;
3011
+ }
3012
+ return "constant.language.escape";
3013
+ }
3014
+ }, {
3015
+ token: "paren.start",
3016
+ regex: /#{/,
3017
+ push: "start"
3018
+ }, {
3019
+ token: "string.regexp",
3020
+ regex: /\//
3021
+ }, {
3022
+ token: "string.regexp",
3023
+ regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) {
3024
+ if (stack.length && val[0] === closeParen[stack[0]]) {
3025
+ stack.shift();
3026
+ this.next = stack.shift();
3027
+ return this.token;
3028
+ }
3029
+ this.next = '';
3030
+ return "constant.language.escape";
3031
+ }
3032
+ },
3033
+ {include: "regex"},
3034
+ {
3035
+ defaultToken: "string.regexp"
3036
+ }],
3037
+ "regex": [
3038
+ {// character classes
3039
+ token: "regexp.keyword",
3040
+ regex: /\\[wWdDhHsS]/
2748
3041
  }, {
2749
- token : "paren.rparen",
2750
- regex : "[\\])}]"
3042
+ token: "constant.language.escape",
3043
+ regex: /\\[AGbBzZ]/
2751
3044
  }, {
2752
- token : "text",
2753
- regex : "\\s+"
3045
+ token: "constant.language.escape",
3046
+ regex: /\\g<[a-zA-Z0-9]*>/
3047
+ }, {
3048
+ token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"],
3049
+ regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/
3050
+ }, {
3051
+ token: ["constant.language.escape", "invalid", "constant.language.escape"],
3052
+ regex: /(\\p{\^?)([^/]*)(})/
3053
+ }, {// escapes
3054
+ token: "regexp.keyword.operator",
3055
+ regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
3056
+ }, {// flag
3057
+ token: "string.regexp",
3058
+ regex: /[/][imxouesn]*/,
3059
+ next: "start"
3060
+ }, {// invalid operators
3061
+ token: "invalid",
3062
+ regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
3063
+ }, {// operators
3064
+ token: "constant.language.escape",
3065
+ regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
3066
+ }, {
3067
+ token: "constant.language.delimiter",
3068
+ regex: /\|/
3069
+ }, {
3070
+ token: "regexp.keyword",
3071
+ regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/
3072
+ }, {
3073
+ token: "constant.language.escape",
3074
+ regex: /\[\^?/,
3075
+ push: "regex_character_class"
3076
+ }, {
3077
+ defaultToken: "string.regexp"
2754
3078
  }
2755
3079
  ],
2756
- "comment" : [
3080
+ "regex_character_class": [
2757
3081
  {
2758
- token : "comment", // closing comment
2759
- regex : "^=end(?:$|\\s.*$)",
2760
- next : "start"
3082
+ token: "regexp.keyword",
3083
+ regex: /\\[wWdDhHsS]/
3084
+ }, {
3085
+ token: "regexp.charclass.keyword.operator",
3086
+ regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
3087
+ }, {
3088
+ token: "constant.language.escape",
3089
+ regex: /&?&?\[\^?/,
3090
+ push: "regex_character_class"
2761
3091
  }, {
2762
- token : "comment", // comment spanning whole line
2763
- regex : ".+"
3092
+ token: "constant.language.escape",
3093
+ regex: "]",
3094
+ next: "pop"
3095
+ }, {
3096
+ token: "constant.language.escape",
3097
+ regex: "-"
3098
+ }, {
3099
+ defaultToken: "string.regexp.characterclass"
2764
3100
  }
2765
3101
  ]
2766
3102
  };
@@ -2773,94 +3109,271 @@ oop.inherits(RubyHighlightRules, TextHighlightRules);
2773
3109
  exports.RubyHighlightRules = RubyHighlightRules;
2774
3110
  });
2775
3111
 
2776
- define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) {
3112
+ define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function (require, exports, module) {
2777
3113
  "use strict";
2778
3114
 
2779
3115
  var oop = require("../../lib/oop");
2780
3116
  var BaseFoldMode = require("./fold_mode").FoldMode;
2781
3117
  var Range = require("../../range").Range;
3118
+ var TokenIterator = require("../../token_iterator").TokenIterator;
3119
+
3120
+
3121
+ var FoldMode = exports.FoldMode = function () {
3122
+ };
2782
3123
 
2783
- var FoldMode = exports.FoldMode = function() {};
2784
3124
  oop.inherits(FoldMode, BaseFoldMode);
2785
3125
 
2786
- (function() {
3126
+ (function () {
3127
+ this.indentKeywords = {
3128
+ "class": 1,
3129
+ "def": 1,
3130
+ "module": 1,
3131
+ "do": 1,
3132
+ "unless": 1,
3133
+ "if": 1,
3134
+ "while": 1,
3135
+ "for": 1,
3136
+ "until": 1,
3137
+ "begin": 1,
3138
+ "else": 0,
3139
+ "elsif": 0,
3140
+ "rescue": 0,
3141
+ "ensure": 0,
3142
+ "when": 0,
3143
+ "end": -1,
3144
+ "case": 1,
3145
+ "=begin": 1,
3146
+ "=end": -1
3147
+ };
2787
3148
 
2788
- this.getFoldWidgetRange = function(session, foldStyle, row) {
2789
- var range = this.indentationBlock(session, row);
2790
- if (range)
2791
- return range;
3149
+ this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/;
3150
+ this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/;
2792
3151
 
2793
- var re = /\S/;
3152
+ this.getFoldWidget = function (session, foldStyle, row) {
2794
3153
  var line = session.getLine(row);
2795
- var startLevel = line.search(re);
2796
- if (startLevel == -1 || line[startLevel] != "#")
2797
- return;
2798
-
2799
- var startColumn = line.length;
2800
- var maxRow = session.getLength();
2801
- var startRow = row;
2802
- var endRow = row;
3154
+ var isStart = this.foldingStartMarker.test(line);
3155
+ var isEnd = this.foldingStopMarker.test(line);
3156
+
3157
+ if (isStart && !isEnd) {
3158
+ var match = line.match(this.foldingStartMarker);
3159
+ if (match[1]) {
3160
+ if (match[1] == "if" || match[1] == "else" || match[1] == "while" || match[1] == "until" || match[1] == "unless") {
3161
+ if (match[1] == "else" && /^\s*else\s*$/.test(line) === false) {
3162
+ return;
3163
+ }
3164
+ if (/^\s*(?:if|else|while|until|unless)\s*/.test(line) === false) {
3165
+ return;
3166
+ }
3167
+ }
2803
3168
 
2804
- while (++row < maxRow) {
2805
- line = session.getLine(row);
2806
- var level = line.search(re);
3169
+ if (match[1] == "when") {
3170
+ if (/\sthen\s/.test(line) === true) {
3171
+ return;
3172
+ }
3173
+ }
3174
+ if (session.getTokenAt(row, match.index + 2).type === "keyword")
3175
+ return "start";
3176
+ } else if (match[3]) {
3177
+ if (session.getTokenAt(row, match.index + 1).type === "comment.multiline")
3178
+ return "start";
3179
+ } else {
3180
+ return "start";
3181
+ }
3182
+ }
3183
+ if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd)
3184
+ return "";
2807
3185
 
2808
- if (level == -1)
2809
- continue;
3186
+ var match = line.match(this.foldingStopMarker);
3187
+ if (match[3] === "end") {
3188
+ if (session.getTokenAt(row, match.index + 1).type === "keyword")
3189
+ return "end";
3190
+ } else if (match[1]) {
3191
+ if (session.getTokenAt(row, match.index + 1).type === "comment.multiline")
3192
+ return "end";
3193
+ } else
3194
+ return "end";
3195
+ };
2810
3196
 
2811
- if (line[level] != "#")
2812
- break;
3197
+ this.getFoldWidgetRange = function (session, foldStyle, row) {
3198
+ var line = session.doc.getLine(row);
3199
+ var match = this.foldingStartMarker.exec(line);
3200
+ if (match) {
3201
+ if (match[1] || match[3])
3202
+ return this.rubyBlock(session, row, match.index + 2);
2813
3203
 
2814
- endRow = row;
3204
+ return this.openingBracketBlock(session, "{", row, match.index);
2815
3205
  }
2816
3206
 
2817
- if (endRow > startRow) {
2818
- var endColumn = session.getLine(endRow).length;
2819
- return new Range(startRow, startColumn, endRow, endColumn);
3207
+ var match = this.foldingStopMarker.exec(line);
3208
+ if (match) {
3209
+ if (match[3] === "end") {
3210
+ if (session.getTokenAt(row, match.index + 1).type === "keyword")
3211
+ return this.rubyBlock(session, row, match.index + 1);
3212
+ }
3213
+
3214
+ if (match[1] === "=end") {
3215
+ if (session.getTokenAt(row, match.index + 1).type === "comment.multiline")
3216
+ return this.rubyBlock(session, row, match.index + 1);
3217
+ }
3218
+
3219
+ return this.closingBracketBlock(session, "}", row, match.index + match[0].length);
2820
3220
  }
2821
3221
  };
2822
- this.getFoldWidget = function(session, foldStyle, row) {
3222
+
3223
+ this.rubyBlock = function (session, row, column, tokenRange) {
3224
+ var stream = new TokenIterator(session, row, column);
3225
+
3226
+ var token = stream.getCurrentToken();
3227
+ if (!token || (token.type != "keyword" && token.type != "comment.multiline"))
3228
+ return;
3229
+
3230
+ var val = token.value;
2823
3231
  var line = session.getLine(row);
2824
- var indent = line.search(/\S/);
2825
- var next = session.getLine(row + 1);
2826
- var prev = session.getLine(row - 1);
2827
- var prevIndent = prev.search(/\S/);
2828
- var nextIndent = next.search(/\S/);
2829
-
2830
- if (indent == -1) {
2831
- session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : "";
2832
- return "";
3232
+ switch (token.value) {
3233
+ case "if":
3234
+ case "unless":
3235
+ case "while":
3236
+ case "until":
3237
+ var checkToken = new RegExp("^\\s*" + token.value);
3238
+ if (!checkToken.test(line)) {
3239
+ return;
3240
+ }
3241
+ var dir = this.indentKeywords[val];
3242
+ break;
3243
+ case "when":
3244
+ if (/\sthen\s/.test(line)) {
3245
+ return;
3246
+ }
3247
+ case "elsif":
3248
+ case "rescue":
3249
+ case "ensure":
3250
+ var dir = 1;
3251
+ break;
3252
+ case "else":
3253
+ var checkToken = new RegExp("^\\s*" + token.value + "\\s*$");
3254
+ if (!checkToken.test(line)) {
3255
+ return;
3256
+ }
3257
+ var dir = 1;
3258
+ break;
3259
+ default:
3260
+ var dir = this.indentKeywords[val];
3261
+ break;
2833
3262
  }
2834
- if (prevIndent == -1) {
2835
- if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") {
2836
- session.foldWidgets[row - 1] = "";
2837
- session.foldWidgets[row + 1] = "";
2838
- return "start";
3263
+
3264
+ var stack = [val];
3265
+ if (!dir)
3266
+ return;
3267
+
3268
+ var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length;
3269
+ var startRow = row;
3270
+ var ranges = [];
3271
+ ranges.push(stream.getCurrentTokenRange());
3272
+
3273
+ stream.step = dir === -1 ? stream.stepBackward : stream.stepForward;
3274
+ if (token.type == "comment.multiline") {
3275
+ while (token = stream.step()) {
3276
+ if (token.type !== "comment.multiline")
3277
+ continue;
3278
+ if (dir == 1) {
3279
+ startColumn = 6;
3280
+ if (token.value == "=end") {
3281
+ break;
3282
+ }
3283
+ } else {
3284
+ if (token.value == "=begin") {
3285
+ break;
3286
+ }
3287
+ }
2839
3288
  }
2840
- } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") {
2841
- if (session.getLine(row - 2).search(/\S/) == -1) {
2842
- session.foldWidgets[row - 1] = "start";
2843
- session.foldWidgets[row + 1] = "";
2844
- return "";
3289
+ } else {
3290
+ while (token = stream.step()) {
3291
+ var ignore = false;
3292
+ if (token.type !== "keyword")
3293
+ continue;
3294
+ var level = dir * this.indentKeywords[token.value];
3295
+ line = session.getLine(stream.getCurrentTokenRow());
3296
+ switch (token.value) {
3297
+ case "do":
3298
+ for (var i = stream.$tokenIndex - 1; i >= 0; i--) {
3299
+ var prevToken = stream.$rowTokens[i];
3300
+ if (prevToken && (prevToken.value == "while" || prevToken.value == "until" || prevToken.value == "for")) {
3301
+ level = 0;
3302
+ break;
3303
+ }
3304
+ }
3305
+ break;
3306
+ case "else":
3307
+ var checkToken = new RegExp("^\\s*" + token.value + "\\s*$");
3308
+ if (!checkToken.test(line) || val == "case") {
3309
+ level = 0;
3310
+ ignore = true;
3311
+ }
3312
+ break;
3313
+ case "if":
3314
+ case "unless":
3315
+ case "while":
3316
+ case "until":
3317
+ var checkToken = new RegExp("^\\s*" + token.value);
3318
+ if (!checkToken.test(line)) {
3319
+ level = 0;
3320
+ ignore = true;
3321
+ }
3322
+ break;
3323
+ case "when":
3324
+ if (/\sthen\s/.test(line) || val == "case") {
3325
+ level = 0;
3326
+ ignore = true;
3327
+ }
3328
+ break;
3329
+ }
3330
+
3331
+ if (level > 0) {
3332
+ stack.unshift(token.value);
3333
+ } else if (level <= 0 && ignore === false) {
3334
+ stack.shift();
3335
+ if (!stack.length) {
3336
+ if ((val == "while" || val == "until" || val == "for") && token.value != "do") {
3337
+ break;
3338
+ }
3339
+ if (token.value == "do" && dir == -1 && level != 0)
3340
+ break;
3341
+ if (token.value != "do")
3342
+ break;
3343
+ }
3344
+
3345
+ if (level === 0) {
3346
+ stack.unshift(token.value);
3347
+ }
3348
+ }
2845
3349
  }
2846
3350
  }
2847
3351
 
2848
- if (prevIndent!= -1 && prevIndent < indent)
2849
- session.foldWidgets[row - 1] = "start";
2850
- else
2851
- session.foldWidgets[row - 1] = "";
3352
+ if (!token)
3353
+ return null;
2852
3354
 
2853
- if (indent < nextIndent)
2854
- return "start";
2855
- else
2856
- return "";
3355
+ if (tokenRange) {
3356
+ ranges.push(stream.getCurrentTokenRange());
3357
+ return ranges;
3358
+ }
3359
+
3360
+ var row = stream.getCurrentTokenRow();
3361
+ if (dir === -1) {
3362
+ if (token.type === "comment.multiline") {
3363
+ var endColumn = 6;
3364
+ } else {
3365
+ var endColumn = session.getLine(row).length;
3366
+ }
3367
+ return new Range(row, endColumn, startRow - 1, startColumn);
3368
+ } else
3369
+ return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length);
2857
3370
  };
2858
3371
 
2859
3372
  }).call(FoldMode.prototype);
2860
3373
 
2861
3374
  });
2862
3375
 
2863
- define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"], function(require, exports, module) {
3376
+ define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/ruby"], function(require, exports, module) {
2864
3377
  "use strict";
2865
3378
 
2866
3379
  var oop = require("../lib/oop");
@@ -2869,13 +3382,14 @@ var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules;
2869
3382
  var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
2870
3383
  var Range = require("../range").Range;
2871
3384
  var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
2872
- var FoldMode = require("./folding/coffee").FoldMode;
3385
+ var FoldMode = require("./folding/ruby").FoldMode;
2873
3386
 
2874
3387
  var Mode = function() {
2875
3388
  this.HighlightRules = RubyHighlightRules;
2876
3389
  this.$outdent = new MatchingBraceOutdent();
2877
3390
  this.$behaviour = new CstyleBehaviour();
2878
3391
  this.foldingRules = new FoldMode();
3392
+ this.indentKeywords = this.foldingRules.indentKeywords;
2879
3393
  };
2880
3394
  oop.inherits(Mode, TextMode);
2881
3395
 
@@ -2890,7 +3404,7 @@ oop.inherits(Mode, TextMode);
2890
3404
  var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
2891
3405
  var tokens = tokenizedLine.tokens;
2892
3406
 
2893
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
3407
+ if (tokens.length && tokens[tokens.length - 1].type == "comment") {
2894
3408
  return indent;
2895
3409
  }
2896
3410
 
@@ -2898,7 +3412,7 @@ oop.inherits(Mode, TextMode);
2898
3412
  var match = line.match(/^.*[\{\(\[]\s*$/);
2899
3413
  var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/);
2900
3414
  var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/);
2901
- var startingConditional = line.match(/^\s*(if|else|when)\s*/)
3415
+ var startingConditional = line.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/);
2902
3416
  if (match || startingClassOrMethod || startingDoBlock || startingConditional) {
2903
3417
  indent += tab;
2904
3418
  }
@@ -2908,7 +3422,7 @@ oop.inherits(Mode, TextMode);
2908
3422
  };
2909
3423
 
2910
3424
  this.checkOutdent = function(state, line, input) {
2911
- return /^\s+(end|else)$/.test(line + input) || this.$outdent.checkOutdent(line, input);
3425
+ return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input);
2912
3426
  };
2913
3427
 
2914
3428
  this.autoOutdent = function(state, session, row) {
@@ -2921,11 +3435,24 @@ oop.inherits(Mode, TextMode);
2921
3435
  var tab = session.getTabString();
2922
3436
  if (prevIndent.length <= indent.length) {
2923
3437
  if (indent.slice(-tab.length) == tab)
2924
- session.remove(new Range(row, indent.length-tab.length, row, indent.length));
3438
+ session.remove(new Range(row, indent.length - tab.length, row, indent.length));
2925
3439
  }
2926
3440
  };
2927
3441
 
3442
+ this.getMatching = function(session, row, column) {
3443
+ if (row == undefined) {
3444
+ var pos = session.selection.lead;
3445
+ column = pos.column;
3446
+ row = pos.row;
3447
+ }
3448
+
3449
+ var startToken = session.getTokenAt(row, column);
3450
+ if (startToken && startToken.value in this.indentKeywords)
3451
+ return this.foldingRules.rubyBlock(session, row, column, true);
3452
+ };
3453
+
2928
3454
  this.$id = "ace/mode/ruby";
3455
+ this.snippetFileId = "ace/snippets/ruby";
2929
3456
  }).call(Mode.prototype);
2930
3457
 
2931
3458
  exports.Mode = Mode;
@@ -2996,4 +3523,11 @@ oop.inherits(Mode, HtmlMode);
2996
3523
  }).call(Mode.prototype);
2997
3524
 
2998
3525
  exports.Mode = Mode;
2999
- });
3526
+ }); (function() {
3527
+ window.require(["ace/mode/ejs"], function(m) {
3528
+ if (typeof module == "object" && typeof exports == "object" && module) {
3529
+ module.exports = m;
3530
+ }
3531
+ });
3532
+ })();
3533
+