aced_rails 0.0.1

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 (255) hide show
  1. data/.gitignore +17 -0
  2. data/CHANGELOG.md +4 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +22 -0
  5. data/README.md +49 -0
  6. data/Rakefile +2 -0
  7. data/aced_rails.gemspec +19 -0
  8. data/lib/aced_rails.rb +7 -0
  9. data/lib/aced_rails/engine.rb +4 -0
  10. data/lib/aced_rails/version.rb +3 -0
  11. data/vendor/assets/javascripts/ace/ace-compat-noconflict.js +1 -0
  12. data/vendor/assets/javascripts/ace/ace-compat-uncompressed-noconflict.js +480 -0
  13. data/vendor/assets/javascripts/ace/ace-compat-uncompressed.js +480 -0
  14. data/vendor/assets/javascripts/ace/ace-compat.js +1 -0
  15. data/vendor/assets/javascripts/ace/ace-noconflict.js +10 -0
  16. data/vendor/assets/javascripts/ace/ace-uncompressed-noconflict.js +14649 -0
  17. data/vendor/assets/javascripts/ace/ace-uncompressed.js +14649 -0
  18. data/vendor/assets/javascripts/ace/ace.js +10 -0
  19. data/vendor/assets/javascripts/ace/keybinding-emacs-noconflict.js +1 -0
  20. data/vendor/assets/javascripts/ace/keybinding-emacs-uncompressed-noconflict.js +405 -0
  21. data/vendor/assets/javascripts/ace/keybinding-emacs-uncompressed.js +405 -0
  22. data/vendor/assets/javascripts/ace/keybinding-emacs.js +1 -0
  23. data/vendor/assets/javascripts/ace/keybinding-vim-noconflict.js +1 -0
  24. data/vendor/assets/javascripts/ace/keybinding-vim-uncompressed-noconflict.js +393 -0
  25. data/vendor/assets/javascripts/ace/keybinding-vim-uncompressed.js +393 -0
  26. data/vendor/assets/javascripts/ace/keybinding-vim.js +1 -0
  27. data/vendor/assets/javascripts/ace/mode-c_cpp-noconflict.js +1 -0
  28. data/vendor/assets/javascripts/ace/mode-c_cpp-uncompressed-noconflict.js +918 -0
  29. data/vendor/assets/javascripts/ace/mode-c_cpp-uncompressed.js +918 -0
  30. data/vendor/assets/javascripts/ace/mode-c_cpp.js +1 -0
  31. data/vendor/assets/javascripts/ace/mode-clojure-noconflict.js +1 -0
  32. data/vendor/assets/javascripts/ace/mode-clojure-uncompressed-noconflict.js +422 -0
  33. data/vendor/assets/javascripts/ace/mode-clojure-uncompressed.js +422 -0
  34. data/vendor/assets/javascripts/ace/mode-clojure.js +1 -0
  35. data/vendor/assets/javascripts/ace/mode-coffee-noconflict.js +1 -0
  36. data/vendor/assets/javascripts/ace/mode-coffee-uncompressed-noconflict.js +605 -0
  37. data/vendor/assets/javascripts/ace/mode-coffee-uncompressed.js +605 -0
  38. data/vendor/assets/javascripts/ace/mode-coffee.js +1 -0
  39. data/vendor/assets/javascripts/ace/mode-coldfusion-noconflict.js +1 -0
  40. data/vendor/assets/javascripts/ace/mode-coldfusion-uncompressed-noconflict.js +2361 -0
  41. data/vendor/assets/javascripts/ace/mode-coldfusion-uncompressed.js +2361 -0
  42. data/vendor/assets/javascripts/ace/mode-coldfusion.js +1 -0
  43. data/vendor/assets/javascripts/ace/mode-csharp-noconflict.js +1 -0
  44. data/vendor/assets/javascripts/ace/mode-csharp-uncompressed-noconflict.js +768 -0
  45. data/vendor/assets/javascripts/ace/mode-csharp-uncompressed.js +768 -0
  46. data/vendor/assets/javascripts/ace/mode-csharp.js +1 -0
  47. data/vendor/assets/javascripts/ace/mode-css-noconflict.js +1 -0
  48. data/vendor/assets/javascripts/ace/mode-css-uncompressed-noconflict.js +664 -0
  49. data/vendor/assets/javascripts/ace/mode-css-uncompressed.js +664 -0
  50. data/vendor/assets/javascripts/ace/mode-css.js +1 -0
  51. data/vendor/assets/javascripts/ace/mode-groovy-noconflict.js +1 -0
  52. data/vendor/assets/javascripts/ace/mode-groovy-uncompressed-noconflict.js +1280 -0
  53. data/vendor/assets/javascripts/ace/mode-groovy-uncompressed.js +1280 -0
  54. data/vendor/assets/javascripts/ace/mode-groovy.js +1 -0
  55. data/vendor/assets/javascripts/ace/mode-haxe-noconflict.js +1 -0
  56. data/vendor/assets/javascripts/ace/mode-haxe-uncompressed-noconflict.js +768 -0
  57. data/vendor/assets/javascripts/ace/mode-haxe-uncompressed.js +768 -0
  58. data/vendor/assets/javascripts/ace/mode-haxe.js +1 -0
  59. data/vendor/assets/javascripts/ace/mode-html-noconflict.js +1 -0
  60. data/vendor/assets/javascripts/ace/mode-html-uncompressed-noconflict.js +2377 -0
  61. data/vendor/assets/javascripts/ace/mode-html-uncompressed.js +2377 -0
  62. data/vendor/assets/javascripts/ace/mode-html.js +1 -0
  63. data/vendor/assets/javascripts/ace/mode-java-noconflict.js +1 -0
  64. data/vendor/assets/javascripts/ace/mode-java-uncompressed-noconflict.js +1282 -0
  65. data/vendor/assets/javascripts/ace/mode-java-uncompressed.js +1282 -0
  66. data/vendor/assets/javascripts/ace/mode-java.js +1 -0
  67. data/vendor/assets/javascripts/ace/mode-javascript-noconflict.js +1 -0
  68. data/vendor/assets/javascripts/ace/mode-javascript-uncompressed-noconflict.js +1113 -0
  69. data/vendor/assets/javascripts/ace/mode-javascript-uncompressed.js +1113 -0
  70. data/vendor/assets/javascripts/ace/mode-javascript.js +1 -0
  71. data/vendor/assets/javascripts/ace/mode-json-noconflict.js +1 -0
  72. data/vendor/assets/javascripts/ace/mode-json-uncompressed-noconflict.js +696 -0
  73. data/vendor/assets/javascripts/ace/mode-json-uncompressed.js +696 -0
  74. data/vendor/assets/javascripts/ace/mode-json.js +1 -0
  75. data/vendor/assets/javascripts/ace/mode-latex-noconflict.js +1 -0
  76. data/vendor/assets/javascripts/ace/mode-latex-uncompressed-noconflict.js +95 -0
  77. data/vendor/assets/javascripts/ace/mode-latex-uncompressed.js +95 -0
  78. data/vendor/assets/javascripts/ace/mode-latex.js +1 -0
  79. data/vendor/assets/javascripts/ace/mode-lua-noconflict.js +1 -0
  80. data/vendor/assets/javascripts/ace/mode-lua-uncompressed-noconflict.js +523 -0
  81. data/vendor/assets/javascripts/ace/mode-lua-uncompressed.js +523 -0
  82. data/vendor/assets/javascripts/ace/mode-lua.js +1 -0
  83. data/vendor/assets/javascripts/ace/mode-markdown-noconflict.js +1 -0
  84. data/vendor/assets/javascripts/ace/mode-markdown-uncompressed-noconflict.js +2819 -0
  85. data/vendor/assets/javascripts/ace/mode-markdown-uncompressed.js +2819 -0
  86. data/vendor/assets/javascripts/ace/mode-markdown.js +1 -0
  87. data/vendor/assets/javascripts/ace/mode-ocaml-noconflict.js +1 -0
  88. data/vendor/assets/javascripts/ace/mode-ocaml-uncompressed-noconflict.js +539 -0
  89. data/vendor/assets/javascripts/ace/mode-ocaml-uncompressed.js +539 -0
  90. data/vendor/assets/javascripts/ace/mode-ocaml.js +1 -0
  91. data/vendor/assets/javascripts/ace/mode-perl-noconflict.js +1 -0
  92. data/vendor/assets/javascripts/ace/mode-perl-uncompressed-noconflict.js +573 -0
  93. data/vendor/assets/javascripts/ace/mode-perl-uncompressed.js +573 -0
  94. data/vendor/assets/javascripts/ace/mode-perl.js +1 -0
  95. data/vendor/assets/javascripts/ace/mode-pgsql-noconflict.js +1 -0
  96. data/vendor/assets/javascripts/ace/mode-pgsql-uncompressed-noconflict.js +1107 -0
  97. data/vendor/assets/javascripts/ace/mode-pgsql-uncompressed.js +1107 -0
  98. data/vendor/assets/javascripts/ace/mode-pgsql.js +1 -0
  99. data/vendor/assets/javascripts/ace/mode-php-noconflict.js +1 -0
  100. data/vendor/assets/javascripts/ace/mode-php-uncompressed-noconflict.js +1884 -0
  101. data/vendor/assets/javascripts/ace/mode-php-uncompressed.js +1884 -0
  102. data/vendor/assets/javascripts/ace/mode-php.js +1 -0
  103. data/vendor/assets/javascripts/ace/mode-powershell-noconflict.js +1 -0
  104. data/vendor/assets/javascripts/ace/mode-powershell-uncompressed-noconflict.js +706 -0
  105. data/vendor/assets/javascripts/ace/mode-powershell-uncompressed.js +706 -0
  106. data/vendor/assets/javascripts/ace/mode-powershell.js +1 -0
  107. data/vendor/assets/javascripts/ace/mode-python-noconflict.js +1 -0
  108. data/vendor/assets/javascripts/ace/mode-python-uncompressed-noconflict.js +506 -0
  109. data/vendor/assets/javascripts/ace/mode-python-uncompressed.js +506 -0
  110. data/vendor/assets/javascripts/ace/mode-python.js +1 -0
  111. data/vendor/assets/javascripts/ace/mode-ruby-noconflict.js +1 -0
  112. data/vendor/assets/javascripts/ace/mode-ruby-uncompressed-noconflict.js +391 -0
  113. data/vendor/assets/javascripts/ace/mode-ruby-uncompressed.js +391 -0
  114. data/vendor/assets/javascripts/ace/mode-ruby.js +1 -0
  115. data/vendor/assets/javascripts/ace/mode-scad-noconflict.js +1 -0
  116. data/vendor/assets/javascripts/ace/mode-scad-uncompressed-noconflict.js +906 -0
  117. data/vendor/assets/javascripts/ace/mode-scad-uncompressed.js +906 -0
  118. data/vendor/assets/javascripts/ace/mode-scad.js +1 -0
  119. data/vendor/assets/javascripts/ace/mode-scala-noconflict.js +1 -0
  120. data/vendor/assets/javascripts/ace/mode-scala-uncompressed-noconflict.js +1282 -0
  121. data/vendor/assets/javascripts/ace/mode-scala-uncompressed.js +1282 -0
  122. data/vendor/assets/javascripts/ace/mode-scala.js +1 -0
  123. data/vendor/assets/javascripts/ace/mode-scss-noconflict.js +1 -0
  124. data/vendor/assets/javascripts/ace/mode-scss-uncompressed-noconflict.js +678 -0
  125. data/vendor/assets/javascripts/ace/mode-scss-uncompressed.js +678 -0
  126. data/vendor/assets/javascripts/ace/mode-scss.js +1 -0
  127. data/vendor/assets/javascripts/ace/mode-sh-noconflict.js +1 -0
  128. data/vendor/assets/javascripts/ace/mode-sh-uncompressed-noconflict.js +268 -0
  129. data/vendor/assets/javascripts/ace/mode-sh-uncompressed.js +268 -0
  130. data/vendor/assets/javascripts/ace/mode-sh.js +1 -0
  131. data/vendor/assets/javascripts/ace/mode-sql-noconflict.js +1 -0
  132. data/vendor/assets/javascripts/ace/mode-sql-uncompressed-noconflict.js +159 -0
  133. data/vendor/assets/javascripts/ace/mode-sql-uncompressed.js +159 -0
  134. data/vendor/assets/javascripts/ace/mode-sql.js +1 -0
  135. data/vendor/assets/javascripts/ace/mode-svg-noconflict.js +1 -0
  136. data/vendor/assets/javascripts/ace/mode-svg-uncompressed-noconflict.js +2016 -0
  137. data/vendor/assets/javascripts/ace/mode-svg-uncompressed.js +2016 -0
  138. data/vendor/assets/javascripts/ace/mode-svg.js +1 -0
  139. data/vendor/assets/javascripts/ace/mode-text-noconflict.js +0 -0
  140. data/vendor/assets/javascripts/ace/mode-text-uncompressed-noconflict.js +0 -0
  141. data/vendor/assets/javascripts/ace/mode-text-uncompressed.js +0 -0
  142. data/vendor/assets/javascripts/ace/mode-text.js +0 -0
  143. data/vendor/assets/javascripts/ace/mode-textile-noconflict.js +1 -0
  144. data/vendor/assets/javascripts/ace/mode-textile-uncompressed-noconflict.js +254 -0
  145. data/vendor/assets/javascripts/ace/mode-textile-uncompressed.js +254 -0
  146. data/vendor/assets/javascripts/ace/mode-textile.js +1 -0
  147. data/vendor/assets/javascripts/ace/mode-xml-noconflict.js +1 -0
  148. data/vendor/assets/javascripts/ace/mode-xml-uncompressed-noconflict.js +1001 -0
  149. data/vendor/assets/javascripts/ace/mode-xml-uncompressed.js +1001 -0
  150. data/vendor/assets/javascripts/ace/mode-xml.js +1 -0
  151. data/vendor/assets/javascripts/ace/theme-chrome-noconflict.js +1 -0
  152. data/vendor/assets/javascripts/ace/theme-chrome-uncompressed-noconflict.js +212 -0
  153. data/vendor/assets/javascripts/ace/theme-chrome-uncompressed.js +212 -0
  154. data/vendor/assets/javascripts/ace/theme-chrome.js +1 -0
  155. data/vendor/assets/javascripts/ace/theme-clouds-noconflict.js +1 -0
  156. data/vendor/assets/javascripts/ace/theme-clouds-uncompressed-noconflict.js +155 -0
  157. data/vendor/assets/javascripts/ace/theme-clouds-uncompressed.js +155 -0
  158. data/vendor/assets/javascripts/ace/theme-clouds.js +1 -0
  159. data/vendor/assets/javascripts/ace/theme-clouds_midnight-noconflict.js +1 -0
  160. data/vendor/assets/javascripts/ace/theme-clouds_midnight-uncompressed-noconflict.js +156 -0
  161. data/vendor/assets/javascripts/ace/theme-clouds_midnight-uncompressed.js +156 -0
  162. data/vendor/assets/javascripts/ace/theme-clouds_midnight.js +1 -0
  163. data/vendor/assets/javascripts/ace/theme-cobalt-noconflict.js +1 -0
  164. data/vendor/assets/javascripts/ace/theme-cobalt-uncompressed-noconflict.js +170 -0
  165. data/vendor/assets/javascripts/ace/theme-cobalt-uncompressed.js +170 -0
  166. data/vendor/assets/javascripts/ace/theme-cobalt.js +1 -0
  167. data/vendor/assets/javascripts/ace/theme-crimson_editor-noconflict.js +1 -0
  168. data/vendor/assets/javascripts/ace/theme-crimson_editor-uncompressed-noconflict.js +198 -0
  169. data/vendor/assets/javascripts/ace/theme-crimson_editor-uncompressed.js +198 -0
  170. data/vendor/assets/javascripts/ace/theme-crimson_editor.js +1 -0
  171. data/vendor/assets/javascripts/ace/theme-dawn-noconflict.js +1 -0
  172. data/vendor/assets/javascripts/ace/theme-dawn-uncompressed-noconflict.js +174 -0
  173. data/vendor/assets/javascripts/ace/theme-dawn-uncompressed.js +174 -0
  174. data/vendor/assets/javascripts/ace/theme-dawn.js +1 -0
  175. data/vendor/assets/javascripts/ace/theme-dreamweaver-noconflict.js +1 -0
  176. data/vendor/assets/javascripts/ace/theme-dreamweaver-uncompressed-noconflict.js +227 -0
  177. data/vendor/assets/javascripts/ace/theme-dreamweaver-uncompressed.js +227 -0
  178. data/vendor/assets/javascripts/ace/theme-dreamweaver.js +1 -0
  179. data/vendor/assets/javascripts/ace/theme-eclipse-noconflict.js +1 -0
  180. data/vendor/assets/javascripts/ace/theme-eclipse-uncompressed-noconflict.js +147 -0
  181. data/vendor/assets/javascripts/ace/theme-eclipse-uncompressed.js +147 -0
  182. data/vendor/assets/javascripts/ace/theme-eclipse.js +1 -0
  183. data/vendor/assets/javascripts/ace/theme-idle_fingers-noconflict.js +1 -0
  184. data/vendor/assets/javascripts/ace/theme-idle_fingers-uncompressed-noconflict.js +162 -0
  185. data/vendor/assets/javascripts/ace/theme-idle_fingers-uncompressed.js +162 -0
  186. data/vendor/assets/javascripts/ace/theme-idle_fingers.js +1 -0
  187. data/vendor/assets/javascripts/ace/theme-kr_theme-noconflict.js +1 -0
  188. data/vendor/assets/javascripts/ace/theme-kr_theme-uncompressed-noconflict.js +165 -0
  189. data/vendor/assets/javascripts/ace/theme-kr_theme-uncompressed.js +165 -0
  190. data/vendor/assets/javascripts/ace/theme-kr_theme.js +1 -0
  191. data/vendor/assets/javascripts/ace/theme-merbivore-noconflict.js +1 -0
  192. data/vendor/assets/javascripts/ace/theme-merbivore-uncompressed-noconflict.js +165 -0
  193. data/vendor/assets/javascripts/ace/theme-merbivore-uncompressed.js +165 -0
  194. data/vendor/assets/javascripts/ace/theme-merbivore.js +1 -0
  195. data/vendor/assets/javascripts/ace/theme-merbivore_soft-noconflict.js +1 -0
  196. data/vendor/assets/javascripts/ace/theme-merbivore_soft-uncompressed-noconflict.js +171 -0
  197. data/vendor/assets/javascripts/ace/theme-merbivore_soft-uncompressed.js +171 -0
  198. data/vendor/assets/javascripts/ace/theme-merbivore_soft.js +1 -0
  199. data/vendor/assets/javascripts/ace/theme-mono_industrial-noconflict.js +1 -0
  200. data/vendor/assets/javascripts/ace/theme-mono_industrial-uncompressed-noconflict.js +169 -0
  201. data/vendor/assets/javascripts/ace/theme-mono_industrial-uncompressed.js +169 -0
  202. data/vendor/assets/javascripts/ace/theme-mono_industrial.js +1 -0
  203. data/vendor/assets/javascripts/ace/theme-monokai-noconflict.js +1 -0
  204. data/vendor/assets/javascripts/ace/theme-monokai-uncompressed-noconflict.js +171 -0
  205. data/vendor/assets/javascripts/ace/theme-monokai-uncompressed.js +171 -0
  206. data/vendor/assets/javascripts/ace/theme-monokai.js +1 -0
  207. data/vendor/assets/javascripts/ace/theme-pastel_on_dark-noconflict.js +1 -0
  208. data/vendor/assets/javascripts/ace/theme-pastel_on_dark-uncompressed-noconflict.js +179 -0
  209. data/vendor/assets/javascripts/ace/theme-pastel_on_dark-uncompressed.js +179 -0
  210. data/vendor/assets/javascripts/ace/theme-pastel_on_dark.js +1 -0
  211. data/vendor/assets/javascripts/ace/theme-solarized_dark-noconflict.js +1 -0
  212. data/vendor/assets/javascripts/ace/theme-solarized_dark-uncompressed-noconflict.js +160 -0
  213. data/vendor/assets/javascripts/ace/theme-solarized_dark-uncompressed.js +160 -0
  214. data/vendor/assets/javascripts/ace/theme-solarized_dark.js +1 -0
  215. data/vendor/assets/javascripts/ace/theme-solarized_light-noconflict.js +1 -0
  216. data/vendor/assets/javascripts/ace/theme-solarized_light-uncompressed-noconflict.js +159 -0
  217. data/vendor/assets/javascripts/ace/theme-solarized_light-uncompressed.js +159 -0
  218. data/vendor/assets/javascripts/ace/theme-solarized_light.js +1 -0
  219. data/vendor/assets/javascripts/ace/theme-textmate-noconflict.js +0 -0
  220. data/vendor/assets/javascripts/ace/theme-textmate-uncompressed-noconflict.js +0 -0
  221. data/vendor/assets/javascripts/ace/theme-textmate-uncompressed.js +0 -0
  222. data/vendor/assets/javascripts/ace/theme-textmate.js +0 -0
  223. data/vendor/assets/javascripts/ace/theme-tomorrow-noconflict.js +1 -0
  224. data/vendor/assets/javascripts/ace/theme-tomorrow-uncompressed-noconflict.js +189 -0
  225. data/vendor/assets/javascripts/ace/theme-tomorrow-uncompressed.js +189 -0
  226. data/vendor/assets/javascripts/ace/theme-tomorrow.js +1 -0
  227. data/vendor/assets/javascripts/ace/theme-tomorrow_night-noconflict.js +1 -0
  228. data/vendor/assets/javascripts/ace/theme-tomorrow_night-uncompressed-noconflict.js +189 -0
  229. data/vendor/assets/javascripts/ace/theme-tomorrow_night-uncompressed.js +189 -0
  230. data/vendor/assets/javascripts/ace/theme-tomorrow_night.js +1 -0
  231. data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue-noconflict.js +1 -0
  232. data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue-uncompressed-noconflict.js +189 -0
  233. data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue-uncompressed.js +189 -0
  234. data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js +1 -0
  235. data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright-noconflict.js +1 -0
  236. data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright-uncompressed-noconflict.js +189 -0
  237. data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright-uncompressed.js +189 -0
  238. data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +1 -0
  239. data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties-noconflict.js +1 -0
  240. data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties-uncompressed-noconflict.js +185 -0
  241. data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties-uncompressed.js +185 -0
  242. data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js +1 -0
  243. data/vendor/assets/javascripts/ace/theme-twilight-noconflict.js +1 -0
  244. data/vendor/assets/javascripts/ace/theme-twilight-uncompressed-noconflict.js +183 -0
  245. data/vendor/assets/javascripts/ace/theme-twilight-uncompressed.js +183 -0
  246. data/vendor/assets/javascripts/ace/theme-twilight.js +1 -0
  247. data/vendor/assets/javascripts/ace/theme-vibrant_ink-noconflict.js +1 -0
  248. data/vendor/assets/javascripts/ace/theme-vibrant_ink-uncompressed-noconflict.js +166 -0
  249. data/vendor/assets/javascripts/ace/theme-vibrant_ink-uncompressed.js +166 -0
  250. data/vendor/assets/javascripts/ace/theme-vibrant_ink.js +1 -0
  251. data/vendor/assets/javascripts/ace/worker-coffee.js +7456 -0
  252. data/vendor/assets/javascripts/ace/worker-css.js +11693 -0
  253. data/vendor/assets/javascripts/ace/worker-javascript.js +10305 -0
  254. data/vendor/assets/javascripts/ace/worker-json.js +3062 -0
  255. metadata +310 -0
@@ -0,0 +1 @@
1
+ define("ace/keyboard/keybinding/vim",["require","exports","module","ace/keyboard/state_handler"],function(a,b,c){"use strict";var d=a("../state_handler").StateHandler,e=a("../state_handler").matchCharacterOnly,f=function(a,b,c){return{regex:["([0-9]*)",a],exec:b,params:[{name:"times",match:1,type:"number",defaultValue:1}],then:c}},g={start:[{key:"i",then:"insertMode"},{key:"d",then:"deleteMode"},{key:"a",exec:"gotoright",then:"insertMode"},{key:"shift-i",exec:"gotolinestart",then:"insertMode"},{key:"shift-a",exec:"gotolineend",then:"insertMode"},{key:"shift-c",exec:"removetolineend",then:"insertMode"},{key:"shift-r",exec:"overwrite",then:"replaceMode"},f("(k|up)","golineup"),f("(j|down)","golinedown"),f("(l|right)","gotoright"),f("(h|left)","gotoleft"),{key:"shift-g",exec:"gotoend"},f("b","gotowordleft"),f("e","gotowordright"),f("x","del"),f("shift-x","backspace"),f("shift-d","removetolineend"),f("u","undo"),{comment:"Catch some keyboard input to stop it here",match:e}],insertMode:[{key:"esc",then:"start"}],replaceMode:[{key:"esc",exec:"overwrite",then:"start"}],deleteMode:[{key:"d",exec:"removeline",then:"start"}]};b.Vim=new d(g)}),define("ace/keyboard/state_handler",["require","exports","module"],function(a,b,c){function e(a){this.keymapping=this.$buildKeymappingRegex(a)}"use strict";var d=!1;e.prototype={$buildKeymappingRegex:function(a){for(var b in a)this.$buildBindingsRegex(a[b]);return a},$buildBindingsRegex:function(a){a.forEach(function(a){a.key?a.key=new RegExp("^"+a.key+"$"):Array.isArray(a.regex)?("key"in a||(a.key=new RegExp("^"+a.regex[1]+"$")),a.regex=new RegExp(a.regex.join("")+"$")):a.regex&&(a.regex=new RegExp(a.regex+"$"))})},$composeBuffer:function(a,b,c,d){if(a.state==null||a.buffer==null)a.state="start",a.buffer="";var e=[];b&1&&e.push("ctrl"),b&8&&e.push("command"),b&2&&e.push("option"),b&4&&e.push("shift"),c&&e.push(c);var f=e.join("-"),g=a.buffer+f;b!=2&&(a.buffer=g);var h={bufferToUse:g,symbolicName:f};return d&&(h.keyIdentifier=d.keyIdentifier),h},$find:function(a,b,c,e,f,g){var h={};return this.keymapping[a.state].some(function(i){var j;if(i.key&&!i.key.test(c))return!1;if(i.regex&&!(j=i.regex.exec(b)))return!1;if(i.match&&!i.match(b,e,f,c,g))return!1;if(i.disallowMatches)for(var k=0;k<i.disallowMatches.length;k++)if(!!j[i.disallowMatches[k]])return!1;if(i.exec){h.command=i.exec;if(i.params){var l;h.args={},i.params.forEach(function(a){a.match!=null&&j!=null?l=j[a.match]||a.defaultValue:l=a.defaultValue,a.type==="number"&&(l=parseInt(l)),h.args[a.name]=l})}a.buffer=""}return i.then&&(a.state=i.then,a.buffer=""),h.command==null&&(h.command="null"),d&&console.log("KeyboardStateMapper#find",i),!0}),h.command?h:(a.buffer="",!1)},handleKeyboard:function(a,b,c,e,f){if(b==0||c!=""&&c!=String.fromCharCode(0)){var g=this.$composeBuffer(a,b,c,f),h=g.bufferToUse,i=g.symbolicName,j=g.keyIdentifier;return g=this.$find(a,h,i,b,c,j),d&&console.log("KeyboardStateMapper#match",h,i,g),g}return null}},b.matchCharacterOnly=function(a,b,c,d){return b==0?!0:b==4&&c.length==1?!0:!1},b.StateHandler=e})
@@ -0,0 +1 @@
1
+ ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(a,b,c){"use strict";var d=a("../lib/oop"),e=a("./text").Mode,f=a("../tokenizer").Tokenizer,g=a("./c_cpp_highlight_rules").c_cppHighlightRules,h=a("./matching_brace_outdent").MatchingBraceOutdent,i=a("../range").Range,j=a("./behaviour/cstyle").CstyleBehaviour,k=a("./folding/cstyle").FoldMode,l=function(){this.$tokenizer=new f((new g).getRules()),this.$outdent=new h,this.$behaviour=new j,this.foldingRules=new k};d.inherits(l,e),function(){this.toggleCommentLines=function(a,b,c,d){var e=!0,f=/^(\s*)\/\//;for(var g=c;g<=d;g++)if(!f.test(b.getLine(g))){e=!1;break}if(e){var h=new i(0,0,0,0);for(var g=c;g<=d;g++){var j=b.getLine(g),k=j.match(f);h.start.row=g,h.end.row=g,h.end.column=k[0].length,b.replace(h,k[1])}}else b.indentRows(c,d,"//")},this.getNextLineIndent=function(a,b,c){var d=this.$getIndent(b),e=this.$tokenizer.getLineTokens(b,a),f=e.tokens,g=e.state;if(f.length&&f[f.length-1].type=="comment")return d;if(a=="start"){var h=b.match(/^.*[\{\(\[]\s*$/);h&&(d+=c)}else if(a=="doc-start"){if(g=="start")return"";var h=b.match(/^\s*(\/?)\*/);h&&(h[1]&&(d+=" "),d+="* ")}return d},this.checkOutdent=function(a,b,c){return this.$outdent.checkOutdent(b,c)},this.autoOutdent=function(a,b,c){this.$outdent.autoOutdent(b,c)}}.call(l.prototype),b.Mode=l}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(a,b,c){"use strict";var d=a("../lib/oop"),e=a("../lib/lang"),f=a("./doc_comment_highlight_rules").DocCommentHighlightRules,g=a("./text_highlight_rules").TextHighlightRules,h=function(){var a=e.arrayToMap("and|double|not_eq|throw|and_eq|dynamic_cast|operator|true|asm|else|or|try|auto|enum|or_eq|typedef|bitand|explicit|private|typeid|bitor|extern|protected|typename|bool|false|public|union|break|float|register|unsigned|case|fro|reinterpret-cast|using|catch|friend|return|virtual|char|goto|short|void|class|if|signed|volatile|compl|inline|sizeof|wchar_t|const|int|static|while|const-cast|long|static_cast|xor|continue|mutable|struct|xor_eq|default|namespace|switch|delete|new|template|do|not|this|for".split("|")),b=e.arrayToMap("NULL".split("|"));this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},(new f).getStartRule("doc-start"),{token:"comment",merge:!0,regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",merge:!0,regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",merge:!0,regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant",regex:"<[a-zA-Z0-9.]+>"},{token:"keyword",regex:"(?:#include|#pragma|#line|#define|#undef|#ifdef|#else|#elif|#endif|#ifndef)"},{token:function(c){return c=="this"?"variable.language":a.hasOwnProperty(c)?"keyword":b.hasOwnProperty(c)?"constant.language":"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",merge:!0,regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",merge:!0,regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",merge:!0,regex:".+"}]},this.embedRules(f,"doc-",[(new f).getEndRule("start")])};d.inherits(h,g),b.c_cppHighlightRules=h}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(a,b,c){"use strict";var d=a("../lib/oop"),e=a("./text_highlight_rules").TextHighlightRules,f=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc",merge:!0,regex:"\\s+"},{token:"comment.doc",merge:!0,regex:"TODO"},{token:"comment.doc",merge:!0,regex:"[^@\\*]+"},{token:"comment.doc",merge:!0,regex:"."}]}};d.inherits(f,e),function(){this.getStartRule=function(a){return{token:"comment.doc",merge:!0,regex:"\\/\\*(?=\\*)",next:a}},this.getEndRule=function(a){return{token:"comment.doc",merge:!0,regex:"\\*\\/",next:a}}}.call(f.prototype),b.DocCommentHighlightRules=f}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(a,b,c){"use strict";var d=a("../range").Range,e=function(){};((function(){this.checkOutdent=function(a,b){return/^\s+$/.test(a)?/^\s*\}/.test(b):!1},this.autoOutdent=function(a,b){var c=a.getLine(b),e=c.match(/^(\s*\})/);if(!e)return 0;var f=e[1].length,g=a.findMatchingBracket({row:b,column:f});if(!g||g.row==b)return 0;var h=this.$getIndent(a.getLine(g.row));a.replace(new d(b,0,b,f-1),h)},this.$getIndent=function(a){var b=a.match(/^(\s+)/);return b?b[1]:""}})).call(e.prototype),b.MatchingBraceOutdent=e}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour"],function(a,b,c){"use strict";var d=a("../../lib/oop"),e=a("../behaviour").Behaviour,f=function(){this.add("braces","insertion",function(a,b,c,d,e){if(e=="{"){var f=c.getSelectionRange(),g=d.doc.getTextRange(f);return g!==""?{text:"{"+g+"}",selection:!1}:{text:"{}",selection:[1,1]}}if(e=="}"){var h=c.getCursorPosition(),i=d.doc.getLine(h.row),j=i.substring(h.column,h.column+1);if(j=="}"){var k=d.$findOpeningBracket("}",{column:h.column+1,row:h.row});if(k!==null)return{text:"",selection:[1,1]}}}else if(e=="\n"){var h=c.getCursorPosition(),i=d.doc.getLine(h.row),j=i.substring(h.column,h.column+1);if(j=="}"){var l=d.findMatchingBracket({row:h.row,column:h.column+1});if(!l)return null;var m=this.getNextLineIndent(a,i.substring(0,i.length-1),d.getTabString()),n=this.$getIndent(d.doc.getLine(l.row));return{text:"\n"+m+"\n"+n,selection:[1,m.length,1,m.length]}}}}),this.add("braces","deletion",function(a,b,c,d,e){var f=d.doc.getTextRange(e);if(!e.isMultiLine()&&f=="{"){var g=d.doc.getLine(e.start.row),h=g.substring(e.end.column,e.end.column+1);if(h=="}")return e.end.column++,e}}),this.add("parens","insertion",function(a,b,c,d,e){if(e=="("){var f=c.getSelectionRange(),g=d.doc.getTextRange(f);return g!==""?{text:"("+g+")",selection:!1}:{text:"()",selection:[1,1]}}if(e==")"){var h=c.getCursorPosition(),i=d.doc.getLine(h.row),j=i.substring(h.column,h.column+1);if(j==")"){var k=d.$findOpeningBracket(")",{column:h.column+1,row:h.row});if(k!==null)return{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(a,b,c,d,e){var f=d.doc.getTextRange(e);if(!e.isMultiLine()&&f=="("){var g=d.doc.getLine(e.start.row),h=g.substring(e.start.column+1,e.start.column+2);if(h==")")return e.end.column++,e}}),this.add("string_dquotes","insertion",function(a,b,c,d,e){if(e=='"'){var f=c.getSelectionRange(),g=d.doc.getTextRange(f);if(g!=="")return{text:'"'+g+'"',selection:!1};var h=c.getCursorPosition(),i=d.doc.getLine(h.row),j=i.substring(h.column-1,h.column);if(j=="\\")return null;var k=d.getTokens(f.start.row,f.start.row)[0].tokens,l=0,m,n=-1;for(var o=0;o<k.length;o++){m=k[o],m.type=="string"?n=-1:n<0&&(n=m.value.indexOf('"'));if(m.value.length+l>f.start.column)break;l+=k[o].value.length}if(!m||n<0&&m.type!=="comment"&&(m.type!=="string"||f.start.column!==m.value.length+l-1&&m.value.lastIndexOf('"')===m.value.length-1))return{text:'""',selection:[1,1]};if(m&&m.type==="string"){var p=i.substring(h.column,h.column+1);if(p=='"')return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(a,b,c,d,e){var f=d.doc.getTextRange(e);if(!e.isMultiLine()&&f=='"'){var g=d.doc.getLine(e.start.row),h=g.substring(e.start.column+1,e.start.column+2);if(h=='"')return e.end.column++,e}})};d.inherits(f,e),b.CstyleBehaviour=f}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(a,b,c){"use strict";var d=a("../../lib/oop"),e=a("../../range").Range,f=a("./fold_mode").FoldMode,g=b.FoldMode=function(){};d.inherits(g,f),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(a,b,c){var d=a.getLine(c),f=d.match(this.foldingStartMarker);if(f){var g=f.index;if(f[1])return this.openingBracketBlock(a,f[1],c,g);var h=a.getCommentFoldRange(c,g+f[0].length);return h.end.column-=2,h}if(b!=="markbeginend")return;var f=d.match(this.foldingStopMarker);if(f){var g=f.index+f[0].length;if(f[2]){var h=a.getCommentFoldRange(c,g);return h.end.column-=2,h}var i={row:c,column:g},j=a.$findOpeningBracket(f[1],i);if(!j)return;return j.column++,i.column--,e.fromPoints(j,i)}}}.call(g.prototype)}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(a,b,c){"use strict";var d=a("../../range").Range,e=b.FoldMode=function(){};((function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(a,b,c){var d=a.getLine(c);return this.foldingStartMarker.test(d)?"start":b=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(d)?"end":""},this.getFoldWidgetRange=function(a,b,c){return null},this.indentationBlock=function(a,b,c){var e=/^\s*/,f=b,g=b,h=a.getLine(b),i=c||h.length,j=h.match(e)[0].length,k=a.getLength();while(++b<k){h=a.getLine(b);var l=h.match(e)[0].length;if(l==h.length)continue;if(l<=j)break;g=b}if(g>f){var m=a.getLine(g).length;return new d(f,i,g,m)}},this.openingBracketBlock=function(a,b,c,e){var f={row:c,column:e+1},g=a.$findClosingBracket(b,f);if(!g)return;var h=a.foldWidgets[g.row];return h==null&&(h=this.getFoldWidget(a,g.row)),h=="start"&&(g.row--,g.column=a.getLine(g.row).length),d.fromPoints(f,g)}})).call(e.prototype)})
@@ -0,0 +1,918 @@
1
+ /* ***** BEGIN LICENSE BLOCK *****
2
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3
+ *
4
+ * The contents of this file are subject to the Mozilla Public License Version
5
+ * 1.1 (the "License"); you may not use this file except in compliance with
6
+ * the License. You may obtain a copy of the License at
7
+ * http://www.mozilla.org/MPL/
8
+ *
9
+ * Software distributed under the License is distributed on an "AS IS" basis,
10
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11
+ * for the specific language governing rights and limitations under the
12
+ * License.
13
+ *
14
+ * The Original Code is Ajax.org Code Editor (ACE).
15
+ *
16
+ * The Initial Developer of the Original Code is
17
+ * Ajax.org B.V.
18
+ * Portions created by the Initial Developer are Copyright (C) 2010
19
+ * the Initial Developer. All Rights Reserved.
20
+ *
21
+ * Contributor(s):
22
+ * Fabian Jakobs <fabian AT ajax DOT org>
23
+ * Gastón Kleiman <gaston.kleiman AT gmail DOT com>
24
+ *
25
+ * Alternatively, the contents of this file may be used under the terms of
26
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
27
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28
+ * in which case the provisions of the GPL or the LGPL are applicable instead
29
+ * of those above. If you wish to allow use of your version of this file only
30
+ * under the terms of either the GPL or the LGPL, and not to allow others to
31
+ * use your version of this file under the terms of the MPL, indicate your
32
+ * decision by deleting the provisions above and replace them with the notice
33
+ * and other provisions required by the GPL or the LGPL. If you do not delete
34
+ * the provisions above, a recipient may use your version of this file under
35
+ * the terms of any one of the MPL, the GPL or the LGPL.
36
+ *
37
+ * ***** END LICENSE BLOCK ***** */
38
+
39
+ ace.define('ace/mode/c_cpp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/c_cpp_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
40
+ "use strict";
41
+
42
+ var oop = require("../lib/oop");
43
+ var TextMode = require("./text").Mode;
44
+ var Tokenizer = require("../tokenizer").Tokenizer;
45
+ var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules;
46
+ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
47
+ var Range = require("../range").Range;
48
+ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
49
+ var CStyleFoldMode = require("./folding/cstyle").FoldMode;
50
+
51
+ var Mode = function() {
52
+ this.$tokenizer = new Tokenizer(new c_cppHighlightRules().getRules());
53
+ this.$outdent = new MatchingBraceOutdent();
54
+ this.$behaviour = new CstyleBehaviour();
55
+ this.foldingRules = new CStyleFoldMode();
56
+ };
57
+ oop.inherits(Mode, TextMode);
58
+
59
+ (function() {
60
+
61
+ this.toggleCommentLines = function(state, doc, startRow, endRow) {
62
+ var outdent = true;
63
+ var re = /^(\s*)\/\//;
64
+
65
+ for (var i=startRow; i<= endRow; i++) {
66
+ if (!re.test(doc.getLine(i))) {
67
+ outdent = false;
68
+ break;
69
+ }
70
+ }
71
+
72
+ if (outdent) {
73
+ var deleteRange = new Range(0, 0, 0, 0);
74
+ for (var i=startRow; i<= endRow; i++)
75
+ {
76
+ var line = doc.getLine(i);
77
+ var m = line.match(re);
78
+ deleteRange.start.row = i;
79
+ deleteRange.end.row = i;
80
+ deleteRange.end.column = m[0].length;
81
+ doc.replace(deleteRange, m[1]);
82
+ }
83
+ }
84
+ else {
85
+ doc.indentRows(startRow, endRow, "//");
86
+ }
87
+ };
88
+
89
+ this.getNextLineIndent = function(state, line, tab) {
90
+ var indent = this.$getIndent(line);
91
+
92
+ var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
93
+ var tokens = tokenizedLine.tokens;
94
+ var endState = tokenizedLine.state;
95
+
96
+ if (tokens.length && tokens[tokens.length-1].type == "comment") {
97
+ return indent;
98
+ }
99
+
100
+ if (state == "start") {
101
+ var match = line.match(/^.*[\{\(\[]\s*$/);
102
+ if (match) {
103
+ indent += tab;
104
+ }
105
+ } else if (state == "doc-start") {
106
+ if (endState == "start") {
107
+ return "";
108
+ }
109
+ var match = line.match(/^\s*(\/?)\*/);
110
+ if (match) {
111
+ if (match[1]) {
112
+ indent += " ";
113
+ }
114
+ indent += "* ";
115
+ }
116
+ }
117
+
118
+ return indent;
119
+ };
120
+
121
+ this.checkOutdent = function(state, line, input) {
122
+ return this.$outdent.checkOutdent(line, input);
123
+ };
124
+
125
+ this.autoOutdent = function(state, doc, row) {
126
+ this.$outdent.autoOutdent(doc, row);
127
+ };
128
+
129
+ }).call(Mode.prototype);
130
+
131
+ exports.Mode = Mode;
132
+ });
133
+ /* ***** BEGIN LICENSE BLOCK *****
134
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
135
+ *
136
+ * The contents of this file are subject to the Mozilla Public License Version
137
+ * 1.1 (the "License"); you may not use this file except in compliance with
138
+ * the License. You may obtain a copy of the License at
139
+ * http://www.mozilla.org/MPL/
140
+ *
141
+ * Software distributed under the License is distributed on an "AS IS" basis,
142
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
143
+ * for the specific language governing rights and limitations under the
144
+ * License.
145
+ *
146
+ * The Original Code is Ajax.org Code Editor (ACE).
147
+ *
148
+ * The Initial Developer of the Original Code is
149
+ * Ajax.org B.V.
150
+ * Portions created by the Initial Developer are Copyright (C) 2010
151
+ * the Initial Developer. All Rights Reserved.
152
+ *
153
+ * Contributor(s):
154
+ * Fabian Jakobs <fabian AT ajax DOT org>
155
+ * Gastón Kleiman <gaston.kleiman AT gmail DOT com>
156
+ *
157
+ * Based on Bespin's C/C++ Syntax Plugin by Marc McIntyre.
158
+ *
159
+ * Alternatively, the contents of this file may be used under the terms of
160
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
161
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
162
+ * in which case the provisions of the GPL or the LGPL are applicable instead
163
+ * of those above. If you wish to allow use of your version of this file only
164
+ * under the terms of either the GPL or the LGPL, and not to allow others to
165
+ * use your version of this file under the terms of the MPL, indicate your
166
+ * decision by deleting the provisions above and replace them with the notice
167
+ * and other provisions required by the GPL or the LGPL. If you do not delete
168
+ * the provisions above, a recipient may use your version of this file under
169
+ * the terms of any one of the MPL, the GPL or the LGPL.
170
+ *
171
+ * ***** END LICENSE BLOCK ***** */
172
+
173
+ ace.define('ace/mode/c_cpp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
174
+ "use strict";
175
+
176
+ var oop = require("../lib/oop");
177
+ var lang = require("../lib/lang");
178
+ var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
179
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
180
+
181
+ var c_cppHighlightRules = function() {
182
+
183
+ var keywords = lang.arrayToMap(
184
+ ("and|double|not_eq|throw|and_eq|dynamic_cast|operator|true|" +
185
+ "asm|else|or|try|auto|enum|or_eq|typedef|bitand|explicit|private|" +
186
+ "typeid|bitor|extern|protected|typename|bool|false|public|union|" +
187
+ "break|float|register|unsigned|case|fro|reinterpret-cast|using|catch|" +
188
+ "friend|return|virtual|char|goto|short|void|class|if|signed|volatile|" +
189
+ "compl|inline|sizeof|wchar_t|const|int|static|while|const-cast|long|" +
190
+ "static_cast|xor|continue|mutable|struct|xor_eq|default|namespace|" +
191
+ "switch|delete|new|template|do|not|this|for").split("|")
192
+ );
193
+
194
+ var buildinConstants = lang.arrayToMap(
195
+ ("NULL").split("|")
196
+ );
197
+
198
+ // regexp must not have capturing parentheses. Use (?:) instead.
199
+ // regexps are ordered -> the first match is used
200
+
201
+ this.$rules = {
202
+ "start" : [
203
+ {
204
+ token : "comment",
205
+ regex : "\\/\\/.*$"
206
+ },
207
+ new DocCommentHighlightRules().getStartRule("doc-start"),
208
+ {
209
+ token : "comment", // multi line comment
210
+ merge : true,
211
+ regex : "\\/\\*",
212
+ next : "comment"
213
+ }, {
214
+ token : "string", // single line
215
+ regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
216
+ }, {
217
+ token : "string", // multi line string start
218
+ merge : true,
219
+ regex : '["].*\\\\$',
220
+ next : "qqstring"
221
+ }, {
222
+ token : "string", // single line
223
+ regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
224
+ }, {
225
+ token : "string", // multi line string start
226
+ merge : true,
227
+ regex : "['].*\\\\$",
228
+ next : "qstring"
229
+ }, {
230
+ token : "constant.numeric", // hex
231
+ regex : "0[xX][0-9a-fA-F]+\\b"
232
+ }, {
233
+ token : "constant.numeric", // float
234
+ regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
235
+ }, {
236
+ token : "constant", // <CONSTANT>
237
+ regex : "<[a-zA-Z0-9.]+>"
238
+ }, {
239
+ token : "keyword", // pre-compiler directivs
240
+ regex : "(?:#include|#pragma|#line|#define|#undef|#ifdef|#else|#elif|#endif|#ifndef)"
241
+ }, {
242
+ token : function(value) {
243
+ if (value == "this")
244
+ return "variable.language";
245
+ else if (keywords.hasOwnProperty(value))
246
+ return "keyword";
247
+ else if (buildinConstants.hasOwnProperty(value))
248
+ return "constant.language";
249
+ else
250
+ return "identifier";
251
+ },
252
+ regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
253
+ }, {
254
+ token : "keyword.operator",
255
+ regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"
256
+ }, {
257
+ token : "punctuation.operator",
258
+ regex : "\\?|\\:|\\,|\\;|\\."
259
+ }, {
260
+ token : "paren.lparen",
261
+ regex : "[[({]"
262
+ }, {
263
+ token : "paren.rparen",
264
+ regex : "[\\])}]"
265
+ }, {
266
+ token : "text",
267
+ regex : "\\s+"
268
+ }
269
+ ],
270
+ "comment" : [
271
+ {
272
+ token : "comment", // closing comment
273
+ regex : ".*?\\*\\/",
274
+ next : "start"
275
+ }, {
276
+ token : "comment", // comment spanning whole line
277
+ merge : true,
278
+ regex : ".+"
279
+ }
280
+ ],
281
+ "qqstring" : [
282
+ {
283
+ token : "string",
284
+ regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
285
+ next : "start"
286
+ }, {
287
+ token : "string",
288
+ merge : true,
289
+ regex : '.+'
290
+ }
291
+ ],
292
+ "qstring" : [
293
+ {
294
+ token : "string",
295
+ regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
296
+ next : "start"
297
+ }, {
298
+ token : "string",
299
+ merge : true,
300
+ regex : '.+'
301
+ }
302
+ ]
303
+ };
304
+
305
+ this.embedRules(DocCommentHighlightRules, "doc-",
306
+ [ new DocCommentHighlightRules().getEndRule("start") ]);
307
+ };
308
+
309
+ oop.inherits(c_cppHighlightRules, TextHighlightRules);
310
+
311
+ exports.c_cppHighlightRules = c_cppHighlightRules;
312
+ });
313
+ /* ***** BEGIN LICENSE BLOCK *****
314
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
315
+ *
316
+ * The contents of this file are subject to the Mozilla Public License Version
317
+ * 1.1 (the "License"); you may not use this file except in compliance with
318
+ * the License. You may obtain a copy of the License at
319
+ * http://www.mozilla.org/MPL/
320
+ *
321
+ * Software distributed under the License is distributed on an "AS IS" basis,
322
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
323
+ * for the specific language governing rights and limitations under the
324
+ * License.
325
+ *
326
+ * The Original Code is Ajax.org Code Editor (ACE).
327
+ *
328
+ * The Initial Developer of the Original Code is
329
+ * Ajax.org B.V.
330
+ * Portions created by the Initial Developer are Copyright (C) 2010
331
+ * the Initial Developer. All Rights Reserved.
332
+ *
333
+ * Contributor(s):
334
+ * Fabian Jakobs <fabian AT ajax DOT org>
335
+ *
336
+ * Alternatively, the contents of this file may be used under the terms of
337
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
338
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
339
+ * in which case the provisions of the GPL or the LGPL are applicable instead
340
+ * of those above. If you wish to allow use of your version of this file only
341
+ * under the terms of either the GPL or the LGPL, and not to allow others to
342
+ * use your version of this file under the terms of the MPL, indicate your
343
+ * decision by deleting the provisions above and replace them with the notice
344
+ * and other provisions required by the GPL or the LGPL. If you do not delete
345
+ * the provisions above, a recipient may use your version of this file under
346
+ * the terms of any one of the MPL, the GPL or the LGPL.
347
+ *
348
+ * ***** END LICENSE BLOCK ***** */
349
+
350
+ ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
351
+ "use strict";
352
+
353
+ var oop = require("../lib/oop");
354
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
355
+
356
+ var DocCommentHighlightRules = function() {
357
+
358
+ this.$rules = {
359
+ "start" : [ {
360
+ token : "comment.doc.tag",
361
+ regex : "@[\\w\\d_]+" // TODO: fix email addresses
362
+ }, {
363
+ token : "comment.doc",
364
+ merge : true,
365
+ regex : "\\s+"
366
+ }, {
367
+ token : "comment.doc",
368
+ merge : true,
369
+ regex : "TODO"
370
+ }, {
371
+ token : "comment.doc",
372
+ merge : true,
373
+ regex : "[^@\\*]+"
374
+ }, {
375
+ token : "comment.doc",
376
+ merge : true,
377
+ regex : "."
378
+ }]
379
+ };
380
+ };
381
+
382
+ oop.inherits(DocCommentHighlightRules, TextHighlightRules);
383
+
384
+ (function() {
385
+
386
+ this.getStartRule = function(start) {
387
+ return {
388
+ token : "comment.doc", // doc comment
389
+ merge : true,
390
+ regex : "\\/\\*(?=\\*)",
391
+ next : start
392
+ };
393
+ };
394
+
395
+ this.getEndRule = function (start) {
396
+ return {
397
+ token : "comment.doc", // closing comment
398
+ merge : true,
399
+ regex : "\\*\\/",
400
+ next : start
401
+ };
402
+ };
403
+
404
+ }).call(DocCommentHighlightRules.prototype);
405
+
406
+ exports.DocCommentHighlightRules = DocCommentHighlightRules;
407
+
408
+ });
409
+ /* ***** BEGIN LICENSE BLOCK *****
410
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
411
+ *
412
+ * The contents of this file are subject to the Mozilla Public License Version
413
+ * 1.1 (the "License"); you may not use this file except in compliance with
414
+ * the License. You may obtain a copy of the License at
415
+ * http://www.mozilla.org/MPL/
416
+ *
417
+ * Software distributed under the License is distributed on an "AS IS" basis,
418
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
419
+ * for the specific language governing rights and limitations under the
420
+ * License.
421
+ *
422
+ * The Original Code is Ajax.org Code Editor (ACE).
423
+ *
424
+ * The Initial Developer of the Original Code is
425
+ * Ajax.org B.V.
426
+ * Portions created by the Initial Developer are Copyright (C) 2010
427
+ * the Initial Developer. All Rights Reserved.
428
+ *
429
+ * Contributor(s):
430
+ * Fabian Jakobs <fabian AT ajax DOT org>
431
+ *
432
+ * Alternatively, the contents of this file may be used under the terms of
433
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
434
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
435
+ * in which case the provisions of the GPL or the LGPL are applicable instead
436
+ * of those above. If you wish to allow use of your version of this file only
437
+ * under the terms of either the GPL or the LGPL, and not to allow others to
438
+ * use your version of this file under the terms of the MPL, indicate your
439
+ * decision by deleting the provisions above and replace them with the notice
440
+ * and other provisions required by the GPL or the LGPL. If you do not delete
441
+ * the provisions above, a recipient may use your version of this file under
442
+ * the terms of any one of the MPL, the GPL or the LGPL.
443
+ *
444
+ * ***** END LICENSE BLOCK ***** */
445
+
446
+ ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
447
+ "use strict";
448
+
449
+ var Range = require("../range").Range;
450
+
451
+ var MatchingBraceOutdent = function() {};
452
+
453
+ (function() {
454
+
455
+ this.checkOutdent = function(line, input) {
456
+ if (! /^\s+$/.test(line))
457
+ return false;
458
+
459
+ return /^\s*\}/.test(input);
460
+ };
461
+
462
+ this.autoOutdent = function(doc, row) {
463
+ var line = doc.getLine(row);
464
+ var match = line.match(/^(\s*\})/);
465
+
466
+ if (!match) return 0;
467
+
468
+ var column = match[1].length;
469
+ var openBracePos = doc.findMatchingBracket({row: row, column: column});
470
+
471
+ if (!openBracePos || openBracePos.row == row) return 0;
472
+
473
+ var indent = this.$getIndent(doc.getLine(openBracePos.row));
474
+ doc.replace(new Range(row, 0, row, column-1), indent);
475
+ };
476
+
477
+ this.$getIndent = function(line) {
478
+ var match = line.match(/^(\s+)/);
479
+ if (match) {
480
+ return match[1];
481
+ }
482
+
483
+ return "";
484
+ };
485
+
486
+ }).call(MatchingBraceOutdent.prototype);
487
+
488
+ exports.MatchingBraceOutdent = MatchingBraceOutdent;
489
+ });
490
+ /* vim:ts=4:sts=4:sw=4:
491
+ * ***** BEGIN LICENSE BLOCK *****
492
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
493
+ *
494
+ * The contents of this file are subject to the Mozilla Public License Version
495
+ * 1.1 (the "License"); you may not use this file except in compliance with
496
+ * the License. You may obtain a copy of the License at
497
+ * http://www.mozilla.org/MPL/
498
+ *
499
+ * Software distributed under the License is distributed on an "AS IS" basis,
500
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
501
+ * for the specific language governing rights and limitations under the
502
+ * License.
503
+ *
504
+ * The Original Code is Ajax.org Code Editor (ACE).
505
+ *
506
+ * The Initial Developer of the Original Code is
507
+ * Ajax.org B.V.
508
+ * Portions created by the Initial Developer are Copyright (C) 2010
509
+ * the Initial Developer. All Rights Reserved.
510
+ *
511
+ * Contributor(s):
512
+ * Chris Spencer <chris.ag.spencer AT googlemail DOT com>
513
+ *
514
+ * Alternatively, the contents of this file may be used under the terms of
515
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
516
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
517
+ * in which case the provisions of the GPL or the LGPL are applicable instead
518
+ * of those above. If you wish to allow use of your version of this file only
519
+ * under the terms of either the GPL or the LGPL, and not to allow others to
520
+ * use your version of this file under the terms of the MPL, indicate your
521
+ * decision by deleting the provisions above and replace them with the notice
522
+ * and other provisions required by the GPL or the LGPL. If you do not delete
523
+ * the provisions above, a recipient may use your version of this file under
524
+ * the terms of any one of the MPL, the GPL or the LGPL.
525
+ *
526
+ * ***** END LICENSE BLOCK ***** */
527
+
528
+ ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
529
+ "use strict";
530
+
531
+ var oop = require("../../lib/oop");
532
+ var Behaviour = require('../behaviour').Behaviour;
533
+
534
+ var CstyleBehaviour = function () {
535
+
536
+ this.add("braces", "insertion", function (state, action, editor, session, text) {
537
+ if (text == '{') {
538
+ var selection = editor.getSelectionRange();
539
+ var selected = session.doc.getTextRange(selection);
540
+ if (selected !== "") {
541
+ return {
542
+ text: '{' + selected + '}',
543
+ selection: false
544
+ }
545
+ } else {
546
+ return {
547
+ text: '{}',
548
+ selection: [1, 1]
549
+ }
550
+ }
551
+ } else if (text == '}') {
552
+ var cursor = editor.getCursorPosition();
553
+ var line = session.doc.getLine(cursor.row);
554
+ var rightChar = line.substring(cursor.column, cursor.column + 1);
555
+ if (rightChar == '}') {
556
+ var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
557
+ if (matching !== null) {
558
+ return {
559
+ text: '',
560
+ selection: [1, 1]
561
+ }
562
+ }
563
+ }
564
+ } else if (text == "\n") {
565
+ var cursor = editor.getCursorPosition();
566
+ var line = session.doc.getLine(cursor.row);
567
+ var rightChar = line.substring(cursor.column, cursor.column + 1);
568
+ if (rightChar == '}') {
569
+ var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column + 1});
570
+ if (!openBracePos)
571
+ return null;
572
+
573
+ var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString());
574
+ var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row));
575
+
576
+ return {
577
+ text: '\n' + indent + '\n' + next_indent,
578
+ selection: [1, indent.length, 1, indent.length]
579
+ }
580
+ }
581
+ }
582
+ });
583
+
584
+ this.add("braces", "deletion", function (state, action, editor, session, range) {
585
+ var selected = session.doc.getTextRange(range);
586
+ if (!range.isMultiLine() && selected == '{') {
587
+ var line = session.doc.getLine(range.start.row);
588
+ var rightChar = line.substring(range.end.column, range.end.column + 1);
589
+ if (rightChar == '}') {
590
+ range.end.column++;
591
+ return range;
592
+ }
593
+ }
594
+ });
595
+
596
+ this.add("parens", "insertion", function (state, action, editor, session, text) {
597
+ if (text == '(') {
598
+ var selection = editor.getSelectionRange();
599
+ var selected = session.doc.getTextRange(selection);
600
+ if (selected !== "") {
601
+ return {
602
+ text: '(' + selected + ')',
603
+ selection: false
604
+ }
605
+ } else {
606
+ return {
607
+ text: '()',
608
+ selection: [1, 1]
609
+ }
610
+ }
611
+ } else if (text == ')') {
612
+ var cursor = editor.getCursorPosition();
613
+ var line = session.doc.getLine(cursor.row);
614
+ var rightChar = line.substring(cursor.column, cursor.column + 1);
615
+ if (rightChar == ')') {
616
+ var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
617
+ if (matching !== null) {
618
+ return {
619
+ text: '',
620
+ selection: [1, 1]
621
+ }
622
+ }
623
+ }
624
+ }
625
+ });
626
+
627
+ this.add("parens", "deletion", function (state, action, editor, session, range) {
628
+ var selected = session.doc.getTextRange(range);
629
+ if (!range.isMultiLine() && selected == '(') {
630
+ var line = session.doc.getLine(range.start.row);
631
+ var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
632
+ if (rightChar == ')') {
633
+ range.end.column++;
634
+ return range;
635
+ }
636
+ }
637
+ });
638
+
639
+ this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
640
+ if (text == '"') {
641
+ var selection = editor.getSelectionRange();
642
+ var selected = session.doc.getTextRange(selection);
643
+ if (selected !== "") {
644
+ return {
645
+ text: '"' + selected + '"',
646
+ selection: false
647
+ }
648
+ } else {
649
+ var cursor = editor.getCursorPosition();
650
+ var line = session.doc.getLine(cursor.row);
651
+ var leftChar = line.substring(cursor.column-1, cursor.column);
652
+
653
+ // We're escaped.
654
+ if (leftChar == '\\') {
655
+ return null;
656
+ }
657
+
658
+ // Find what token we're inside.
659
+ var tokens = session.getTokens(selection.start.row, selection.start.row)[0].tokens;
660
+ var col = 0, token;
661
+ var quotepos = -1; // Track whether we're inside an open quote.
662
+
663
+ for (var x = 0; x < tokens.length; x++) {
664
+ token = tokens[x];
665
+ if (token.type == "string") {
666
+ quotepos = -1;
667
+ } else if (quotepos < 0) {
668
+ quotepos = token.value.indexOf('"');
669
+ }
670
+ if ((token.value.length + col) > selection.start.column) {
671
+ break;
672
+ }
673
+ col += tokens[x].value.length;
674
+ }
675
+
676
+ // Try and be smart about when we auto insert.
677
+ if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf('"') === token.value.length-1)))) {
678
+ return {
679
+ text: '""',
680
+ selection: [1,1]
681
+ }
682
+ } else if (token && token.type === "string") {
683
+ // Ignore input and move right one if we're typing over the closing quote.
684
+ var rightChar = line.substring(cursor.column, cursor.column + 1);
685
+ if (rightChar == '"') {
686
+ return {
687
+ text: '',
688
+ selection: [1, 1]
689
+ }
690
+ }
691
+ }
692
+ }
693
+ }
694
+ });
695
+
696
+ this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
697
+ var selected = session.doc.getTextRange(range);
698
+ if (!range.isMultiLine() && selected == '"') {
699
+ var line = session.doc.getLine(range.start.row);
700
+ var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
701
+ if (rightChar == '"') {
702
+ range.end.column++;
703
+ return range;
704
+ }
705
+ }
706
+ });
707
+
708
+ }
709
+ oop.inherits(CstyleBehaviour, Behaviour);
710
+
711
+ exports.CstyleBehaviour = CstyleBehaviour;
712
+ });/* ***** BEGIN LICENSE BLOCK *****
713
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
714
+ *
715
+ * The contents of this file are subject to the Mozilla Public License Version
716
+ * 1.1 (the "License"); you may not use this file except in compliance with
717
+ * the License. You may obtain a copy of the License at
718
+ * http://www.mozilla.org/MPL/
719
+ *
720
+ * Software distributed under the License is distributed on an "AS IS" basis,
721
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
722
+ * for the specific language governing rights and limitations under the
723
+ * License.
724
+ *
725
+ * The Original Code is Ajax.org Code Editor (ACE).
726
+ *
727
+ * The Initial Developer of the Original Code is
728
+ * Ajax.org B.V.
729
+ * Portions created by the Initial Developer are Copyright (C) 2010
730
+ * the Initial Developer. All Rights Reserved.
731
+ *
732
+ * Contributor(s):
733
+ * Fabian Jakobs <fabian AT ajax DOT org>
734
+ *
735
+ * Alternatively, the contents of this file may be used under the terms of
736
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
737
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
738
+ * in which case the provisions of the GPL or the LGPL are applicable instead
739
+ * of those above. If you wish to allow use of your version of this file only
740
+ * under the terms of either the GPL or the LGPL, and not to allow others to
741
+ * use your version of this file under the terms of the MPL, indicate your
742
+ * decision by deleting the provisions above and replace them with the notice
743
+ * and other provisions required by the GPL or the LGPL. If you do not delete
744
+ * the provisions above, a recipient may use your version of this file under
745
+ * the terms of any one of the MPL, the GPL or the LGPL.
746
+ *
747
+ * ***** END LICENSE BLOCK ***** */
748
+
749
+ ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) {
750
+ "use strict";
751
+
752
+ var oop = require("../../lib/oop");
753
+ var Range = require("../../range").Range;
754
+ var BaseFoldMode = require("./fold_mode").FoldMode;
755
+
756
+ var FoldMode = exports.FoldMode = function() {};
757
+ oop.inherits(FoldMode, BaseFoldMode);
758
+
759
+ (function() {
760
+
761
+ this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
762
+ this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
763
+
764
+ this.getFoldWidgetRange = function(session, foldStyle, row) {
765
+ var line = session.getLine(row);
766
+ var match = line.match(this.foldingStartMarker);
767
+ if (match) {
768
+ var i = match.index;
769
+
770
+ if (match[1])
771
+ return this.openingBracketBlock(session, match[1], row, i);
772
+
773
+ var range = session.getCommentFoldRange(row, i + match[0].length);
774
+ range.end.column -= 2;
775
+ return range;
776
+ }
777
+
778
+ if (foldStyle !== "markbeginend")
779
+ return;
780
+
781
+ var match = line.match(this.foldingStopMarker);
782
+ if (match) {
783
+ var i = match.index + match[0].length;
784
+
785
+ if (match[2]) {
786
+ var range = session.getCommentFoldRange(row, i);
787
+ range.end.column -= 2;
788
+ return range;
789
+ }
790
+
791
+ var end = {row: row, column: i};
792
+ var start = session.$findOpeningBracket(match[1], end);
793
+
794
+ if (!start)
795
+ return;
796
+
797
+ start.column++;
798
+ end.column--;
799
+
800
+ return Range.fromPoints(start, end);
801
+ }
802
+ };
803
+
804
+ }).call(FoldMode.prototype);
805
+
806
+ });/* ***** BEGIN LICENSE BLOCK *****
807
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
808
+ *
809
+ * The contents of this file are subject to the Mozilla Public License Version
810
+ * 1.1 (the "License"); you may not use this file except in compliance with
811
+ * the License. You may obtain a copy of the License at
812
+ * http://www.mozilla.org/MPL/
813
+ *
814
+ * Software distributed under the License is distributed on an "AS IS" basis,
815
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
816
+ * for the specific language governing rights and limitations under the
817
+ * License.
818
+ *
819
+ * The Original Code is Ajax.org Code Editor (ACE).
820
+ *
821
+ * The Initial Developer of the Original Code is
822
+ * Ajax.org B.V.
823
+ * Portions created by the Initial Developer are Copyright (C) 2010
824
+ * the Initial Developer. All Rights Reserved.
825
+ *
826
+ * Contributor(s):
827
+ * Fabian Jakobs <fabian AT ajax DOT org>
828
+ *
829
+ * Alternatively, the contents of this file may be used under the terms of
830
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
831
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
832
+ * in which case the provisions of the GPL or the LGPL are applicable instead
833
+ * of those above. If you wish to allow use of your version of this file only
834
+ * under the terms of either the GPL or the LGPL, and not to allow others to
835
+ * use your version of this file under the terms of the MPL, indicate your
836
+ * decision by deleting the provisions above and replace them with the notice
837
+ * and other provisions required by the GPL or the LGPL. If you do not delete
838
+ * the provisions above, a recipient may use your version of this file under
839
+ * the terms of any one of the MPL, the GPL or the LGPL.
840
+ *
841
+ * ***** END LICENSE BLOCK ***** */
842
+
843
+ ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
844
+ "use strict";
845
+
846
+ var Range = require("../../range").Range;
847
+
848
+ var FoldMode = exports.FoldMode = function() {};
849
+
850
+ (function() {
851
+
852
+ this.foldingStartMarker = null;
853
+ this.foldingStopMarker = null;
854
+
855
+ // must return "" if there's no fold, to enable caching
856
+ this.getFoldWidget = function(session, foldStyle, row) {
857
+ var line = session.getLine(row);
858
+ if (this.foldingStartMarker.test(line))
859
+ return "start";
860
+ if (foldStyle == "markbeginend"
861
+ && this.foldingStopMarker
862
+ && this.foldingStopMarker.test(line))
863
+ return "end";
864
+ return "";
865
+ };
866
+
867
+ this.getFoldWidgetRange = function(session, foldStyle, row) {
868
+ return null;
869
+ };
870
+
871
+ this.indentationBlock = function(session, row, column) {
872
+ var re = /^\s*/;
873
+ var startRow = row;
874
+ var endRow = row;
875
+ var line = session.getLine(row);
876
+ var startColumn = column || line.length;
877
+ var startLevel = line.match(re)[0].length;
878
+ var maxRow = session.getLength()
879
+
880
+ while (++row < maxRow) {
881
+ line = session.getLine(row);
882
+ var level = line.match(re)[0].length;
883
+
884
+ if (level == line.length)
885
+ continue;
886
+
887
+ if (level <= startLevel)
888
+ break;
889
+
890
+ endRow = row;
891
+ }
892
+
893
+ if (endRow > startRow) {
894
+ var endColumn = session.getLine(endRow).length;
895
+ return new Range(startRow, startColumn, endRow, endColumn);
896
+ }
897
+ };
898
+
899
+ this.openingBracketBlock = function(session, bracket, row, column) {
900
+ var start = {row: row, column: column + 1};
901
+ var end = session.$findClosingBracket(bracket, start);
902
+ if (!end)
903
+ return;
904
+
905
+ var fw = session.foldWidgets[end.row];
906
+ if (fw == null)
907
+ fw = this.getFoldWidget(session, end.row);
908
+
909
+ if (fw == "start") {
910
+ end.row --;
911
+ end.column = session.getLine(end.row).length;
912
+ }
913
+ return Range.fromPoints(start, end);
914
+ };
915
+
916
+ }).call(FoldMode.prototype);
917
+
918
+ });