ace-rails-ap 0.0.2 → 0.0.3

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