@openui5/sap.ui.codeeditor 1.120.6 → 1.121.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/.reuse/dep5 +23 -21
  2. package/THIRDPARTY.txt +6 -43
  3. package/package.json +2 -2
  4. package/src/sap/ui/codeeditor/.library +2 -2
  5. package/src/sap/ui/codeeditor/CodeEditor.js +41 -27
  6. package/src/sap/ui/codeeditor/js/ace/ace.js +16262 -16597
  7. package/src/sap/ui/codeeditor/js/ace/css/ace.css +358 -86
  8. package/src/sap/ui/codeeditor/js/ace/css/ambiance-3.png +0 -0
  9. package/src/sap/ui/codeeditor/js/ace/css/chrome-2.png +0 -0
  10. package/src/sap/ui/codeeditor/js/ace/css/cloud9_day-1.png +0 -0
  11. package/src/sap/ui/codeeditor/js/ace/css/cloud9_day-2.png +0 -0
  12. package/src/sap/ui/codeeditor/js/ace/css/cloud9_night-1.png +0 -0
  13. package/src/sap/ui/codeeditor/js/ace/css/cloud9_night-2.png +0 -0
  14. package/src/sap/ui/codeeditor/js/ace/css/cloud9_night_low_color-1.png +0 -0
  15. package/src/sap/ui/codeeditor/js/ace/css/cloud9_night_low_color-2.png +0 -0
  16. package/src/sap/ui/codeeditor/js/ace/css/clouds-2.png +0 -0
  17. package/src/sap/ui/codeeditor/js/ace/css/clouds_midnight-2.png +0 -0
  18. package/src/sap/ui/codeeditor/js/ace/css/cobalt-2.png +0 -0
  19. package/src/sap/ui/codeeditor/js/ace/css/crimson_editor-2.png +0 -0
  20. package/src/sap/ui/codeeditor/js/ace/css/dawn-2.png +0 -0
  21. package/src/sap/ui/codeeditor/js/ace/css/dracula-2.png +0 -0
  22. package/src/sap/ui/codeeditor/js/ace/css/dreamweaver-2.png +0 -0
  23. package/src/sap/ui/codeeditor/js/ace/css/eclipse-2.png +0 -0
  24. package/src/sap/ui/codeeditor/js/ace/css/github-2.png +0 -0
  25. package/src/sap/ui/codeeditor/js/ace/css/github_dark-1.png +0 -0
  26. package/src/sap/ui/codeeditor/js/ace/css/github_dark-2.png +0 -0
  27. package/src/sap/ui/codeeditor/js/ace/css/gob-2.png +0 -0
  28. package/src/sap/ui/codeeditor/js/ace/css/gruvbox-2.png +0 -0
  29. package/src/sap/ui/codeeditor/js/ace/css/gruvbox_dark_hard-1.png +0 -0
  30. package/src/sap/ui/codeeditor/js/ace/css/gruvbox_light_hard-1.png +0 -0
  31. package/src/sap/ui/codeeditor/js/ace/css/gruvbox_light_hard-2.png +0 -0
  32. package/src/sap/ui/codeeditor/js/ace/css/idle_fingers-2.png +0 -0
  33. package/src/sap/ui/codeeditor/js/ace/css/iplastic-3.png +0 -0
  34. package/src/sap/ui/codeeditor/js/ace/css/katzenmilch-1.png +0 -0
  35. package/src/sap/ui/codeeditor/js/ace/css/katzenmilch-2.png +0 -0
  36. package/src/sap/ui/codeeditor/js/ace/css/kr_theme-2.png +0 -0
  37. package/src/sap/ui/codeeditor/js/ace/css/kuroir-1.png +0 -0
  38. package/src/sap/ui/codeeditor/js/ace/css/kuroir-2.png +0 -0
  39. package/src/sap/ui/codeeditor/js/ace/css/main-10.png +0 -0
  40. package/src/sap/ui/codeeditor/js/ace/css/main-11.png +0 -0
  41. package/src/sap/ui/codeeditor/js/ace/css/main-12.png +0 -0
  42. package/src/sap/ui/codeeditor/js/ace/css/main-13.png +0 -0
  43. package/src/sap/ui/codeeditor/js/ace/css/main-14.png +0 -0
  44. package/src/sap/ui/codeeditor/js/ace/css/main-15.png +0 -0
  45. package/src/sap/ui/codeeditor/js/ace/css/main-16.png +0 -0
  46. package/src/sap/ui/codeeditor/js/ace/css/main-17.png +0 -0
  47. package/src/sap/ui/codeeditor/js/ace/css/main-18.png +0 -0
  48. package/src/sap/ui/codeeditor/js/ace/css/main-19.png +0 -0
  49. package/src/sap/ui/codeeditor/js/ace/css/main-20.png +0 -0
  50. package/src/sap/ui/codeeditor/js/ace/css/main-21.png +0 -0
  51. package/src/sap/ui/codeeditor/js/ace/css/main-22.png +0 -0
  52. package/src/sap/ui/codeeditor/js/ace/css/main-22.svg +1 -0
  53. package/src/sap/ui/codeeditor/js/ace/css/main-23.png +0 -0
  54. package/src/sap/ui/codeeditor/js/ace/css/main-5.svg +7 -0
  55. package/src/sap/ui/codeeditor/js/ace/css/main-6.svg +7 -0
  56. package/src/sap/ui/codeeditor/js/ace/css/main-7.svg +9 -0
  57. package/src/sap/ui/codeeditor/js/ace/css/main-8.png +0 -0
  58. package/src/sap/ui/codeeditor/js/ace/css/main-8.svg +4 -0
  59. package/src/sap/ui/codeeditor/js/ace/css/main-9.png +0 -0
  60. package/src/sap/ui/codeeditor/js/ace/css/main-9.svg +4 -0
  61. package/src/sap/ui/codeeditor/js/ace/css/merbivore-2.png +0 -0
  62. package/src/sap/ui/codeeditor/js/ace/css/merbivore_soft-2.png +0 -0
  63. package/src/sap/ui/codeeditor/js/ace/css/mono_industrial-2.png +0 -0
  64. package/src/sap/ui/codeeditor/js/ace/css/monokai-2.png +0 -0
  65. package/src/sap/ui/codeeditor/js/ace/css/one_dark-2.png +0 -0
  66. package/src/sap/ui/codeeditor/js/ace/css/pastel_on_dark-2.png +0 -0
  67. package/src/sap/ui/codeeditor/js/ace/css/solarized_dark-2.png +0 -0
  68. package/src/sap/ui/codeeditor/js/ace/css/solarized_light-2.png +0 -0
  69. package/src/sap/ui/codeeditor/js/ace/css/sqlserver-2.png +0 -0
  70. package/src/sap/ui/codeeditor/js/ace/css/terminal-2.png +0 -0
  71. package/src/sap/ui/codeeditor/js/ace/css/textmate-2.png +0 -0
  72. package/src/sap/ui/codeeditor/js/ace/css/theme/ambiance.css +120 -68
  73. package/src/sap/ui/codeeditor/js/ace/css/theme/chaos.css +79 -66
  74. package/src/sap/ui/codeeditor/js/ace/css/theme/chrome.css +82 -43
  75. package/src/sap/ui/codeeditor/js/ace/css/theme/cloud9_day.css +160 -0
  76. package/src/sap/ui/codeeditor/js/ace/css/theme/cloud9_night.css +146 -0
  77. package/src/sap/ui/codeeditor/js/ace/css/theme/cloud9_night_low_color.css +134 -0
  78. package/src/sap/ui/codeeditor/js/ace/css/theme/clouds.css +59 -31
  79. package/src/sap/ui/codeeditor/js/ace/css/theme/clouds_midnight.css +60 -32
  80. package/src/sap/ui/codeeditor/js/ace/css/theme/cobalt.css +71 -38
  81. package/src/sap/ui/codeeditor/js/ace/css/theme/crimson_editor.css +79 -42
  82. package/src/sap/ui/codeeditor/js/ace/css/theme/dawn.css +70 -40
  83. package/src/sap/ui/codeeditor/js/ace/css/theme/dracula.css +95 -49
  84. package/src/sap/ui/codeeditor/js/ace/css/theme/dreamweaver.css +95 -49
  85. package/src/sap/ui/codeeditor/js/ace/css/theme/eclipse.css +62 -33
  86. package/src/sap/ui/codeeditor/js/ace/css/theme/github.css +71 -38
  87. package/src/sap/ui/codeeditor/js/ace/css/theme/github_dark.css +134 -0
  88. package/src/sap/ui/codeeditor/js/ace/css/theme/gob.css +68 -38
  89. package/src/sap/ui/codeeditor/js/ace/css/theme/gruvbox.css +54 -28
  90. package/src/sap/ui/codeeditor/js/ace/css/theme/gruvbox_dark_hard.css +163 -0
  91. package/src/sap/ui/codeeditor/js/ace/css/theme/gruvbox_light_hard.css +167 -0
  92. package/src/sap/ui/codeeditor/js/ace/css/theme/idle_fingers.css +62 -34
  93. package/src/sap/ui/codeeditor/js/ace/css/theme/iplastic.css +76 -45
  94. package/src/sap/ui/codeeditor/js/ace/css/theme/katzenmilch.css +91 -53
  95. package/src/sap/ui/codeeditor/js/ace/css/theme/kr_theme.css +67 -36
  96. package/src/sap/ui/codeeditor/js/ace/css/theme/kuroir.css +43 -17
  97. package/src/sap/ui/codeeditor/js/ace/css/theme/merbivore.css +57 -31
  98. package/src/sap/ui/codeeditor/js/ace/css/theme/merbivore_soft.css +57 -31
  99. package/src/sap/ui/codeeditor/js/ace/css/theme/mono_industrial.css +66 -36
  100. package/src/sap/ui/codeeditor/js/ace/css/theme/monokai.css +63 -35
  101. package/src/sap/ui/codeeditor/js/ace/css/theme/nord_dark.css +55 -29
  102. package/src/sap/ui/codeeditor/js/ace/css/theme/one_dark.css +88 -47
  103. package/src/sap/ui/codeeditor/js/ace/css/theme/pastel_on_dark.css +70 -38
  104. package/src/sap/ui/codeeditor/js/ace/css/theme/solarized_dark.css +52 -28
  105. package/src/sap/ui/codeeditor/js/ace/css/theme/solarized_light.css +55 -29
  106. package/src/sap/ui/codeeditor/js/ace/css/theme/sqlserver.css +90 -48
  107. package/src/sap/ui/codeeditor/js/ace/css/theme/terminal.css +64 -34
  108. package/src/sap/ui/codeeditor/js/ace/css/theme/textmate.css +82 -43
  109. package/src/sap/ui/codeeditor/js/ace/css/theme/tomorrow.css +61 -33
  110. package/src/sap/ui/codeeditor/js/ace/css/theme/tomorrow_night.css +61 -33
  111. package/src/sap/ui/codeeditor/js/ace/css/theme/tomorrow_night_blue.css +59 -32
  112. package/src/sap/ui/codeeditor/js/ace/css/theme/tomorrow_night_bright.css +71 -40
  113. package/src/sap/ui/codeeditor/js/ace/css/theme/tomorrow_night_eighties.css +61 -33
  114. package/src/sap/ui/codeeditor/js/ace/css/theme/twilight.css +66 -36
  115. package/src/sap/ui/codeeditor/js/ace/css/theme/vibrant_ink.css +59 -32
  116. package/src/sap/ui/codeeditor/js/ace/css/theme/xcode.css +54 -28
  117. package/src/sap/ui/codeeditor/js/ace/css/tomorrow-2.png +0 -0
  118. package/src/sap/ui/codeeditor/js/ace/css/tomorrow_night-2.png +0 -0
  119. package/src/sap/ui/codeeditor/js/ace/css/tomorrow_night_blue-2.png +0 -0
  120. package/src/sap/ui/codeeditor/js/ace/css/tomorrow_night_bright-2.png +0 -0
  121. package/src/sap/ui/codeeditor/js/ace/css/tomorrow_night_eighties-2.png +0 -0
  122. package/src/sap/ui/codeeditor/js/ace/css/twilight-2.png +0 -0
  123. package/src/sap/ui/codeeditor/js/ace/css/vibrant_ink-2.png +0 -0
  124. package/src/sap/ui/codeeditor/js/ace/css/xcode-2.png +0 -0
  125. package/src/sap/ui/codeeditor/js/ace/ext-beautify.js +90 -91
  126. package/src/sap/ui/codeeditor/js/ace/ext-code_lens.js +39 -75
  127. package/src/sap/ui/codeeditor/js/ace/ext-command_bar.js +457 -0
  128. package/src/sap/ui/codeeditor/js/ace/ext-elastic_tabstops_lite.js +47 -97
  129. package/src/sap/ui/codeeditor/js/ace/ext-emmet.js +496 -552
  130. package/src/sap/ui/codeeditor/js/ace/ext-hardwrap.js +47 -16
  131. package/src/sap/ui/codeeditor/js/ace/ext-inline_autocomplete.js +3269 -0
  132. package/src/sap/ui/codeeditor/js/ace/ext-keybinding_menu.js +45 -105
  133. package/src/sap/ui/codeeditor/js/ace/ext-language_tools.js +1438 -1128
  134. package/src/sap/ui/codeeditor/js/ace/ext-linking.js +8 -16
  135. package/src/sap/ui/codeeditor/js/ace/ext-modelist.js +198 -185
  136. package/src/sap/ui/codeeditor/js/ace/ext-options.js +405 -443
  137. package/src/sap/ui/codeeditor/js/ace/ext-prompt.js +1682 -1508
  138. package/src/sap/ui/codeeditor/js/ace/ext-rtl.js +26 -28
  139. package/src/sap/ui/codeeditor/js/ace/ext-searchbox.js +160 -332
  140. package/src/sap/ui/codeeditor/js/ace/ext-settings_menu.js +409 -446
  141. package/src/sap/ui/codeeditor/js/ace/ext-simple_tokenizer.js +45 -0
  142. package/src/sap/ui/codeeditor/js/ace/ext-spellcheck.js +4 -10
  143. package/src/sap/ui/codeeditor/js/ace/ext-split.js +41 -63
  144. package/src/sap/ui/codeeditor/js/ace/ext-statusbar.js +19 -27
  145. package/src/sap/ui/codeeditor/js/ace/ext-themelist.js +45 -41
  146. package/src/sap/ui/codeeditor/js/ace/ext-whitespace.js +62 -83
  147. package/src/sap/ui/codeeditor/js/ace/keybinding-emacs.js +442 -551
  148. package/src/sap/ui/codeeditor/js/ace/keybinding-sublime.js +338 -351
  149. package/src/sap/ui/codeeditor/js/ace/keybinding-vim.js +5242 -4758
  150. package/src/sap/ui/codeeditor/js/ace/keybinding-vscode.js +228 -235
  151. package/src/sap/ui/codeeditor/js/ace/mode-abap.js +72 -93
  152. package/src/sap/ui/codeeditor/js/ace/mode-abc.js +136 -164
  153. package/src/sap/ui/codeeditor/js/ace/mode-actionscript.js +109 -150
  154. package/src/sap/ui/codeeditor/js/ace/mode-ada.js +45 -74
  155. package/src/sap/ui/codeeditor/js/ace/mode-alda.js +77 -109
  156. package/src/sap/ui/codeeditor/js/ace/mode-apache_conf.js +196 -241
  157. package/src/sap/ui/codeeditor/js/ace/mode-apex.js +192 -247
  158. package/src/sap/ui/codeeditor/js/ace/mode-applescript.js +56 -102
  159. package/src/sap/ui/codeeditor/js/ace/mode-aql.js +85 -95
  160. package/src/sap/ui/codeeditor/js/ace/mode-asciidoc.js +120 -158
  161. package/src/sap/ui/codeeditor/js/ace/mode-asl.js +233 -298
  162. package/src/sap/ui/codeeditor/js/ace/mode-assembly_x86.js +78 -101
  163. package/src/sap/ui/codeeditor/js/ace/mode-astro.js +2414 -0
  164. package/src/sap/ui/codeeditor/js/ace/mode-autohotkey.js +80 -116
  165. package/src/sap/ui/codeeditor/js/ace/mode-batchfile.js +74 -105
  166. package/src/sap/ui/codeeditor/js/ace/mode-bibtex.js +318 -0
  167. package/src/sap/ui/codeeditor/js/ace/mode-c9search.js +72 -115
  168. package/src/sap/ui/codeeditor/js/ace/mode-c_cpp.js +171 -257
  169. package/src/sap/ui/codeeditor/js/ace/mode-cirru.js +97 -115
  170. package/src/sap/ui/codeeditor/js/ace/mode-clojure.js +126 -119
  171. package/src/sap/ui/codeeditor/js/ace/mode-cobol.js +48 -67
  172. package/src/sap/ui/codeeditor/js/ace/mode-coffee.js +203 -268
  173. package/src/sap/ui/codeeditor/js/ace/mode-coldfusion.js +1029 -1276
  174. package/src/sap/ui/codeeditor/js/ace/mode-crystal.js +337 -393
  175. package/src/sap/ui/codeeditor/js/ace/mode-csharp.js +127 -216
  176. package/src/sap/ui/codeeditor/js/ace/mode-csound_document.js +1539 -1569
  177. package/src/sap/ui/codeeditor/js/ace/mode-csound_orchestra.js +786 -898
  178. package/src/sap/ui/codeeditor/js/ace/mode-csound_score.js +184 -237
  179. package/src/sap/ui/codeeditor/js/ace/mode-csp.js +37 -37
  180. package/src/sap/ui/codeeditor/js/ace/mode-css.js +293 -384
  181. package/src/sap/ui/codeeditor/js/ace/mode-curly.js +1019 -1262
  182. package/src/sap/ui/codeeditor/js/ace/mode-cuttlefish.js +56 -0
  183. package/src/sap/ui/codeeditor/js/ace/mode-d.js +163 -233
  184. package/src/sap/ui/codeeditor/js/ace/mode-dart.js +330 -427
  185. package/src/sap/ui/codeeditor/js/ace/mode-diff.js +20 -38
  186. package/src/sap/ui/codeeditor/js/ace/mode-django.js +1032 -1271
  187. package/src/sap/ui/codeeditor/js/ace/mode-dockerfile.js +211 -284
  188. package/src/sap/ui/codeeditor/js/ace/mode-dot.js +131 -200
  189. package/src/sap/ui/codeeditor/js/ace/mode-drools.js +408 -349
  190. package/src/sap/ui/codeeditor/js/ace/mode-edifact.js +89 -125
  191. package/src/sap/ui/codeeditor/js/ace/mode-eiffel.js +47 -62
  192. package/src/sap/ui/codeeditor/js/ace/mode-ejs.js +1350 -1666
  193. package/src/sap/ui/codeeditor/js/ace/mode-elixir.js +349 -407
  194. package/src/sap/ui/codeeditor/js/ace/mode-elm.js +136 -168
  195. package/src/sap/ui/codeeditor/js/ace/mode-erlang.js +707 -881
  196. package/src/sap/ui/codeeditor/js/ace/mode-flix.js +164 -0
  197. package/src/sap/ui/codeeditor/js/ace/mode-forth.js +128 -172
  198. package/src/sap/ui/codeeditor/js/ace/mode-fortran.js +177 -246
  199. package/src/sap/ui/codeeditor/js/ace/mode-fsharp.js +92 -131
  200. package/src/sap/ui/codeeditor/js/ace/mode-fsl.js +91 -124
  201. package/src/sap/ui/codeeditor/js/ace/mode-ftl.js +813 -748
  202. package/src/sap/ui/codeeditor/js/ace/mode-gcode.js +52 -71
  203. package/src/sap/ui/codeeditor/js/ace/mode-gherkin.js +105 -119
  204. package/src/sap/ui/codeeditor/js/ace/mode-gitignore.js +12 -22
  205. package/src/sap/ui/codeeditor/js/ace/mode-glsl.js +184 -289
  206. package/src/sap/ui/codeeditor/js/ace/mode-gobstones.js +686 -623
  207. package/src/sap/ui/codeeditor/js/ace/mode-golang.js +167 -239
  208. package/src/sap/ui/codeeditor/js/ace/mode-graphqlschema.js +48 -88
  209. package/src/sap/ui/codeeditor/js/ace/mode-groovy.js +577 -471
  210. package/src/sap/ui/codeeditor/js/ace/mode-haml.js +1062 -1026
  211. package/src/sap/ui/codeeditor/js/ace/mode-handlebars.js +1061 -1305
  212. package/src/sap/ui/codeeditor/js/ace/mode-haskell.js +199 -255
  213. package/src/sap/ui/codeeditor/js/ace/mode-haskell_cabal.js +81 -87
  214. package/src/sap/ui/codeeditor/js/ace/mode-haxe.js +111 -184
  215. package/src/sap/ui/codeeditor/js/ace/mode-hjson.js +164 -199
  216. package/src/sap/ui/codeeditor/js/ace/mode-html.js +1009 -1239
  217. package/src/sap/ui/codeeditor/js/ace/mode-html_elixir.js +1402 -1705
  218. package/src/sap/ui/codeeditor/js/ace/mode-html_ruby.js +1390 -1706
  219. package/src/sap/ui/codeeditor/js/ace/mode-ini.js +58 -82
  220. package/src/sap/ui/codeeditor/js/ace/mode-io.js +85 -123
  221. package/src/sap/ui/codeeditor/js/ace/mode-ion.js +477 -0
  222. package/src/sap/ui/codeeditor/js/ace/mode-jack.js +109 -162
  223. package/src/sap/ui/codeeditor/js/ace/mode-jade.js +1339 -1344
  224. package/src/sap/ui/codeeditor/js/ace/mode-java.js +710 -498
  225. package/src/sap/ui/codeeditor/js/ace/mode-javascript.js +441 -354
  226. package/src/sap/ui/codeeditor/js/ace/mode-jexl.js +270 -0
  227. package/src/sap/ui/codeeditor/js/ace/mode-json.js +93 -147
  228. package/src/sap/ui/codeeditor/js/ace/mode-json5.js +128 -180
  229. package/src/sap/ui/codeeditor/js/ace/mode-jsoniq.js +58 -112
  230. package/src/sap/ui/codeeditor/js/ace/mode-jsp.js +1045 -865
  231. package/src/sap/ui/codeeditor/js/ace/mode-jssm.js +158 -190
  232. package/src/sap/ui/codeeditor/js/ace/mode-jsx.js +121 -194
  233. package/src/sap/ui/codeeditor/js/ace/mode-julia.js +128 -177
  234. package/src/sap/ui/codeeditor/js/ace/mode-kotlin.js +262 -614
  235. package/src/sap/ui/codeeditor/js/ace/mode-latex.js +94 -138
  236. package/src/sap/ui/codeeditor/js/ace/mode-latte.js +1120 -1366
  237. package/src/sap/ui/codeeditor/js/ace/mode-less.js +342 -442
  238. package/src/sap/ui/codeeditor/js/ace/mode-liquid.js +1353 -1414
  239. package/src/sap/ui/codeeditor/js/ace/mode-lisp.js +65 -73
  240. package/src/sap/ui/codeeditor/js/ace/mode-livescript.js +217 -224
  241. package/src/sap/ui/codeeditor/js/ace/mode-logiql.js +97 -142
  242. package/src/sap/ui/codeeditor/js/ace/mode-logtalk.js +187 -227
  243. package/src/sap/ui/codeeditor/js/ace/mode-lsl.js +99 -155
  244. package/src/sap/ui/codeeditor/js/ace/mode-lua.js +152 -211
  245. package/src/sap/ui/codeeditor/js/ace/mode-luapage.js +1167 -1470
  246. package/src/sap/ui/codeeditor/js/ace/mode-lucene.js +25 -34
  247. package/src/sap/ui/codeeditor/js/ace/mode-makefile.js +244 -282
  248. package/src/sap/ui/codeeditor/js/ace/mode-markdown.js +1858 -2177
  249. package/src/sap/ui/codeeditor/js/ace/mode-mask.js +964 -1007
  250. package/src/sap/ui/codeeditor/js/ace/mode-matlab.js +197 -221
  251. package/src/sap/ui/codeeditor/js/ace/mode-maze.js +127 -163
  252. package/src/sap/ui/codeeditor/js/ace/mode-mediawiki.js +464 -476
  253. package/src/sap/ui/codeeditor/js/ace/mode-mel.js +90 -140
  254. package/src/sap/ui/codeeditor/js/ace/mode-mips.js +101 -134
  255. package/src/sap/ui/codeeditor/js/ace/mode-mixal.js +63 -75
  256. package/src/sap/ui/codeeditor/js/ace/mode-mushcode.js +537 -576
  257. package/src/sap/ui/codeeditor/js/ace/mode-mysql.js +85 -102
  258. package/src/sap/ui/codeeditor/js/ace/mode-nasal.js +513 -0
  259. package/src/sap/ui/codeeditor/js/ace/mode-nginx.js +119 -155
  260. package/src/sap/ui/codeeditor/js/ace/mode-nim.js +159 -197
  261. package/src/sap/ui/codeeditor/js/ace/mode-nix.js +283 -375
  262. package/src/sap/ui/codeeditor/js/ace/mode-nsis.js +139 -172
  263. package/src/sap/ui/codeeditor/js/ace/mode-nunjucks.js +1138 -1378
  264. package/src/sap/ui/codeeditor/js/ace/mode-objectivec.js +400 -514
  265. package/src/sap/ui/codeeditor/js/ace/mode-ocaml.js +77 -120
  266. package/src/sap/ui/codeeditor/js/ace/mode-odin.js +449 -0
  267. package/src/sap/ui/codeeditor/js/ace/mode-partiql.js +750 -0
  268. package/src/sap/ui/codeeditor/js/ace/mode-pascal.js +28 -47
  269. package/src/sap/ui/codeeditor/js/ace/mode-perl.js +122 -185
  270. package/src/sap/ui/codeeditor/js/ace/mode-pgsql.js +974 -851
  271. package/src/sap/ui/codeeditor/js/ace/mode-php.js +2282 -1502
  272. package/src/sap/ui/codeeditor/js/ace/mode-php_laravel_blade.js +2463 -1696
  273. package/src/sap/ui/codeeditor/js/ace/mode-pig.js +133 -165
  274. package/src/sap/ui/codeeditor/js/ace/mode-plain_text.js +5 -10
  275. package/src/sap/ui/codeeditor/js/ace/mode-plsql.js +268 -0
  276. package/src/sap/ui/codeeditor/js/ace/mode-powershell.js +332 -183
  277. package/src/sap/ui/codeeditor/js/ace/mode-praat.js +168 -234
  278. package/src/sap/ui/codeeditor/js/ace/mode-prisma.js +292 -324
  279. package/src/sap/ui/codeeditor/js/ace/mode-prolog.js +180 -246
  280. package/src/sap/ui/codeeditor/js/ace/mode-properties.js +26 -37
  281. package/src/sap/ui/codeeditor/js/ace/mode-protobuf.js +232 -327
  282. package/src/sap/ui/codeeditor/js/ace/mode-prql.js +320 -0
  283. package/src/sap/ui/codeeditor/js/ace/mode-puppet.js +68 -120
  284. package/src/sap/ui/codeeditor/js/ace/mode-python.js +338 -370
  285. package/src/sap/ui/codeeditor/js/ace/mode-qml.js +244 -279
  286. package/src/sap/ui/codeeditor/js/ace/mode-r.js +295 -220
  287. package/src/sap/ui/codeeditor/js/ace/mode-raku.js +356 -433
  288. package/src/sap/ui/codeeditor/js/ace/mode-razor.js +1130 -1374
  289. package/src/sap/ui/codeeditor/js/ace/mode-rdoc.js +214 -171
  290. package/src/sap/ui/codeeditor/js/ace/mode-red.js +212 -274
  291. package/src/sap/ui/codeeditor/js/ace/mode-redshift.js +181 -220
  292. package/src/sap/ui/codeeditor/js/ace/mode-rhtml.js +1325 -1443
  293. package/src/sap/ui/codeeditor/js/ace/mode-robot.js +168 -0
  294. package/src/sap/ui/codeeditor/js/ace/mode-rst.js +217 -229
  295. package/src/sap/ui/codeeditor/js/ace/mode-ruby.js +338 -420
  296. package/src/sap/ui/codeeditor/js/ace/mode-rust.js +258 -155
  297. package/src/sap/ui/codeeditor/js/ace/mode-sac.js +349 -0
  298. package/src/sap/ui/codeeditor/js/ace/mode-sass.js +257 -309
  299. package/src/sap/ui/codeeditor/js/ace/mode-scad.js +127 -191
  300. package/src/sap/ui/codeeditor/js/ace/mode-scala.js +572 -468
  301. package/src/sap/ui/codeeditor/js/ace/mode-scheme.js +104 -126
  302. package/src/sap/ui/codeeditor/js/ace/mode-scrypt.js +181 -228
  303. package/src/sap/ui/codeeditor/js/ace/mode-scss.js +364 -472
  304. package/src/sap/ui/codeeditor/js/ace/mode-sh.js +204 -266
  305. package/src/sap/ui/codeeditor/js/ace/mode-sjs.js +477 -405
  306. package/src/sap/ui/codeeditor/js/ace/mode-slim.js +2631 -3161
  307. package/src/sap/ui/codeeditor/js/ace/mode-smarty.js +1075 -1334
  308. package/src/sap/ui/codeeditor/js/ace/mode-smithy.js +276 -327
  309. package/src/sap/ui/codeeditor/js/ace/mode-snippets.js +78 -102
  310. package/src/sap/ui/codeeditor/js/ace/mode-soy_template.js +1251 -1548
  311. package/src/sap/ui/codeeditor/js/ace/mode-space.js +47 -63
  312. package/src/sap/ui/codeeditor/js/ace/mode-sparql.js +139 -171
  313. package/src/sap/ui/codeeditor/js/ace/mode-sql.js +77 -133
  314. package/src/sap/ui/codeeditor/js/ace/mode-sqlserver.js +138 -192
  315. package/src/sap/ui/codeeditor/js/ace/mode-stylus.js +306 -338
  316. package/src/sap/ui/codeeditor/js/ace/mode-svg.js +642 -794
  317. package/src/sap/ui/codeeditor/js/ace/mode-swift.js +96 -150
  318. package/src/sap/ui/codeeditor/js/ace/mode-tcl.js +151 -200
  319. package/src/sap/ui/codeeditor/js/ace/mode-terraform.js +78 -132
  320. package/src/sap/ui/codeeditor/js/ace/mode-tex.js +148 -96
  321. package/src/sap/ui/codeeditor/js/ace/mode-textile.js +45 -70
  322. package/src/sap/ui/codeeditor/js/ace/mode-toml.js +63 -87
  323. package/src/sap/ui/codeeditor/js/ace/mode-tsx.js +462 -384
  324. package/src/sap/ui/codeeditor/js/ace/mode-turtle.js +119 -151
  325. package/src/sap/ui/codeeditor/js/ace/mode-twig.js +1099 -1350
  326. package/src/sap/ui/codeeditor/js/ace/mode-typescript.js +455 -376
  327. package/src/sap/ui/codeeditor/js/ace/mode-vala.js +382 -505
  328. package/src/sap/ui/codeeditor/js/ace/mode-vbscript.js +231 -264
  329. package/src/sap/ui/codeeditor/js/ace/mode-velocity.js +1116 -1388
  330. package/src/sap/ui/codeeditor/js/ace/mode-verilog.js +61 -81
  331. package/src/sap/ui/codeeditor/js/ace/mode-vhdl.js +57 -79
  332. package/src/sap/ui/codeeditor/js/ace/mode-visualforce.js +1046 -1292
  333. package/src/sap/ui/codeeditor/js/ace/mode-wollok.js +525 -417
  334. package/src/sap/ui/codeeditor/js/ace/mode-xml.js +182 -389
  335. package/src/sap/ui/codeeditor/js/ace/mode-xquery.js +58 -112
  336. package/src/sap/ui/codeeditor/js/ace/mode-yaml.js +202 -137
  337. package/src/sap/ui/codeeditor/js/ace/mode-zeek.js +237 -274
  338. package/src/sap/ui/codeeditor/js/ace/snippets/abc.js +5 -34
  339. package/src/sap/ui/codeeditor/js/ace/snippets/actionscript.js +5 -160
  340. package/src/sap/ui/codeeditor/js/ace/snippets/astro.js +9 -0
  341. package/src/sap/ui/codeeditor/js/ace/snippets/bibtex.js +9 -0
  342. package/src/sap/ui/codeeditor/js/ace/snippets/c_cpp.js +5 -134
  343. package/src/sap/ui/codeeditor/js/ace/snippets/clojure.js +5 -93
  344. package/src/sap/ui/codeeditor/js/ace/snippets/coffee.js +5 -98
  345. package/src/sap/ui/codeeditor/js/ace/snippets/csound_document.js +5 -13
  346. package/src/sap/ui/codeeditor/js/ace/snippets/csound_orchestra.js +5 -50
  347. package/src/sap/ui/codeeditor/js/ace/snippets/css.js +5 -970
  348. package/src/sap/ui/codeeditor/js/ace/snippets/cuttlefish.js +9 -0
  349. package/src/sap/ui/codeeditor/js/ace/snippets/dart.js +5 -86
  350. package/src/sap/ui/codeeditor/js/ace/snippets/diff.js +5 -14
  351. package/src/sap/ui/codeeditor/js/ace/snippets/django.js +5 -111
  352. package/src/sap/ui/codeeditor/js/ace/snippets/drools.js +5 -22
  353. package/src/sap/ui/codeeditor/js/ace/snippets/edifact.js +8 -246
  354. package/src/sap/ui/codeeditor/js/ace/snippets/erlang.js +5 -163
  355. package/src/sap/ui/codeeditor/js/ace/snippets/flix.js +9 -0
  356. package/src/sap/ui/codeeditor/js/ace/snippets/fsl.js +6 -4
  357. package/src/sap/ui/codeeditor/js/ace/snippets/gobstones.js +5 -1707
  358. package/src/sap/ui/codeeditor/js/ace/snippets/graphqlschema.js +5 -35
  359. package/src/sap/ui/codeeditor/js/ace/snippets/haml.js +5 -23
  360. package/src/sap/ui/codeeditor/js/ace/snippets/haskell.js +5 -85
  361. package/src/sap/ui/codeeditor/js/ace/snippets/html.js +5 -856
  362. package/src/sap/ui/codeeditor/js/ace/snippets/io.js +1 -3
  363. package/src/sap/ui/codeeditor/js/ace/snippets/ion.js +9 -0
  364. package/src/sap/ui/codeeditor/js/ace/snippets/java.js +5 -243
  365. package/src/sap/ui/codeeditor/js/ace/snippets/javascript.js +5 -198
  366. package/src/sap/ui/codeeditor/js/ace/snippets/jexl.js +9 -0
  367. package/src/sap/ui/codeeditor/js/ace/snippets/jsoniq.js +44 -41
  368. package/src/sap/ui/codeeditor/js/ace/snippets/jsp.js +5 -102
  369. package/src/sap/ui/codeeditor/js/ace/snippets/liquid.js +5 -884
  370. package/src/sap/ui/codeeditor/js/ace/snippets/lsl.js +5 -1235
  371. package/src/sap/ui/codeeditor/js/ace/snippets/lua.js +5 -24
  372. package/src/sap/ui/codeeditor/js/ace/snippets/makefile.js +5 -7
  373. package/src/sap/ui/codeeditor/js/ace/snippets/markdown.js +5 -91
  374. package/src/sap/ui/codeeditor/js/ace/snippets/maze.js +5 -12
  375. package/src/sap/ui/codeeditor/js/ace/snippets/nasal.js +9 -0
  376. package/src/sap/ui/codeeditor/js/ace/snippets/odin.js +9 -0
  377. package/src/sap/ui/codeeditor/js/ace/snippets/partiql.js +9 -0
  378. package/src/sap/ui/codeeditor/js/ace/snippets/perl.js +5 -350
  379. package/src/sap/ui/codeeditor/js/ace/snippets/php.js +5 -386
  380. package/src/sap/ui/codeeditor/js/ace/snippets/plsql.js +9 -0
  381. package/src/sap/ui/codeeditor/js/ace/snippets/prql.js +9 -0
  382. package/src/sap/ui/codeeditor/js/ace/snippets/python.js +5 -161
  383. package/src/sap/ui/codeeditor/js/ace/snippets/r.js +5 -124
  384. package/src/sap/ui/codeeditor/js/ace/snippets/razor.js +5 -6
  385. package/src/sap/ui/codeeditor/js/ace/snippets/robot.js +16 -0
  386. package/src/sap/ui/codeeditor/js/ace/snippets/rst.js +5 -25
  387. package/src/sap/ui/codeeditor/js/ace/snippets/ruby.js +5 -931
  388. package/src/sap/ui/codeeditor/js/ace/snippets/sac.js +9 -0
  389. package/src/sap/ui/codeeditor/js/ace/snippets/sh.js +5 -86
  390. package/src/sap/ui/codeeditor/js/ace/snippets/snippets.js +5 -12
  391. package/src/sap/ui/codeeditor/js/ace/snippets/sql.js +5 -29
  392. package/src/sap/ui/codeeditor/js/ace/snippets/sqlserver.js +5 -72
  393. package/src/sap/ui/codeeditor/js/ace/snippets/tcl.js +5 -95
  394. package/src/sap/ui/codeeditor/js/ace/snippets/tex.js +5 -193
  395. package/src/sap/ui/codeeditor/js/ace/snippets/textile.js +5 -33
  396. package/src/sap/ui/codeeditor/js/ace/snippets/vala.js +1 -2
  397. package/src/sap/ui/codeeditor/js/ace/snippets/velocity.js +5 -31
  398. package/src/sap/ui/codeeditor/js/ace/snippets/wollok.js +5 -87
  399. package/src/sap/ui/codeeditor/js/ace/snippets/xquery.js +44 -41
  400. package/src/sap/ui/codeeditor/js/ace/theme-ambiance.js +5 -172
  401. package/src/sap/ui/codeeditor/js/ace/theme-chaos.js +5 -150
  402. package/src/sap/ui/codeeditor/js/ace/theme-chrome.js +6 -123
  403. package/src/sap/ui/codeeditor/js/ace/theme-cloud9_day.js +19 -0
  404. package/src/sap/ui/codeeditor/js/ace/theme-cloud9_night.js +18 -0
  405. package/src/sap/ui/codeeditor/js/ace/theme-cloud9_night_low_color.js +18 -0
  406. package/src/sap/ui/codeeditor/js/ace/theme-clouds.js +6 -90
  407. package/src/sap/ui/codeeditor/js/ace/theme-clouds_midnight.js +6 -91
  408. package/src/sap/ui/codeeditor/js/ace/theme-cobalt.js +6 -108
  409. package/src/sap/ui/codeeditor/js/ace/theme-crimson_editor.js +6 -113
  410. package/src/sap/ui/codeeditor/js/ace/theme-dawn.js +6 -103
  411. package/src/sap/ui/codeeditor/js/ace/theme-dracula.js +6 -122
  412. package/src/sap/ui/codeeditor/js/ace/theme-dreamweaver.js +7 -137
  413. package/src/sap/ui/codeeditor/js/ace/theme-eclipse.js +6 -92
  414. package/src/sap/ui/codeeditor/js/ace/theme-github.js +7 -99
  415. package/src/sap/ui/codeeditor/js/ace/theme-github_dark.js +18 -0
  416. package/src/sap/ui/codeeditor/js/ace/theme-gob.js +6 -107
  417. package/src/sap/ui/codeeditor/js/ace/theme-gruvbox.js +5 -76
  418. package/src/sap/ui/codeeditor/js/ace/theme-gruvbox_dark_hard.js +18 -0
  419. package/src/sap/ui/codeeditor/js/ace/theme-gruvbox_light_hard.js +18 -0
  420. package/src/sap/ui/codeeditor/js/ace/theme-idle_fingers.js +6 -91
  421. package/src/sap/ui/codeeditor/js/ace/theme-iplastic.js +6 -116
  422. package/src/sap/ui/codeeditor/js/ace/theme-katzenmilch.js +6 -116
  423. package/src/sap/ui/codeeditor/js/ace/theme-kr_theme.js +6 -99
  424. package/src/sap/ui/codeeditor/js/ace/theme-kuroir.js +6 -56
  425. package/src/sap/ui/codeeditor/js/ace/theme-merbivore.js +6 -90
  426. package/src/sap/ui/codeeditor/js/ace/theme-merbivore_soft.js +6 -91
  427. package/src/sap/ui/codeeditor/js/ace/theme-mono_industrial.js +6 -102
  428. package/src/sap/ui/codeeditor/js/ace/theme-monokai.js +6 -100
  429. package/src/sap/ui/codeeditor/js/ace/theme-nord_dark.js +6 -89
  430. package/src/sap/ui/codeeditor/js/ace/theme-one_dark.js +10 -131
  431. package/src/sap/ui/codeeditor/js/ace/theme-pastel_on_dark.js +6 -103
  432. package/src/sap/ui/codeeditor/js/ace/theme-solarized_dark.js +6 -83
  433. package/src/sap/ui/codeeditor/js/ace/theme-solarized_light.js +6 -86
  434. package/src/sap/ui/codeeditor/js/ace/theme-sqlserver.js +6 -133
  435. package/src/sap/ui/codeeditor/js/ace/theme-terminal.js +6 -109
  436. package/src/sap/ui/codeeditor/js/ace/theme-textmate.js +3 -124
  437. package/src/sap/ui/codeeditor/js/ace/theme-tomorrow.js +6 -103
  438. package/src/sap/ui/codeeditor/js/ace/theme-tomorrow_night.js +6 -103
  439. package/src/sap/ui/codeeditor/js/ace/theme-tomorrow_night_blue.js +6 -101
  440. package/src/sap/ui/codeeditor/js/ace/theme-tomorrow_night_bright.js +6 -116
  441. package/src/sap/ui/codeeditor/js/ace/theme-tomorrow_night_eighties.js +6 -103
  442. package/src/sap/ui/codeeditor/js/ace/theme-twilight.js +6 -104
  443. package/src/sap/ui/codeeditor/js/ace/theme-vibrant_ink.js +6 -89
  444. package/src/sap/ui/codeeditor/js/ace/theme-xcode.js +6 -83
  445. package/src/sap/ui/codeeditor/js/ace/worker-base.js +516 -595
  446. package/src/sap/ui/codeeditor/js/ace/worker-coffee.js +496 -575
  447. package/src/sap/ui/codeeditor/js/ace/worker-css.js +501 -578
  448. package/src/sap/ui/codeeditor/js/ace/worker-html.js +515 -584
  449. package/src/sap/ui/codeeditor/js/ace/worker-javascript.js +2964 -2551
  450. package/src/sap/ui/codeeditor/js/ace/worker-json.js +496 -575
  451. package/src/sap/ui/codeeditor/js/ace/worker-lua.js +497 -576
  452. package/src/sap/ui/codeeditor/js/ace/worker-php.js +2906 -2795
  453. package/src/sap/ui/codeeditor/js/ace/worker-xml.js +496 -575
  454. package/src/sap/ui/codeeditor/js/ace/worker-xquery.js +496 -575
  455. package/src/sap/ui/codeeditor/js/ace/worker-yaml.js +5851 -0
  456. package/src/sap/ui/codeeditor/library.js +6 -5
  457. package/LICENSES/BSD-2-Clause.txt +0 -22
@@ -1,21 +1,16 @@
1
- ace.define("ace/mode/css_highlight_rules",[], function(require, exports, module) {
2
- "use strict";
3
-
1
+ ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
4
2
  var oop = require("../lib/oop");
5
3
  var lang = require("../lib/lang");
6
4
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
7
5
  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
6
  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|zoom";
7
+ 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|flex-end|flex-start|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
8
  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
9
  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
-
13
10
  var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))";
14
11
  var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
15
- var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
16
-
17
- var CssHighlightRules = function() {
18
-
12
+ var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
13
+ var CssHighlightRules = function () {
19
14
  var keywordMapper = this.createKeywordMapper({
20
15
  "support.function": supportFunction,
21
16
  "support.constant": supportConstant,
@@ -23,263 +18,317 @@ var CssHighlightRules = function() {
23
18
  "support.constant.color": supportConstantColor,
24
19
  "support.constant.fonts": supportConstantFonts
25
20
  }, "text", true);
26
-
27
21
  this.$rules = {
28
- "start" : [{
29
- include : ["strings", "url", "comments"]
30
- }, {
31
- token: "paren.lparen",
32
- regex: "\\{",
33
- next: "ruleset"
34
- }, {
35
- token: "paren.rparen",
36
- regex: "\\}"
37
- }, {
38
- token: "string",
39
- regex: "@(?!viewport)",
40
- next: "media"
41
- }, {
42
- token: "keyword",
43
- regex: "#[a-z0-9-_]+"
44
- }, {
45
- token: "keyword",
46
- regex: "%"
47
- }, {
48
- token: "variable",
49
- regex: "\\.[a-z0-9-_]+"
50
- }, {
51
- token: "string",
52
- regex: ":[a-z0-9-_]+"
53
- }, {
54
- token : "constant.numeric",
55
- regex : numRe
56
- }, {
57
- token: "constant",
58
- regex: "[a-z0-9-_]+"
59
- }, {
60
- caseInsensitive: true
61
- }],
62
-
22
+ "start": [{
23
+ include: ["strings", "url", "comments"]
24
+ }, {
25
+ token: "paren.lparen",
26
+ regex: "\\{",
27
+ next: "ruleset"
28
+ }, {
29
+ token: "paren.rparen",
30
+ regex: "\\}"
31
+ }, {
32
+ token: "string",
33
+ regex: "@(?!viewport)",
34
+ next: "media"
35
+ }, {
36
+ token: "keyword",
37
+ regex: "#[a-z0-9-_]+"
38
+ }, {
39
+ token: "keyword",
40
+ regex: "%"
41
+ }, {
42
+ token: "variable",
43
+ regex: "\\.[a-z0-9-_]+"
44
+ }, {
45
+ token: "string",
46
+ regex: ":[a-z0-9-_]+"
47
+ }, {
48
+ token: "constant.numeric",
49
+ regex: numRe
50
+ }, {
51
+ token: "constant",
52
+ regex: "[a-z0-9-_]+"
53
+ }, {
54
+ caseInsensitive: true
55
+ }],
63
56
  "media": [{
64
- include : ["strings", "url", "comments"]
65
- }, {
66
- token: "paren.lparen",
67
- regex: "\\{",
68
- next: "start"
69
- }, {
70
- token: "paren.rparen",
71
- regex: "\\}",
72
- next: "start"
73
- }, {
74
- token: "string",
75
- regex: ";",
76
- next: "start"
77
- }, {
78
- token: "keyword",
79
- regex: "(?:media|supports|document|charset|import|namespace|media|supports|document"
80
- + "|page|font|keyframes|viewport|counter-style|font-feature-values"
81
- + "|swash|ornaments|annotation|stylistic|styleset|character-variant)"
82
- }],
83
-
84
- "comments" : [{
85
- token: "comment", // multi line comment
86
- regex: "\\/\\*",
87
- push: [{
88
- token : "comment",
89
- regex : "\\*\\/",
90
- next : "pop"
57
+ include: ["strings", "url", "comments"]
58
+ }, {
59
+ token: "paren.lparen",
60
+ regex: "\\{",
61
+ next: "start"
62
+ }, {
63
+ token: "paren.rparen",
64
+ regex: "\\}",
65
+ next: "start"
66
+ }, {
67
+ token: "string",
68
+ regex: ";",
69
+ next: "start"
70
+ }, {
71
+ token: "keyword",
72
+ regex: "(?:media|supports|document|charset|import|namespace|media|supports|document"
73
+ + "|page|font|keyframes|viewport|counter-style|font-feature-values"
74
+ + "|swash|ornaments|annotation|stylistic|styleset|character-variant)"
75
+ }],
76
+ "comments": [{
77
+ token: "comment",
78
+ regex: "\\/\\*",
79
+ push: [{
80
+ token: "comment",
81
+ regex: "\\*\\/",
82
+ next: "pop"
83
+ }, {
84
+ defaultToken: "comment"
85
+ }]
86
+ }],
87
+ "ruleset": [{
88
+ regex: "-(webkit|ms|moz|o)-",
89
+ token: "text"
91
90
  }, {
92
- defaultToken : "comment"
93
- }]
94
- }],
95
-
96
- "ruleset" : [{
97
- regex : "-(webkit|ms|moz|o)-",
98
- token : "text"
99
- }, {
100
- token : "punctuation.operator",
101
- regex : "[:;]"
102
- }, {
103
- token : "paren.rparen",
104
- regex : "\\}",
105
- next : "start"
106
- }, {
107
- include : ["strings", "url", "comments"]
108
- }, {
109
- token : ["constant.numeric", "keyword"],
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|%)"
111
- }, {
112
- token : "constant.numeric",
113
- regex : numRe
114
- }, {
115
- token : "constant.numeric", // hex6 color
116
- regex : "#[a-f0-9]{6}"
117
- }, {
118
- token : "constant.numeric", // hex3 color
119
- regex : "#[a-f0-9]{3}"
120
- }, {
121
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
122
- regex : pseudoElements
123
- }, {
124
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
125
- regex : pseudoClasses
126
- }, {
127
- include: "url"
128
- }, {
129
- token : keywordMapper,
130
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
131
- }, {
132
- caseInsensitive: true
133
- }],
134
-
135
- url: [{
136
- token : "support.function",
137
- regex : "(?:url(:?-prefix)?|domain|regexp)\\(",
138
- push: [{
139
- token : "support.function",
140
- regex : "\\)",
141
- next : "pop"
91
+ token: "punctuation.operator",
92
+ regex: "[:;]"
142
93
  }, {
143
- defaultToken: "string"
144
- }]
145
- }],
146
-
147
- strings: [{
148
- token : "string.start",
149
- regex : "'",
150
- push : [{
151
- token : "string.end",
152
- regex : "'|$",
153
- next: "pop"
94
+ token: "paren.rparen",
95
+ regex: "\\}",
96
+ next: "start"
154
97
  }, {
155
- include : "escapes"
98
+ include: ["strings", "url", "comments"]
156
99
  }, {
157
- token : "constant.language.escape",
158
- regex : /\\$/,
159
- consumeLineEnd: true
100
+ token: ["constant.numeric", "keyword"],
101
+ 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|%)"
160
102
  }, {
161
- defaultToken: "string"
162
- }]
163
- }, {
164
- token : "string.start",
165
- regex : '"',
166
- push : [{
167
- token : "string.end",
168
- regex : '"|$',
169
- next: "pop"
103
+ token: "constant.numeric",
104
+ regex: numRe
170
105
  }, {
171
- include : "escapes"
106
+ token: "constant.numeric",
107
+ regex: "#[a-f0-9]{6}"
172
108
  }, {
173
- token : "constant.language.escape",
174
- regex : /\\$/,
175
- consumeLineEnd: true
109
+ token: "constant.numeric",
110
+ regex: "#[a-f0-9]{3}"
176
111
  }, {
177
- defaultToken: "string"
178
- }]
179
- }],
112
+ token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
113
+ regex: pseudoElements
114
+ }, {
115
+ token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
116
+ regex: pseudoClasses
117
+ }, {
118
+ include: "url"
119
+ }, {
120
+ token: keywordMapper,
121
+ regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
122
+ }, {
123
+ caseInsensitive: true
124
+ }],
125
+ url: [{
126
+ token: "support.function",
127
+ regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
128
+ push: [{
129
+ token: "support.function",
130
+ regex: "\\)",
131
+ next: "pop"
132
+ }, {
133
+ defaultToken: "string"
134
+ }]
135
+ }],
136
+ strings: [{
137
+ token: "string.start",
138
+ regex: "'",
139
+ push: [{
140
+ token: "string.end",
141
+ regex: "'|$",
142
+ next: "pop"
143
+ }, {
144
+ include: "escapes"
145
+ }, {
146
+ token: "constant.language.escape",
147
+ regex: /\\$/,
148
+ consumeLineEnd: true
149
+ }, {
150
+ defaultToken: "string"
151
+ }]
152
+ }, {
153
+ token: "string.start",
154
+ regex: '"',
155
+ push: [{
156
+ token: "string.end",
157
+ regex: '"|$',
158
+ next: "pop"
159
+ }, {
160
+ include: "escapes"
161
+ }, {
162
+ token: "constant.language.escape",
163
+ regex: /\\$/,
164
+ consumeLineEnd: true
165
+ }, {
166
+ defaultToken: "string"
167
+ }]
168
+ }],
180
169
  escapes: [{
181
- token : "constant.language.escape",
182
- regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
183
- }]
184
-
170
+ token: "constant.language.escape",
171
+ regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
172
+ }]
185
173
  };
186
-
187
174
  this.normalizeRules();
188
175
  };
189
-
190
176
  oop.inherits(CssHighlightRules, TextHighlightRules);
191
-
192
177
  exports.CssHighlightRules = CssHighlightRules;
193
178
 
194
179
  });
195
180
 
196
- ace.define("ace/mode/doc_comment_highlight_rules",[], function(require, exports, module) {
197
- "use strict";
198
-
181
+ ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
199
182
  var oop = require("../lib/oop");
200
183
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
201
-
202
- var DocCommentHighlightRules = function() {
184
+ var JsDocCommentHighlightRules = function () {
203
185
  this.$rules = {
204
- "start" : [ {
205
- token : "comment.doc.tag",
206
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
207
- },
208
- DocCommentHighlightRules.getTagRule(),
209
- {
210
- defaultToken : "comment.doc",
211
- caseInsensitive: true
212
- }]
186
+ "start": [
187
+ {
188
+ token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"],
189
+ regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",
190
+ push: [
191
+ {
192
+ token: "lparen.doc",
193
+ regex: "{",
194
+ push: [
195
+ {
196
+ include: "doc-syntax"
197
+ }, {
198
+ token: "rparen.doc",
199
+ regex: "}|(?=$)",
200
+ next: "pop"
201
+ }
202
+ ]
203
+ }, {
204
+ token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"],
205
+ regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/,
206
+ next: "pop"
207
+ }, {
208
+ token: "rparen.doc",
209
+ regex: "}|(?=$)",
210
+ next: "pop"
211
+ }, {
212
+ include: "doc-syntax"
213
+ }, {
214
+ defaultToken: "text.doc"
215
+ }
216
+ ]
217
+ }, {
218
+ token: ["comment.doc.tag", "text.doc", "lparen.doc"],
219
+ regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|"
220
+ + "implements|external|exception|throws|enum|define|extends))(\\s*)({)",
221
+ push: [
222
+ {
223
+ token: "lparen.doc",
224
+ regex: "{",
225
+ push: [
226
+ {
227
+ include: "doc-syntax"
228
+ }, {
229
+ token: "rparen.doc",
230
+ regex: "}|(?=$)",
231
+ next: "pop"
232
+ }
233
+ ]
234
+ }, {
235
+ token: "rparen.doc",
236
+ regex: "}|(?=$)",
237
+ next: "pop"
238
+ }, {
239
+ include: "doc-syntax"
240
+ }, {
241
+ defaultToken: "text.doc"
242
+ }
243
+ ]
244
+ }, {
245
+ token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"],
246
+ regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|"
247
+ + "requires|param|implements|function|extends|typedef|mixes|constructor|var|"
248
+ + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|"
249
+ + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?"
250
+ }, {
251
+ token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"],
252
+ regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)"
253
+ }, {
254
+ token: "comment.doc.tag",
255
+ regex: "@access\\s+(?:private|public|protected)"
256
+ }, {
257
+ token: "comment.doc.tag",
258
+ regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"
259
+ }, {
260
+ token: "comment.doc.tag",
261
+ regex: "@\\w+(?=\\s|$)"
262
+ },
263
+ JsDocCommentHighlightRules.getTagRule(),
264
+ {
265
+ defaultToken: "comment.doc",
266
+ caseInsensitive: true
267
+ }
268
+ ],
269
+ "doc-syntax": [{
270
+ token: "operator.doc",
271
+ regex: /[|:]/
272
+ }, {
273
+ token: "paren.doc",
274
+ regex: /[\[\]]/
275
+ }]
213
276
  };
277
+ this.normalizeRules();
214
278
  };
215
-
216
- oop.inherits(DocCommentHighlightRules, TextHighlightRules);
217
-
218
- DocCommentHighlightRules.getTagRule = function(start) {
279
+ oop.inherits(JsDocCommentHighlightRules, TextHighlightRules);
280
+ JsDocCommentHighlightRules.getTagRule = function (start) {
219
281
  return {
220
- token : "comment.doc.tag.storage.type",
221
- regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b"
282
+ token: "comment.doc.tag.storage.type",
283
+ regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
222
284
  };
223
285
  };
224
-
225
- DocCommentHighlightRules.getStartRule = function(start) {
286
+ JsDocCommentHighlightRules.getStartRule = function (start) {
226
287
  return {
227
- token : "comment.doc", // doc comment
228
- regex : "\\/\\*(?=\\*)",
229
- next : start
288
+ token: "comment.doc",
289
+ regex: "\\/\\*(?=\\*)",
290
+ next: start
230
291
  };
231
292
  };
232
-
233
- DocCommentHighlightRules.getEndRule = function (start) {
293
+ JsDocCommentHighlightRules.getEndRule = function (start) {
234
294
  return {
235
- token : "comment.doc", // closing comment
236
- regex : "\\*\\/",
237
- next : start
295
+ token: "comment.doc",
296
+ regex: "\\*\\/",
297
+ next: start
238
298
  };
239
299
  };
240
-
241
-
242
- exports.DocCommentHighlightRules = DocCommentHighlightRules;
300
+ exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;
243
301
 
244
302
  });
245
303
 
246
- ace.define("ace/mode/javascript_highlight_rules",[], function(require, exports, module) {
247
- "use strict";
248
-
304
+ ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
249
305
  var oop = require("../lib/oop");
250
- var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
306
+ var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules;
251
307
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
252
308
  var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*";
253
-
254
- var JavaScriptHighlightRules = function(options) {
309
+ var JavaScriptHighlightRules = function (options) {
255
310
  var keywordMapper = this.createKeywordMapper({
256
- "variable.language":
257
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
258
- "Namespace|QName|XML|XMLList|" + // E4X
259
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
260
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
261
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
262
- "SyntaxError|TypeError|URIError|" +
311
+ "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors
312
+ "Namespace|QName|XML|XMLList|" + // E4X
313
+ "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
314
+ "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
315
+ "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
316
+ "SyntaxError|TypeError|URIError|" +
263
317
  "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
264
- "isNaN|parseFloat|parseInt|" +
265
- "JSON|Math|" + // Other
266
- "this|arguments|prototype|window|document" , // Pseudo
267
- "keyword":
268
- "const|yield|import|get|set|async|await|" +
318
+ "isNaN|parseFloat|parseInt|" +
319
+ "JSON|Math|" + // Other
320
+ "this|arguments|prototype|window|document",
321
+ "keyword": "const|yield|import|get|set|async|await|" +
269
322
  "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
270
323
  "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" +
271
324
  "__parent__|__count__|escape|unescape|with|__proto__|" +
272
- "class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
273
- "storage.type":
274
- "const|let|var|function",
275
- "constant.language":
276
- "null|Infinity|NaN|undefined",
277
- "support.function":
278
- "alert",
325
+ "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor",
326
+ "storage.type": "const|let|var|function",
327
+ "constant.language": "null|Infinity|NaN|undefined",
328
+ "support.function": "alert",
279
329
  "constant.language.boolean": "true|false"
280
330
  }, "identifier");
281
331
  var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";
282
-
283
332
  var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
284
333
  "u[0-9a-fA-F]{4}|" + // unicode
285
334
  "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode
@@ -287,143 +336,142 @@ var JavaScriptHighlightRules = function(options) {
287
336
  "3[0-7][0-7]?|" + // oct
288
337
  "[4-7][0-7]?|" + //oct
289
338
  ".)";
290
-
291
339
  this.$rules = {
292
- "no_regex" : [
340
+ "no_regex": [
293
341
  DocCommentHighlightRules.getStartRule("doc-start"),
294
342
  comments("no_regex"),
295
343
  {
296
- token : "string",
297
- regex : "'(?=.)",
298
- next : "qstring"
344
+ token: "string",
345
+ regex: "'(?=.)",
346
+ next: "qstring"
299
347
  }, {
300
- token : "string",
301
- regex : '"(?=.)',
302
- next : "qqstring"
348
+ token: "string",
349
+ regex: '"(?=.)',
350
+ next: "qqstring"
303
351
  }, {
304
- token : "constant.numeric", // hexadecimal, octal and binary
305
- regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
352
+ token: "constant.numeric",
353
+ regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
306
354
  }, {
307
- token : "constant.numeric", // decimal integers and floats
308
- regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
355
+ token: "constant.numeric",
356
+ regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
309
357
  }, {
310
- token : [
358
+ token: [
311
359
  "storage.type", "punctuation.operator", "support.function",
312
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
360
+ "punctuation.operator", "entity.name.function", "text", "keyword.operator"
313
361
  ],
314
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
362
+ regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)",
315
363
  next: "function_arguments"
316
364
  }, {
317
- token : [
365
+ token: [
318
366
  "storage.type", "punctuation.operator", "entity.name.function", "text",
319
367
  "keyword.operator", "text", "storage.type", "text", "paren.lparen"
320
368
  ],
321
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
369
+ regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",
322
370
  next: "function_arguments"
323
371
  }, {
324
- token : [
372
+ token: [
325
373
  "entity.name.function", "text", "keyword.operator", "text", "storage.type",
326
374
  "text", "paren.lparen"
327
375
  ],
328
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
376
+ regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",
329
377
  next: "function_arguments"
330
378
  }, {
331
- token : [
379
+ token: [
332
380
  "storage.type", "punctuation.operator", "entity.name.function", "text",
333
381
  "keyword.operator", "text",
334
382
  "storage.type", "text", "entity.name.function", "text", "paren.lparen"
335
383
  ],
336
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
384
+ regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()",
337
385
  next: "function_arguments"
338
386
  }, {
339
- token : [
387
+ token: [
340
388
  "storage.type", "text", "entity.name.function", "text", "paren.lparen"
341
389
  ],
342
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
390
+ regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
343
391
  next: "function_arguments"
344
392
  }, {
345
- token : [
393
+ token: [
346
394
  "entity.name.function", "text", "punctuation.operator",
347
395
  "text", "storage.type", "text", "paren.lparen"
348
396
  ],
349
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
397
+ regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()",
350
398
  next: "function_arguments"
351
399
  }, {
352
- token : [
400
+ token: [
353
401
  "text", "text", "storage.type", "text", "paren.lparen"
354
402
  ],
355
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
403
+ regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()",
356
404
  next: "function_arguments"
357
405
  }, {
358
- token : "keyword",
359
- regex : "from(?=\\s*('|\"))"
406
+ token: "keyword",
407
+ regex: "from(?=\\s*('|\"))"
360
408
  }, {
361
- token : "keyword",
362
- regex : "(?:" + kwBeforeRe + ")\\b",
363
- next : "start"
409
+ token: "keyword",
410
+ regex: "(?:" + kwBeforeRe + ")\\b",
411
+ next: "start"
364
412
  }, {
365
- token : ["support.constant"],
366
- regex : /that\b/
413
+ token: "support.constant",
414
+ regex: /that\b/
367
415
  }, {
368
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
369
- regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
416
+ token: ["storage.type", "punctuation.operator", "support.function.firebug"],
417
+ regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
370
418
  }, {
371
- token : keywordMapper,
372
- regex : identifierRe
419
+ token: keywordMapper,
420
+ regex: identifierRe
373
421
  }, {
374
- token : "punctuation.operator",
375
- regex : /[.](?![.])/,
376
- next : "property"
422
+ token: "punctuation.operator",
423
+ regex: /[.](?![.])/,
424
+ next: "property"
377
425
  }, {
378
- token : "storage.type",
379
- regex : /=>/,
380
- next : "start"
426
+ token: "storage.type",
427
+ regex: /=>/,
428
+ next: "start"
381
429
  }, {
382
- token : "keyword.operator",
383
- regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
384
- next : "start"
430
+ token: "keyword.operator",
431
+ regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
432
+ next: "start"
385
433
  }, {
386
- token : "punctuation.operator",
387
- regex : /[?:,;.]/,
388
- next : "start"
434
+ token: "punctuation.operator",
435
+ regex: /[?:,;.]/,
436
+ next: "start"
389
437
  }, {
390
- token : "paren.lparen",
391
- regex : /[\[({]/,
392
- next : "start"
438
+ token: "paren.lparen",
439
+ regex: /[\[({]/,
440
+ next: "start"
393
441
  }, {
394
- token : "paren.rparen",
395
- regex : /[\])}]/
442
+ token: "paren.rparen",
443
+ regex: /[\])}]/
396
444
  }, {
397
445
  token: "comment",
398
446
  regex: /^#!.*$/
399
447
  }
400
448
  ],
401
449
  property: [{
402
- token : "text",
403
- regex : "\\s+"
450
+ token: "text",
451
+ regex: "\\s+"
404
452
  }, {
405
- token : [
453
+ token: [
406
454
  "storage.type", "punctuation.operator", "entity.name.function", "text",
407
455
  "keyword.operator", "text",
408
456
  "storage.type", "text", "entity.name.function", "text", "paren.lparen"
409
457
  ],
410
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
458
+ regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()",
411
459
  next: "function_arguments"
412
460
  }, {
413
- token : "punctuation.operator",
414
- regex : /[.](?![.])/
461
+ token: "punctuation.operator",
462
+ regex: /[.](?![.])/
415
463
  }, {
416
- token : "support.function",
417
- regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
464
+ token: "support.function",
465
+ regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
418
466
  }, {
419
- token : "support.function.dom",
420
- regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
467
+ token: "support.function.dom",
468
+ regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
421
469
  }, {
422
- token : "support.constant",
423
- regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
470
+ token: "support.constant",
471
+ regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
424
472
  }, {
425
- token : "identifier",
426
- regex : identifierRe
473
+ token: "identifier",
474
+ regex: identifierRe
427
475
  }, {
428
476
  regex: "",
429
477
  token: "empty",
@@ -438,9 +486,9 @@ var JavaScriptHighlightRules = function(options) {
438
486
  regex: "\\/",
439
487
  next: "regex"
440
488
  }, {
441
- token : "text",
442
- regex : "\\s+|^$",
443
- next : "start"
489
+ token: "text",
490
+ regex: "\\s+|^$",
491
+ next: "start"
444
492
  }, {
445
493
  token: "empty",
446
494
  regex: "",
@@ -456,13 +504,13 @@ var JavaScriptHighlightRules = function(options) {
456
504
  regex: "/[sxngimy]*",
457
505
  next: "no_regex"
458
506
  }, {
459
- token : "invalid",
507
+ token: "invalid",
460
508
  regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
461
509
  }, {
462
- token : "constant.language.escape",
510
+ token: "constant.language.escape",
463
511
  regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
464
512
  }, {
465
- token : "constant.language.delimiter",
513
+ token: "constant.language.delimiter",
466
514
  regex: /\|/
467
515
  }, {
468
516
  token: "constant.language.escape",
@@ -495,13 +543,67 @@ var JavaScriptHighlightRules = function(options) {
495
543
  defaultToken: "string.regexp.charachterclass"
496
544
  }
497
545
  ],
546
+ "default_parameter": [
547
+ {
548
+ token: "string",
549
+ regex: "'(?=.)",
550
+ push: [
551
+ {
552
+ token: "string",
553
+ regex: "'|$",
554
+ next: "pop"
555
+ }, {
556
+ include: "qstring"
557
+ }
558
+ ]
559
+ }, {
560
+ token: "string",
561
+ regex: '"(?=.)',
562
+ push: [
563
+ {
564
+ token: "string",
565
+ regex: '"|$',
566
+ next: "pop"
567
+ }, {
568
+ include: "qqstring"
569
+ }
570
+ ]
571
+ }, {
572
+ token: "constant.language",
573
+ regex: "null|Infinity|NaN|undefined"
574
+ }, {
575
+ token: "constant.numeric",
576
+ regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
577
+ }, {
578
+ token: "constant.numeric",
579
+ regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
580
+ }, {
581
+ token: "punctuation.operator",
582
+ regex: ",",
583
+ next: "function_arguments"
584
+ }, {
585
+ token: "text",
586
+ regex: "\\s+"
587
+ }, {
588
+ token: "punctuation.operator",
589
+ regex: "$"
590
+ }, {
591
+ token: "empty",
592
+ regex: "",
593
+ next: "no_regex"
594
+ }
595
+ ],
498
596
  "function_arguments": [
597
+ comments("function_arguments"),
499
598
  {
500
599
  token: "variable.parameter",
501
600
  regex: identifierRe
502
601
  }, {
503
602
  token: "punctuation.operator",
504
- regex: "[, ]+"
603
+ regex: ","
604
+ }, {
605
+ token: "text",
606
+ regex: "\\s+"
505
607
  }, {
506
608
  token: "punctuation.operator",
507
609
  regex: "$"
@@ -511,44 +613,42 @@ var JavaScriptHighlightRules = function(options) {
511
613
  next: "no_regex"
512
614
  }
513
615
  ],
514
- "qqstring" : [
616
+ "qqstring": [
515
617
  {
516
- token : "constant.language.escape",
517
- regex : escapedRe
618
+ token: "constant.language.escape",
619
+ regex: escapedRe
518
620
  }, {
519
- token : "string",
520
- regex : "\\\\$",
521
- consumeLineEnd : true
621
+ token: "string",
622
+ regex: "\\\\$",
623
+ consumeLineEnd: true
522
624
  }, {
523
- token : "string",
524
- regex : '"|$',
525
- next : "no_regex"
625
+ token: "string",
626
+ regex: '"|$',
627
+ next: "no_regex"
526
628
  }, {
527
629
  defaultToken: "string"
528
630
  }
529
631
  ],
530
- "qstring" : [
632
+ "qstring": [
531
633
  {
532
- token : "constant.language.escape",
533
- regex : escapedRe
634
+ token: "constant.language.escape",
635
+ regex: escapedRe
534
636
  }, {
535
- token : "string",
536
- regex : "\\\\$",
537
- consumeLineEnd : true
637
+ token: "string",
638
+ regex: "\\\\$",
639
+ consumeLineEnd: true
538
640
  }, {
539
- token : "string",
540
- regex : "'|$",
541
- next : "no_regex"
641
+ token: "string",
642
+ regex: "'|$",
643
+ next: "no_regex"
542
644
  }, {
543
645
  defaultToken: "string"
544
646
  }
545
647
  ]
546
648
  };
547
-
548
-
549
649
  if (!options || !options.noES6) {
550
650
  this.$rules.no_regex.unshift({
551
- regex: "[{}]", onMatch: function(val, state, stack) {
651
+ regex: "[{}]", onMatch: function (val, state, stack) {
552
652
  this.next = val == "{" ? this.nextState : "";
553
653
  if (val == "{" && stack.length) {
554
654
  stack.unshift("start", state);
@@ -563,40 +663,60 @@ var JavaScriptHighlightRules = function(options) {
563
663
  },
564
664
  nextState: "start"
565
665
  }, {
566
- token : "string.quasi.start",
567
- regex : /`/,
568
- push : [{
569
- token : "constant.language.escape",
570
- regex : escapedRe
571
- }, {
572
- token : "paren.quasi.start",
573
- regex : /\${/,
574
- push : "start"
575
- }, {
576
- token : "string.quasi.end",
577
- regex : /`/,
578
- next : "pop"
579
- }, {
580
- defaultToken: "string.quasi"
581
- }]
666
+ token: "string.quasi.start",
667
+ regex: /`/,
668
+ push: [{
669
+ token: "constant.language.escape",
670
+ regex: escapedRe
671
+ }, {
672
+ token: "paren.quasi.start",
673
+ regex: /\${/,
674
+ push: "start"
675
+ }, {
676
+ token: "string.quasi.end",
677
+ regex: /`/,
678
+ next: "pop"
679
+ }, {
680
+ defaultToken: "string.quasi"
681
+ }]
682
+ }, {
683
+ token: ["variable.parameter", "text"],
684
+ regex: "(" + identifierRe + ")(\\s*)(?=\\=>)"
685
+ }, {
686
+ token: "paren.lparen",
687
+ regex: "(\\()(?=.+\\s*=>)",
688
+ next: "function_arguments"
689
+ }, {
690
+ token: "variable.language",
691
+ regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"
692
+ });
693
+ this.$rules["function_arguments"].unshift({
694
+ token: "keyword.operator",
695
+ regex: "=",
696
+ next: "default_parameter"
697
+ }, {
698
+ token: "keyword.operator",
699
+ regex: "\\.{3}"
700
+ });
701
+ this.$rules["property"].unshift({
702
+ token: "support.function",
703
+ regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|"
704
+ + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"
705
+ }, {
706
+ token: "constant.language",
707
+ regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"
582
708
  });
583
-
584
709
  if (!options || options.jsx != false)
585
710
  JSX.call(this);
586
711
  }
587
-
588
- this.embedRules(DocCommentHighlightRules, "doc-",
589
- [ DocCommentHighlightRules.getEndRule("no_regex") ]);
590
-
712
+ this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]);
591
713
  this.normalizeRules();
592
714
  };
593
-
594
715
  oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
595
-
596
716
  function JSX() {
597
717
  var tagRegex = identifierRe.replace("\\d", "\\d\\-");
598
718
  var jsxTag = {
599
- onMatch : function(val, state, stack) {
719
+ onMatch: function (val, state, stack) {
600
720
  var offset = val.charAt(1) == "/" ? 2 : 1;
601
721
  if (offset == 1) {
602
722
  if (state != this.nextState)
@@ -604,7 +724,8 @@ function JSX() {
604
724
  else
605
725
  stack.unshift(this.next);
606
726
  stack[2]++;
607
- } else if (offset == 2) {
727
+ }
728
+ else if (offset == 2) {
608
729
  if (state == this.nextState) {
609
730
  stack[1]--;
610
731
  if (!stack[1] || stack[1] < 0) {
@@ -614,14 +735,14 @@ function JSX() {
614
735
  }
615
736
  }
616
737
  return [{
617
- type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml",
618
- value: val.slice(0, offset)
619
- }, {
620
- type: "meta.tag.tag-name.xml",
621
- value: val.substr(offset)
622
- }];
738
+ type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml",
739
+ value: val.slice(0, offset)
740
+ }, {
741
+ type: "meta.tag.tag-name.xml",
742
+ value: val.substr(offset)
743
+ }];
623
744
  },
624
- regex : "</?" + tagRegex + "",
745
+ regex: "</?" + tagRegex + "",
625
746
  next: "jsxAttributes",
626
747
  nextState: "jsx"
627
748
  };
@@ -634,937 +755,814 @@ function JSX() {
634
755
  this.$rules.jsx = [
635
756
  jsxJsRule,
636
757
  jsxTag,
637
- {include : "reference"},
638
- {defaultToken: "string"}
758
+ { include: "reference" },
759
+ { defaultToken: "string" }
639
760
  ];
640
761
  this.$rules.jsxAttributes = [{
641
- token : "meta.tag.punctuation.tag-close.xml",
642
- regex : "/?>",
643
- onMatch : function(value, currentState, stack) {
644
- if (currentState == stack[0])
645
- stack.shift();
646
- if (value.length == 2) {
647
- if (stack[0] == this.nextState)
648
- stack[1]--;
649
- if (!stack[1] || stack[1] < 0) {
650
- stack.splice(0, 2);
762
+ token: "meta.tag.punctuation.tag-close.xml",
763
+ regex: "/?>",
764
+ onMatch: function (value, currentState, stack) {
765
+ if (currentState == stack[0])
766
+ stack.shift();
767
+ if (value.length == 2) {
768
+ if (stack[0] == this.nextState)
769
+ stack[1]--;
770
+ if (!stack[1] || stack[1] < 0) {
771
+ stack.splice(0, 2);
772
+ }
651
773
  }
652
- }
653
- this.next = stack[0] || "start";
654
- return [{type: this.token, value: value}];
774
+ this.next = stack[0] || "start";
775
+ return [{ type: this.token, value: value }];
776
+ },
777
+ nextState: "jsx"
655
778
  },
656
- nextState: "jsx"
657
- },
658
- jsxJsRule,
659
- comments("jsxAttributes"),
660
- {
661
- token : "entity.other.attribute-name.xml",
662
- regex : tagRegex
663
- }, {
664
- token : "keyword.operator.attribute-equals.xml",
665
- regex : "="
666
- }, {
667
- token : "text.tag-whitespace.xml",
668
- regex : "\\s+"
669
- }, {
670
- token : "string.attribute-value.xml",
671
- regex : "'",
672
- stateName : "jsx_attr_q",
673
- push : [
674
- {token : "string.attribute-value.xml", regex: "'", next: "pop"},
675
- {include : "reference"},
676
- {defaultToken : "string.attribute-value.xml"}
677
- ]
678
- }, {
679
- token : "string.attribute-value.xml",
680
- regex : '"',
681
- stateName : "jsx_attr_qq",
682
- push : [
683
- {token : "string.attribute-value.xml", regex: '"', next: "pop"},
684
- {include : "reference"},
685
- {defaultToken : "string.attribute-value.xml"}
686
- ]
687
- },
688
- jsxTag
779
+ jsxJsRule,
780
+ comments("jsxAttributes"),
781
+ {
782
+ token: "entity.other.attribute-name.xml",
783
+ regex: tagRegex
784
+ }, {
785
+ token: "keyword.operator.attribute-equals.xml",
786
+ regex: "="
787
+ }, {
788
+ token: "text.tag-whitespace.xml",
789
+ regex: "\\s+"
790
+ }, {
791
+ token: "string.attribute-value.xml",
792
+ regex: "'",
793
+ stateName: "jsx_attr_q",
794
+ push: [
795
+ { token: "string.attribute-value.xml", regex: "'", next: "pop" },
796
+ { include: "reference" },
797
+ { defaultToken: "string.attribute-value.xml" }
798
+ ]
799
+ }, {
800
+ token: "string.attribute-value.xml",
801
+ regex: '"',
802
+ stateName: "jsx_attr_qq",
803
+ push: [
804
+ { token: "string.attribute-value.xml", regex: '"', next: "pop" },
805
+ { include: "reference" },
806
+ { defaultToken: "string.attribute-value.xml" }
807
+ ]
808
+ },
809
+ jsxTag
689
810
  ];
690
811
  this.$rules.reference = [{
691
- token : "constant.language.escape.reference.xml",
692
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
693
- }];
812
+ token: "constant.language.escape.reference.xml",
813
+ regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
814
+ }];
694
815
  }
695
-
696
816
  function comments(next) {
697
817
  return [
698
818
  {
699
- token : "comment", // multi line comment
700
- regex : /\/\*/,
819
+ token: "comment",
820
+ regex: /\/\*/,
701
821
  next: [
702
822
  DocCommentHighlightRules.getTagRule(),
703
- {token : "comment", regex : "\\*\\/", next : next || "pop"},
704
- {defaultToken : "comment", caseInsensitive: true}
823
+ { token: "comment", regex: "\\*\\/", next: next || "pop" },
824
+ { defaultToken: "comment", caseInsensitive: true }
705
825
  ]
706
826
  }, {
707
- token : "comment",
708
- regex : "\\/\\/",
827
+ token: "comment",
828
+ regex: "\\/\\/",
709
829
  next: [
710
830
  DocCommentHighlightRules.getTagRule(),
711
- {token : "comment", regex : "$|^", next : next || "pop"},
712
- {defaultToken : "comment", caseInsensitive: true}
831
+ { token: "comment", regex: "$|^", next: next || "pop" },
832
+ { defaultToken: "comment", caseInsensitive: true }
713
833
  ]
714
834
  }
715
835
  ];
716
836
  }
717
837
  exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
718
- });
719
838
 
720
- ace.define("ace/mode/xml_highlight_rules",[], function(require, exports, module) {
721
- "use strict";
839
+ });
722
840
 
841
+ ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
723
842
  var oop = require("../lib/oop");
724
843
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
725
-
726
- var XmlHighlightRules = function(normalize) {
844
+ var XmlHighlightRules = function (normalize) {
727
845
  var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*";
728
-
729
846
  this.$rules = {
730
- start : [
731
- {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"},
847
+ start: [
848
+ { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" },
732
849
  {
733
- token : ["punctuation.instruction.xml", "keyword.instruction.xml"],
734
- regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction"
850
+ token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
851
+ regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction"
735
852
  },
736
- {token : "comment.start.xml", regex : "<\\!--", next : "comment"},
853
+ { token: "comment.start.xml", regex: "<\\!--", next: "comment" },
737
854
  {
738
- token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
739
- regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true
855
+ token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
856
+ regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true
740
857
  },
741
- {include : "tag"},
742
- {token : "text.end-tag-open.xml", regex: "</"},
743
- {token : "text.tag-open.xml", regex: "<"},
744
- {include : "reference"},
745
- {defaultToken : "text.xml"}
858
+ { include: "tag" },
859
+ { token: "text.end-tag-open.xml", regex: "</" },
860
+ { token: "text.tag-open.xml", regex: "<" },
861
+ { include: "reference" },
862
+ { defaultToken: "text.xml" }
746
863
  ],
747
-
748
- processing_instruction : [{
749
- token : "entity.other.attribute-name.decl-attribute-name.xml",
750
- regex : tagRegex
751
- }, {
752
- token : "keyword.operator.decl-attribute-equals.xml",
753
- regex : "="
754
- }, {
755
- include: "whitespace"
756
- }, {
757
- include: "string"
758
- }, {
759
- token : "punctuation.xml-decl.xml",
760
- regex : "\\?>",
761
- next : "start"
762
- }],
763
-
764
- doctype : [
765
- {include : "whitespace"},
766
- {include : "string"},
767
- {token : "xml-pe.doctype.xml", regex : ">", next : "start"},
768
- {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"},
769
- {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"}
864
+ processing_instruction: [{
865
+ token: "entity.other.attribute-name.decl-attribute-name.xml",
866
+ regex: tagRegex
867
+ }, {
868
+ token: "keyword.operator.decl-attribute-equals.xml",
869
+ regex: "="
870
+ }, {
871
+ include: "whitespace"
872
+ }, {
873
+ include: "string"
874
+ }, {
875
+ token: "punctuation.xml-decl.xml",
876
+ regex: "\\?>",
877
+ next: "start"
878
+ }],
879
+ doctype: [
880
+ { include: "whitespace" },
881
+ { include: "string" },
882
+ { token: "xml-pe.doctype.xml", regex: ">", next: "start" },
883
+ { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" },
884
+ { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" }
770
885
  ],
771
-
772
- int_subset : [{
773
- token : "text.xml",
774
- regex : "\\s+"
775
- }, {
776
- token: "punctuation.int-subset.xml",
777
- regex: "]",
778
- next: "pop"
779
- }, {
780
- token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
781
- regex : "(<\\!)(" + tagRegex + ")",
782
- push : [{
783
- token : "text",
784
- regex : "\\s+"
785
- },
786
- {
787
- token : "punctuation.markup-decl.xml",
788
- regex : ">",
789
- next : "pop"
790
- },
791
- {include : "string"}]
792
- }],
793
-
794
- cdata : [
795
- {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"},
796
- {token : "text.xml", regex : "\\s+"},
797
- {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"}
886
+ int_subset: [{
887
+ token: "text.xml",
888
+ regex: "\\s+"
889
+ }, {
890
+ token: "punctuation.int-subset.xml",
891
+ regex: "]",
892
+ next: "pop"
893
+ }, {
894
+ token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
895
+ regex: "(<\\!)(" + tagRegex + ")",
896
+ push: [{
897
+ token: "text",
898
+ regex: "\\s+"
899
+ },
900
+ {
901
+ token: "punctuation.markup-decl.xml",
902
+ regex: ">",
903
+ next: "pop"
904
+ },
905
+ { include: "string" }]
906
+ }],
907
+ cdata: [
908
+ { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" },
909
+ { token: "text.xml", regex: "\\s+" },
910
+ { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" }
798
911
  ],
799
-
800
- comment : [
801
- {token : "comment.end.xml", regex : "-->", next : "start"},
802
- {defaultToken : "comment.xml"}
912
+ comment: [
913
+ { token: "comment.end.xml", regex: "-->", next: "start" },
914
+ { defaultToken: "comment.xml" }
803
915
  ],
804
-
805
- reference : [{
806
- token : "constant.language.escape.reference.xml",
807
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
808
- }],
809
-
810
- attr_reference : [{
811
- token : "constant.language.escape.reference.attribute-value.xml",
812
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
813
- }],
814
-
815
- tag : [{
816
- token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
817
- regex : "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")",
818
- next: [
819
- {include : "attributes"},
820
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"}
821
- ]
822
- }],
823
-
824
- tag_whitespace : [
825
- {token : "text.tag-whitespace.xml", regex : "\\s+"}
916
+ reference: [{
917
+ token: "constant.language.escape.reference.xml",
918
+ regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
919
+ }],
920
+ attr_reference: [{
921
+ token: "constant.language.escape.reference.attribute-value.xml",
922
+ regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
923
+ }],
924
+ tag: [{
925
+ token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
926
+ regex: "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")",
927
+ next: [
928
+ { include: "attributes" },
929
+ { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" }
930
+ ]
931
+ }],
932
+ tag_whitespace: [
933
+ { token: "text.tag-whitespace.xml", regex: "\\s+" }
826
934
  ],
827
- whitespace : [
828
- {token : "text.whitespace.xml", regex : "\\s+"}
935
+ whitespace: [
936
+ { token: "text.whitespace.xml", regex: "\\s+" }
829
937
  ],
830
938
  string: [{
831
- token : "string.xml",
832
- regex : "'",
833
- push : [
834
- {token : "string.xml", regex: "'", next: "pop"},
835
- {defaultToken : "string.xml"}
836
- ]
837
- }, {
838
- token : "string.xml",
839
- regex : '"',
840
- push : [
841
- {token : "string.xml", regex: '"', next: "pop"},
842
- {defaultToken : "string.xml"}
843
- ]
844
- }],
845
-
939
+ token: "string.xml",
940
+ regex: "'",
941
+ push: [
942
+ { token: "string.xml", regex: "'", next: "pop" },
943
+ { defaultToken: "string.xml" }
944
+ ]
945
+ }, {
946
+ token: "string.xml",
947
+ regex: '"',
948
+ push: [
949
+ { token: "string.xml", regex: '"', next: "pop" },
950
+ { defaultToken: "string.xml" }
951
+ ]
952
+ }],
846
953
  attributes: [{
847
- token : "entity.other.attribute-name.xml",
848
- regex : tagRegex
849
- }, {
850
- token : "keyword.operator.attribute-equals.xml",
851
- regex : "="
852
- }, {
853
- include: "tag_whitespace"
854
- }, {
855
- include: "attribute_value"
856
- }],
857
-
954
+ token: "entity.other.attribute-name.xml",
955
+ regex: tagRegex
956
+ }, {
957
+ token: "keyword.operator.attribute-equals.xml",
958
+ regex: "="
959
+ }, {
960
+ include: "tag_whitespace"
961
+ }, {
962
+ include: "attribute_value"
963
+ }],
858
964
  attribute_value: [{
859
- token : "string.attribute-value.xml",
860
- regex : "'",
861
- push : [
862
- {token : "string.attribute-value.xml", regex: "'", next: "pop"},
863
- {include : "attr_reference"},
864
- {defaultToken : "string.attribute-value.xml"}
865
- ]
866
- }, {
867
- token : "string.attribute-value.xml",
868
- regex : '"',
869
- push : [
870
- {token : "string.attribute-value.xml", regex: '"', next: "pop"},
871
- {include : "attr_reference"},
872
- {defaultToken : "string.attribute-value.xml"}
873
- ]
874
- }]
965
+ token: "string.attribute-value.xml",
966
+ regex: "'",
967
+ push: [
968
+ { token: "string.attribute-value.xml", regex: "'", next: "pop" },
969
+ { include: "attr_reference" },
970
+ { defaultToken: "string.attribute-value.xml" }
971
+ ]
972
+ }, {
973
+ token: "string.attribute-value.xml",
974
+ regex: '"',
975
+ push: [
976
+ { token: "string.attribute-value.xml", regex: '"', next: "pop" },
977
+ { include: "attr_reference" },
978
+ { defaultToken: "string.attribute-value.xml" }
979
+ ]
980
+ }]
875
981
  };
876
-
877
982
  if (this.constructor === XmlHighlightRules)
878
983
  this.normalizeRules();
879
984
  };
880
-
881
-
882
- (function() {
883
-
884
- this.embedTagRules = function(HighlightRules, prefix, tag){
985
+ (function () {
986
+ this.embedTagRules = function (HighlightRules, prefix, tag) {
885
987
  this.$rules.tag.unshift({
886
- token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
887
- regex : "(<)(" + tag + "(?=\\s|>|$))",
988
+ token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
989
+ regex: "(<)(" + tag + "(?=\\s|>|$))",
888
990
  next: [
889
- {include : "attributes"},
890
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"}
991
+ { include: "attributes" },
992
+ { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" }
891
993
  ]
892
994
  });
893
-
894
995
  this.$rules[tag + "-end"] = [
895
- {include : "attributes"},
896
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start",
897
- onMatch : function(value, currentState, stack) {
996
+ { include: "attributes" },
997
+ { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start",
998
+ onMatch: function (value, currentState, stack) {
898
999
  stack.splice(0);
899
1000
  return this.token;
900
- }}
1001
+ } }
901
1002
  ];
902
-
903
1003
  this.embedRules(HighlightRules, prefix, [{
904
- token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
905
- regex : "(</)(" + tag + "(?=\\s|>|$))",
906
- next: tag + "-end"
907
- }, {
908
- token: "string.cdata.xml",
909
- regex : "<\\!\\[CDATA\\["
910
- }, {
911
- token: "string.cdata.xml",
912
- regex : "\\]\\]>"
913
- }]);
1004
+ token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
1005
+ regex: "(</)(" + tag + "(?=\\s|>|$))",
1006
+ next: tag + "-end"
1007
+ }, {
1008
+ token: "string.cdata.xml",
1009
+ regex: "<\\!\\[CDATA\\["
1010
+ }, {
1011
+ token: "string.cdata.xml",
1012
+ regex: "\\]\\]>"
1013
+ }]);
914
1014
  };
915
-
916
1015
  }).call(TextHighlightRules.prototype);
917
-
918
1016
  oop.inherits(XmlHighlightRules, TextHighlightRules);
919
-
920
1017
  exports.XmlHighlightRules = XmlHighlightRules;
921
- });
922
1018
 
923
- ace.define("ace/mode/html_highlight_rules",[], function(require, exports, module) {
924
- "use strict";
1019
+ });
925
1020
 
1021
+ ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict";
926
1022
  var oop = require("../lib/oop");
927
1023
  var lang = require("../lib/lang");
928
1024
  var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
929
1025
  var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
930
1026
  var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
931
-
932
1027
  var tagMap = lang.createMap({
933
- a : 'anchor',
934
- button : 'form',
935
- form : 'form',
936
- img : 'image',
937
- input : 'form',
938
- label : 'form',
939
- option : 'form',
940
- script : 'script',
941
- select : 'form',
942
- textarea : 'form',
943
- style : 'style',
944
- table : 'table',
945
- tbody : 'table',
946
- td : 'table',
947
- tfoot : 'table',
948
- th : 'table',
949
- tr : 'table'
1028
+ a: 'anchor',
1029
+ button: 'form',
1030
+ form: 'form',
1031
+ img: 'image',
1032
+ input: 'form',
1033
+ label: 'form',
1034
+ option: 'form',
1035
+ script: 'script',
1036
+ select: 'form',
1037
+ textarea: 'form',
1038
+ style: 'style',
1039
+ table: 'table',
1040
+ tbody: 'table',
1041
+ td: 'table',
1042
+ tfoot: 'table',
1043
+ th: 'table',
1044
+ tr: 'table'
950
1045
  });
951
-
952
- var HtmlHighlightRules = function() {
1046
+ var HtmlHighlightRules = function () {
953
1047
  XmlHighlightRules.call(this);
954
-
955
1048
  this.addRules({
956
1049
  attributes: [{
957
- include : "tag_whitespace"
958
- }, {
959
- token : "entity.other.attribute-name.xml",
960
- regex : "[-_a-zA-Z0-9:.]+"
961
- }, {
962
- token : "keyword.operator.attribute-equals.xml",
963
- regex : "=",
964
- push : [{
965
1050
  include: "tag_whitespace"
966
1051
  }, {
967
- token : "string.unquoted.attribute-value.html",
968
- regex : "[^<>='\"`\\s]+",
969
- next : "pop"
970
- }, {
971
- token : "empty",
972
- regex : "",
973
- next : "pop"
974
- }]
975
- }, {
976
- include : "attribute_value"
977
- }],
1052
+ token: "entity.other.attribute-name.xml",
1053
+ regex: "[-_a-zA-Z0-9:.]+"
1054
+ }, {
1055
+ token: "keyword.operator.attribute-equals.xml",
1056
+ regex: "=",
1057
+ push: [{
1058
+ include: "tag_whitespace"
1059
+ }, {
1060
+ token: "string.unquoted.attribute-value.html",
1061
+ regex: "[^<>='\"`\\s]+",
1062
+ next: "pop"
1063
+ }, {
1064
+ token: "empty",
1065
+ regex: "",
1066
+ next: "pop"
1067
+ }]
1068
+ }, {
1069
+ include: "attribute_value"
1070
+ }],
978
1071
  tag: [{
979
- token : function(start, tag) {
980
- var group = tagMap[tag];
981
- return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml",
982
- "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"];
983
- },
984
- regex : "(</?)([-_a-zA-Z0-9:.]+)",
985
- next: "tag_stuff"
986
- }],
1072
+ token: function (start, tag) {
1073
+ var group = tagMap[tag];
1074
+ return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml",
1075
+ "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"];
1076
+ },
1077
+ regex: "(</?)([-_a-zA-Z0-9:.]+)",
1078
+ next: "tag_stuff"
1079
+ }],
987
1080
  tag_stuff: [
988
- {include : "attributes"},
989
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"}
1081
+ { include: "attributes" },
1082
+ { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" }
990
1083
  ]
991
1084
  });
992
-
993
1085
  this.embedTagRules(CssHighlightRules, "css-", "style");
994
- this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script");
995
-
1086
+ this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script");
996
1087
  if (this.constructor === HtmlHighlightRules)
997
1088
  this.normalizeRules();
998
1089
  };
999
-
1000
1090
  oop.inherits(HtmlHighlightRules, XmlHighlightRules);
1001
-
1002
1091
  exports.HtmlHighlightRules = HtmlHighlightRules;
1092
+
1003
1093
  });
1004
1094
 
1005
- ace.define("ace/mode/elixir_highlight_rules",[], function(require, exports, module) {
1095
+ ace.define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.githubusercontent.com/elixir-lang/elixir-tmbundle/master/Syntaxes/Elixir.tmLanguage (uuid: ) */
1006
1096
  "use strict";
1007
-
1008
1097
  var oop = require("../lib/oop");
1009
1098
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
1010
-
1011
- var ElixirHighlightRules = function() {
1012
-
1013
- this.$rules = { start:
1014
- [ { token:
1015
- [ 'meta.module.elixir',
1016
- 'keyword.control.module.elixir',
1017
- 'meta.module.elixir',
1018
- 'entity.name.type.module.elixir' ],
1019
- regex: '^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)' },
1020
- { token: 'comment.documentation.heredoc',
1021
- regex: '@(?:module|type)?doc (?:~[a-z])?"""',
1022
- push:
1023
- [ { token: 'comment.documentation.heredoc',
1024
- regex: '\\s*"""',
1025
- next: 'pop' },
1026
- { include: '#interpolated_elixir' },
1027
- { include: '#escaped_char' },
1028
- { defaultToken: 'comment.documentation.heredoc' } ],
1029
- comment: '@doc with heredocs is treated as documentation' },
1030
- { token: 'comment.documentation.heredoc',
1031
- regex: '@(?:module|type)?doc ~[A-Z]"""',
1032
- push:
1033
- [ { token: 'comment.documentation.heredoc',
1034
- regex: '\\s*"""',
1035
- next: 'pop' },
1036
- { defaultToken: 'comment.documentation.heredoc' } ],
1037
- comment: '@doc with heredocs is treated as documentation' },
1038
- { token: 'comment.documentation.heredoc',
1039
- regex: '@(?:module|type)?doc (?:~[a-z])?\'\'\'',
1040
- push:
1041
- [ { token: 'comment.documentation.heredoc',
1042
- regex: '\\s*\'\'\'',
1043
- next: 'pop' },
1044
- { include: '#interpolated_elixir' },
1045
- { include: '#escaped_char' },
1046
- { defaultToken: 'comment.documentation.heredoc' } ],
1047
- comment: '@doc with heredocs is treated as documentation' },
1048
- { token: 'comment.documentation.heredoc',
1049
- regex: '@(?:module|type)?doc ~[A-Z]\'\'\'',
1050
- push:
1051
- [ { token: 'comment.documentation.heredoc',
1052
- regex: '\\s*\'\'\'',
1053
- next: 'pop' },
1054
- { defaultToken: 'comment.documentation.heredoc' } ],
1055
- comment: '@doc with heredocs is treated as documentation' },
1056
- { token: 'comment.documentation.false',
1057
- regex: '@(?:module|type)?doc false',
1058
- comment: '@doc false is treated as documentation' },
1059
- { token: 'comment.documentation.string',
1060
- regex: '@(?:module|type)?doc "',
1061
- push:
1062
- [ { token: 'comment.documentation.string',
1063
- regex: '"',
1064
- next: 'pop' },
1065
- { include: '#interpolated_elixir' },
1066
- { include: '#escaped_char' },
1067
- { defaultToken: 'comment.documentation.string' } ],
1068
- comment: '@doc with string is treated as documentation' },
1069
- { token: 'keyword.control.elixir',
1070
- regex: '\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])',
1071
- TODO: 'FIXME: regexp doesn\'t have js equivalent',
1072
- originalRegex: '(?<!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])' },
1073
- { token: 'keyword.operator.elixir',
1074
- regex: '\\b(?:and|not|or|when|xor|in|inlist|inbits)\\b',
1075
- TODO: 'FIXME: regexp doesn\'t have js equivalent',
1076
- originalRegex: '(?<!\\.)\\b(and|not|or|when|xor|in|inlist|inbits)\\b',
1077
- comment: ' as above, just doesn\'t need a \'end\' and does a logic operation' },
1078
- { token: 'constant.language.elixir',
1079
- regex: '\\b(?:nil|true|false)\\b(?![?!])' },
1080
- { token: 'variable.language.elixir',
1081
- regex: '\\b__(?:CALLER|ENV|MODULE|DIR)__\\b(?![?!])' },
1082
- { token:
1083
- [ 'punctuation.definition.variable.elixir',
1084
- 'variable.other.readwrite.module.elixir' ],
1085
- regex: '(@)([a-zA-Z_]\\w*)' },
1086
- { token:
1087
- [ 'punctuation.definition.variable.elixir',
1088
- 'variable.other.anonymous.elixir' ],
1089
- regex: '(&)(\\d*)' },
1090
- { token: 'variable.other.constant.elixir',
1091
- regex: '\\b[A-Z]\\w*\\b' },
1092
- { token: 'constant.numeric.elixir',
1093
- regex: '\\b(?:0x[\\da-fA-F](?:_?[\\da-fA-F])*|\\d(?:_?\\d)*(?:\\.(?![^[:space:][:digit:]])(?:_?\\d)*)?(?:[eE][-+]?\\d(?:_?\\d)*)?|0b[01]+|0o[0-7]+)\\b',
1094
- TODO: 'FIXME: regexp doesn\'t have js equivalent',
1095
- originalRegex: '\\b(0x\\h(?>_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b' },
1096
- { token: 'punctuation.definition.constant.elixir',
1097
- regex: ':\'',
1098
- push:
1099
- [ { token: 'punctuation.definition.constant.elixir',
1100
- regex: '\'',
1101
- next: 'pop' },
1102
- { include: '#interpolated_elixir' },
1103
- { include: '#escaped_char' },
1104
- { defaultToken: 'constant.other.symbol.single-quoted.elixir' } ] },
1105
- { token: 'punctuation.definition.constant.elixir',
1106
- regex: ':"',
1107
- push:
1108
- [ { token: 'punctuation.definition.constant.elixir',
1109
- regex: '"',
1110
- next: 'pop' },
1111
- { include: '#interpolated_elixir' },
1112
- { include: '#escaped_char' },
1113
- { defaultToken: 'constant.other.symbol.double-quoted.elixir' } ] },
1114
- { token: 'punctuation.definition.string.begin.elixir',
1115
- regex: '(?:\'\'\')',
1116
- TODO: 'FIXME: regexp doesn\'t have js equivalent',
1117
- originalRegex: '(?>\'\'\')',
1118
- push:
1119
- [ { token: 'punctuation.definition.string.end.elixir',
1120
- regex: '^\\s*\'\'\'',
1121
- next: 'pop' },
1122
- { include: '#interpolated_elixir' },
1123
- { include: '#escaped_char' },
1124
- { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' } ],
1125
- comment: 'Single-quoted heredocs' },
1126
- { token: 'punctuation.definition.string.begin.elixir',
1127
- regex: '\'',
1128
- push:
1129
- [ { token: 'punctuation.definition.string.end.elixir',
1099
+ var ElixirHighlightRules = function () {
1100
+ this.$rules = { start: [{ token: ['meta.module.elixir',
1101
+ 'keyword.control.module.elixir',
1102
+ 'meta.module.elixir',
1103
+ 'entity.name.type.module.elixir'],
1104
+ regex: '^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)' },
1105
+ { token: 'comment.documentation.heredoc',
1106
+ regex: '@(?:module|type)?doc (?:~[a-z])?"""',
1107
+ push: [{ token: 'comment.documentation.heredoc',
1108
+ regex: '\\s*"""',
1109
+ next: 'pop' },
1110
+ { include: '#interpolated_elixir' },
1111
+ { include: '#escaped_char' },
1112
+ { defaultToken: 'comment.documentation.heredoc' }],
1113
+ comment: '@doc with heredocs is treated as documentation' },
1114
+ { token: 'comment.documentation.heredoc',
1115
+ regex: '@(?:module|type)?doc ~[A-Z]"""',
1116
+ push: [{ token: 'comment.documentation.heredoc',
1117
+ regex: '\\s*"""',
1118
+ next: 'pop' },
1119
+ { defaultToken: 'comment.documentation.heredoc' }],
1120
+ comment: '@doc with heredocs is treated as documentation' },
1121
+ { token: 'comment.documentation.heredoc',
1122
+ regex: '@(?:module|type)?doc (?:~[a-z])?\'\'\'',
1123
+ push: [{ token: 'comment.documentation.heredoc',
1124
+ regex: '\\s*\'\'\'',
1125
+ next: 'pop' },
1126
+ { include: '#interpolated_elixir' },
1127
+ { include: '#escaped_char' },
1128
+ { defaultToken: 'comment.documentation.heredoc' }],
1129
+ comment: '@doc with heredocs is treated as documentation' },
1130
+ { token: 'comment.documentation.heredoc',
1131
+ regex: '@(?:module|type)?doc ~[A-Z]\'\'\'',
1132
+ push: [{ token: 'comment.documentation.heredoc',
1133
+ regex: '\\s*\'\'\'',
1134
+ next: 'pop' },
1135
+ { defaultToken: 'comment.documentation.heredoc' }],
1136
+ comment: '@doc with heredocs is treated as documentation' },
1137
+ { token: 'comment.documentation.false',
1138
+ regex: '@(?:module|type)?doc false',
1139
+ comment: '@doc false is treated as documentation' },
1140
+ { token: 'comment.documentation.string',
1141
+ regex: '@(?:module|type)?doc "',
1142
+ push: [{ token: 'comment.documentation.string',
1143
+ regex: '"',
1144
+ next: 'pop' },
1145
+ { include: '#interpolated_elixir' },
1146
+ { include: '#escaped_char' },
1147
+ { defaultToken: 'comment.documentation.string' }],
1148
+ comment: '@doc with string is treated as documentation' },
1149
+ { token: 'keyword.control.elixir',
1150
+ regex: '\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])',
1151
+ TODO: 'FIXME: regexp doesn\'t have js equivalent',
1152
+ originalRegex: '(?<!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])' },
1153
+ { token: 'keyword.operator.elixir',
1154
+ regex: '\\b(?:and|not|or|when|xor|in|inlist|inbits)\\b',
1155
+ TODO: 'FIXME: regexp doesn\'t have js equivalent',
1156
+ originalRegex: '(?<!\\.)\\b(and|not|or|when|xor|in|inlist|inbits)\\b',
1157
+ comment: ' as above, just doesn\'t need a \'end\' and does a logic operation' },
1158
+ { token: 'constant.language.elixir',
1159
+ regex: '\\b(?:nil|true|false)\\b(?![?!])' },
1160
+ { token: 'variable.language.elixir',
1161
+ regex: '\\b__(?:CALLER|ENV|MODULE|DIR)__\\b(?![?!])' },
1162
+ { token: ['punctuation.definition.variable.elixir',
1163
+ 'variable.other.readwrite.module.elixir'],
1164
+ regex: '(@)([a-zA-Z_]\\w*)' },
1165
+ { token: ['punctuation.definition.variable.elixir',
1166
+ 'variable.other.anonymous.elixir'],
1167
+ regex: '(&)(\\d*)' },
1168
+ { token: 'variable.other.constant.elixir',
1169
+ regex: '\\b[A-Z]\\w*\\b' },
1170
+ { token: 'constant.numeric.elixir',
1171
+ regex: '\\b(?:0x[\\da-fA-F](?:_?[\\da-fA-F])*|\\d(?:_?\\d)*(?:\\.(?![^[:space:][:digit:]])(?:_?\\d)*)?(?:[eE][-+]?\\d(?:_?\\d)*)?|0b[01]+|0o[0-7]+)\\b',
1172
+ TODO: 'FIXME: regexp doesn\'t have js equivalent',
1173
+ originalRegex: '\\b(0x\\h(?>_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b' },
1174
+ { token: 'punctuation.definition.constant.elixir',
1175
+ regex: ':\'',
1176
+ push: [{ token: 'punctuation.definition.constant.elixir',
1177
+ regex: '\'',
1178
+ next: 'pop' },
1179
+ { include: '#interpolated_elixir' },
1180
+ { include: '#escaped_char' },
1181
+ { defaultToken: 'constant.other.symbol.single-quoted.elixir' }] },
1182
+ { token: 'punctuation.definition.constant.elixir',
1183
+ regex: ':"',
1184
+ push: [{ token: 'punctuation.definition.constant.elixir',
1185
+ regex: '"',
1186
+ next: 'pop' },
1187
+ { include: '#interpolated_elixir' },
1188
+ { include: '#escaped_char' },
1189
+ { defaultToken: 'constant.other.symbol.double-quoted.elixir' }] },
1190
+ { token: 'punctuation.definition.string.begin.elixir',
1191
+ regex: '(?:\'\'\')',
1192
+ TODO: 'FIXME: regexp doesn\'t have js equivalent',
1193
+ originalRegex: '(?>\'\'\')',
1194
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1195
+ regex: '^\\s*\'\'\'',
1196
+ next: 'pop' },
1197
+ { include: '#interpolated_elixir' },
1198
+ { include: '#escaped_char' },
1199
+ { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' }],
1200
+ comment: 'Single-quoted heredocs' },
1201
+ { token: 'punctuation.definition.string.begin.elixir',
1130
1202
  regex: '\'',
1131
- next: 'pop' },
1132
- { include: '#interpolated_elixir' },
1133
- { include: '#escaped_char' },
1134
- { defaultToken: 'support.function.variable.quoted.single.elixir' } ],
1135
- comment: 'single quoted string (allows for interpolation)' },
1136
- { token: 'punctuation.definition.string.begin.elixir',
1137
- regex: '(?:""")',
1138
- TODO: 'FIXME: regexp doesn\'t have js equivalent',
1139
- originalRegex: '(?>""")',
1140
- push:
1141
- [ { token: 'punctuation.definition.string.end.elixir',
1142
- regex: '^\\s*"""',
1143
- next: 'pop' },
1144
- { include: '#interpolated_elixir' },
1145
- { include: '#escaped_char' },
1146
- { defaultToken: 'string.quoted.double.heredoc.elixir' } ],
1147
- comment: 'Double-quoted heredocs' },
1148
- { token: 'punctuation.definition.string.begin.elixir',
1149
- regex: '"',
1150
- push:
1151
- [ { token: 'punctuation.definition.string.end.elixir',
1203
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1204
+ regex: '\'',
1205
+ next: 'pop' },
1206
+ { include: '#interpolated_elixir' },
1207
+ { include: '#escaped_char' },
1208
+ { defaultToken: 'support.function.variable.quoted.single.elixir' }],
1209
+ comment: 'single quoted string (allows for interpolation)' },
1210
+ { token: 'punctuation.definition.string.begin.elixir',
1211
+ regex: '(?:""")',
1212
+ TODO: 'FIXME: regexp doesn\'t have js equivalent',
1213
+ originalRegex: '(?>""")',
1214
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1215
+ regex: '^\\s*"""',
1216
+ next: 'pop' },
1217
+ { include: '#interpolated_elixir' },
1218
+ { include: '#escaped_char' },
1219
+ { defaultToken: 'string.quoted.double.heredoc.elixir' }],
1220
+ comment: 'Double-quoted heredocs' },
1221
+ { token: 'punctuation.definition.string.begin.elixir',
1152
1222
  regex: '"',
1153
- next: 'pop' },
1154
- { include: '#interpolated_elixir' },
1155
- { include: '#escaped_char' },
1156
- { defaultToken: 'string.quoted.double.elixir' } ],
1157
- comment: 'double quoted string (allows for interpolation)' },
1158
- { token: 'punctuation.definition.string.begin.elixir',
1159
- regex: '~[a-z](?:""")',
1160
- TODO: 'FIXME: regexp doesn\'t have js equivalent',
1161
- originalRegex: '~[a-z](?>""")',
1162
- push:
1163
- [ { token: 'punctuation.definition.string.end.elixir',
1164
- regex: '^\\s*"""',
1165
- next: 'pop' },
1166
- { include: '#interpolated_elixir' },
1167
- { include: '#escaped_char' },
1168
- { defaultToken: 'string.quoted.double.heredoc.elixir' } ],
1169
- comment: 'Double-quoted heredocs sigils' },
1170
- { token: 'punctuation.definition.string.begin.elixir',
1171
- regex: '~[a-z]\\{',
1172
- push:
1173
- [ { token: 'punctuation.definition.string.end.elixir',
1174
- regex: '\\}[a-z]*',
1175
- next: 'pop' },
1176
- { include: '#interpolated_elixir' },
1177
- { include: '#escaped_char' },
1178
- { defaultToken: 'string.interpolated.elixir' } ],
1179
- comment: 'sigil (allow for interpolation)' },
1180
- { token: 'punctuation.definition.string.begin.elixir',
1181
- regex: '~[a-z]\\[',
1182
- push:
1183
- [ { token: 'punctuation.definition.string.end.elixir',
1184
- regex: '\\][a-z]*',
1185
- next: 'pop' },
1186
- { include: '#interpolated_elixir' },
1187
- { include: '#escaped_char' },
1188
- { defaultToken: 'string.interpolated.elixir' } ],
1189
- comment: 'sigil (allow for interpolation)' },
1190
- { token: 'punctuation.definition.string.begin.elixir',
1191
- regex: '~[a-z]\\<',
1192
- push:
1193
- [ { token: 'punctuation.definition.string.end.elixir',
1194
- regex: '\\>[a-z]*',
1195
- next: 'pop' },
1196
- { include: '#interpolated_elixir' },
1197
- { include: '#escaped_char' },
1198
- { defaultToken: 'string.interpolated.elixir' } ],
1199
- comment: 'sigil (allow for interpolation)' },
1200
- { token: 'punctuation.definition.string.begin.elixir',
1201
- regex: '~[a-z]\\(',
1202
- push:
1203
- [ { token: 'punctuation.definition.string.end.elixir',
1204
- regex: '\\)[a-z]*',
1205
- next: 'pop' },
1206
- { include: '#interpolated_elixir' },
1207
- { include: '#escaped_char' },
1208
- { defaultToken: 'string.interpolated.elixir' } ],
1209
- comment: 'sigil (allow for interpolation)' },
1210
- { token: 'punctuation.definition.string.begin.elixir',
1211
- regex: '~[a-z][^\\w]',
1212
- push:
1213
- [ { token: 'punctuation.definition.string.end.elixir',
1214
- regex: '[^\\w][a-z]*',
1215
- next: 'pop' },
1216
- { include: '#interpolated_elixir' },
1217
- { include: '#escaped_char' },
1218
- { include: '#escaped_char' },
1219
- { defaultToken: 'string.interpolated.elixir' } ],
1220
- comment: 'sigil (allow for interpolation)' },
1221
- { token: 'punctuation.definition.string.begin.elixir',
1222
- regex: '~[A-Z](?:""")',
1223
- TODO: 'FIXME: regexp doesn\'t have js equivalent',
1224
- originalRegex: '~[A-Z](?>""")',
1225
- push:
1226
- [ { token: 'punctuation.definition.string.end.elixir',
1227
- regex: '^\\s*"""',
1228
- next: 'pop' },
1229
- { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1230
- comment: 'Double-quoted heredocs sigils' },
1231
- { token: 'punctuation.definition.string.begin.elixir',
1232
- regex: '~[A-Z]\\{',
1233
- push:
1234
- [ { token: 'punctuation.definition.string.end.elixir',
1235
- regex: '\\}[a-z]*',
1236
- next: 'pop' },
1237
- { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1238
- comment: 'sigil (without interpolation)' },
1239
- { token: 'punctuation.definition.string.begin.elixir',
1240
- regex: '~[A-Z]\\[',
1241
- push:
1242
- [ { token: 'punctuation.definition.string.end.elixir',
1243
- regex: '\\][a-z]*',
1244
- next: 'pop' },
1245
- { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1246
- comment: 'sigil (without interpolation)' },
1247
- { token: 'punctuation.definition.string.begin.elixir',
1248
- regex: '~[A-Z]\\<',
1249
- push:
1250
- [ { token: 'punctuation.definition.string.end.elixir',
1251
- regex: '\\>[a-z]*',
1252
- next: 'pop' },
1253
- { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1254
- comment: 'sigil (without interpolation)' },
1255
- { token: 'punctuation.definition.string.begin.elixir',
1256
- regex: '~[A-Z]\\(',
1257
- push:
1258
- [ { token: 'punctuation.definition.string.end.elixir',
1259
- regex: '\\)[a-z]*',
1260
- next: 'pop' },
1261
- { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1262
- comment: 'sigil (without interpolation)' },
1263
- { token: 'punctuation.definition.string.begin.elixir',
1264
- regex: '~[A-Z][^\\w]',
1265
- push:
1266
- [ { token: 'punctuation.definition.string.end.elixir',
1267
- regex: '[^\\w][a-z]*',
1268
- next: 'pop' },
1269
- { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1270
- comment: 'sigil (without interpolation)' },
1271
- { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'],
1272
- regex: '(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)',
1273
- TODO: 'FIXME: regexp doesn\'t have js equivalent',
1274
- originalRegex: '(?<!:)(:)(?>[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)',
1275
- comment: 'symbols' },
1276
- { token: 'punctuation.definition.constant.elixir',
1277
- regex: '(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)',
1278
- TODO: 'FIXME: regexp doesn\'t have js equivalent',
1279
- originalRegex: '(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)',
1280
- comment: 'symbols' },
1281
- { token:
1282
- [ 'punctuation.definition.comment.elixir',
1283
- 'comment.line.number-sign.elixir' ],
1284
- regex: '(#)(.*)' },
1285
- { token: 'constant.numeric.elixir',
1286
- regex: '\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])',
1287
- TODO: 'FIXME: regexp doesn\'t have js equivalent',
1288
- originalRegex: '(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|[^xMC])|[^\\s\\\\])',
1289
- comment: '\n\t\t\tmatches questionmark-letters.\n\n\t\t\texamples (1st alternation = hex):\n\t\t\t?\\x1 ?\\x61\n\n\t\t\texamples (2rd alternation = escaped):\n\t\t\t?\\n ?\\b\n\n\t\t\texamples (3rd alternation = normal):\n\t\t\t?a ?A ?0 \n\t\t\t?* ?" ?( \n\t\t\t?. ?#\n\t\t\t\n\t\t\tthe negative lookbehind prevents against matching\n\t\t\tp(42.tainted?)\n\t\t\t' },
1290
- { token: 'keyword.operator.assignment.augmented.elixir',
1291
- regex: '\\+=|\\-=|\\|\\|=|~=|&&=' },
1292
- { token: 'keyword.operator.comparison.elixir',
1293
- regex: '===?|!==?|<=?|>=?' },
1294
- { token: 'keyword.operator.bitwise.elixir',
1295
- regex: '\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}' },
1296
- { token: 'keyword.operator.logical.elixir',
1297
- regex: '!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b',
1298
- originalRegex: '(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b' },
1299
- { token: 'keyword.operator.arithmetic.elixir',
1300
- regex: '\\*|\\+|\\-|/' },
1301
- { token: 'keyword.operator.other.elixir',
1302
- regex: '\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>' },
1303
- { token: 'keyword.operator.assignment.elixir', regex: '=' },
1304
- { token: 'punctuation.separator.other.elixir', regex: ':' },
1305
- { token: 'punctuation.separator.statement.elixir',
1306
- regex: '\\;' },
1307
- { token: 'punctuation.separator.object.elixir', regex: ',' },
1308
- { token: 'punctuation.separator.method.elixir', regex: '\\.' },
1309
- { token: 'punctuation.section.scope.elixir', regex: '\\{|\\}' },
1310
- { token: 'punctuation.section.array.elixir', regex: '\\[|\\]' },
1311
- { token: 'punctuation.section.function.elixir',
1312
- regex: '\\(|\\)' } ],
1313
- '#escaped_char':
1314
- [ { token: 'constant.character.escape.elixir',
1315
- regex: '\\\\(?:x[\\da-fA-F]{1,2}|.)' } ],
1316
- '#interpolated_elixir':
1317
- [ { token:
1318
- [ 'source.elixir.embedded.source',
1319
- 'source.elixir.embedded.source.empty' ],
1320
- regex: '(#\\{)(\\})' },
1321
- { todo:
1322
- { token: 'punctuation.section.embedded.elixir',
1323
- regex: '#\\{',
1324
- push:
1325
- [ { token: 'punctuation.section.embedded.elixir',
1326
- regex: '\\}',
1327
- next: 'pop' },
1328
- { include: '#nest_curly_and_self' },
1329
- { include: '$self' },
1330
- { defaultToken: 'source.elixir.embedded.source' } ] } } ],
1331
- '#nest_curly_and_self':
1332
- [ { token: 'punctuation.section.scope.elixir',
1333
- regex: '\\{',
1334
- push:
1335
- [ { token: 'punctuation.section.scope.elixir',
1336
- regex: '\\}',
1337
- next: 'pop' },
1338
- { include: '#nest_curly_and_self' } ] },
1339
- { include: '$self' } ],
1340
- '#regex_sub':
1341
- [ { include: '#interpolated_elixir' },
1342
- { include: '#escaped_char' },
1343
- { token:
1344
- [ 'punctuation.definition.arbitrary-repitition.elixir',
1345
- 'string.regexp.arbitrary-repitition.elixir',
1346
- 'string.regexp.arbitrary-repitition.elixir',
1347
- 'punctuation.definition.arbitrary-repitition.elixir' ],
1348
- regex: '(\\{)(\\d+)((?:,\\d+)?)(\\})' },
1349
- { token: 'punctuation.definition.character-class.elixir',
1350
- regex: '\\[(?:\\^?\\])?',
1351
- push:
1352
- [ { token: 'punctuation.definition.character-class.elixir',
1353
- regex: '\\]',
1354
- next: 'pop' },
1355
- { include: '#escaped_char' },
1356
- { defaultToken: 'string.regexp.character-class.elixir' } ] },
1357
- { token: 'punctuation.definition.group.elixir',
1358
- regex: '\\(',
1359
- push:
1360
- [ { token: 'punctuation.definition.group.elixir',
1361
- regex: '\\)',
1362
- next: 'pop' },
1363
- { include: '#regex_sub' },
1364
- { defaultToken: 'string.regexp.group.elixir' } ] },
1365
- { token:
1366
- [ 'punctuation.definition.comment.elixir',
1367
- 'comment.line.number-sign.elixir' ],
1368
- regex: '(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)',
1369
- originalRegex: '(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$',
1370
- comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' } ] };
1371
-
1223
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1224
+ regex: '"',
1225
+ next: 'pop' },
1226
+ { include: '#interpolated_elixir' },
1227
+ { include: '#escaped_char' },
1228
+ { defaultToken: 'string.quoted.double.elixir' }],
1229
+ comment: 'double quoted string (allows for interpolation)' },
1230
+ { token: 'punctuation.definition.string.begin.elixir',
1231
+ regex: '~[a-z](?:""")',
1232
+ TODO: 'FIXME: regexp doesn\'t have js equivalent',
1233
+ originalRegex: '~[a-z](?>""")',
1234
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1235
+ regex: '^\\s*"""',
1236
+ next: 'pop' },
1237
+ { include: '#interpolated_elixir' },
1238
+ { include: '#escaped_char' },
1239
+ { defaultToken: 'string.quoted.double.heredoc.elixir' }],
1240
+ comment: 'Double-quoted heredocs sigils' },
1241
+ { token: 'punctuation.definition.string.begin.elixir',
1242
+ regex: '~[a-z]\\{',
1243
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1244
+ regex: '\\}[a-z]*',
1245
+ next: 'pop' },
1246
+ { include: '#interpolated_elixir' },
1247
+ { include: '#escaped_char' },
1248
+ { defaultToken: 'string.interpolated.elixir' }],
1249
+ comment: 'sigil (allow for interpolation)' },
1250
+ { token: 'punctuation.definition.string.begin.elixir',
1251
+ regex: '~[a-z]\\[',
1252
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1253
+ regex: '\\][a-z]*',
1254
+ next: 'pop' },
1255
+ { include: '#interpolated_elixir' },
1256
+ { include: '#escaped_char' },
1257
+ { defaultToken: 'string.interpolated.elixir' }],
1258
+ comment: 'sigil (allow for interpolation)' },
1259
+ { token: 'punctuation.definition.string.begin.elixir',
1260
+ regex: '~[a-z]\\<',
1261
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1262
+ regex: '\\>[a-z]*',
1263
+ next: 'pop' },
1264
+ { include: '#interpolated_elixir' },
1265
+ { include: '#escaped_char' },
1266
+ { defaultToken: 'string.interpolated.elixir' }],
1267
+ comment: 'sigil (allow for interpolation)' },
1268
+ { token: 'punctuation.definition.string.begin.elixir',
1269
+ regex: '~[a-z]\\(',
1270
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1271
+ regex: '\\)[a-z]*',
1272
+ next: 'pop' },
1273
+ { include: '#interpolated_elixir' },
1274
+ { include: '#escaped_char' },
1275
+ { defaultToken: 'string.interpolated.elixir' }],
1276
+ comment: 'sigil (allow for interpolation)' },
1277
+ { token: 'punctuation.definition.string.begin.elixir',
1278
+ regex: '~[a-z][^\\w]',
1279
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1280
+ regex: '[^\\w][a-z]*',
1281
+ next: 'pop' },
1282
+ { include: '#interpolated_elixir' },
1283
+ { include: '#escaped_char' },
1284
+ { include: '#escaped_char' },
1285
+ { defaultToken: 'string.interpolated.elixir' }],
1286
+ comment: 'sigil (allow for interpolation)' },
1287
+ { token: 'punctuation.definition.string.begin.elixir',
1288
+ regex: '~[A-Z](?:""")',
1289
+ TODO: 'FIXME: regexp doesn\'t have js equivalent',
1290
+ originalRegex: '~[A-Z](?>""")',
1291
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1292
+ regex: '^\\s*"""',
1293
+ next: 'pop' },
1294
+ { defaultToken: 'string.quoted.other.literal.upper.elixir' }],
1295
+ comment: 'Double-quoted heredocs sigils' },
1296
+ { token: 'punctuation.definition.string.begin.elixir',
1297
+ regex: '~[A-Z]\\{',
1298
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1299
+ regex: '\\}[a-z]*',
1300
+ next: 'pop' },
1301
+ { defaultToken: 'string.quoted.other.literal.upper.elixir' }],
1302
+ comment: 'sigil (without interpolation)' },
1303
+ { token: 'punctuation.definition.string.begin.elixir',
1304
+ regex: '~[A-Z]\\[',
1305
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1306
+ regex: '\\][a-z]*',
1307
+ next: 'pop' },
1308
+ { defaultToken: 'string.quoted.other.literal.upper.elixir' }],
1309
+ comment: 'sigil (without interpolation)' },
1310
+ { token: 'punctuation.definition.string.begin.elixir',
1311
+ regex: '~[A-Z]\\<',
1312
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1313
+ regex: '\\>[a-z]*',
1314
+ next: 'pop' },
1315
+ { defaultToken: 'string.quoted.other.literal.upper.elixir' }],
1316
+ comment: 'sigil (without interpolation)' },
1317
+ { token: 'punctuation.definition.string.begin.elixir',
1318
+ regex: '~[A-Z]\\(',
1319
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1320
+ regex: '\\)[a-z]*',
1321
+ next: 'pop' },
1322
+ { defaultToken: 'string.quoted.other.literal.upper.elixir' }],
1323
+ comment: 'sigil (without interpolation)' },
1324
+ { token: 'punctuation.definition.string.begin.elixir',
1325
+ regex: '~[A-Z][^\\w]',
1326
+ push: [{ token: 'punctuation.definition.string.end.elixir',
1327
+ regex: '[^\\w][a-z]*',
1328
+ next: 'pop' },
1329
+ { defaultToken: 'string.quoted.other.literal.upper.elixir' }],
1330
+ comment: 'sigil (without interpolation)' },
1331
+ { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'],
1332
+ regex: '(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)',
1333
+ TODO: 'FIXME: regexp doesn\'t have js equivalent',
1334
+ originalRegex: '(?<!:)(:)(?>[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)',
1335
+ comment: 'symbols' },
1336
+ { token: 'punctuation.definition.constant.elixir',
1337
+ regex: '(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)',
1338
+ TODO: 'FIXME: regexp doesn\'t have js equivalent',
1339
+ originalRegex: '(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)',
1340
+ comment: 'symbols' },
1341
+ { token: ['punctuation.definition.comment.elixir',
1342
+ 'comment.line.number-sign.elixir'],
1343
+ regex: '(#)(.*)' },
1344
+ { token: 'constant.numeric.elixir',
1345
+ regex: '\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])',
1346
+ TODO: 'FIXME: regexp doesn\'t have js equivalent',
1347
+ originalRegex: '(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|[^xMC])|[^\\s\\\\])',
1348
+ comment: '\n\t\t\tmatches questionmark-letters.\n\n\t\t\texamples (1st alternation = hex):\n\t\t\t?\\x1 ?\\x61\n\n\t\t\texamples (2rd alternation = escaped):\n\t\t\t?\\n ?\\b\n\n\t\t\texamples (3rd alternation = normal):\n\t\t\t?a ?A ?0 \n\t\t\t?* ?" ?( \n\t\t\t?. ?#\n\t\t\t\n\t\t\tthe negative lookbehind prevents against matching\n\t\t\tp(42.tainted?)\n\t\t\t' },
1349
+ { token: 'keyword.operator.assignment.augmented.elixir',
1350
+ regex: '\\+=|\\-=|\\|\\|=|~=|&&=' },
1351
+ { token: 'keyword.operator.comparison.elixir',
1352
+ regex: '===?|!==?|<=?|>=?' },
1353
+ { token: 'keyword.operator.bitwise.elixir',
1354
+ regex: '\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}' },
1355
+ { token: 'keyword.operator.logical.elixir',
1356
+ regex: '!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b',
1357
+ originalRegex: '(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b' },
1358
+ { token: 'keyword.operator.arithmetic.elixir',
1359
+ regex: '\\*|\\+|\\-|/' },
1360
+ { token: 'keyword.operator.other.elixir',
1361
+ regex: '\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>' },
1362
+ { token: 'keyword.operator.assignment.elixir', regex: '=' },
1363
+ { token: 'punctuation.separator.other.elixir', regex: ':' },
1364
+ { token: 'punctuation.separator.statement.elixir',
1365
+ regex: '\\;' },
1366
+ { token: 'punctuation.separator.object.elixir', regex: ',' },
1367
+ { token: 'punctuation.separator.method.elixir', regex: '\\.' },
1368
+ { token: 'punctuation.section.scope.elixir', regex: '\\{|\\}' },
1369
+ { token: 'punctuation.section.array.elixir', regex: '\\[|\\]' },
1370
+ { token: 'punctuation.section.function.elixir',
1371
+ regex: '\\(|\\)' }],
1372
+ '#escaped_char': [{ token: 'constant.character.escape.elixir',
1373
+ regex: '\\\\(?:x[\\da-fA-F]{1,2}|.)' }],
1374
+ '#interpolated_elixir': [{ token: ['source.elixir.embedded.source',
1375
+ 'source.elixir.embedded.source.empty'],
1376
+ regex: '(#\\{)(\\})' },
1377
+ { todo: { token: 'punctuation.section.embedded.elixir',
1378
+ regex: '#\\{',
1379
+ push: [{ token: 'punctuation.section.embedded.elixir',
1380
+ regex: '\\}',
1381
+ next: 'pop' },
1382
+ { include: '#nest_curly_and_self' },
1383
+ { include: '$self' },
1384
+ { defaultToken: 'source.elixir.embedded.source' }] } }],
1385
+ '#nest_curly_and_self': [{ token: 'punctuation.section.scope.elixir',
1386
+ regex: '\\{',
1387
+ push: [{ token: 'punctuation.section.scope.elixir',
1388
+ regex: '\\}',
1389
+ next: 'pop' },
1390
+ { include: '#nest_curly_and_self' }] },
1391
+ { include: '$self' }],
1392
+ '#regex_sub': [{ include: '#interpolated_elixir' },
1393
+ { include: '#escaped_char' },
1394
+ { token: ['punctuation.definition.arbitrary-repitition.elixir',
1395
+ 'string.regexp.arbitrary-repitition.elixir',
1396
+ 'string.regexp.arbitrary-repitition.elixir',
1397
+ 'punctuation.definition.arbitrary-repitition.elixir'],
1398
+ regex: '(\\{)(\\d+)((?:,\\d+)?)(\\})' },
1399
+ { token: 'punctuation.definition.character-class.elixir',
1400
+ regex: '\\[(?:\\^?\\])?',
1401
+ push: [{ token: 'punctuation.definition.character-class.elixir',
1402
+ regex: '\\]',
1403
+ next: 'pop' },
1404
+ { include: '#escaped_char' },
1405
+ { defaultToken: 'string.regexp.character-class.elixir' }] },
1406
+ { token: 'punctuation.definition.group.elixir',
1407
+ regex: '\\(',
1408
+ push: [{ token: 'punctuation.definition.group.elixir',
1409
+ regex: '\\)',
1410
+ next: 'pop' },
1411
+ { include: '#regex_sub' },
1412
+ { defaultToken: 'string.regexp.group.elixir' }] },
1413
+ { token: ['punctuation.definition.comment.elixir',
1414
+ 'comment.line.number-sign.elixir'],
1415
+ regex: '(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)',
1416
+ originalRegex: '(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$',
1417
+ comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' }] };
1372
1418
  this.normalizeRules();
1373
1419
  };
1374
-
1375
1420
  ElixirHighlightRules.metaData = { comment: 'Textmate bundle for Elixir Programming Language.',
1376
- fileTypes: [ 'ex', 'exs' ],
1377
- firstLineMatch: '^#!/.*\\belixir',
1378
- foldingStartMarker: '(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$',
1379
- foldingStopMarker: '^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)',
1380
- keyEquivalent: '^~E',
1381
- name: 'Elixir',
1382
- scopeName: 'source.elixir' };
1383
-
1384
-
1421
+ fileTypes: ['ex', 'exs'],
1422
+ firstLineMatch: '^#!/.*\\belixir',
1423
+ foldingStartMarker: '(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$',
1424
+ foldingStopMarker: '^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)',
1425
+ keyEquivalent: '^~E',
1426
+ name: 'Elixir',
1427
+ scopeName: 'source.elixir' };
1385
1428
  oop.inherits(ElixirHighlightRules, TextHighlightRules);
1386
-
1387
1429
  exports.ElixirHighlightRules = ElixirHighlightRules;
1388
- });
1389
-
1390
- ace.define("ace/mode/html_elixir_highlight_rules",[], function(require, exports, module) {
1391
- "use strict";
1392
1430
 
1393
- var oop = require("../lib/oop");
1394
- var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
1395
- var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules;
1396
-
1397
- var HtmlElixirHighlightRules = function() {
1398
- HtmlHighlightRules.call(this);
1431
+ });
1399
1432
 
1400
- var startRules = [
1401
- {
1402
- regex: "<%%|%%>",
1403
- token: "constant.language.escape"
1404
- }, {
1405
- token : "comment.start.eex",
1406
- regex : "<%#",
1407
- push : [{
1408
- token : "comment.end.eex",
1433
+ ace.define("ace/mode/html_elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/elixir_highlight_rules"], function(require, exports, module){"use strict";
1434
+ var oop = require("../lib/oop");
1435
+ var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
1436
+ var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules;
1437
+ var HtmlElixirHighlightRules = function () {
1438
+ HtmlHighlightRules.call(this);
1439
+ var startRules = [
1440
+ {
1441
+ regex: "<%%|%%>",
1442
+ token: "constant.language.escape"
1443
+ }, {
1444
+ token: "comment.start.eex",
1445
+ regex: "<%#",
1446
+ push: [{
1447
+ token: "comment.end.eex",
1409
1448
  regex: "%>",
1410
1449
  next: "pop",
1411
- defaultToken:"comment"
1450
+ defaultToken: "comment"
1412
1451
  }]
1413
- }, {
1414
- token : "support.elixir_tag",
1415
- regex : "<%+(?!>)[-=]?",
1416
- push : "elixir-start"
1417
- }
1418
- ];
1419
-
1420
- var endRules = [
1421
- {
1422
- token : "support.elixir_tag",
1423
- regex : "%>",
1424
- next : "pop"
1425
- }, {
1426
- token: "comment",
1427
- regex: "#(?:[^%]|%[^>])*"
1428
- }
1429
- ];
1430
-
1431
- for (var key in this.$rules)
1432
- this.$rules[key].unshift.apply(this.$rules[key], startRules);
1433
-
1434
- this.embedRules(ElixirHighlightRules, "elixir-", endRules, ["start"]);
1435
-
1436
- this.normalizeRules();
1437
- };
1438
-
1439
-
1440
- oop.inherits(HtmlElixirHighlightRules, HtmlHighlightRules);
1452
+ }, {
1453
+ token: "support.elixir_tag",
1454
+ regex: "<%+(?!>)[-=]?",
1455
+ push: "elixir-start"
1456
+ }
1457
+ ];
1458
+ var endRules = [
1459
+ {
1460
+ token: "support.elixir_tag",
1461
+ regex: "%>",
1462
+ next: "pop"
1463
+ }, {
1464
+ token: "comment",
1465
+ regex: "#(?:[^%]|%[^>])*"
1466
+ }
1467
+ ];
1468
+ for (var key in this.$rules)
1469
+ this.$rules[key].unshift.apply(this.$rules[key], startRules);
1470
+ this.embedRules(ElixirHighlightRules, "elixir-", endRules, ["start"]);
1471
+ this.normalizeRules();
1472
+ };
1473
+ oop.inherits(HtmlElixirHighlightRules, HtmlHighlightRules);
1474
+ exports.HtmlElixirHighlightRules = HtmlElixirHighlightRules;
1441
1475
 
1442
- exports.HtmlElixirHighlightRules = HtmlElixirHighlightRules;
1443
1476
  });
1444
1477
 
1445
- ace.define("ace/mode/matching_brace_outdent",[], function(require, exports, module) {
1446
- "use strict";
1447
-
1478
+ ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict";
1448
1479
  var Range = require("../range").Range;
1449
-
1450
- var MatchingBraceOutdent = function() {};
1451
-
1452
- (function() {
1453
-
1454
- this.checkOutdent = function(line, input) {
1455
- if (! /^\s+$/.test(line))
1480
+ var MatchingBraceOutdent = function () { };
1481
+ (function () {
1482
+ this.checkOutdent = function (line, input) {
1483
+ if (!/^\s+$/.test(line))
1456
1484
  return false;
1457
-
1458
1485
  return /^\s*\}/.test(input);
1459
1486
  };
1460
-
1461
- this.autoOutdent = function(doc, row) {
1487
+ this.autoOutdent = function (doc, row) {
1462
1488
  var line = doc.getLine(row);
1463
1489
  var match = line.match(/^(\s*\})/);
1464
-
1465
- if (!match) return 0;
1466
-
1490
+ if (!match)
1491
+ return 0;
1467
1492
  var column = match[1].length;
1468
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
1469
-
1470
- if (!openBracePos || openBracePos.row == row) return 0;
1471
-
1493
+ var openBracePos = doc.findMatchingBracket({ row: row, column: column });
1494
+ if (!openBracePos || openBracePos.row == row)
1495
+ return 0;
1472
1496
  var indent = this.$getIndent(doc.getLine(openBracePos.row));
1473
- doc.replace(new Range(row, 0, row, column-1), indent);
1497
+ doc.replace(new Range(row, 0, row, column - 1), indent);
1474
1498
  };
1475
-
1476
- this.$getIndent = function(line) {
1499
+ this.$getIndent = function (line) {
1477
1500
  return line.match(/^\s*/)[0];
1478
1501
  };
1479
-
1480
1502
  }).call(MatchingBraceOutdent.prototype);
1481
-
1482
1503
  exports.MatchingBraceOutdent = MatchingBraceOutdent;
1483
- });
1484
1504
 
1485
- ace.define("ace/mode/folding/cstyle",[], function(require, exports, module) {
1486
- "use strict";
1505
+ });
1487
1506
 
1507
+ ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict";
1488
1508
  var oop = require("../../lib/oop");
1489
1509
  var Range = require("../../range").Range;
1490
1510
  var BaseFoldMode = require("./fold_mode").FoldMode;
1491
-
1492
- var FoldMode = exports.FoldMode = function(commentRegex) {
1511
+ var FoldMode = exports.FoldMode = function (commentRegex) {
1493
1512
  if (commentRegex) {
1494
- this.foldingStartMarker = new RegExp(
1495
- this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
1496
- );
1497
- this.foldingStopMarker = new RegExp(
1498
- this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
1499
- );
1513
+ this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start));
1514
+ this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end));
1500
1515
  }
1501
1516
  };
1502
1517
  oop.inherits(FoldMode, BaseFoldMode);
1503
-
1504
- (function() {
1505
-
1518
+ (function () {
1506
1519
  this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
1507
1520
  this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
1508
- this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
1521
+ this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/;
1509
1522
  this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
1510
1523
  this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
1511
1524
  this._getFoldWidgetBase = this.getFoldWidget;
1512
- this.getFoldWidget = function(session, foldStyle, row) {
1525
+ this.getFoldWidget = function (session, foldStyle, row) {
1513
1526
  var line = session.getLine(row);
1514
-
1515
1527
  if (this.singleLineBlockCommentRe.test(line)) {
1516
1528
  if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
1517
1529
  return "";
1518
1530
  }
1519
-
1520
1531
  var fw = this._getFoldWidgetBase(session, foldStyle, row);
1521
-
1522
1532
  if (!fw && this.startRegionRe.test(line))
1523
1533
  return "start"; // lineCommentRegionStart
1524
-
1525
1534
  return fw;
1526
1535
  };
1527
-
1528
- this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
1536
+ this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {
1529
1537
  var line = session.getLine(row);
1530
-
1531
1538
  if (this.startRegionRe.test(line))
1532
1539
  return this.getCommentRegionBlock(session, line, row);
1533
-
1534
1540
  var match = line.match(this.foldingStartMarker);
1535
1541
  if (match) {
1536
1542
  var i = match.index;
1537
-
1538
1543
  if (match[1])
1539
1544
  return this.openingBracketBlock(session, match[1], row, i);
1540
-
1541
1545
  var range = session.getCommentFoldRange(row, i + match[0].length, 1);
1542
-
1543
1546
  if (range && !range.isMultiLine()) {
1544
1547
  if (forceMultiline) {
1545
1548
  range = this.getSectionRange(session, row);
1546
- } else if (foldStyle != "all")
1549
+ }
1550
+ else if (foldStyle != "all")
1547
1551
  range = null;
1548
1552
  }
1549
-
1550
1553
  return range;
1551
1554
  }
1552
-
1553
1555
  if (foldStyle === "markbegin")
1554
1556
  return;
1555
-
1556
1557
  var match = line.match(this.foldingStopMarker);
1557
1558
  if (match) {
1558
1559
  var i = match.index + match[0].length;
1559
-
1560
1560
  if (match[1])
1561
1561
  return this.closingBracketBlock(session, match[1], row, i);
1562
-
1563
1562
  return session.getCommentFoldRange(row, i, -1);
1564
1563
  }
1565
1564
  };
1566
-
1567
- this.getSectionRange = function(session, row) {
1565
+ this.getSectionRange = function (session, row) {
1568
1566
  var line = session.getLine(row);
1569
1567
  var startIndent = line.search(/\S/);
1570
1568
  var startRow = row;
@@ -1577,54 +1575,52 @@ oop.inherits(FoldMode, BaseFoldMode);
1577
1575
  var indent = line.search(/\S/);
1578
1576
  if (indent === -1)
1579
1577
  continue;
1580
- if (startIndent > indent)
1578
+ if (startIndent > indent)
1581
1579
  break;
1582
1580
  var subRange = this.getFoldWidgetRange(session, "all", row);
1583
-
1584
1581
  if (subRange) {
1585
1582
  if (subRange.start.row <= startRow) {
1586
1583
  break;
1587
- } else if (subRange.isMultiLine()) {
1584
+ }
1585
+ else if (subRange.isMultiLine()) {
1588
1586
  row = subRange.end.row;
1589
- } else if (startIndent == indent) {
1587
+ }
1588
+ else if (startIndent == indent) {
1590
1589
  break;
1591
1590
  }
1592
1591
  }
1593
1592
  endRow = row;
1594
1593
  }
1595
-
1596
1594
  return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
1597
1595
  };
1598
- this.getCommentRegionBlock = function(session, line, row) {
1596
+ this.getCommentRegionBlock = function (session, line, row) {
1599
1597
  var startColumn = line.search(/\s*$/);
1600
1598
  var maxRow = session.getLength();
1601
1599
  var startRow = row;
1602
-
1603
1600
  var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
1604
1601
  var depth = 1;
1605
1602
  while (++row < maxRow) {
1606
1603
  line = session.getLine(row);
1607
1604
  var m = re.exec(line);
1608
- if (!m) continue;
1609
- if (m[1]) depth--;
1610
- else depth++;
1611
-
1612
- if (!depth) break;
1605
+ if (!m)
1606
+ continue;
1607
+ if (m[1])
1608
+ depth--;
1609
+ else
1610
+ depth++;
1611
+ if (!depth)
1612
+ break;
1613
1613
  }
1614
-
1615
1614
  var endRow = row;
1616
1615
  if (endRow > startRow) {
1617
1616
  return new Range(startRow, startColumn, endRow, line.length);
1618
1617
  }
1619
1618
  };
1620
-
1621
1619
  }).call(FoldMode.prototype);
1622
1620
 
1623
1621
  });
1624
1622
 
1625
- ace.define("ace/mode/javascript",[], function(require, exports, module) {
1626
- "use strict";
1627
-
1623
+ ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict";
1628
1624
  var oop = require("../lib/oop");
1629
1625
  var TextMode = require("./text").Mode;
1630
1626
  var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
@@ -1632,39 +1628,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd
1632
1628
  var WorkerClient = require("../worker/worker_client").WorkerClient;
1633
1629
  var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
1634
1630
  var CStyleFoldMode = require("./folding/cstyle").FoldMode;
1635
-
1636
- var Mode = function() {
1631
+ var Mode = function () {
1637
1632
  this.HighlightRules = JavaScriptHighlightRules;
1638
-
1639
1633
  this.$outdent = new MatchingBraceOutdent();
1640
1634
  this.$behaviour = new CstyleBehaviour();
1641
1635
  this.foldingRules = new CStyleFoldMode();
1642
1636
  };
1643
1637
  oop.inherits(Mode, TextMode);
1644
-
1645
- (function() {
1646
-
1638
+ (function () {
1647
1639
  this.lineCommentStart = "//";
1648
- this.blockComment = {start: "/*", end: "*/"};
1649
- this.$quotes = {'"': '"', "'": "'", "`": "`"};
1650
-
1651
- this.getNextLineIndent = function(state, line, tab) {
1640
+ this.blockComment = { start: "/*", end: "*/" };
1641
+ this.$quotes = { '"': '"', "'": "'", "`": "`" };
1642
+ this.$pairQuotesAfter = {
1643
+ "`": /\w/
1644
+ };
1645
+ this.getNextLineIndent = function (state, line, tab) {
1652
1646
  var indent = this.$getIndent(line);
1653
-
1654
1647
  var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
1655
1648
  var tokens = tokenizedLine.tokens;
1656
1649
  var endState = tokenizedLine.state;
1657
-
1658
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
1650
+ if (tokens.length && tokens[tokens.length - 1].type == "comment") {
1659
1651
  return indent;
1660
1652
  }
1661
-
1662
1653
  if (state == "start" || state == "no_regex") {
1663
1654
  var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
1664
1655
  if (match) {
1665
1656
  indent += tab;
1666
1657
  }
1667
- } else if (state == "doc-start") {
1658
+ }
1659
+ else if (state == "doc-start") {
1668
1660
  if (endState == "start" || endState == "no_regex") {
1669
1661
  return "";
1670
1662
  }
@@ -1676,109 +1668,98 @@ oop.inherits(Mode, TextMode);
1676
1668
  indent += "* ";
1677
1669
  }
1678
1670
  }
1679
-
1680
1671
  return indent;
1681
1672
  };
1682
-
1683
- this.checkOutdent = function(state, line, input) {
1673
+ this.checkOutdent = function (state, line, input) {
1684
1674
  return this.$outdent.checkOutdent(line, input);
1685
1675
  };
1686
-
1687
- this.autoOutdent = function(state, doc, row) {
1676
+ this.autoOutdent = function (state, doc, row) {
1688
1677
  this.$outdent.autoOutdent(doc, row);
1689
1678
  };
1690
-
1691
- this.createWorker = function(session) {
1679
+ this.createWorker = function (session) {
1692
1680
  var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
1693
1681
  worker.attachToDocument(session.getDocument());
1694
-
1695
- worker.on("annotate", function(results) {
1682
+ worker.on("annotate", function (results) {
1696
1683
  session.setAnnotations(results.data);
1697
1684
  });
1698
-
1699
- worker.on("terminate", function() {
1685
+ worker.on("terminate", function () {
1700
1686
  session.clearAnnotations();
1701
1687
  });
1702
-
1703
1688
  return worker;
1704
1689
  };
1705
-
1706
1690
  this.$id = "ace/mode/javascript";
1707
1691
  this.snippetFileId = "ace/snippets/javascript";
1708
1692
  }).call(Mode.prototype);
1709
-
1710
1693
  exports.Mode = Mode;
1711
- });
1712
1694
 
1713
- ace.define("ace/mode/css_completions",[], function(require, exports, module) {
1714
- "use strict";
1695
+ });
1715
1696
 
1697
+ ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict";
1716
1698
  var propertyMap = {
1717
- "background": {"#$0": 1},
1718
- "background-color": {"#$0": 1, "transparent": 1, "fixed": 1},
1719
- "background-image": {"url('/$0')": 1},
1720
- "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1},
1721
- "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2},
1722
- "background-attachment": {"scroll": 1, "fixed": 1},
1723
- "background-size": {"cover": 1, "contain": 1},
1724
- "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1},
1725
- "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1},
1726
- "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1},
1727
- "border-color": {"#$0": 1},
1728
- "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2},
1729
- "border-collapse": {"collapse": 1, "separate": 1},
1730
- "bottom": {"px": 1, "em": 1, "%": 1},
1731
- "clear": {"left": 1, "right": 1, "both": 1, "none": 1},
1732
- "color": {"#$0": 1, "rgb(#$00,0,0)": 1},
1733
- "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1},
1734
- "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1},
1735
- "empty-cells": {"show": 1, "hide": 1},
1736
- "float": {"left": 1, "right": 1, "none": 1},
1737
- "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1},
1738
- "font-size": {"px": 1, "em": 1, "%": 1},
1739
- "font-weight": {"bold": 1, "normal": 1},
1740
- "font-style": {"italic": 1, "normal": 1},
1741
- "font-variant": {"normal": 1, "small-caps": 1},
1742
- "height": {"px": 1, "em": 1, "%": 1},
1743
- "left": {"px": 1, "em": 1, "%": 1},
1744
- "letter-spacing": {"normal": 1},
1745
- "line-height": {"normal": 1},
1746
- "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1},
1747
- "margin": {"px": 1, "em": 1, "%": 1},
1748
- "margin-right": {"px": 1, "em": 1, "%": 1},
1749
- "margin-left": {"px": 1, "em": 1, "%": 1},
1750
- "margin-top": {"px": 1, "em": 1, "%": 1},
1751
- "margin-bottom": {"px": 1, "em": 1, "%": 1},
1752
- "max-height": {"px": 1, "em": 1, "%": 1},
1753
- "max-width": {"px": 1, "em": 1, "%": 1},
1754
- "min-height": {"px": 1, "em": 1, "%": 1},
1755
- "min-width": {"px": 1, "em": 1, "%": 1},
1756
- "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1757
- "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1758
- "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1759
- "padding": {"px": 1, "em": 1, "%": 1},
1760
- "padding-top": {"px": 1, "em": 1, "%": 1},
1761
- "padding-right": {"px": 1, "em": 1, "%": 1},
1762
- "padding-bottom": {"px": 1, "em": 1, "%": 1},
1763
- "padding-left": {"px": 1, "em": 1, "%": 1},
1764
- "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
1765
- "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
1766
- "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1},
1767
- "right": {"px": 1, "em": 1, "%": 1},
1768
- "table-layout": {"fixed": 1, "auto": 1},
1769
- "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1},
1770
- "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1},
1771
- "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1},
1772
- "top": {"px": 1, "em": 1, "%": 1},
1773
- "vertical-align": {"top": 1, "bottom": 1},
1774
- "visibility": {"hidden": 1, "visible": 1},
1775
- "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1},
1776
- "width": {"px": 1, "em": 1, "%": 1},
1777
- "word-spacing": {"normal": 1},
1778
- "filter": {"alpha(opacity=$0100)": 1},
1779
-
1780
- "text-shadow": {"$02px 2px 2px #777": 1},
1781
- "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1},
1699
+ "background": { "#$0": 1 },
1700
+ "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 },
1701
+ "background-image": { "url('/$0')": 1 },
1702
+ "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 },
1703
+ "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 },
1704
+ "background-attachment": { "scroll": 1, "fixed": 1 },
1705
+ "background-size": { "cover": 1, "contain": 1 },
1706
+ "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 },
1707
+ "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 },
1708
+ "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 },
1709
+ "border-color": { "#$0": 1 },
1710
+ "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 },
1711
+ "border-collapse": { "collapse": 1, "separate": 1 },
1712
+ "bottom": { "px": 1, "em": 1, "%": 1 },
1713
+ "clear": { "left": 1, "right": 1, "both": 1, "none": 1 },
1714
+ "color": { "#$0": 1, "rgb(#$00,0,0)": 1 },
1715
+ "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 },
1716
+ "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 },
1717
+ "empty-cells": { "show": 1, "hide": 1 },
1718
+ "float": { "left": 1, "right": 1, "none": 1 },
1719
+ "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 },
1720
+ "font-size": { "px": 1, "em": 1, "%": 1 },
1721
+ "font-weight": { "bold": 1, "normal": 1 },
1722
+ "font-style": { "italic": 1, "normal": 1 },
1723
+ "font-variant": { "normal": 1, "small-caps": 1 },
1724
+ "height": { "px": 1, "em": 1, "%": 1 },
1725
+ "left": { "px": 1, "em": 1, "%": 1 },
1726
+ "letter-spacing": { "normal": 1 },
1727
+ "line-height": { "normal": 1 },
1728
+ "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 },
1729
+ "margin": { "px": 1, "em": 1, "%": 1 },
1730
+ "margin-right": { "px": 1, "em": 1, "%": 1 },
1731
+ "margin-left": { "px": 1, "em": 1, "%": 1 },
1732
+ "margin-top": { "px": 1, "em": 1, "%": 1 },
1733
+ "margin-bottom": { "px": 1, "em": 1, "%": 1 },
1734
+ "max-height": { "px": 1, "em": 1, "%": 1 },
1735
+ "max-width": { "px": 1, "em": 1, "%": 1 },
1736
+ "min-height": { "px": 1, "em": 1, "%": 1 },
1737
+ "min-width": { "px": 1, "em": 1, "%": 1 },
1738
+ "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 },
1739
+ "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 },
1740
+ "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 },
1741
+ "padding": { "px": 1, "em": 1, "%": 1 },
1742
+ "padding-top": { "px": 1, "em": 1, "%": 1 },
1743
+ "padding-right": { "px": 1, "em": 1, "%": 1 },
1744
+ "padding-bottom": { "px": 1, "em": 1, "%": 1 },
1745
+ "padding-left": { "px": 1, "em": 1, "%": 1 },
1746
+ "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 },
1747
+ "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 },
1748
+ "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 },
1749
+ "right": { "px": 1, "em": 1, "%": 1 },
1750
+ "table-layout": { "fixed": 1, "auto": 1 },
1751
+ "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 },
1752
+ "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 },
1753
+ "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 },
1754
+ "top": { "px": 1, "em": 1, "%": 1 },
1755
+ "vertical-align": { "top": 1, "bottom": 1 },
1756
+ "visibility": { "hidden": 1, "visible": 1 },
1757
+ "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 },
1758
+ "width": { "px": 1, "em": 1, "%": 1 },
1759
+ "word-spacing": { "normal": 1 },
1760
+ "filter": { "alpha(opacity=$0100)": 1 },
1761
+ "text-shadow": { "$02px 2px 2px #777": 1 },
1762
+ "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 },
1782
1763
  "-moz-border-radius": 1,
1783
1764
  "-moz-border-radius-topright": 1,
1784
1765
  "-moz-border-radius-bottomright": 1,
@@ -1791,81 +1772,71 @@ var propertyMap = {
1791
1772
  "-webkit-border-bottom-left-radius": 1,
1792
1773
  "-moz-box-shadow": 1,
1793
1774
  "-webkit-box-shadow": 1,
1794
- "transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
1795
- "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
1796
- "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 }
1775
+ "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 },
1776
+ "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 },
1777
+ "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }
1797
1778
  };
1798
-
1799
- var CssCompletions = function() {
1800
-
1779
+ var CssCompletions = function () {
1801
1780
  };
1802
-
1803
- (function() {
1804
-
1781
+ (function () {
1805
1782
  this.completionsDefined = false;
1806
-
1807
- this.defineCompletions = function() {
1783
+ this.defineCompletions = function () {
1808
1784
  if (document) {
1809
1785
  var style = document.createElement('c').style;
1810
-
1811
1786
  for (var i in style) {
1812
1787
  if (typeof style[i] !== 'string')
1813
1788
  continue;
1814
-
1815
- var name = i.replace(/[A-Z]/g, function(x) {
1789
+ var name = i.replace(/[A-Z]/g, function (x) {
1816
1790
  return '-' + x.toLowerCase();
1817
1791
  });
1818
-
1819
1792
  if (!propertyMap.hasOwnProperty(name))
1820
1793
  propertyMap[name] = 1;
1821
1794
  }
1822
1795
  }
1823
-
1824
1796
  this.completionsDefined = true;
1825
1797
  };
1826
-
1827
- this.getCompletions = function(state, session, pos, prefix) {
1798
+ this.getCompletions = function (state, session, pos, prefix) {
1828
1799
  if (!this.completionsDefined) {
1829
1800
  this.defineCompletions();
1830
1801
  }
1831
-
1832
- if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") {
1802
+ if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") {
1833
1803
  var line = session.getLine(pos.row).substr(0, pos.column);
1804
+ var inParens = /\([^)]*$/.test(line);
1805
+ if (inParens) {
1806
+ line = line.substr(line.lastIndexOf('(') + 1);
1807
+ }
1834
1808
  if (/:[^;]+$/.test(line)) {
1835
1809
  /([\w\-]+):[^:]*$/.test(line);
1836
-
1837
1810
  return this.getPropertyValueCompletions(state, session, pos, prefix);
1838
- } else {
1839
- return this.getPropertyCompletions(state, session, pos, prefix);
1811
+ }
1812
+ else {
1813
+ return this.getPropertyCompletions(state, session, pos, prefix, inParens);
1840
1814
  }
1841
1815
  }
1842
-
1843
1816
  return [];
1844
1817
  };
1845
-
1846
- this.getPropertyCompletions = function(state, session, pos, prefix) {
1818
+ this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {
1819
+ skipSemicolon = skipSemicolon || false;
1847
1820
  var properties = Object.keys(propertyMap);
1848
- return properties.map(function(property){
1821
+ return properties.map(function (property) {
1849
1822
  return {
1850
1823
  caption: property,
1851
- snippet: property + ': $0;',
1824
+ snippet: property + ': $0' + (skipSemicolon ? '' : ';'),
1852
1825
  meta: "property",
1853
1826
  score: 1000000
1854
1827
  };
1855
1828
  });
1856
1829
  };
1857
-
1858
- this.getPropertyValueCompletions = function(state, session, pos, prefix) {
1830
+ this.getPropertyValueCompletions = function (state, session, pos, prefix) {
1859
1831
  var line = session.getLine(pos.row).substr(0, pos.column);
1860
1832
  var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1];
1861
-
1862
1833
  if (!property)
1863
1834
  return [];
1864
1835
  var values = [];
1865
1836
  if (property in propertyMap && typeof propertyMap[property] === "object") {
1866
1837
  values = Object.keys(propertyMap[property]);
1867
1838
  }
1868
- return values.map(function(value){
1839
+ return values.map(function (value) {
1869
1840
  return {
1870
1841
  caption: value,
1871
1842
  snippet: value,
@@ -1874,24 +1845,18 @@ var CssCompletions = function() {
1874
1845
  };
1875
1846
  });
1876
1847
  };
1877
-
1878
1848
  }).call(CssCompletions.prototype);
1879
-
1880
1849
  exports.CssCompletions = CssCompletions;
1881
- });
1882
1850
 
1883
- ace.define("ace/mode/behaviour/css",[], function(require, exports, module) {
1884
- "use strict";
1851
+ });
1885
1852
 
1853
+ ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict";
1886
1854
  var oop = require("../../lib/oop");
1887
1855
  var Behaviour = require("../behaviour").Behaviour;
1888
1856
  var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
1889
1857
  var TokenIterator = require("../../token_iterator").TokenIterator;
1890
-
1891
1858
  var CssBehaviour = function () {
1892
-
1893
1859
  this.inherit(CstyleBehaviour);
1894
-
1895
1860
  this.add("colon", "insertion", function (state, action, editor, session, text) {
1896
1861
  if (text === ':' && editor.selection.isEmpty()) {
1897
1862
  var cursor = editor.getCursorPosition();
@@ -1905,20 +1870,19 @@ var CssBehaviour = function () {
1905
1870
  var rightChar = line.substring(cursor.column, cursor.column + 1);
1906
1871
  if (rightChar === ':') {
1907
1872
  return {
1908
- text: '',
1909
- selection: [1, 1]
1873
+ text: '',
1874
+ selection: [1, 1]
1910
1875
  };
1911
1876
  }
1912
1877
  if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) {
1913
1878
  return {
1914
- text: ':;',
1915
- selection: [1, 1]
1879
+ text: ':;',
1880
+ selection: [1, 1]
1916
1881
  };
1917
1882
  }
1918
1883
  }
1919
1884
  }
1920
1885
  });
1921
-
1922
1886
  this.add("colon", "deletion", function (state, action, editor, session, range) {
1923
1887
  var selected = session.doc.getTextRange(range);
1924
1888
  if (!range.isMultiLine() && selected === ':') {
@@ -1932,13 +1896,12 @@ var CssBehaviour = function () {
1932
1896
  var line = session.doc.getLine(range.start.row);
1933
1897
  var rightChar = line.substring(range.end.column, range.end.column + 1);
1934
1898
  if (rightChar === ';') {
1935
- range.end.column ++;
1899
+ range.end.column++;
1936
1900
  return range;
1937
1901
  }
1938
1902
  }
1939
1903
  }
1940
1904
  });
1941
-
1942
1905
  this.add("semicolon", "insertion", function (state, action, editor, session, text) {
1943
1906
  if (text === ';' && editor.selection.isEmpty()) {
1944
1907
  var cursor = editor.getCursorPosition();
@@ -1946,18 +1909,16 @@ var CssBehaviour = function () {
1946
1909
  var rightChar = line.substring(cursor.column, cursor.column + 1);
1947
1910
  if (rightChar === ';') {
1948
1911
  return {
1949
- text: '',
1950
- selection: [1, 1]
1912
+ text: '',
1913
+ selection: [1, 1]
1951
1914
  };
1952
1915
  }
1953
1916
  }
1954
1917
  });
1955
-
1956
1918
  this.add("!important", "insertion", function (state, action, editor, session, text) {
1957
1919
  if (text === '!' && editor.selection.isEmpty()) {
1958
1920
  var cursor = editor.getCursorPosition();
1959
1921
  var line = session.doc.getLine(cursor.row);
1960
-
1961
1922
  if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) {
1962
1923
  return {
1963
1924
  text: '!important',
@@ -1966,16 +1927,13 @@ var CssBehaviour = function () {
1966
1927
  }
1967
1928
  }
1968
1929
  });
1969
-
1970
1930
  };
1971
1931
  oop.inherits(CssBehaviour, CstyleBehaviour);
1972
-
1973
1932
  exports.CssBehaviour = CssBehaviour;
1974
- });
1975
1933
 
1976
- ace.define("ace/mode/css",[], function(require, exports, module) {
1977
- "use strict";
1934
+ });
1978
1935
 
1936
+ ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict";
1979
1937
  var oop = require("../lib/oop");
1980
1938
  var TextMode = require("./text").Mode;
1981
1939
  var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
@@ -1984,8 +1942,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient;
1984
1942
  var CssCompletions = require("./css_completions").CssCompletions;
1985
1943
  var CssBehaviour = require("./behaviour/css").CssBehaviour;
1986
1944
  var CStyleFoldMode = require("./folding/cstyle").FoldMode;
1987
-
1988
- var Mode = function() {
1945
+ var Mode = function () {
1989
1946
  this.HighlightRules = CssHighlightRules;
1990
1947
  this.$outdent = new MatchingBraceOutdent();
1991
1948
  this.$behaviour = new CssBehaviour();
@@ -1993,76 +1950,57 @@ var Mode = function() {
1993
1950
  this.foldingRules = new CStyleFoldMode();
1994
1951
  };
1995
1952
  oop.inherits(Mode, TextMode);
1996
-
1997
- (function() {
1998
-
1953
+ (function () {
1999
1954
  this.foldingRules = "cStyle";
2000
- this.blockComment = {start: "/*", end: "*/"};
2001
-
2002
- this.getNextLineIndent = function(state, line, tab) {
1955
+ this.blockComment = { start: "/*", end: "*/" };
1956
+ this.getNextLineIndent = function (state, line, tab) {
2003
1957
  var indent = this.$getIndent(line);
2004
1958
  var tokens = this.getTokenizer().getLineTokens(line, state).tokens;
2005
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
1959
+ if (tokens.length && tokens[tokens.length - 1].type == "comment") {
2006
1960
  return indent;
2007
1961
  }
2008
-
2009
1962
  var match = line.match(/^.*\{\s*$/);
2010
1963
  if (match) {
2011
1964
  indent += tab;
2012
1965
  }
2013
-
2014
1966
  return indent;
2015
1967
  };
2016
-
2017
- this.checkOutdent = function(state, line, input) {
1968
+ this.checkOutdent = function (state, line, input) {
2018
1969
  return this.$outdent.checkOutdent(line, input);
2019
1970
  };
2020
-
2021
- this.autoOutdent = function(state, doc, row) {
1971
+ this.autoOutdent = function (state, doc, row) {
2022
1972
  this.$outdent.autoOutdent(doc, row);
2023
1973
  };
2024
-
2025
- this.getCompletions = function(state, session, pos, prefix) {
1974
+ this.getCompletions = function (state, session, pos, prefix) {
2026
1975
  return this.$completer.getCompletions(state, session, pos, prefix);
2027
1976
  };
2028
-
2029
- this.createWorker = function(session) {
1977
+ this.createWorker = function (session) {
2030
1978
  var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
2031
1979
  worker.attachToDocument(session.getDocument());
2032
-
2033
- worker.on("annotate", function(e) {
1980
+ worker.on("annotate", function (e) {
2034
1981
  session.setAnnotations(e.data);
2035
1982
  });
2036
-
2037
- worker.on("terminate", function() {
1983
+ worker.on("terminate", function () {
2038
1984
  session.clearAnnotations();
2039
1985
  });
2040
-
2041
1986
  return worker;
2042
1987
  };
2043
-
2044
1988
  this.$id = "ace/mode/css";
2045
1989
  this.snippetFileId = "ace/snippets/css";
2046
1990
  }).call(Mode.prototype);
2047
-
2048
1991
  exports.Mode = Mode;
2049
1992
 
2050
1993
  });
2051
1994
 
2052
- ace.define("ace/mode/behaviour/xml",[], function(require, exports, module) {
2053
- "use strict";
2054
-
1995
+ ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict";
2055
1996
  var oop = require("../../lib/oop");
2056
1997
  var Behaviour = require("../behaviour").Behaviour;
2057
1998
  var TokenIterator = require("../../token_iterator").TokenIterator;
2058
1999
  var lang = require("../../lib/lang");
2059
-
2060
2000
  function is(token, type) {
2061
2001
  return token && token.type.lastIndexOf(type + ".xml") > -1;
2062
2002
  }
2063
-
2064
2003
  var XmlBehaviour = function () {
2065
-
2066
2004
  this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
2067
2005
  if (text == '"' || text == "'") {
2068
2006
  var quote = text;
@@ -2073,26 +2011,21 @@ var XmlBehaviour = function () {
2073
2011
  selection: false
2074
2012
  };
2075
2013
  }
2076
-
2077
2014
  var cursor = editor.getCursorPosition();
2078
2015
  var line = session.doc.getLine(cursor.row);
2079
2016
  var rightChar = line.substring(cursor.column, cursor.column + 1);
2080
2017
  var iterator = new TokenIterator(session, cursor.row, cursor.column);
2081
2018
  var token = iterator.getCurrentToken();
2082
-
2083
2019
  if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) {
2084
2020
  return {
2085
2021
  text: "",
2086
2022
  selection: [1, 1]
2087
2023
  };
2088
2024
  }
2089
-
2090
2025
  if (!token)
2091
2026
  token = iterator.stepBackward();
2092
-
2093
2027
  if (!token)
2094
2028
  return;
2095
-
2096
2029
  while (is(token, "tag-whitespace") || is(token, "whitespace")) {
2097
2030
  token = iterator.stepBackward();
2098
2031
  }
@@ -2105,8 +2038,7 @@ var XmlBehaviour = function () {
2105
2038
  }
2106
2039
  }
2107
2040
  });
2108
-
2109
- this.add("string_dquotes", "deletion", function(state, action, editor, session, range) {
2041
+ this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
2110
2042
  var selected = session.doc.getTextRange(range);
2111
2043
  if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
2112
2044
  var line = session.doc.getLine(range.start.row);
@@ -2117,7 +2049,6 @@ var XmlBehaviour = function () {
2117
2049
  }
2118
2050
  }
2119
2051
  });
2120
-
2121
2052
  this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
2122
2053
  if (text == '>') {
2123
2054
  var position = editor.getSelectionRange().start;
@@ -2138,7 +2069,6 @@ var XmlBehaviour = function () {
2138
2069
  iterator.stepBackward();
2139
2070
  }
2140
2071
  }
2141
-
2142
2072
  if (/^\s*>/.test(session.getLine(position.row).slice(position.column)))
2143
2073
  return;
2144
2074
  while (!is(token, "tag-name")) {
@@ -2148,63 +2078,54 @@ var XmlBehaviour = function () {
2148
2078
  break;
2149
2079
  }
2150
2080
  }
2151
-
2152
2081
  var tokenRow = iterator.getCurrentTokenRow();
2153
2082
  var tokenColumn = iterator.getCurrentTokenColumn();
2154
2083
  if (is(iterator.stepBackward(), "end-tag-open"))
2155
2084
  return;
2156
-
2157
2085
  var element = token.value;
2158
2086
  if (tokenRow == position.row)
2159
2087
  element = element.substring(0, position.column - tokenColumn);
2160
-
2161
2088
  if (this.voidElements.hasOwnProperty(element.toLowerCase()))
2162
- return;
2163
-
2089
+ return;
2164
2090
  return {
2165
- text: ">" + "</" + element + ">",
2166
- selection: [1, 1]
2091
+ text: ">" + "</" + element + ">",
2092
+ selection: [1, 1]
2167
2093
  };
2168
2094
  }
2169
2095
  });
2170
-
2171
2096
  this.add("autoindent", "insertion", function (state, action, editor, session, text) {
2172
2097
  if (text == "\n") {
2173
2098
  var cursor = editor.getCursorPosition();
2174
2099
  var line = session.getLine(cursor.row);
2175
2100
  var iterator = new TokenIterator(session, cursor.row, cursor.column);
2176
2101
  var token = iterator.getCurrentToken();
2177
-
2178
2102
  if (token && token.type.indexOf("tag-close") !== -1) {
2179
2103
  if (token.value == "/>")
2180
2104
  return;
2181
2105
  while (token && token.type.indexOf("tag-name") === -1) {
2182
2106
  token = iterator.stepBackward();
2183
2107
  }
2184
-
2185
2108
  if (!token) {
2186
2109
  return;
2187
2110
  }
2188
-
2189
2111
  var tag = token.value;
2190
2112
  var row = iterator.getCurrentTokenRow();
2191
2113
  token = iterator.stepBackward();
2192
2114
  if (!token || token.type.indexOf("end-tag") !== -1) {
2193
2115
  return;
2194
2116
  }
2195
-
2196
2117
  if (this.voidElements && !this.voidElements[tag]) {
2197
- var nextToken = session.getTokenAt(cursor.row, cursor.column+1);
2118
+ var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);
2198
2119
  var line = session.getLine(row);
2199
2120
  var nextIndent = this.$getIndent(line);
2200
2121
  var indent = nextIndent + session.getTabString();
2201
-
2202
2122
  if (nextToken && nextToken.value === "</") {
2203
2123
  return {
2204
2124
  text: "\n" + indent + "\n" + nextIndent,
2205
2125
  selection: [1, indent.length, 1, indent.length]
2206
2126
  };
2207
- } else {
2127
+ }
2128
+ else {
2208
2129
  return {
2209
2130
  text: "\n" + indent
2210
2131
  };
@@ -2213,31 +2134,23 @@ var XmlBehaviour = function () {
2213
2134
  }
2214
2135
  }
2215
2136
  });
2216
-
2217
2137
  };
2218
-
2219
2138
  oop.inherits(XmlBehaviour, Behaviour);
2220
-
2221
2139
  exports.XmlBehaviour = XmlBehaviour;
2222
- });
2223
2140
 
2224
- ace.define("ace/mode/folding/mixed",[], function(require, exports, module) {
2225
- "use strict";
2141
+ });
2226
2142
 
2143
+ ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict";
2227
2144
  var oop = require("../../lib/oop");
2228
2145
  var BaseFoldMode = require("./fold_mode").FoldMode;
2229
-
2230
- var FoldMode = exports.FoldMode = function(defaultMode, subModes) {
2146
+ var FoldMode = exports.FoldMode = function (defaultMode, subModes) {
2231
2147
  this.defaultMode = defaultMode;
2232
2148
  this.subModes = subModes;
2233
2149
  };
2234
2150
  oop.inherits(FoldMode, BaseFoldMode);
2235
-
2236
- (function() {
2237
-
2238
-
2239
- this.$getMode = function(state) {
2240
- if (typeof state != "string")
2151
+ (function () {
2152
+ this.$getMode = function (state) {
2153
+ if (typeof state != "string")
2241
2154
  state = state[0];
2242
2155
  for (var key in this.subModes) {
2243
2156
  if (state.indexOf(key) === 0)
@@ -2245,96 +2158,70 @@ oop.inherits(FoldMode, BaseFoldMode);
2245
2158
  }
2246
2159
  return null;
2247
2160
  };
2248
-
2249
- this.$tryMode = function(state, session, foldStyle, row) {
2161
+ this.$tryMode = function (state, session, foldStyle, row) {
2250
2162
  var mode = this.$getMode(state);
2251
2163
  return (mode ? mode.getFoldWidget(session, foldStyle, row) : "");
2252
2164
  };
2253
-
2254
- this.getFoldWidget = function(session, foldStyle, row) {
2255
- return (
2256
- this.$tryMode(session.getState(row-1), session, foldStyle, row) ||
2165
+ this.getFoldWidget = function (session, foldStyle, row) {
2166
+ return (this.$tryMode(session.getState(row - 1), session, foldStyle, row) ||
2257
2167
  this.$tryMode(session.getState(row), session, foldStyle, row) ||
2258
- this.defaultMode.getFoldWidget(session, foldStyle, row)
2259
- );
2168
+ this.defaultMode.getFoldWidget(session, foldStyle, row));
2260
2169
  };
2261
-
2262
- this.getFoldWidgetRange = function(session, foldStyle, row) {
2263
- var mode = this.$getMode(session.getState(row-1));
2264
-
2170
+ this.getFoldWidgetRange = function (session, foldStyle, row) {
2171
+ var mode = this.$getMode(session.getState(row - 1));
2265
2172
  if (!mode || !mode.getFoldWidget(session, foldStyle, row))
2266
2173
  mode = this.$getMode(session.getState(row));
2267
-
2268
2174
  if (!mode || !mode.getFoldWidget(session, foldStyle, row))
2269
2175
  mode = this.defaultMode;
2270
-
2271
2176
  return mode.getFoldWidgetRange(session, foldStyle, row);
2272
2177
  };
2273
-
2274
2178
  }).call(FoldMode.prototype);
2275
2179
 
2276
2180
  });
2277
2181
 
2278
- ace.define("ace/mode/folding/xml",[], function(require, exports, module) {
2279
- "use strict";
2280
-
2182
+ ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict";
2281
2183
  var oop = require("../../lib/oop");
2282
- var lang = require("../../lib/lang");
2283
2184
  var Range = require("../../range").Range;
2284
2185
  var BaseFoldMode = require("./fold_mode").FoldMode;
2285
- var TokenIterator = require("../../token_iterator").TokenIterator;
2286
-
2287
- var FoldMode = exports.FoldMode = function(voidElements, optionalEndTags) {
2186
+ var FoldMode = exports.FoldMode = function (voidElements, optionalEndTags) {
2288
2187
  BaseFoldMode.call(this);
2289
2188
  this.voidElements = voidElements || {};
2290
2189
  this.optionalEndTags = oop.mixin({}, this.voidElements);
2291
2190
  if (optionalEndTags)
2292
2191
  oop.mixin(this.optionalEndTags, optionalEndTags);
2293
-
2294
2192
  };
2295
2193
  oop.inherits(FoldMode, BaseFoldMode);
2296
-
2297
- var Tag = function() {
2194
+ var Tag = function () {
2298
2195
  this.tagName = "";
2299
2196
  this.closing = false;
2300
2197
  this.selfClosing = false;
2301
- this.start = {row: 0, column: 0};
2302
- this.end = {row: 0, column: 0};
2198
+ this.start = { row: 0, column: 0 };
2199
+ this.end = { row: 0, column: 0 };
2303
2200
  };
2304
-
2305
2201
  function is(token, type) {
2306
2202
  return token.type.lastIndexOf(type + ".xml") > -1;
2307
2203
  }
2308
-
2309
- (function() {
2310
-
2311
- this.getFoldWidget = function(session, foldStyle, row) {
2204
+ (function () {
2205
+ this.getFoldWidget = function (session, foldStyle, row) {
2312
2206
  var tag = this._getFirstTagInLine(session, row);
2313
-
2314
2207
  if (!tag)
2315
2208
  return this.getCommentFoldWidget(session, row);
2316
-
2317
2209
  if (tag.closing || (!tag.tagName && tag.selfClosing))
2318
- return foldStyle == "markbeginend" ? "end" : "";
2319
-
2210
+ return foldStyle === "markbeginend" ? "end" : "";
2320
2211
  if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))
2321
2212
  return "";
2322
-
2323
2213
  if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))
2324
2214
  return "";
2325
-
2326
2215
  return "start";
2327
2216
  };
2328
-
2329
- this.getCommentFoldWidget = function(session, row) {
2217
+ this.getCommentFoldWidget = function (session, row) {
2330
2218
  if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row)))
2331
2219
  return "start";
2332
2220
  return "";
2333
2221
  };
2334
- this._getFirstTagInLine = function(session, row) {
2222
+ this._getFirstTagInLine = function (session, row) {
2335
2223
  var tokens = session.getTokens(row);
2336
2224
  var tag = new Tag();
2337
-
2338
2225
  for (var i = 0; i < tokens.length; i++) {
2339
2226
  var token = tokens[i];
2340
2227
  if (is(token, "tag-open")) {
@@ -2354,17 +2241,16 @@ function is(token, type) {
2354
2241
  }
2355
2242
  }
2356
2243
  return tag;
2357
- } else if (is(token, "tag-close")) {
2244
+ }
2245
+ else if (is(token, "tag-close")) {
2358
2246
  tag.selfClosing = token.value == '/>';
2359
2247
  return tag;
2360
2248
  }
2361
2249
  tag.start.column += token.value.length;
2362
2250
  }
2363
-
2364
2251
  return null;
2365
2252
  };
2366
-
2367
- this._findEndTagInLine = function(session, row, tagName, startColumn) {
2253
+ this._findEndTagInLine = function (session, row, tagName, startColumn) {
2368
2254
  var tokens = session.getTokens(row);
2369
2255
  var column = 0;
2370
2256
  for (var i = 0; i < tokens.length; i++) {
@@ -2380,174 +2266,37 @@ function is(token, type) {
2380
2266
  }
2381
2267
  return false;
2382
2268
  };
2383
- this._readTagForward = function(iterator) {
2384
- var token = iterator.getCurrentToken();
2385
- if (!token)
2386
- return null;
2387
-
2388
- var tag = new Tag();
2389
- do {
2390
- if (is(token, "tag-open")) {
2391
- tag.closing = is(token, "end-tag-open");
2392
- tag.start.row = iterator.getCurrentTokenRow();
2393
- tag.start.column = iterator.getCurrentTokenColumn();
2394
- } else if (is(token, "tag-name")) {
2395
- tag.tagName = token.value;
2396
- } else if (is(token, "tag-close")) {
2397
- tag.selfClosing = token.value == "/>";
2398
- tag.end.row = iterator.getCurrentTokenRow();
2399
- tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;
2400
- iterator.stepForward();
2401
- return tag;
2402
- }
2403
- } while(token = iterator.stepForward());
2404
-
2405
- return null;
2406
- };
2407
-
2408
- this._readTagBackward = function(iterator) {
2409
- var token = iterator.getCurrentToken();
2410
- if (!token)
2411
- return null;
2412
-
2413
- var tag = new Tag();
2414
- do {
2415
- if (is(token, "tag-open")) {
2416
- tag.closing = is(token, "end-tag-open");
2417
- tag.start.row = iterator.getCurrentTokenRow();
2418
- tag.start.column = iterator.getCurrentTokenColumn();
2419
- iterator.stepBackward();
2420
- return tag;
2421
- } else if (is(token, "tag-name")) {
2422
- tag.tagName = token.value;
2423
- } else if (is(token, "tag-close")) {
2424
- tag.selfClosing = token.value == "/>";
2425
- tag.end.row = iterator.getCurrentTokenRow();
2426
- tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;
2427
- }
2428
- } while(token = iterator.stepBackward());
2429
-
2430
- return null;
2431
- };
2432
-
2433
- this._pop = function(stack, tag) {
2434
- while (stack.length) {
2435
-
2436
- var top = stack[stack.length-1];
2437
- if (!tag || top.tagName == tag.tagName) {
2438
- return stack.pop();
2439
- }
2440
- else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {
2441
- stack.pop();
2442
- continue;
2443
- } else {
2444
- return null;
2445
- }
2269
+ this.getFoldWidgetRange = function (session, foldStyle, row) {
2270
+ var tags = session.getMatchingTags({ row: row, column: 0 });
2271
+ if (tags) {
2272
+ return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);
2446
2273
  }
2447
- };
2448
-
2449
- this.getFoldWidgetRange = function(session, foldStyle, row) {
2450
- var firstTag = this._getFirstTagInLine(session, row);
2451
-
2452
- if (!firstTag) {
2274
+ else {
2453
2275
  return this.getCommentFoldWidget(session, row)
2454
2276
  && session.getCommentFoldRange(row, session.getLine(row).length);
2455
2277
  }
2456
-
2457
- var isBackward = firstTag.closing || firstTag.selfClosing;
2458
- var stack = [];
2459
- var tag;
2460
-
2461
- if (!isBackward) {
2462
- var iterator = new TokenIterator(session, row, firstTag.start.column);
2463
- var start = {
2464
- row: row,
2465
- column: firstTag.start.column + firstTag.tagName.length + 2
2466
- };
2467
- if (firstTag.start.row == firstTag.end.row)
2468
- start.column = firstTag.end.column;
2469
- while (tag = this._readTagForward(iterator)) {
2470
- if (tag.selfClosing) {
2471
- if (!stack.length) {
2472
- tag.start.column += tag.tagName.length + 2;
2473
- tag.end.column -= 2;
2474
- return Range.fromPoints(tag.start, tag.end);
2475
- } else
2476
- continue;
2477
- }
2478
-
2479
- if (tag.closing) {
2480
- this._pop(stack, tag);
2481
- if (stack.length == 0)
2482
- return Range.fromPoints(start, tag.start);
2483
- }
2484
- else {
2485
- stack.push(tag);
2486
- }
2487
- }
2488
- }
2489
- else {
2490
- var iterator = new TokenIterator(session, row, firstTag.end.column);
2491
- var end = {
2492
- row: row,
2493
- column: firstTag.start.column
2494
- };
2495
-
2496
- while (tag = this._readTagBackward(iterator)) {
2497
- if (tag.selfClosing) {
2498
- if (!stack.length) {
2499
- tag.start.column += tag.tagName.length + 2;
2500
- tag.end.column -= 2;
2501
- return Range.fromPoints(tag.start, tag.end);
2502
- } else
2503
- continue;
2504
- }
2505
-
2506
- if (!tag.closing) {
2507
- this._pop(stack, tag);
2508
- if (stack.length == 0) {
2509
- tag.start.column += tag.tagName.length + 2;
2510
- if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)
2511
- tag.start.column = tag.end.column;
2512
- return Range.fromPoints(tag.start, end);
2513
- }
2514
- }
2515
- else {
2516
- stack.push(tag);
2517
- }
2518
- }
2519
- }
2520
-
2521
2278
  };
2522
-
2523
2279
  }).call(FoldMode.prototype);
2524
2280
 
2525
2281
  });
2526
2282
 
2527
- ace.define("ace/mode/folding/html",[], function(require, exports, module) {
2528
- "use strict";
2529
-
2283
+ ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict";
2530
2284
  var oop = require("../../lib/oop");
2531
2285
  var MixedFoldMode = require("./mixed").FoldMode;
2532
2286
  var XmlFoldMode = require("./xml").FoldMode;
2533
2287
  var CStyleFoldMode = require("./cstyle").FoldMode;
2534
-
2535
- var FoldMode = exports.FoldMode = function(voidElements, optionalTags) {
2288
+ var FoldMode = exports.FoldMode = function (voidElements, optionalTags) {
2536
2289
  MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {
2537
2290
  "js-": new CStyleFoldMode(),
2538
2291
  "css-": new CStyleFoldMode()
2539
2292
  });
2540
2293
  };
2541
-
2542
2294
  oop.inherits(FoldMode, MixedFoldMode);
2543
2295
 
2544
2296
  });
2545
2297
 
2546
- ace.define("ace/mode/html_completions",[], function(require, exports, module) {
2547
- "use strict";
2548
-
2298
+ ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict";
2549
2299
  var TokenIterator = require("../token_iterator").TokenIterator;
2550
-
2551
2300
  var commonAttributes = [
2552
2301
  "accesskey",
2553
2302
  "class",
@@ -2571,7 +2320,6 @@ var commonAttributes = [
2571
2320
  "title",
2572
2321
  "translate"
2573
2322
  ];
2574
-
2575
2323
  var eventAttributes = [
2576
2324
  "onabort",
2577
2325
  "onblur",
@@ -2629,49 +2377,47 @@ var eventAttributes = [
2629
2377
  "onvolumechange",
2630
2378
  "onwaiting"
2631
2379
  ];
2632
-
2633
2380
  var globalAttributes = commonAttributes.concat(eventAttributes);
2634
-
2635
2381
  var attributeMap = {
2636
- "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},
2382
+ "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 },
2637
2383
  "abbr": {},
2638
2384
  "address": {},
2639
- "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1},
2640
- "article": {"pubdate": 1},
2385
+ "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 },
2386
+ "article": { "pubdate": 1 },
2641
2387
  "aside": {},
2642
- "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }},
2388
+ "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } },
2643
2389
  "b": {},
2644
- "base": {"href": 1, "target": 1},
2390
+ "base": { "href": 1, "target": 1 },
2645
2391
  "bdi": {},
2646
2392
  "bdo": {},
2647
- "blockquote": {"cite": 1},
2648
- "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},
2393
+ "blockquote": { "cite": 1 },
2394
+ "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 },
2649
2395
  "br": {},
2650
- "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}},
2651
- "canvas": {"width": 1, "height": 1},
2396
+ "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 } },
2397
+ "canvas": { "width": 1, "height": 1 },
2652
2398
  "caption": {},
2653
2399
  "cite": {},
2654
2400
  "code": {},
2655
- "col": {"span": 1},
2656
- "colgroup": {"span": 1},
2657
- "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1},
2401
+ "col": { "span": 1 },
2402
+ "colgroup": { "span": 1 },
2403
+ "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 },
2658
2404
  "data": {},
2659
2405
  "datalist": {},
2660
2406
  "dd": {},
2661
- "del": {"cite": 1, "datetime": 1},
2662
- "details": {"open": 1},
2407
+ "del": { "cite": 1, "datetime": 1 },
2408
+ "details": { "open": 1 },
2663
2409
  "dfn": {},
2664
- "dialog": {"open": 1},
2410
+ "dialog": { "open": 1 },
2665
2411
  "div": {},
2666
2412
  "dl": {},
2667
2413
  "dt": {},
2668
2414
  "em": {},
2669
- "embed": {"src": 1, "height": 1, "width": 1, "type": 1},
2670
- "fieldset": {"disabled": 1, "form": 1, "name": 1},
2415
+ "embed": { "src": 1, "height": 1, "width": 1, "type": 1 },
2416
+ "fieldset": { "disabled": 1, "form": 1, "name": 1 },
2671
2417
  "figcaption": {},
2672
2418
  "figure": {},
2673
2419
  "footer": {},
2674
- "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}},
2420
+ "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 } },
2675
2421
  "h1": {},
2676
2422
  "h2": {},
2677
2423
  "h3": {},
@@ -2681,109 +2427,101 @@ var attributeMap = {
2681
2427
  "head": {},
2682
2428
  "header": {},
2683
2429
  "hr": {},
2684
- "html": {"manifest": 1},
2430
+ "html": { "manifest": 1 },
2685
2431
  "i": {},
2686
- "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}},
2687
- "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1},
2432
+ "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 } },
2433
+ "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 },
2688
2434
  "input": {
2689
- "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},
2690
- "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},
2691
- "ins": {"cite": 1, "datetime": 1},
2435
+ "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 },
2436
+ "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
2437
+ },
2438
+ "ins": { "cite": 1, "datetime": 1 },
2692
2439
  "kbd": {},
2693
- "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1},
2694
- "label": {"form": 1, "for": 1},
2440
+ "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 },
2441
+ "label": { "form": 1, "for": 1 },
2695
2442
  "legend": {},
2696
- "li": {"value": 1},
2697
- "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},
2443
+ "li": { "value": 1 },
2444
+ "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 },
2698
2445
  "main": {},
2699
- "map": {"name": 1},
2446
+ "map": { "name": 1 },
2700
2447
  "mark": {},
2701
2448
  "math": {},
2702
- "menu": {"type": 1, "label": 1},
2703
- "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1},
2704
- "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1},
2449
+ "menu": { "type": 1, "label": 1 },
2450
+ "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 },
2451
+ "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 },
2705
2452
  "nav": {},
2706
- "noscript": {"href": 1},
2707
- "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1},
2708
- "ol": {"start": 1, "reversed": 1},
2709
- "optgroup": {"disabled": 1, "label": 1},
2710
- "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1},
2711
- "output": {"for": 1, "form": 1, "name": 1},
2453
+ "noscript": { "href": 1 },
2454
+ "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 },
2455
+ "ol": { "start": 1, "reversed": 1 },
2456
+ "optgroup": { "disabled": 1, "label": 1 },
2457
+ "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 },
2458
+ "output": { "for": 1, "form": 1, "name": 1 },
2712
2459
  "p": {},
2713
- "param": {"name": 1, "value": 1},
2460
+ "param": { "name": 1, "value": 1 },
2714
2461
  "pre": {},
2715
- "progress": {"value": 1, "max": 1},
2716
- "q": {"cite": 1},
2462
+ "progress": { "value": 1, "max": 1 },
2463
+ "q": { "cite": 1 },
2717
2464
  "rp": {},
2718
2465
  "rt": {},
2719
2466
  "ruby": {},
2720
2467
  "s": {},
2721
2468
  "samp": {},
2722
- "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1},
2723
- "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}},
2469
+ "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 },
2470
+ "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } },
2724
2471
  "small": {},
2725
- "source": {"src": 1, "type": 1, "media": 1},
2472
+ "source": { "src": 1, "type": 1, "media": 1 },
2726
2473
  "span": {},
2727
2474
  "strong": {},
2728
- "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1},
2475
+ "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 },
2729
2476
  "sub": {},
2730
2477
  "sup": {},
2731
2478
  "svg": {},
2732
- "table": {"summary": 1},
2479
+ "table": { "summary": 1 },
2733
2480
  "tbody": {},
2734
- "td": {"headers": 1, "rowspan": 1, "colspan": 1},
2735
- "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}},
2481
+ "td": { "headers": 1, "rowspan": 1, "colspan": 1 },
2482
+ "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 } },
2736
2483
  "tfoot": {},
2737
- "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1},
2484
+ "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 },
2738
2485
  "thead": {},
2739
- "time": {"datetime": 1},
2486
+ "time": { "datetime": 1 },
2740
2487
  "title": {},
2741
2488
  "tr": {},
2742
- "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1},
2489
+ "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 },
2743
2490
  "section": {},
2744
2491
  "summary": {},
2745
2492
  "u": {},
2746
2493
  "ul": {},
2747
2494
  "var": {},
2748
- "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}},
2495
+ "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 } },
2749
2496
  "wbr": {}
2750
2497
  };
2751
-
2752
2498
  var elements = Object.keys(attributeMap);
2753
-
2754
2499
  function is(token, type) {
2755
2500
  return token.type.lastIndexOf(type + ".xml") > -1;
2756
2501
  }
2757
-
2758
2502
  function findTagName(session, pos) {
2759
2503
  var iterator = new TokenIterator(session, pos.row, pos.column);
2760
2504
  var token = iterator.getCurrentToken();
2761
- while (token && !is(token, "tag-name")){
2505
+ while (token && !is(token, "tag-name")) {
2762
2506
  token = iterator.stepBackward();
2763
2507
  }
2764
2508
  if (token)
2765
2509
  return token.value;
2766
2510
  }
2767
-
2768
2511
  function findAttributeName(session, pos) {
2769
2512
  var iterator = new TokenIterator(session, pos.row, pos.column);
2770
2513
  var token = iterator.getCurrentToken();
2771
- while (token && !is(token, "attribute-name")){
2514
+ while (token && !is(token, "attribute-name")) {
2772
2515
  token = iterator.stepBackward();
2773
2516
  }
2774
2517
  if (token)
2775
2518
  return token.value;
2776
2519
  }
2777
-
2778
- var HtmlCompletions = function() {
2779
-
2520
+ var HtmlCompletions = function () {
2780
2521
  };
2781
-
2782
- (function() {
2783
-
2784
- this.getCompletions = function(state, session, pos, prefix) {
2522
+ (function () {
2523
+ this.getCompletions = function (state, session, pos, prefix) {
2785
2524
  var token = session.getTokenAt(pos.row, pos.column);
2786
-
2787
2525
  if (!token)
2788
2526
  return [];
2789
2527
  if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open"))
@@ -2795,12 +2533,10 @@ var HtmlCompletions = function() {
2795
2533
  var line = session.getLine(pos.row).substr(0, pos.column);
2796
2534
  if (/&[a-z]*$/i.test(line))
2797
2535
  return this.getHTMLEntityCompletions(state, session, pos, prefix);
2798
-
2799
2536
  return [];
2800
2537
  };
2801
-
2802
- this.getTagCompletions = function(state, session, pos, prefix) {
2803
- return elements.map(function(element){
2538
+ this.getTagCompletions = function (state, session, pos, prefix) {
2539
+ return elements.map(function (element) {
2804
2540
  return {
2805
2541
  value: element,
2806
2542
  meta: "tag",
@@ -2808,8 +2544,7 @@ var HtmlCompletions = function() {
2808
2544
  };
2809
2545
  });
2810
2546
  };
2811
-
2812
- this.getAttributeCompletions = function(state, session, pos, prefix) {
2547
+ this.getAttributeCompletions = function (state, session, pos, prefix) {
2813
2548
  var tagName = findTagName(session, pos);
2814
2549
  if (!tagName)
2815
2550
  return [];
@@ -2817,7 +2552,7 @@ var HtmlCompletions = function() {
2817
2552
  if (tagName in attributeMap) {
2818
2553
  attributes = attributes.concat(Object.keys(attributeMap[tagName]));
2819
2554
  }
2820
- return attributes.map(function(attribute){
2555
+ return attributes.map(function (attribute) {
2821
2556
  return {
2822
2557
  caption: attribute,
2823
2558
  snippet: attribute + '="$0"',
@@ -2826,18 +2561,16 @@ var HtmlCompletions = function() {
2826
2561
  };
2827
2562
  });
2828
2563
  };
2829
-
2830
- this.getAttributeValueCompletions = function(state, session, pos, prefix) {
2564
+ this.getAttributeValueCompletions = function (state, session, pos, prefix) {
2831
2565
  var tagName = findTagName(session, pos);
2832
2566
  var attributeName = findAttributeName(session, pos);
2833
-
2834
2567
  if (!tagName)
2835
2568
  return [];
2836
2569
  var values = [];
2837
2570
  if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") {
2838
2571
  values = Object.keys(attributeMap[tagName][attributeName]);
2839
2572
  }
2840
- return values.map(function(value){
2573
+ return values.map(function (value) {
2841
2574
  return {
2842
2575
  caption: value,
2843
2576
  snippet: value,
@@ -2846,11 +2579,9 @@ var HtmlCompletions = function() {
2846
2579
  };
2847
2580
  });
2848
2581
  };
2849
-
2850
- this.getHTMLEntityCompletions = function(state, session, pos, prefix) {
2582
+ this.getHTMLEntityCompletions = function (state, session, pos, prefix) {
2851
2583
  var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];
2852
-
2853
- return values.map(function(value){
2584
+ return values.map(function (value) {
2854
2585
  return {
2855
2586
  caption: value,
2856
2587
  snippet: value,
@@ -2859,15 +2590,12 @@ var HtmlCompletions = function() {
2859
2590
  };
2860
2591
  });
2861
2592
  };
2862
-
2863
2593
  }).call(HtmlCompletions.prototype);
2864
-
2865
2594
  exports.HtmlCompletions = HtmlCompletions;
2866
- });
2867
2595
 
2868
- ace.define("ace/mode/html",[], function(require, exports, module) {
2869
- "use strict";
2596
+ });
2870
2597
 
2598
+ ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict";
2871
2599
  var oop = require("../lib/oop");
2872
2600
  var lang = require("../lib/lang");
2873
2601
  var TextMode = require("./text").Mode;
@@ -2880,123 +2608,100 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions;
2880
2608
  var WorkerClient = require("../worker/worker_client").WorkerClient;
2881
2609
  var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"];
2882
2610
  var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"];
2883
-
2884
- var Mode = function(options) {
2611
+ var Mode = function (options) {
2885
2612
  this.fragmentContext = options && options.fragmentContext;
2886
2613
  this.HighlightRules = HtmlHighlightRules;
2887
2614
  this.$behaviour = new XmlBehaviour();
2888
2615
  this.$completer = new HtmlCompletions();
2889
-
2890
2616
  this.createModeDelegates({
2891
2617
  "js-": JavaScriptMode,
2892
2618
  "css-": CssMode
2893
2619
  });
2894
-
2895
2620
  this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));
2896
2621
  };
2897
2622
  oop.inherits(Mode, TextMode);
2898
-
2899
- (function() {
2900
-
2901
- this.blockComment = {start: "<!--", end: "-->"};
2902
-
2623
+ (function () {
2624
+ this.blockComment = { start: "<!--", end: "-->" };
2903
2625
  this.voidElements = lang.arrayToMap(voidElements);
2904
-
2905
- this.getNextLineIndent = function(state, line, tab) {
2626
+ this.getNextLineIndent = function (state, line, tab) {
2906
2627
  return this.$getIndent(line);
2907
2628
  };
2908
-
2909
- this.checkOutdent = function(state, line, input) {
2629
+ this.checkOutdent = function (state, line, input) {
2910
2630
  return false;
2911
2631
  };
2912
-
2913
- this.getCompletions = function(state, session, pos, prefix) {
2632
+ this.getCompletions = function (state, session, pos, prefix) {
2914
2633
  return this.$completer.getCompletions(state, session, pos, prefix);
2915
2634
  };
2916
-
2917
- this.createWorker = function(session) {
2635
+ this.createWorker = function (session) {
2918
2636
  if (this.constructor != Mode)
2919
2637
  return;
2920
2638
  var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker");
2921
2639
  worker.attachToDocument(session.getDocument());
2922
-
2923
2640
  if (this.fragmentContext)
2924
- worker.call("setOptions", [{context: this.fragmentContext}]);
2925
-
2926
- worker.on("error", function(e) {
2641
+ worker.call("setOptions", [{ context: this.fragmentContext }]);
2642
+ worker.on("error", function (e) {
2927
2643
  session.setAnnotations(e.data);
2928
2644
  });
2929
-
2930
- worker.on("terminate", function() {
2645
+ worker.on("terminate", function () {
2931
2646
  session.clearAnnotations();
2932
2647
  });
2933
-
2934
2648
  return worker;
2935
2649
  };
2936
-
2937
2650
  this.$id = "ace/mode/html";
2938
2651
  this.snippetFileId = "ace/snippets/html";
2939
2652
  }).call(Mode.prototype);
2940
-
2941
2653
  exports.Mode = Mode;
2942
- });
2943
2654
 
2944
- ace.define("ace/mode/folding/coffee",[], function(require, exports, module) {
2945
- "use strict";
2655
+ });
2946
2656
 
2657
+ ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict";
2947
2658
  var oop = require("../../lib/oop");
2948
2659
  var BaseFoldMode = require("./fold_mode").FoldMode;
2949
2660
  var Range = require("../../range").Range;
2950
-
2951
- var FoldMode = exports.FoldMode = function() {};
2661
+ var FoldMode = exports.FoldMode = function () { };
2952
2662
  oop.inherits(FoldMode, BaseFoldMode);
2953
-
2954
- (function() {
2955
-
2956
- this.getFoldWidgetRange = function(session, foldStyle, row) {
2957
- var range = this.indentationBlock(session, row);
2958
- if (range)
2959
- return range;
2960
-
2663
+ (function () {
2664
+ this.commentBlock = function (session, row) {
2961
2665
  var re = /\S/;
2962
2666
  var line = session.getLine(row);
2963
2667
  var startLevel = line.search(re);
2964
2668
  if (startLevel == -1 || line[startLevel] != "#")
2965
2669
  return;
2966
-
2967
2670
  var startColumn = line.length;
2968
2671
  var maxRow = session.getLength();
2969
2672
  var startRow = row;
2970
2673
  var endRow = row;
2971
-
2972
2674
  while (++row < maxRow) {
2973
2675
  line = session.getLine(row);
2974
2676
  var level = line.search(re);
2975
-
2976
2677
  if (level == -1)
2977
2678
  continue;
2978
-
2979
2679
  if (line[level] != "#")
2980
2680
  break;
2981
-
2982
2681
  endRow = row;
2983
2682
  }
2984
-
2985
2683
  if (endRow > startRow) {
2986
2684
  var endColumn = session.getLine(endRow).length;
2987
2685
  return new Range(startRow, startColumn, endRow, endColumn);
2988
2686
  }
2989
2687
  };
2990
- this.getFoldWidget = function(session, foldStyle, row) {
2688
+ this.getFoldWidgetRange = function (session, foldStyle, row) {
2689
+ var range = this.indentationBlock(session, row);
2690
+ if (range)
2691
+ return range;
2692
+ range = this.commentBlock(session, row);
2693
+ if (range)
2694
+ return range;
2695
+ };
2696
+ this.getFoldWidget = function (session, foldStyle, row) {
2991
2697
  var line = session.getLine(row);
2992
2698
  var indent = line.search(/\S/);
2993
2699
  var next = session.getLine(row + 1);
2994
2700
  var prev = session.getLine(row - 1);
2995
2701
  var prevIndent = prev.search(/\S/);
2996
2702
  var nextIndent = next.search(/\S/);
2997
-
2998
2703
  if (indent == -1) {
2999
- session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : "";
2704
+ session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : "";
3000
2705
  return "";
3001
2706
  }
3002
2707
  if (prevIndent == -1) {
@@ -3005,64 +2710,58 @@ oop.inherits(FoldMode, BaseFoldMode);
3005
2710
  session.foldWidgets[row + 1] = "";
3006
2711
  return "start";
3007
2712
  }
3008
- } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") {
2713
+ }
2714
+ else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") {
3009
2715
  if (session.getLine(row - 2).search(/\S/) == -1) {
3010
2716
  session.foldWidgets[row - 1] = "start";
3011
2717
  session.foldWidgets[row + 1] = "";
3012
2718
  return "";
3013
2719
  }
3014
2720
  }
3015
-
3016
- if (prevIndent!= -1 && prevIndent < indent)
2721
+ if (prevIndent != -1 && prevIndent < indent)
3017
2722
  session.foldWidgets[row - 1] = "start";
3018
2723
  else
3019
2724
  session.foldWidgets[row - 1] = "";
3020
-
3021
2725
  if (indent < nextIndent)
3022
2726
  return "start";
3023
2727
  else
3024
2728
  return "";
3025
2729
  };
3026
-
3027
2730
  }).call(FoldMode.prototype);
3028
2731
 
3029
2732
  });
3030
2733
 
3031
- ace.define("ace/mode/elixir",[], function(require, exports, module) {
2734
+ ace.define("ace/mode/elixir",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elixir_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/*
2735
+ THIS FILE WAS AUTOGENERATED BY mode.tmpl.js
2736
+ */
3032
2737
  "use strict";
3033
-
3034
2738
  var oop = require("../lib/oop");
3035
2739
  var TextMode = require("./text").Mode;
3036
2740
  var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules;
3037
2741
  var FoldMode = require("./folding/coffee").FoldMode;
3038
-
3039
- var Mode = function() {
2742
+ var Mode = function () {
3040
2743
  this.HighlightRules = ElixirHighlightRules;
3041
2744
  this.foldingRules = new FoldMode();
3042
2745
  this.$behaviour = this.$defaultBehaviour;
3043
2746
  };
3044
2747
  oop.inherits(Mode, TextMode);
3045
-
3046
- (function() {
2748
+ (function () {
3047
2749
  this.lineCommentStart = "#";
3048
2750
  this.$id = "ace/mode/elixir";
3049
2751
  }).call(Mode.prototype);
3050
-
3051
2752
  exports.Mode = Mode;
3052
- });
3053
2753
 
3054
- ace.define("ace/mode/html_elixir",[], function(require, exports, module) {
3055
- "use strict";
2754
+ });
3056
2755
 
2756
+ ace.define("ace/mode/html_elixir",["require","exports","module","ace/lib/oop","ace/mode/html_elixir_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/elixir"], function(require, exports, module){"use strict";
3057
2757
  var oop = require("../lib/oop");
3058
2758
  var HtmlElixirHighlightRules = require("./html_elixir_highlight_rules").HtmlElixirHighlightRules;
3059
2759
  var HtmlMode = require("./html").Mode;
3060
2760
  var JavaScriptMode = require("./javascript").Mode;
3061
2761
  var CssMode = require("./css").Mode;
3062
2762
  var ElixirMode = require("./elixir").Mode;
3063
-
3064
- var Mode = function() {
3065
- HtmlMode.call(this);
2763
+ var Mode = function () {
2764
+ HtmlMode.call(this);
3066
2765
  this.HighlightRules = HtmlElixirHighlightRules;
3067
2766
  this.createModeDelegates({
3068
2767
  "js-": JavaScriptMode,
@@ -3071,13 +2770,11 @@ var Mode = function() {
3071
2770
  });
3072
2771
  };
3073
2772
  oop.inherits(Mode, HtmlMode);
3074
-
3075
- (function() {
3076
-
2773
+ (function () {
3077
2774
  this.$id = "ace/mode/html_elixir";
3078
2775
  }).call(Mode.prototype);
3079
-
3080
2776
  exports.Mode = Mode;
2777
+
3081
2778
  }); (function() {
3082
2779
  ace.require(["ace/mode/html_elixir"], function(m) {
3083
2780
  if (typeof module == "object" && typeof exports == "object" && module) {