bedrock_sass 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (534) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -5
  3. data/assets/_vendor/ace/ace.js +21635 -0
  4. data/assets/_vendor/ace/ext-beautify.js +318 -0
  5. data/assets/_vendor/ace/ext-elastic_tabstops_lite.js +277 -0
  6. data/assets/_vendor/ace/ext-emmet.js +1226 -0
  7. data/assets/_vendor/ace/ext-error_marker.js +10 -0
  8. data/assets/_vendor/ace/ext-keybinding_menu.js +189 -0
  9. data/assets/_vendor/ace/ext-language_tools.js +1997 -0
  10. data/assets/_vendor/ace/ext-linking.js +65 -0
  11. data/assets/_vendor/ace/ext-modelist.js +228 -0
  12. data/assets/_vendor/ace/ext-options.js +750 -0
  13. data/assets/_vendor/ace/ext-rtl.js +110 -0
  14. data/assets/_vendor/ace/ext-searchbox.js +512 -0
  15. data/assets/_vendor/ace/ext-settings_menu.js +771 -0
  16. data/assets/_vendor/ace/ext-spellcheck.js +75 -0
  17. data/assets/_vendor/ace/ext-split.js +208 -0
  18. data/assets/_vendor/ace/ext-static_highlight.js +226 -0
  19. data/assets/_vendor/ace/ext-statusbar.js +57 -0
  20. data/assets/_vendor/ace/ext-textarea.js +567 -0
  21. data/assets/_vendor/ace/ext-themelist.js +67 -0
  22. data/assets/_vendor/ace/ext-whitespace.js +210 -0
  23. data/assets/_vendor/ace/keybinding-emacs.js +1165 -0
  24. data/assets/_vendor/ace/keybinding-vim.js +5673 -0
  25. data/assets/_vendor/ace/mode-abap.js +222 -0
  26. data/assets/_vendor/ace/mode-abc.js +267 -0
  27. data/assets/_vendor/ace/mode-actionscript.js +274 -0
  28. data/assets/_vendor/ace/mode-ada.js +138 -0
  29. data/assets/_vendor/ace/mode-apache_conf.js +363 -0
  30. data/assets/_vendor/ace/mode-applescript.js +279 -0
  31. data/assets/_vendor/ace/mode-asciidoc.js +349 -0
  32. data/assets/_vendor/ace/mode-asl.js +422 -0
  33. data/assets/_vendor/ace/mode-assembly_x86.js +193 -0
  34. data/assets/_vendor/ace/mode-autohotkey.js +243 -0
  35. data/assets/_vendor/ace/mode-batchfile.js +230 -0
  36. data/assets/_vendor/ace/mode-bro.js +334 -0
  37. data/assets/_vendor/ace/mode-c9search.js +294 -0
  38. data/assets/_vendor/ace/mode-c_cpp.js +502 -0
  39. data/assets/_vendor/ace/mode-cirru.js +211 -0
  40. data/assets/_vendor/ace/mode-clojure.js +314 -0
  41. data/assets/_vendor/ace/mode-cobol.js +102 -0
  42. data/assets/_vendor/ace/mode-coffee.js +400 -0
  43. data/assets/_vendor/ace/mode-coldfusion.js +2596 -0
  44. data/assets/_vendor/ace/mode-csharp.js +502 -0
  45. data/assets/_vendor/ace/mode-csound_document.js +3749 -0
  46. data/assets/_vendor/ace/mode-csound_orchestra.js +2687 -0
  47. data/assets/_vendor/ace/mode-csound_score.js +454 -0
  48. data/assets/_vendor/ace/mode-csp.js +60 -0
  49. data/assets/_vendor/ace/mode-css.js +723 -0
  50. data/assets/_vendor/ace/mode-curly.js +2564 -0
  51. data/assets/_vendor/ace/mode-d.js +520 -0
  52. data/assets/_vendor/ace/mode-dart.js +703 -0
  53. data/assets/_vendor/ace/mode-diff.js +146 -0
  54. data/assets/_vendor/ace/mode-django.js +2594 -0
  55. data/assets/_vendor/ace/mode-dockerfile.js +498 -0
  56. data/assets/_vendor/ace/mode-dot.js +418 -0
  57. data/assets/_vendor/ace/mode-drools.js +496 -0
  58. data/assets/_vendor/ace/mode-edifact.js +165 -0
  59. data/assets/_vendor/ace/mode-eiffel.js +136 -0
  60. data/assets/_vendor/ace/mode-ejs.js +3026 -0
  61. data/assets/_vendor/ace/mode-elixir.js +501 -0
  62. data/assets/_vendor/ace/mode-elm.js +307 -0
  63. data/assets/_vendor/ace/mode-erlang.js +1009 -0
  64. data/assets/_vendor/ace/mode-forth.js +297 -0
  65. data/assets/_vendor/ace/mode-fortran.js +431 -0
  66. data/assets/_vendor/ace/mode-fsharp.js +314 -0
  67. data/assets/_vendor/ace/mode-ftl.js +1192 -0
  68. data/assets/_vendor/ace/mode-gcode.js +94 -0
  69. data/assets/_vendor/ace/mode-gherkin.js +172 -0
  70. data/assets/_vendor/ace/mode-gitignore.js +60 -0
  71. data/assets/_vendor/ace/mode-glsl.js +579 -0
  72. data/assets/_vendor/ace/mode-gobstones.js +929 -0
  73. data/assets/_vendor/ace/mode-golang.js +414 -0
  74. data/assets/_vendor/ace/mode-graphqlschema.js +214 -0
  75. data/assets/_vendor/ace/mode-groovy.js +986 -0
  76. data/assets/_vendor/ace/mode-haml.js +1555 -0
  77. data/assets/_vendor/ace/mode-handlebars.js +2622 -0
  78. data/assets/_vendor/ace/mode-haskell.js +379 -0
  79. data/assets/_vendor/ace/mode-haskell_cabal.js +142 -0
  80. data/assets/_vendor/ace/mode-haxe.js +386 -0
  81. data/assets/_vendor/ace/mode-hjson.js +353 -0
  82. data/assets/_vendor/ace/mode-html.js +2509 -0
  83. data/assets/_vendor/ace/mode-html_elixir.js +3087 -0
  84. data/assets/_vendor/ace/mode-html_ruby.js +3043 -0
  85. data/assets/_vendor/ace/mode-ini.js +163 -0
  86. data/assets/_vendor/ace/mode-io.js +253 -0
  87. data/assets/_vendor/ace/mode-jack.js +347 -0
  88. data/assets/_vendor/ace/mode-jade.js +2126 -0
  89. data/assets/_vendor/ace/mode-java.js +975 -0
  90. data/assets/_vendor/ace/mode-javascript.js +797 -0
  91. data/assets/_vendor/ace/mode-json.js +327 -0
  92. data/assets/_vendor/ace/mode-jsoniq.js +4940 -0
  93. data/assets/_vendor/ace/mode-jsp.js +1430 -0
  94. data/assets/_vendor/ace/mode-jssm.js +325 -0
  95. data/assets/_vendor/ace/mode-jsx.js +412 -0
  96. data/assets/_vendor/ace/mode-julia.js +303 -0
  97. data/assets/_vendor/ace/mode-kotlin.js +795 -0
  98. data/assets/_vendor/ace/mode-latex.js +297 -0
  99. data/assets/_vendor/ace/mode-less.js +841 -0
  100. data/assets/_vendor/ace/mode-liquid.js +1193 -0
  101. data/assets/_vendor/ace/mode-lisp.js +112 -0
  102. data/assets/_vendor/ace/mode-livescript.js +280 -0
  103. data/assets/_vendor/ace/mode-logiql.js +317 -0
  104. data/assets/_vendor/ace/mode-lsl.js +343 -0
  105. data/assets/_vendor/ace/mode-lua.js +432 -0
  106. data/assets/_vendor/ace/mode-luapage.js +3007 -0
  107. data/assets/_vendor/ace/mode-lucene.js +87 -0
  108. data/assets/_vendor/ace/mode-makefile.js +410 -0
  109. data/assets/_vendor/ace/mode-markdown.js +3189 -0
  110. data/assets/_vendor/ace/mode-mask.js +1802 -0
  111. data/assets/_vendor/ace/mode-matlab.js +264 -0
  112. data/assets/_vendor/ace/mode-maze.js +291 -0
  113. data/assets/_vendor/ace/mode-mel.js +263 -0
  114. data/assets/_vendor/ace/mode-mixal.js +123 -0
  115. data/assets/_vendor/ace/mode-mushcode.js +681 -0
  116. data/assets/_vendor/ace/mode-mysql.js +168 -0
  117. data/assets/_vendor/ace/mode-nix.js +646 -0
  118. data/assets/_vendor/ace/mode-nsis.js +312 -0
  119. data/assets/_vendor/ace/mode-objectivec.js +739 -0
  120. data/assets/_vendor/ace/mode-ocaml.js +422 -0
  121. data/assets/_vendor/ace/mode-pascal.js +205 -0
  122. data/assets/_vendor/ace/mode-perl.js +380 -0
  123. data/assets/_vendor/ace/mode-pgsql.js +1508 -0
  124. data/assets/_vendor/ace/mode-php.js +13088 -0
  125. data/assets/_vendor/ace/mode-php_laravel_blade.js +13289 -0
  126. data/assets/_vendor/ace/mode-pig.js +310 -0
  127. data/assets/_vendor/ace/mode-plain_text.js +33 -0
  128. data/assets/_vendor/ace/mode-powershell.js +418 -0
  129. data/assets/_vendor/ace/mode-praat.js +478 -0
  130. data/assets/_vendor/ace/mode-prolog.js +371 -0
  131. data/assets/_vendor/ace/mode-properties.js +81 -0
  132. data/assets/_vendor/ace/mode-protobuf.js +592 -0
  133. data/assets/_vendor/ace/mode-puppet.js +370 -0
  134. data/assets/_vendor/ace/mode-python.js +273 -0
  135. data/assets/_vendor/ace/mode-r.js +310 -0
  136. data/assets/_vendor/ace/mode-razor.js +2869 -0
  137. data/assets/_vendor/ace/mode-rdoc.js +243 -0
  138. data/assets/_vendor/ace/mode-red.js +450 -0
  139. data/assets/_vendor/ace/mode-redshift.js +361 -0
  140. data/assets/_vendor/ace/mode-rhtml.js +2806 -0
  141. data/assets/_vendor/ace/mode-rst.js +257 -0
  142. data/assets/_vendor/ace/mode-ruby.js +497 -0
  143. data/assets/_vendor/ace/mode-rust.js +279 -0
  144. data/assets/_vendor/ace/mode-sass.js +441 -0
  145. data/assets/_vendor/ace/mode-scad.js +414 -0
  146. data/assets/_vendor/ace/mode-scala.js +982 -0
  147. data/assets/_vendor/ace/mode-scheme.js +232 -0
  148. data/assets/_vendor/ace/mode-scss.js +606 -0
  149. data/assets/_vendor/ace/mode-sh.js +447 -0
  150. data/assets/_vendor/ace/mode-sjs.js +1014 -0
  151. data/assets/_vendor/ace/mode-slim.js +4736 -0
  152. data/assets/_vendor/ace/mode-smarty.js +2635 -0
  153. data/assets/_vendor/ace/mode-snippets.js +207 -0
  154. data/assets/_vendor/ace/mode-soy_template.js +2847 -0
  155. data/assets/_vendor/ace/mode-space.js +168 -0
  156. data/assets/_vendor/ace/mode-sparql.js +320 -0
  157. data/assets/_vendor/ace/mode-sql.js +111 -0
  158. data/assets/_vendor/ace/mode-sqlserver.js +444 -0
  159. data/assets/_vendor/ace/mode-stylus.js +471 -0
  160. data/assets/_vendor/ace/mode-svg.js +1581 -0
  161. data/assets/_vendor/ace/mode-swift.js +390 -0
  162. data/assets/_vendor/ace/mode-tcl.js +383 -0
  163. data/assets/_vendor/ace/mode-terraform.js +398 -0
  164. data/assets/_vendor/ace/mode-tex.js +159 -0
  165. data/assets/_vendor/ace/mode-text.js +10 -0
  166. data/assets/_vendor/ace/mode-textile.js +150 -0
  167. data/assets/_vendor/ace/mode-toml.js +154 -0
  168. data/assets/_vendor/ace/mode-tsx.js +887 -0
  169. data/assets/_vendor/ace/mode-turtle.js +296 -0
  170. data/assets/_vendor/ace/mode-twig.js +2693 -0
  171. data/assets/_vendor/ace/mode-typescript.js +868 -0
  172. data/assets/_vendor/ace/mode-vala.js +676 -0
  173. data/assets/_vendor/ace/mode-vbscript.js +207 -0
  174. data/assets/_vendor/ace/mode-velocity.js +2790 -0
  175. data/assets/_vendor/ace/mode-verilog.js +119 -0
  176. data/assets/_vendor/ace/mode-vhdl.js +118 -0
  177. data/assets/_vendor/ace/mode-wollok.js +911 -0
  178. data/assets/_vendor/ace/mode-xml.js +677 -0
  179. data/assets/_vendor/ace/mode-xquery.js +4922 -0
  180. data/assets/_vendor/ace/mode-yaml.js +300 -0
  181. data/assets/_vendor/ace/snippets/abap.js +15 -0
  182. data/assets/_vendor/ace/snippets/abc.js +46 -0
  183. data/assets/_vendor/ace/snippets/actionscript.js +172 -0
  184. data/assets/_vendor/ace/snippets/ada.js +15 -0
  185. data/assets/_vendor/ace/snippets/apache_conf.js +15 -0
  186. data/assets/_vendor/ace/snippets/applescript.js +15 -0
  187. data/assets/_vendor/ace/snippets/asciidoc.js +15 -0
  188. data/assets/_vendor/ace/snippets/asl.js +14 -0
  189. data/assets/_vendor/ace/snippets/assembly_x86.js +15 -0
  190. data/assets/_vendor/ace/snippets/autohotkey.js +15 -0
  191. data/assets/_vendor/ace/snippets/batchfile.js +15 -0
  192. data/assets/_vendor/ace/snippets/bro.js +15 -0
  193. data/assets/_vendor/ace/snippets/c9search.js +15 -0
  194. data/assets/_vendor/ace/snippets/c_cpp.js +146 -0
  195. data/assets/_vendor/ace/snippets/cirru.js +15 -0
  196. data/assets/_vendor/ace/snippets/clojure.js +105 -0
  197. data/assets/_vendor/ace/snippets/cobol.js +15 -0
  198. data/assets/_vendor/ace/snippets/coffee.js +110 -0
  199. data/assets/_vendor/ace/snippets/coldfusion.js +15 -0
  200. data/assets/_vendor/ace/snippets/csharp.js +15 -0
  201. data/assets/_vendor/ace/snippets/csound_document.js +25 -0
  202. data/assets/_vendor/ace/snippets/csound_orchestra.js +62 -0
  203. data/assets/_vendor/ace/snippets/csound_score.js +15 -0
  204. data/assets/_vendor/ace/snippets/csp.js +15 -0
  205. data/assets/_vendor/ace/snippets/css.js +982 -0
  206. data/assets/_vendor/ace/snippets/curly.js +15 -0
  207. data/assets/_vendor/ace/snippets/d.js +15 -0
  208. data/assets/_vendor/ace/snippets/dart.js +98 -0
  209. data/assets/_vendor/ace/snippets/diff.js +26 -0
  210. data/assets/_vendor/ace/snippets/django.js +123 -0
  211. data/assets/_vendor/ace/snippets/dockerfile.js +15 -0
  212. data/assets/_vendor/ace/snippets/dot.js +15 -0
  213. data/assets/_vendor/ace/snippets/drools.js +34 -0
  214. data/assets/_vendor/ace/snippets/edifact.js +255 -0
  215. data/assets/_vendor/ace/snippets/eiffel.js +15 -0
  216. data/assets/_vendor/ace/snippets/ejs.js +15 -0
  217. data/assets/_vendor/ace/snippets/elixir.js +15 -0
  218. data/assets/_vendor/ace/snippets/elm.js +15 -0
  219. data/assets/_vendor/ace/snippets/erlang.js +175 -0
  220. data/assets/_vendor/ace/snippets/forth.js +15 -0
  221. data/assets/_vendor/ace/snippets/fortran.js +15 -0
  222. data/assets/_vendor/ace/snippets/fsharp.js +15 -0
  223. data/assets/_vendor/ace/snippets/ftl.js +15 -0
  224. data/assets/_vendor/ace/snippets/gcode.js +15 -0
  225. data/assets/_vendor/ace/snippets/gherkin.js +15 -0
  226. data/assets/_vendor/ace/snippets/gitignore.js +15 -0
  227. data/assets/_vendor/ace/snippets/glsl.js +15 -0
  228. data/assets/_vendor/ace/snippets/gobstones.js +49 -0
  229. data/assets/_vendor/ace/snippets/golang.js +15 -0
  230. data/assets/_vendor/ace/snippets/graphqlschema.js +47 -0
  231. data/assets/_vendor/ace/snippets/groovy.js +15 -0
  232. data/assets/_vendor/ace/snippets/haml.js +35 -0
  233. data/assets/_vendor/ace/snippets/handlebars.js +15 -0
  234. data/assets/_vendor/ace/snippets/haskell.js +97 -0
  235. data/assets/_vendor/ace/snippets/haskell_cabal.js +15 -0
  236. data/assets/_vendor/ace/snippets/haxe.js +15 -0
  237. data/assets/_vendor/ace/snippets/hjson.js +15 -0
  238. data/assets/_vendor/ace/snippets/html.js +870 -0
  239. data/assets/_vendor/ace/snippets/html_elixir.js +15 -0
  240. data/assets/_vendor/ace/snippets/html_ruby.js +15 -0
  241. data/assets/_vendor/ace/snippets/ini.js +15 -0
  242. data/assets/_vendor/ace/snippets/io.js +77 -0
  243. data/assets/_vendor/ace/snippets/jack.js +15 -0
  244. data/assets/_vendor/ace/snippets/jade.js +15 -0
  245. data/assets/_vendor/ace/snippets/java.js +255 -0
  246. data/assets/_vendor/ace/snippets/javascript.js +210 -0
  247. data/assets/_vendor/ace/snippets/json.js +15 -0
  248. data/assets/_vendor/ace/snippets/jsoniq.js +76 -0
  249. data/assets/_vendor/ace/snippets/jsp.js +114 -0
  250. data/assets/_vendor/ace/snippets/jssm.js +15 -0
  251. data/assets/_vendor/ace/snippets/jsx.js +15 -0
  252. data/assets/_vendor/ace/snippets/julia.js +15 -0
  253. data/assets/_vendor/ace/snippets/kotlin.js +15 -0
  254. data/assets/_vendor/ace/snippets/latex.js +15 -0
  255. data/assets/_vendor/ace/snippets/less.js +15 -0
  256. data/assets/_vendor/ace/snippets/liquid.js +15 -0
  257. data/assets/_vendor/ace/snippets/lisp.js +15 -0
  258. data/assets/_vendor/ace/snippets/livescript.js +15 -0
  259. data/assets/_vendor/ace/snippets/logiql.js +15 -0
  260. data/assets/_vendor/ace/snippets/lsl.js +1247 -0
  261. data/assets/_vendor/ace/snippets/lua.js +36 -0
  262. data/assets/_vendor/ace/snippets/luapage.js +15 -0
  263. data/assets/_vendor/ace/snippets/lucene.js +15 -0
  264. data/assets/_vendor/ace/snippets/makefile.js +19 -0
  265. data/assets/_vendor/ace/snippets/markdown.js +103 -0
  266. data/assets/_vendor/ace/snippets/mask.js +15 -0
  267. data/assets/_vendor/ace/snippets/matlab.js +15 -0
  268. data/assets/_vendor/ace/snippets/maze.js +24 -0
  269. data/assets/_vendor/ace/snippets/mel.js +15 -0
  270. data/assets/_vendor/ace/snippets/mixal.js +15 -0
  271. data/assets/_vendor/ace/snippets/mushcode.js +15 -0
  272. data/assets/_vendor/ace/snippets/mysql.js +15 -0
  273. data/assets/_vendor/ace/snippets/nix.js +15 -0
  274. data/assets/_vendor/ace/snippets/nsis.js +15 -0
  275. data/assets/_vendor/ace/snippets/objectivec.js +15 -0
  276. data/assets/_vendor/ace/snippets/ocaml.js +15 -0
  277. data/assets/_vendor/ace/snippets/pascal.js +15 -0
  278. data/assets/_vendor/ace/snippets/perl.js +362 -0
  279. data/assets/_vendor/ace/snippets/pgsql.js +15 -0
  280. data/assets/_vendor/ace/snippets/php.js +398 -0
  281. data/assets/_vendor/ace/snippets/php_laravel_blade.js +15 -0
  282. data/assets/_vendor/ace/snippets/pig.js +15 -0
  283. data/assets/_vendor/ace/snippets/plain_text.js +15 -0
  284. data/assets/_vendor/ace/snippets/powershell.js +15 -0
  285. data/assets/_vendor/ace/snippets/praat.js +15 -0
  286. data/assets/_vendor/ace/snippets/prolog.js +15 -0
  287. data/assets/_vendor/ace/snippets/properties.js +15 -0
  288. data/assets/_vendor/ace/snippets/protobuf.js +15 -0
  289. data/assets/_vendor/ace/snippets/puppet.js +15 -0
  290. data/assets/_vendor/ace/snippets/python.js +173 -0
  291. data/assets/_vendor/ace/snippets/r.js +136 -0
  292. data/assets/_vendor/ace/snippets/razor.js +18 -0
  293. data/assets/_vendor/ace/snippets/rdoc.js +15 -0
  294. data/assets/_vendor/ace/snippets/red.js +15 -0
  295. data/assets/_vendor/ace/snippets/redshift.js +15 -0
  296. data/assets/_vendor/ace/snippets/rhtml.js +15 -0
  297. data/assets/_vendor/ace/snippets/rst.js +37 -0
  298. data/assets/_vendor/ace/snippets/ruby.js +943 -0
  299. data/assets/_vendor/ace/snippets/rust.js +15 -0
  300. data/assets/_vendor/ace/snippets/sass.js +15 -0
  301. data/assets/_vendor/ace/snippets/scad.js +15 -0
  302. data/assets/_vendor/ace/snippets/scala.js +15 -0
  303. data/assets/_vendor/ace/snippets/scheme.js +15 -0
  304. data/assets/_vendor/ace/snippets/scss.js +15 -0
  305. data/assets/_vendor/ace/snippets/sh.js +98 -0
  306. data/assets/_vendor/ace/snippets/sjs.js +15 -0
  307. data/assets/_vendor/ace/snippets/slim.js +15 -0
  308. data/assets/_vendor/ace/snippets/smarty.js +15 -0
  309. data/assets/_vendor/ace/snippets/snippets.js +24 -0
  310. data/assets/_vendor/ace/snippets/soy_template.js +15 -0
  311. data/assets/_vendor/ace/snippets/space.js +15 -0
  312. data/assets/_vendor/ace/snippets/sparql.js +15 -0
  313. data/assets/_vendor/ace/snippets/sql.js +41 -0
  314. data/assets/_vendor/ace/snippets/sqlserver.js +84 -0
  315. data/assets/_vendor/ace/snippets/stylus.js +15 -0
  316. data/assets/_vendor/ace/snippets/svg.js +15 -0
  317. data/assets/_vendor/ace/snippets/swift.js +15 -0
  318. data/assets/_vendor/ace/snippets/tcl.js +107 -0
  319. data/assets/_vendor/ace/snippets/terraform.js +15 -0
  320. data/assets/_vendor/ace/snippets/tex.js +205 -0
  321. data/assets/_vendor/ace/snippets/text.js +15 -0
  322. data/assets/_vendor/ace/snippets/textile.js +45 -0
  323. data/assets/_vendor/ace/snippets/toml.js +15 -0
  324. data/assets/_vendor/ace/snippets/tsx.js +15 -0
  325. data/assets/_vendor/ace/snippets/turtle.js +15 -0
  326. data/assets/_vendor/ace/snippets/twig.js +15 -0
  327. data/assets/_vendor/ace/snippets/typescript.js +15 -0
  328. data/assets/_vendor/ace/snippets/vala.js +201 -0
  329. data/assets/_vendor/ace/snippets/vbscript.js +15 -0
  330. data/assets/_vendor/ace/snippets/velocity.js +44 -0
  331. data/assets/_vendor/ace/snippets/verilog.js +15 -0
  332. data/assets/_vendor/ace/snippets/vhdl.js +15 -0
  333. data/assets/_vendor/ace/snippets/wollok.js +99 -0
  334. data/assets/_vendor/ace/snippets/xml.js +15 -0
  335. data/assets/_vendor/ace/snippets/xquery.js +76 -0
  336. data/assets/_vendor/ace/snippets/yaml.js +15 -0
  337. data/assets/_vendor/ace/theme-ambiance.js +185 -0
  338. data/assets/_vendor/ace/theme-chaos.js +164 -0
  339. data/assets/_vendor/ace/theme-chrome.js +136 -0
  340. data/assets/_vendor/ace/theme-clouds.js +103 -0
  341. data/assets/_vendor/ace/theme-clouds_midnight.js +104 -0
  342. data/assets/_vendor/ace/theme-cobalt.js +121 -0
  343. data/assets/_vendor/ace/theme-crimson_editor.js +126 -0
  344. data/assets/_vendor/ace/theme-dawn.js +116 -0
  345. data/assets/_vendor/ace/theme-dracula.js +136 -0
  346. data/assets/_vendor/ace/theme-dreamweaver.js +149 -0
  347. data/assets/_vendor/ace/theme-eclipse.js +106 -0
  348. data/assets/_vendor/ace/theme-github.js +110 -0
  349. data/assets/_vendor/ace/theme-gob.js +120 -0
  350. data/assets/_vendor/ace/theme-gruvbox.js +90 -0
  351. data/assets/_vendor/ace/theme-idle_fingers.js +104 -0
  352. data/assets/_vendor/ace/theme-iplastic.js +129 -0
  353. data/assets/_vendor/ace/theme-katzenmilch.js +129 -0
  354. data/assets/_vendor/ace/theme-kr_theme.js +112 -0
  355. data/assets/_vendor/ace/theme-kuroir.js +69 -0
  356. data/assets/_vendor/ace/theme-merbivore.js +103 -0
  357. data/assets/_vendor/ace/theme-merbivore_soft.js +104 -0
  358. data/assets/_vendor/ace/theme-mono_industrial.js +115 -0
  359. data/assets/_vendor/ace/theme-monokai.js +113 -0
  360. data/assets/_vendor/ace/theme-pastel_on_dark.js +116 -0
  361. data/assets/_vendor/ace/theme-solarized_dark.js +96 -0
  362. data/assets/_vendor/ace/theme-solarized_light.js +99 -0
  363. data/assets/_vendor/ace/theme-sqlserver.js +146 -0
  364. data/assets/_vendor/ace/theme-terminal.js +122 -0
  365. data/assets/_vendor/ace/theme-textmate.js +138 -0
  366. data/assets/_vendor/ace/theme-tomorrow.js +116 -0
  367. data/assets/_vendor/ace/theme-tomorrow_night.js +116 -0
  368. data/assets/_vendor/ace/theme-tomorrow_night_blue.js +114 -0
  369. data/assets/_vendor/ace/theme-tomorrow_night_bright.js +129 -0
  370. data/assets/_vendor/ace/theme-tomorrow_night_eighties.js +116 -0
  371. data/assets/_vendor/ace/theme-twilight.js +117 -0
  372. data/assets/_vendor/ace/theme-vibrant_ink.js +102 -0
  373. data/assets/_vendor/ace/theme-xcode.js +96 -0
  374. data/assets/_vendor/ace/worker-coffee.js +2165 -0
  375. data/assets/_vendor/ace/worker-css.js +8764 -0
  376. data/assets/_vendor/ace/worker-html.js +11614 -0
  377. data/assets/_vendor/ace/worker-javascript.js +12491 -0
  378. data/assets/_vendor/ace/worker-json.js +2396 -0
  379. data/assets/_vendor/ace/worker-lua.js +3637 -0
  380. data/assets/_vendor/ace/worker-php.js +4313 -0
  381. data/assets/_vendor/ace/worker-xml.js +3899 -0
  382. data/assets/_vendor/ace/worker-xquery.js +70688 -0
  383. data/assets/_vendor/motion-ui/_settings.scss +1 -0
  384. data/assets/_vendor/motion-ui/effects/_fade.scss +1 -4
  385. data/assets/_vendor/motion-ui/effects/_hinge.scss +4 -3
  386. data/assets/_vendor/motion-ui/effects/_shake.scss +1 -1
  387. data/assets/_vendor/motion-ui/effects/_slide.scss +4 -3
  388. data/assets/_vendor/motion-ui/effects/_spin.scss +4 -3
  389. data/assets/_vendor/motion-ui/effects/_wiggle.scss +1 -1
  390. data/assets/_vendor/motion-ui/effects/_zoom.scss +2 -2
  391. data/assets/_vendor/motion-ui/motion-ui.scss +2 -0
  392. data/assets/_vendor/motion-ui/transitions/_fade.scss +6 -4
  393. data/assets/_vendor/motion-ui/transitions/_hinge.scss +3 -2
  394. data/assets/_vendor/motion-ui/transitions/_slide.scss +3 -2
  395. data/assets/_vendor/motion-ui/transitions/_spin.scss +2 -1
  396. data/assets/_vendor/motion-ui/transitions/_zoom.scss +6 -4
  397. data/assets/_vendor/motion-ui/util/_animation.scss +1 -1
  398. data/assets/_vendor/motion-ui/util/_args.scss +2 -2
  399. data/assets/_vendor/motion-ui/util/_function.scss +94 -0
  400. data/assets/_vendor/motion-ui/util/_keyframe.scss +5 -5
  401. data/assets/_vendor/motion-ui/util/_series.scss +20 -17
  402. data/assets/_vendor/motion-ui/util/_string.scss +36 -0
  403. data/assets/_vendor/tinymce/plugins/advlist/plugin.js +136 -404
  404. data/assets/_vendor/tinymce/plugins/advlist/plugin.min.js +1 -1
  405. data/assets/_vendor/tinymce/plugins/anchor/plugin.js +103 -323
  406. data/assets/_vendor/tinymce/plugins/anchor/plugin.min.js +1 -1
  407. data/assets/_vendor/tinymce/plugins/autolink/plugin.js +153 -377
  408. data/assets/_vendor/tinymce/plugins/autolink/plugin.min.js +1 -1
  409. data/assets/_vendor/tinymce/plugins/autoresize/plugin.js +145 -427
  410. data/assets/_vendor/tinymce/plugins/autoresize/plugin.min.js +1 -1
  411. data/assets/_vendor/tinymce/plugins/autosave/plugin.js +197 -579
  412. data/assets/_vendor/tinymce/plugins/autosave/plugin.min.js +1 -1
  413. data/assets/_vendor/tinymce/plugins/bbcode/plugin.js +88 -251
  414. data/assets/_vendor/tinymce/plugins/bbcode/plugin.min.js +1 -1
  415. data/assets/_vendor/tinymce/plugins/charmap/plugin.js +1243 -818
  416. data/assets/_vendor/tinymce/plugins/charmap/plugin.min.js +1 -1
  417. data/assets/_vendor/tinymce/plugins/code/plugin.js +82 -326
  418. data/assets/_vendor/tinymce/plugins/code/plugin.min.js +1 -1
  419. data/assets/_vendor/tinymce/plugins/codesample/plugin.js +829 -1444
  420. data/assets/_vendor/tinymce/plugins/codesample/plugin.min.js +1 -1
  421. data/assets/_vendor/tinymce/plugins/colorpicker/plugin.js +111 -257
  422. data/assets/_vendor/tinymce/plugins/colorpicker/plugin.min.js +1 -1
  423. data/assets/_vendor/tinymce/plugins/contextmenu/plugin.js +141 -469
  424. data/assets/_vendor/tinymce/plugins/contextmenu/plugin.min.js +1 -1
  425. data/assets/_vendor/tinymce/plugins/directionality/plugin.js +57 -261
  426. data/assets/_vendor/tinymce/plugins/directionality/plugin.min.js +1 -1
  427. data/assets/_vendor/tinymce/plugins/emoticons/plugin.js +78 -247
  428. data/assets/_vendor/tinymce/plugins/emoticons/plugin.min.js +1 -1
  429. data/assets/_vendor/tinymce/plugins/fullpage/plugin.js +463 -906
  430. data/assets/_vendor/tinymce/plugins/fullpage/plugin.min.js +1 -1
  431. data/assets/_vendor/tinymce/plugins/fullscreen/plugin.js +149 -427
  432. data/assets/_vendor/tinymce/plugins/fullscreen/plugin.min.js +1 -1
  433. data/assets/_vendor/tinymce/plugins/help/plugin.js +634 -1434
  434. data/assets/_vendor/tinymce/plugins/help/plugin.min.js +1 -1
  435. data/assets/_vendor/tinymce/plugins/hr/plugin.js +29 -185
  436. data/assets/_vendor/tinymce/plugins/hr/plugin.min.js +1 -1
  437. data/assets/_vendor/tinymce/plugins/image/plugin.js +1147 -1508
  438. data/assets/_vendor/tinymce/plugins/image/plugin.min.js +1 -1
  439. data/assets/_vendor/tinymce/plugins/imagetools/plugin.js +3319 -4079
  440. data/assets/_vendor/tinymce/plugins/imagetools/plugin.min.js +1 -2
  441. data/assets/_vendor/tinymce/plugins/importcss/plugin.js +230 -543
  442. data/assets/_vendor/tinymce/plugins/importcss/plugin.min.js +1 -1
  443. data/assets/_vendor/tinymce/plugins/insertdatetime/plugin.js +151 -460
  444. data/assets/_vendor/tinymce/plugins/insertdatetime/plugin.min.js +1 -1
  445. data/assets/_vendor/tinymce/plugins/legacyoutput/plugin.js +204 -379
  446. data/assets/_vendor/tinymce/plugins/legacyoutput/plugin.min.js +1 -1
  447. data/assets/_vendor/tinymce/plugins/link/plugin.js +644 -1162
  448. data/assets/_vendor/tinymce/plugins/link/plugin.min.js +1 -1
  449. data/assets/_vendor/tinymce/plugins/lists/plugin.js +1005 -1875
  450. data/assets/_vendor/tinymce/plugins/lists/plugin.min.js +1 -1
  451. data/assets/_vendor/tinymce/plugins/media/plugin.js +1066 -1926
  452. data/assets/_vendor/tinymce/plugins/media/plugin.min.js +1 -1
  453. data/assets/_vendor/tinymce/plugins/nonbreaking/plugin.js +70 -298
  454. data/assets/_vendor/tinymce/plugins/nonbreaking/plugin.min.js +1 -1
  455. data/assets/_vendor/tinymce/plugins/noneditable/plugin.js +96 -294
  456. data/assets/_vendor/tinymce/plugins/noneditable/plugin.min.js +1 -1
  457. data/assets/_vendor/tinymce/plugins/pagebreak/plugin.js +92 -337
  458. data/assets/_vendor/tinymce/plugins/pagebreak/plugin.min.js +1 -1
  459. data/assets/_vendor/tinymce/plugins/paste/plugin.js +1363 -2801
  460. data/assets/_vendor/tinymce/plugins/paste/plugin.min.js +1 -1
  461. data/assets/_vendor/tinymce/plugins/preview/plugin.js +106 -393
  462. data/assets/_vendor/tinymce/plugins/preview/plugin.min.js +1 -1
  463. data/assets/_vendor/tinymce/plugins/print/plugin.js +29 -185
  464. data/assets/_vendor/tinymce/plugins/print/plugin.min.js +1 -1
  465. data/assets/_vendor/tinymce/plugins/save/plugin.js +100 -350
  466. data/assets/_vendor/tinymce/plugins/save/plugin.min.js +1 -1
  467. data/assets/_vendor/tinymce/plugins/searchreplace/plugin.js +491 -865
  468. data/assets/_vendor/tinymce/plugins/searchreplace/plugin.min.js +1 -1
  469. data/assets/_vendor/tinymce/plugins/spellchecker/plugin.js +630 -1292
  470. data/assets/_vendor/tinymce/plugins/spellchecker/plugin.min.js +1 -1
  471. data/assets/_vendor/tinymce/plugins/tabfocus/plugin.js +96 -391
  472. data/assets/_vendor/tinymce/plugins/tabfocus/plugin.min.js +1 -1
  473. data/assets/_vendor/tinymce/plugins/table/plugin.js +9537 -14920
  474. data/assets/_vendor/tinymce/plugins/table/plugin.min.js +1 -5
  475. data/assets/_vendor/tinymce/plugins/template/plugin.js +309 -771
  476. data/assets/_vendor/tinymce/plugins/template/plugin.min.js +1 -1
  477. data/assets/_vendor/tinymce/plugins/textcolor/plugin.js +319 -592
  478. data/assets/_vendor/tinymce/plugins/textcolor/plugin.min.js +1 -1
  479. data/assets/_vendor/tinymce/plugins/textpattern/plugin.js +326 -674
  480. data/assets/_vendor/tinymce/plugins/textpattern/plugin.min.js +1 -1
  481. data/assets/_vendor/tinymce/plugins/toc/plugin.js +199 -530
  482. data/assets/_vendor/tinymce/plugins/toc/plugin.min.js +1 -1
  483. data/assets/_vendor/tinymce/plugins/visualblocks/plugin.js +112 -436
  484. data/assets/_vendor/tinymce/plugins/visualblocks/plugin.min.js +1 -1
  485. data/assets/_vendor/tinymce/plugins/visualchars/plugin.js +428 -1248
  486. data/assets/_vendor/tinymce/plugins/visualchars/plugin.min.js +1 -1
  487. data/assets/_vendor/tinymce/plugins/wordcount/plugin.js +307 -699
  488. data/assets/_vendor/tinymce/plugins/wordcount/plugin.min.js +1 -1
  489. data/assets/_vendor/tinymce/skins/lightgray/content.inline.min.css +1 -1
  490. data/assets/_vendor/tinymce/skins/lightgray/content.min.css +1 -1
  491. data/assets/_vendor/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
  492. data/assets/_vendor/tinymce/skins/lightgray/fonts/tinymce.svg +1 -1
  493. data/assets/_vendor/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
  494. data/assets/_vendor/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
  495. data/assets/_vendor/tinymce/skins/lightgray/skin.min.css +1 -1
  496. data/assets/_vendor/tinymce/skins/lightgray/skin.mobile.min.css +1 -1
  497. data/assets/_vendor/tinymce/themes/inlite/theme.js +9693 -18245
  498. data/assets/_vendor/tinymce/themes/inlite/theme.min.js +1 -5
  499. data/assets/_vendor/tinymce/themes/mobile/theme.js +12629 -22467
  500. data/assets/_vendor/tinymce/themes/mobile/theme.min.js +1 -8
  501. data/assets/_vendor/tinymce/themes/modern/theme.js +9510 -17780
  502. data/assets/_vendor/tinymce/themes/modern/theme.min.js +1 -5
  503. data/assets/_vendor/tinymce/tinymce.js +25087 -42606
  504. data/assets/_vendor/yoastseo/css/_icons.scss +7 -7
  505. data/assets/_vendor/yoastseo/css/_snippet-editor.scss +1 -1
  506. data/assets/bedrock/js/bedrock.js +1 -71697
  507. data/assets/bedrock/scss/_bedrock-components.scss +20 -0
  508. data/assets/bedrock/scss/_bedrock-settings.scss +12 -4
  509. data/assets/bedrock/scss/_foundation-settings.scss +4 -2
  510. data/assets/bedrock/scss/components/ace-editor.scss +21 -0
  511. data/assets/bedrock/scss/components/attachments-grid.scss +18 -15
  512. data/assets/bedrock/scss/components/date-picker.scss +146 -0
  513. data/assets/bedrock/scss/components/dropzone-upload.scss +7 -0
  514. data/assets/bedrock/scss/components/file-input.scss +7 -0
  515. data/assets/bedrock/scss/components/file-preview.scss +36 -0
  516. data/assets/bedrock/scss/components/frame-embed.scss +23 -0
  517. data/assets/bedrock/scss/components/global.scss +27 -0
  518. data/assets/bedrock/scss/components/helper-classes.scss +1 -0
  519. data/assets/bedrock/scss/components/icon-box.scss +38 -0
  520. data/assets/bedrock/scss/components/item-list.scss +66 -0
  521. data/assets/bedrock/scss/components/lists.scss +58 -0
  522. data/assets/bedrock/scss/components/off-canvas-menu.scss +27 -15
  523. data/assets/bedrock/scss/components/place-autocomplete.scss +90 -0
  524. data/assets/bedrock/scss/components/rrule-generator.scss +102 -0
  525. data/assets/bedrock/scss/components/rrule-reveal.scss +14 -0
  526. data/assets/bedrock/scss/components/select-box.scss +1 -0
  527. data/assets/bedrock/scss/components/seo-analysis.scss +5 -0
  528. data/assets/bedrock/scss/components/textarea.scss +14 -2
  529. data/assets/bedrock/scss/components/tiny-mce-editor.scss +5 -16
  530. data/lib/bedrock_sass.rb +5 -0
  531. data/lib/bedrock_sass/version.rb +1 -1
  532. data/lib/tasks/before_assets_precompile.rake +1 -0
  533. metadata +395 -4
  534. data/CODE_OF_CONDUCT.md +0 -74
@@ -0,0 +1,67 @@
1
+ define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"], function(require, exports, module) {
2
+ "use strict";
3
+ require("ace/lib/fixoldbrowsers");
4
+
5
+ var themeData = [
6
+ ["Chrome" ],
7
+ ["Clouds" ],
8
+ ["Crimson Editor" ],
9
+ ["Dawn" ],
10
+ ["Dreamweaver" ],
11
+ ["Eclipse" ],
12
+ ["GitHub" ],
13
+ ["IPlastic" ],
14
+ ["Solarized Light"],
15
+ ["TextMate" ],
16
+ ["Tomorrow" ],
17
+ ["XCode" ],
18
+ ["Kuroir"],
19
+ ["KatzenMilch"],
20
+ ["SQL Server" ,"sqlserver" , "light"],
21
+ ["Ambiance" ,"ambiance" , "dark"],
22
+ ["Chaos" ,"chaos" , "dark"],
23
+ ["Clouds Midnight" ,"clouds_midnight" , "dark"],
24
+ ["Dracula" ,"" , "dark"],
25
+ ["Cobalt" ,"cobalt" , "dark"],
26
+ ["Gruvbox" ,"gruvbox" , "dark"],
27
+ ["Green on Black" ,"gob" , "dark"],
28
+ ["idle Fingers" ,"idle_fingers" , "dark"],
29
+ ["krTheme" ,"kr_theme" , "dark"],
30
+ ["Merbivore" ,"merbivore" , "dark"],
31
+ ["Merbivore Soft" ,"merbivore_soft" , "dark"],
32
+ ["Mono Industrial" ,"mono_industrial" , "dark"],
33
+ ["Monokai" ,"monokai" , "dark"],
34
+ ["Pastel on dark" ,"pastel_on_dark" , "dark"],
35
+ ["Solarized Dark" ,"solarized_dark" , "dark"],
36
+ ["Terminal" ,"terminal" , "dark"],
37
+ ["Tomorrow Night" ,"tomorrow_night" , "dark"],
38
+ ["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"],
39
+ ["Tomorrow Night Bright","tomorrow_night_bright" , "dark"],
40
+ ["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"],
41
+ ["Twilight" ,"twilight" , "dark"],
42
+ ["Vibrant Ink" ,"vibrant_ink" , "dark"]
43
+ ];
44
+
45
+
46
+ exports.themesByName = {};
47
+ exports.themes = themeData.map(function(data) {
48
+ var name = data[1] || data[0].replace(/ /g, "_").toLowerCase();
49
+ var theme = {
50
+ caption: data[0],
51
+ theme: "ace/theme/" + name,
52
+ isDark: data[2] == "dark",
53
+ name: name
54
+ };
55
+ exports.themesByName[name] = theme;
56
+ return theme;
57
+ });
58
+
59
+ });
60
+ (function() {
61
+ window.require(["ace/ext/themelist"], function(m) {
62
+ if (typeof module == "object" && typeof exports == "object" && module) {
63
+ module.exports = m;
64
+ }
65
+ });
66
+ })();
67
+
@@ -0,0 +1,210 @@
1
+ define("ace/ext/whitespace",["require","exports","module","ace/lib/lang"], function(require, exports, module) {
2
+ "use strict";
3
+
4
+ var lang = require("../lib/lang");
5
+ exports.$detectIndentation = function(lines, fallback) {
6
+ var stats = [];
7
+ var changes = [];
8
+ var tabIndents = 0;
9
+ var prevSpaces = 0;
10
+ var max = Math.min(lines.length, 1000);
11
+ for (var i = 0; i < max; i++) {
12
+ var line = lines[i];
13
+ if (!/^\s*[^*+\-\s]/.test(line))
14
+ continue;
15
+
16
+ if (line[0] == "\t") {
17
+ tabIndents++;
18
+ prevSpaces = -Number.MAX_VALUE;
19
+ } else {
20
+ var spaces = line.match(/^ */)[0].length;
21
+ if (spaces && line[spaces] != "\t") {
22
+ var diff = spaces - prevSpaces;
23
+ if (diff > 0 && !(prevSpaces%diff) && !(spaces%diff))
24
+ changes[diff] = (changes[diff] || 0) + 1;
25
+
26
+ stats[spaces] = (stats[spaces] || 0) + 1;
27
+ }
28
+ prevSpaces = spaces;
29
+ }
30
+ while (i < max && line[line.length - 1] == "\\")
31
+ line = lines[i++];
32
+ }
33
+
34
+ function getScore(indent) {
35
+ var score = 0;
36
+ for (var i = indent; i < stats.length; i += indent)
37
+ score += stats[i] || 0;
38
+ return score;
39
+ }
40
+
41
+ var changesTotal = changes.reduce(function(a,b){return a+b;}, 0);
42
+
43
+ var first = {score: 0, length: 0};
44
+ var spaceIndents = 0;
45
+ for (var i = 1; i < 12; i++) {
46
+ var score = getScore(i);
47
+ if (i == 1) {
48
+ spaceIndents = score;
49
+ score = stats[1] ? 0.9 : 0.8;
50
+ if (!stats.length)
51
+ score = 0;
52
+ } else
53
+ score /= spaceIndents;
54
+
55
+ if (changes[i])
56
+ score += changes[i] / changesTotal;
57
+
58
+ if (score > first.score)
59
+ first = {score: score, length: i};
60
+ }
61
+
62
+ if (first.score && first.score > 1.4)
63
+ var tabLength = first.length;
64
+
65
+ if (tabIndents > spaceIndents + 1) {
66
+ if (tabLength == 1 || spaceIndents < tabIndents / 4 || first.score < 1.8)
67
+ tabLength = undefined;
68
+ return {ch: "\t", length: tabLength};
69
+ }
70
+ if (spaceIndents > tabIndents + 1)
71
+ return {ch: " ", length: tabLength};
72
+ };
73
+
74
+ exports.detectIndentation = function(session) {
75
+ var lines = session.getLines(0, 1000);
76
+ var indent = exports.$detectIndentation(lines) || {};
77
+
78
+ if (indent.ch)
79
+ session.setUseSoftTabs(indent.ch == " ");
80
+
81
+ if (indent.length)
82
+ session.setTabSize(indent.length);
83
+ return indent;
84
+ };
85
+ exports.trimTrailingSpace = function(session, options) {
86
+ var doc = session.getDocument();
87
+ var lines = doc.getAllLines();
88
+
89
+ var min = options && options.trimEmpty ? -1 : 0;
90
+ var cursors = [], ci = -1;
91
+ if (options && options.keepCursorPosition) {
92
+ if (session.selection.rangeCount) {
93
+ session.selection.rangeList.ranges.forEach(function(x, i, ranges) {
94
+ var next = ranges[i + 1];
95
+ if (next && next.cursor.row == x.cursor.row)
96
+ return;
97
+ cursors.push(x.cursor);
98
+ });
99
+ } else {
100
+ cursors.push(session.selection.getCursor());
101
+ }
102
+ ci = 0;
103
+ }
104
+ var cursorRow = cursors[ci] && cursors[ci].row;
105
+
106
+ for (var i = 0, l=lines.length; i < l; i++) {
107
+ var line = lines[i];
108
+ var index = line.search(/\s+$/);
109
+
110
+ if (i == cursorRow) {
111
+ if (index < cursors[ci].column && index > min)
112
+ index = cursors[ci].column;
113
+ ci++;
114
+ cursorRow = cursors[ci] ? cursors[ci].row : -1;
115
+ }
116
+
117
+ if (index > min)
118
+ doc.removeInLine(i, index, line.length);
119
+ }
120
+ };
121
+
122
+ exports.convertIndentation = function(session, ch, len) {
123
+ var oldCh = session.getTabString()[0];
124
+ var oldLen = session.getTabSize();
125
+ if (!len) len = oldLen;
126
+ if (!ch) ch = oldCh;
127
+
128
+ var tab = ch == "\t" ? ch: lang.stringRepeat(ch, len);
129
+
130
+ var doc = session.doc;
131
+ var lines = doc.getAllLines();
132
+
133
+ var cache = {};
134
+ var spaceCache = {};
135
+ for (var i = 0, l=lines.length; i < l; i++) {
136
+ var line = lines[i];
137
+ var match = line.match(/^\s*/)[0];
138
+ if (match) {
139
+ var w = session.$getStringScreenWidth(match)[0];
140
+ var tabCount = Math.floor(w/oldLen);
141
+ var reminder = w%oldLen;
142
+ var toInsert = cache[tabCount] || (cache[tabCount] = lang.stringRepeat(tab, tabCount));
143
+ toInsert += spaceCache[reminder] || (spaceCache[reminder] = lang.stringRepeat(" ", reminder));
144
+
145
+ if (toInsert != match) {
146
+ doc.removeInLine(i, 0, match.length);
147
+ doc.insertInLine({row: i, column: 0}, toInsert);
148
+ }
149
+ }
150
+ }
151
+ session.setTabSize(len);
152
+ session.setUseSoftTabs(ch == " ");
153
+ };
154
+
155
+ exports.$parseStringArg = function(text) {
156
+ var indent = {};
157
+ if (/t/.test(text))
158
+ indent.ch = "\t";
159
+ else if (/s/.test(text))
160
+ indent.ch = " ";
161
+ var m = text.match(/\d+/);
162
+ if (m)
163
+ indent.length = parseInt(m[0], 10);
164
+ return indent;
165
+ };
166
+
167
+ exports.$parseArg = function(arg) {
168
+ if (!arg)
169
+ return {};
170
+ if (typeof arg == "string")
171
+ return exports.$parseStringArg(arg);
172
+ if (typeof arg.text == "string")
173
+ return exports.$parseStringArg(arg.text);
174
+ return arg;
175
+ };
176
+
177
+ exports.commands = [{
178
+ name: "detectIndentation",
179
+ exec: function(editor) {
180
+ exports.detectIndentation(editor.session);
181
+ }
182
+ }, {
183
+ name: "trimTrailingSpace",
184
+ exec: function(editor, args) {
185
+ exports.trimTrailingSpace(editor.session, args);
186
+ }
187
+ }, {
188
+ name: "convertIndentation",
189
+ exec: function(editor, arg) {
190
+ var indent = exports.$parseArg(arg);
191
+ exports.convertIndentation(editor.session, indent.ch, indent.length);
192
+ }
193
+ }, {
194
+ name: "setIndentation",
195
+ exec: function(editor, arg) {
196
+ var indent = exports.$parseArg(arg);
197
+ indent.length && editor.session.setTabSize(indent.length);
198
+ indent.ch && editor.session.setUseSoftTabs(indent.ch == " ");
199
+ }
200
+ }];
201
+
202
+ });
203
+ (function() {
204
+ window.require(["ace/ext/whitespace"], function(m) {
205
+ if (typeof module == "object" && typeof exports == "object" && module) {
206
+ module.exports = m;
207
+ }
208
+ });
209
+ })();
210
+
@@ -0,0 +1,1165 @@
1
+ define("ace/occur",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/edit_session","ace/search_highlight","ace/lib/dom"], function(require, exports, module) {
2
+ "use strict";
3
+
4
+ var oop = require("./lib/oop");
5
+ var Range = require("./range").Range;
6
+ var Search = require("./search").Search;
7
+ var EditSession = require("./edit_session").EditSession;
8
+ var SearchHighlight = require("./search_highlight").SearchHighlight;
9
+ function Occur() {}
10
+
11
+ oop.inherits(Occur, Search);
12
+
13
+ (function() {
14
+ this.enter = function(editor, options) {
15
+ if (!options.needle) return false;
16
+ var pos = editor.getCursorPosition();
17
+ this.displayOccurContent(editor, options);
18
+ var translatedPos = this.originalToOccurPosition(editor.session, pos);
19
+ editor.moveCursorToPosition(translatedPos);
20
+ return true;
21
+ };
22
+ this.exit = function(editor, options) {
23
+ var pos = options.translatePosition && editor.getCursorPosition();
24
+ var translatedPos = pos && this.occurToOriginalPosition(editor.session, pos);
25
+ this.displayOriginalContent(editor);
26
+ if (translatedPos)
27
+ editor.moveCursorToPosition(translatedPos);
28
+ return true;
29
+ };
30
+
31
+ this.highlight = function(sess, regexp) {
32
+ var hl = sess.$occurHighlight = sess.$occurHighlight || sess.addDynamicMarker(
33
+ new SearchHighlight(null, "ace_occur-highlight", "text"));
34
+ hl.setRegexp(regexp);
35
+ sess._emit("changeBackMarker"); // force highlight layer redraw
36
+ };
37
+
38
+ this.displayOccurContent = function(editor, options) {
39
+ this.$originalSession = editor.session;
40
+ var found = this.matchingLines(editor.session, options);
41
+ var lines = found.map(function(foundLine) { return foundLine.content; });
42
+ var occurSession = new EditSession(lines.join('\n'));
43
+ occurSession.$occur = this;
44
+ occurSession.$occurMatchingLines = found;
45
+ editor.setSession(occurSession);
46
+ this.$useEmacsStyleLineStart = this.$originalSession.$useEmacsStyleLineStart;
47
+ occurSession.$useEmacsStyleLineStart = this.$useEmacsStyleLineStart;
48
+ this.highlight(occurSession, options.re);
49
+ occurSession._emit('changeBackMarker');
50
+ };
51
+
52
+ this.displayOriginalContent = function(editor) {
53
+ editor.setSession(this.$originalSession);
54
+ this.$originalSession.$useEmacsStyleLineStart = this.$useEmacsStyleLineStart;
55
+ };
56
+ this.originalToOccurPosition = function(session, pos) {
57
+ var lines = session.$occurMatchingLines;
58
+ var nullPos = {row: 0, column: 0};
59
+ if (!lines) return nullPos;
60
+ for (var i = 0; i < lines.length; i++) {
61
+ if (lines[i].row === pos.row)
62
+ return {row: i, column: pos.column};
63
+ }
64
+ return nullPos;
65
+ };
66
+ this.occurToOriginalPosition = function(session, pos) {
67
+ var lines = session.$occurMatchingLines;
68
+ if (!lines || !lines[pos.row])
69
+ return pos;
70
+ return {row: lines[pos.row].row, column: pos.column};
71
+ };
72
+
73
+ this.matchingLines = function(session, options) {
74
+ options = oop.mixin({}, options);
75
+ if (!session || !options.needle) return [];
76
+ var search = new Search();
77
+ search.set(options);
78
+ return search.findAll(session).reduce(function(lines, range) {
79
+ var row = range.start.row;
80
+ var last = lines[lines.length-1];
81
+ return last && last.row === row ?
82
+ lines :
83
+ lines.concat({row: row, content: session.getLine(row)});
84
+ }, []);
85
+ };
86
+
87
+ }).call(Occur.prototype);
88
+
89
+ var dom = require('./lib/dom');
90
+ dom.importCssString(".ace_occur-highlight {\n\
91
+ border-radius: 4px;\n\
92
+ background-color: rgba(87, 255, 8, 0.25);\n\
93
+ position: absolute;\n\
94
+ z-index: 4;\n\
95
+ box-sizing: border-box;\n\
96
+ box-shadow: 0 0 4px rgb(91, 255, 50);\n\
97
+ }\n\
98
+ .ace_dark .ace_occur-highlight {\n\
99
+ background-color: rgb(80, 140, 85);\n\
100
+ box-shadow: 0 0 4px rgb(60, 120, 70);\n\
101
+ }\n", "incremental-occur-highlighting");
102
+
103
+ exports.Occur = Occur;
104
+
105
+ });
106
+
107
+ define("ace/commands/occur_commands",["require","exports","module","ace/config","ace/occur","ace/keyboard/hash_handler","ace/lib/oop"], function(require, exports, module) {
108
+
109
+ var config = require("../config"),
110
+ Occur = require("../occur").Occur;
111
+ var occurStartCommand = {
112
+ name: "occur",
113
+ exec: function(editor, options) {
114
+ var alreadyInOccur = !!editor.session.$occur;
115
+ var occurSessionActive = new Occur().enter(editor, options);
116
+ if (occurSessionActive && !alreadyInOccur)
117
+ OccurKeyboardHandler.installIn(editor);
118
+ },
119
+ readOnly: true
120
+ };
121
+
122
+ var occurCommands = [{
123
+ name: "occurexit",
124
+ bindKey: 'esc|Ctrl-G',
125
+ exec: function(editor) {
126
+ var occur = editor.session.$occur;
127
+ if (!occur) return;
128
+ occur.exit(editor, {});
129
+ if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor);
130
+ },
131
+ readOnly: true
132
+ }, {
133
+ name: "occuraccept",
134
+ bindKey: 'enter',
135
+ exec: function(editor) {
136
+ var occur = editor.session.$occur;
137
+ if (!occur) return;
138
+ occur.exit(editor, {translatePosition: true});
139
+ if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor);
140
+ },
141
+ readOnly: true
142
+ }];
143
+
144
+ var HashHandler = require("../keyboard/hash_handler").HashHandler;
145
+ var oop = require("../lib/oop");
146
+
147
+
148
+ function OccurKeyboardHandler() {}
149
+
150
+ oop.inherits(OccurKeyboardHandler, HashHandler);
151
+
152
+ (function() {
153
+
154
+ this.isOccurHandler = true;
155
+
156
+ this.attach = function(editor) {
157
+ HashHandler.call(this, occurCommands, editor.commands.platform);
158
+ this.$editor = editor;
159
+ };
160
+
161
+ var handleKeyboard$super = this.handleKeyboard;
162
+ this.handleKeyboard = function(data, hashId, key, keyCode) {
163
+ var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode);
164
+ return (cmd && cmd.command) ? cmd : undefined;
165
+ };
166
+
167
+ }).call(OccurKeyboardHandler.prototype);
168
+
169
+ OccurKeyboardHandler.installIn = function(editor) {
170
+ var handler = new this();
171
+ editor.keyBinding.addKeyboardHandler(handler);
172
+ editor.commands.addCommands(occurCommands);
173
+ };
174
+
175
+ OccurKeyboardHandler.uninstallFrom = function(editor) {
176
+ editor.commands.removeCommands(occurCommands);
177
+ var handler = editor.getKeyboardHandler();
178
+ if (handler.isOccurHandler)
179
+ editor.keyBinding.removeKeyboardHandler(handler);
180
+ };
181
+
182
+ exports.occurStartCommand = occurStartCommand;
183
+
184
+ });
185
+
186
+ define("ace/commands/incremental_search_commands",["require","exports","module","ace/config","ace/lib/oop","ace/keyboard/hash_handler","ace/commands/occur_commands"], function(require, exports, module) {
187
+
188
+ var config = require("../config");
189
+ var oop = require("../lib/oop");
190
+ var HashHandler = require("../keyboard/hash_handler").HashHandler;
191
+ var occurStartCommand = require("./occur_commands").occurStartCommand;
192
+ exports.iSearchStartCommands = [{
193
+ name: "iSearch",
194
+ bindKey: {win: "Ctrl-F", mac: "Command-F"},
195
+ exec: function(editor, options) {
196
+ config.loadModule(["core", "ace/incremental_search"], function(e) {
197
+ var iSearch = e.iSearch = e.iSearch || new e.IncrementalSearch();
198
+ iSearch.activate(editor, options.backwards);
199
+ if (options.jumpToFirstMatch) iSearch.next(options);
200
+ });
201
+ },
202
+ readOnly: true
203
+ }, {
204
+ name: "iSearchBackwards",
205
+ exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {backwards: true}); },
206
+ readOnly: true
207
+ }, {
208
+ name: "iSearchAndGo",
209
+ bindKey: {win: "Ctrl-K", mac: "Command-G"},
210
+ exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {jumpToFirstMatch: true, useCurrentOrPrevSearch: true}); },
211
+ readOnly: true
212
+ }, {
213
+ name: "iSearchBackwardsAndGo",
214
+ bindKey: {win: "Ctrl-Shift-K", mac: "Command-Shift-G"},
215
+ exec: function(editor) { editor.execCommand('iSearch', {jumpToFirstMatch: true, backwards: true, useCurrentOrPrevSearch: true}); },
216
+ readOnly: true
217
+ }];
218
+ exports.iSearchCommands = [{
219
+ name: "restartSearch",
220
+ bindKey: {win: "Ctrl-F", mac: "Command-F"},
221
+ exec: function(iSearch) {
222
+ iSearch.cancelSearch(true);
223
+ }
224
+ }, {
225
+ name: "searchForward",
226
+ bindKey: {win: "Ctrl-S|Ctrl-K", mac: "Ctrl-S|Command-G"},
227
+ exec: function(iSearch, options) {
228
+ options.useCurrentOrPrevSearch = true;
229
+ iSearch.next(options);
230
+ }
231
+ }, {
232
+ name: "searchBackward",
233
+ bindKey: {win: "Ctrl-R|Ctrl-Shift-K", mac: "Ctrl-R|Command-Shift-G"},
234
+ exec: function(iSearch, options) {
235
+ options.useCurrentOrPrevSearch = true;
236
+ options.backwards = true;
237
+ iSearch.next(options);
238
+ }
239
+ }, {
240
+ name: "extendSearchTerm",
241
+ exec: function(iSearch, string) {
242
+ iSearch.addString(string);
243
+ }
244
+ }, {
245
+ name: "extendSearchTermSpace",
246
+ bindKey: "space",
247
+ exec: function(iSearch) { iSearch.addString(' '); }
248
+ }, {
249
+ name: "shrinkSearchTerm",
250
+ bindKey: "backspace",
251
+ exec: function(iSearch) {
252
+ iSearch.removeChar();
253
+ }
254
+ }, {
255
+ name: 'confirmSearch',
256
+ bindKey: 'return',
257
+ exec: function(iSearch) { iSearch.deactivate(); }
258
+ }, {
259
+ name: 'cancelSearch',
260
+ bindKey: 'esc|Ctrl-G',
261
+ exec: function(iSearch) { iSearch.deactivate(true); }
262
+ }, {
263
+ name: 'occurisearch',
264
+ bindKey: 'Ctrl-O',
265
+ exec: function(iSearch) {
266
+ var options = oop.mixin({}, iSearch.$options);
267
+ iSearch.deactivate();
268
+ occurStartCommand.exec(iSearch.$editor, options);
269
+ }
270
+ }, {
271
+ name: "yankNextWord",
272
+ bindKey: "Ctrl-w",
273
+ exec: function(iSearch) {
274
+ var ed = iSearch.$editor,
275
+ range = ed.selection.getRangeOfMovements(function(sel) { sel.moveCursorWordRight(); }),
276
+ string = ed.session.getTextRange(range);
277
+ iSearch.addString(string);
278
+ }
279
+ }, {
280
+ name: "yankNextChar",
281
+ bindKey: "Ctrl-Alt-y",
282
+ exec: function(iSearch) {
283
+ var ed = iSearch.$editor,
284
+ range = ed.selection.getRangeOfMovements(function(sel) { sel.moveCursorRight(); }),
285
+ string = ed.session.getTextRange(range);
286
+ iSearch.addString(string);
287
+ }
288
+ }, {
289
+ name: 'recenterTopBottom',
290
+ bindKey: 'Ctrl-l',
291
+ exec: function(iSearch) { iSearch.$editor.execCommand('recenterTopBottom'); }
292
+ }, {
293
+ name: 'selectAllMatches',
294
+ bindKey: 'Ctrl-space',
295
+ exec: function(iSearch) {
296
+ var ed = iSearch.$editor,
297
+ hl = ed.session.$isearchHighlight,
298
+ ranges = hl && hl.cache ? hl.cache
299
+ .reduce(function(ranges, ea) {
300
+ return ranges.concat(ea ? ea : []); }, []) : [];
301
+ iSearch.deactivate(false);
302
+ ranges.forEach(ed.selection.addRange.bind(ed.selection));
303
+ }
304
+ }, {
305
+ name: 'searchAsRegExp',
306
+ bindKey: 'Alt-r',
307
+ exec: function(iSearch) {
308
+ iSearch.convertNeedleToRegExp();
309
+ }
310
+ }].map(function(cmd) {
311
+ cmd.readOnly = true;
312
+ cmd.isIncrementalSearchCommand = true;
313
+ cmd.scrollIntoView = "animate-cursor";
314
+ return cmd;
315
+ });
316
+
317
+ function IncrementalSearchKeyboardHandler(iSearch) {
318
+ this.$iSearch = iSearch;
319
+ }
320
+
321
+ oop.inherits(IncrementalSearchKeyboardHandler, HashHandler);
322
+
323
+ (function() {
324
+
325
+ this.attach = function(editor) {
326
+ var iSearch = this.$iSearch;
327
+ HashHandler.call(this, exports.iSearchCommands, editor.commands.platform);
328
+ this.$commandExecHandler = editor.commands.addEventListener('exec', function(e) {
329
+ if (!e.command.isIncrementalSearchCommand)
330
+ return iSearch.deactivate();
331
+ e.stopPropagation();
332
+ e.preventDefault();
333
+ var scrollTop = editor.session.getScrollTop();
334
+ var result = e.command.exec(iSearch, e.args || {});
335
+ editor.renderer.scrollCursorIntoView(null, 0.5);
336
+ editor.renderer.animateScrolling(scrollTop);
337
+ return result;
338
+ });
339
+ };
340
+
341
+ this.detach = function(editor) {
342
+ if (!this.$commandExecHandler) return;
343
+ editor.commands.removeEventListener('exec', this.$commandExecHandler);
344
+ delete this.$commandExecHandler;
345
+ };
346
+
347
+ var handleKeyboard$super = this.handleKeyboard;
348
+ this.handleKeyboard = function(data, hashId, key, keyCode) {
349
+ if (((hashId === 1/*ctrl*/ || hashId === 8/*command*/) && key === 'v')
350
+ || (hashId === 1/*ctrl*/ && key === 'y')) return null;
351
+ var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode);
352
+ if (cmd.command) { return cmd; }
353
+ if (hashId == -1) {
354
+ var extendCmd = this.commands.extendSearchTerm;
355
+ if (extendCmd) { return {command: extendCmd, args: key}; }
356
+ }
357
+ return false;
358
+ };
359
+
360
+ }).call(IncrementalSearchKeyboardHandler.prototype);
361
+
362
+
363
+ exports.IncrementalSearchKeyboardHandler = IncrementalSearchKeyboardHandler;
364
+
365
+ });
366
+
367
+ define("ace/incremental_search",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/search_highlight","ace/commands/incremental_search_commands","ace/lib/dom","ace/commands/command_manager","ace/editor","ace/config"], function(require, exports, module) {
368
+ "use strict";
369
+
370
+ var oop = require("./lib/oop");
371
+ var Range = require("./range").Range;
372
+ var Search = require("./search").Search;
373
+ var SearchHighlight = require("./search_highlight").SearchHighlight;
374
+ var iSearchCommandModule = require("./commands/incremental_search_commands");
375
+ var ISearchKbd = iSearchCommandModule.IncrementalSearchKeyboardHandler;
376
+ function IncrementalSearch() {
377
+ this.$options = {wrap: false, skipCurrent: false};
378
+ this.$keyboardHandler = new ISearchKbd(this);
379
+ }
380
+
381
+ oop.inherits(IncrementalSearch, Search);
382
+ function isRegExp(obj) {
383
+ return obj instanceof RegExp;
384
+ }
385
+
386
+ function regExpToObject(re) {
387
+ var string = String(re),
388
+ start = string.indexOf('/'),
389
+ flagStart = string.lastIndexOf('/');
390
+ return {
391
+ expression: string.slice(start+1, flagStart),
392
+ flags: string.slice(flagStart+1)
393
+ };
394
+ }
395
+
396
+ function stringToRegExp(string, flags) {
397
+ try {
398
+ return new RegExp(string, flags);
399
+ } catch (e) { return string; }
400
+ }
401
+
402
+ function objectToRegExp(obj) {
403
+ return stringToRegExp(obj.expression, obj.flags);
404
+ }
405
+ (function() {
406
+
407
+ this.activate = function(ed, backwards) {
408
+ this.$editor = ed;
409
+ this.$startPos = this.$currentPos = ed.getCursorPosition();
410
+ this.$options.needle = '';
411
+ this.$options.backwards = backwards;
412
+ ed.keyBinding.addKeyboardHandler(this.$keyboardHandler);
413
+ this.$originalEditorOnPaste = ed.onPaste; ed.onPaste = this.onPaste.bind(this);
414
+ this.$mousedownHandler = ed.addEventListener('mousedown', this.onMouseDown.bind(this));
415
+ this.selectionFix(ed);
416
+ this.statusMessage(true);
417
+ };
418
+
419
+ this.deactivate = function(reset) {
420
+ this.cancelSearch(reset);
421
+ var ed = this.$editor;
422
+ ed.keyBinding.removeKeyboardHandler(this.$keyboardHandler);
423
+ if (this.$mousedownHandler) {
424
+ ed.removeEventListener('mousedown', this.$mousedownHandler);
425
+ delete this.$mousedownHandler;
426
+ }
427
+ ed.onPaste = this.$originalEditorOnPaste;
428
+ this.message('');
429
+ };
430
+
431
+ this.selectionFix = function(editor) {
432
+ if (editor.selection.isEmpty() && !editor.session.$emacsMark) {
433
+ editor.clearSelection();
434
+ }
435
+ };
436
+
437
+ this.highlight = function(regexp) {
438
+ var sess = this.$editor.session,
439
+ hl = sess.$isearchHighlight = sess.$isearchHighlight || sess.addDynamicMarker(
440
+ new SearchHighlight(null, "ace_isearch-result", "text"));
441
+ hl.setRegexp(regexp);
442
+ sess._emit("changeBackMarker"); // force highlight layer redraw
443
+ };
444
+
445
+ this.cancelSearch = function(reset) {
446
+ var e = this.$editor;
447
+ this.$prevNeedle = this.$options.needle;
448
+ this.$options.needle = '';
449
+ if (reset) {
450
+ e.moveCursorToPosition(this.$startPos);
451
+ this.$currentPos = this.$startPos;
452
+ } else {
453
+ e.pushEmacsMark && e.pushEmacsMark(this.$startPos, false);
454
+ }
455
+ this.highlight(null);
456
+ return Range.fromPoints(this.$currentPos, this.$currentPos);
457
+ };
458
+
459
+ this.highlightAndFindWithNeedle = function(moveToNext, needleUpdateFunc) {
460
+ if (!this.$editor) return null;
461
+ var options = this.$options;
462
+ if (needleUpdateFunc) {
463
+ options.needle = needleUpdateFunc.call(this, options.needle || '') || '';
464
+ }
465
+ if (options.needle.length === 0) {
466
+ this.statusMessage(true);
467
+ return this.cancelSearch(true);
468
+ }
469
+ options.start = this.$currentPos;
470
+ var session = this.$editor.session,
471
+ found = this.find(session),
472
+ shouldSelect = this.$editor.emacsMark ?
473
+ !!this.$editor.emacsMark() : !this.$editor.selection.isEmpty();
474
+ if (found) {
475
+ if (options.backwards) found = Range.fromPoints(found.end, found.start);
476
+ this.$editor.selection.setRange(Range.fromPoints(shouldSelect ? this.$startPos : found.end, found.end));
477
+ if (moveToNext) this.$currentPos = found.end;
478
+ this.highlight(options.re);
479
+ }
480
+
481
+ this.statusMessage(found);
482
+
483
+ return found;
484
+ };
485
+
486
+ this.addString = function(s) {
487
+ return this.highlightAndFindWithNeedle(false, function(needle) {
488
+ if (!isRegExp(needle))
489
+ return needle + s;
490
+ var reObj = regExpToObject(needle);
491
+ reObj.expression += s;
492
+ return objectToRegExp(reObj);
493
+ });
494
+ };
495
+
496
+ this.removeChar = function(c) {
497
+ return this.highlightAndFindWithNeedle(false, function(needle) {
498
+ if (!isRegExp(needle))
499
+ return needle.substring(0, needle.length-1);
500
+ var reObj = regExpToObject(needle);
501
+ reObj.expression = reObj.expression.substring(0, reObj.expression.length-1);
502
+ return objectToRegExp(reObj);
503
+ });
504
+ };
505
+
506
+ this.next = function(options) {
507
+ options = options || {};
508
+ this.$options.backwards = !!options.backwards;
509
+ this.$currentPos = this.$editor.getCursorPosition();
510
+ return this.highlightAndFindWithNeedle(true, function(needle) {
511
+ return options.useCurrentOrPrevSearch && needle.length === 0 ?
512
+ this.$prevNeedle || '' : needle;
513
+ });
514
+ };
515
+
516
+ this.onMouseDown = function(evt) {
517
+ this.deactivate();
518
+ return true;
519
+ };
520
+
521
+ this.onPaste = function(text) {
522
+ this.addString(text);
523
+ };
524
+
525
+ this.convertNeedleToRegExp = function() {
526
+ return this.highlightAndFindWithNeedle(false, function(needle) {
527
+ return isRegExp(needle) ? needle : stringToRegExp(needle, 'ig');
528
+ });
529
+ };
530
+
531
+ this.convertNeedleToString = function() {
532
+ return this.highlightAndFindWithNeedle(false, function(needle) {
533
+ return isRegExp(needle) ? regExpToObject(needle).expression : needle;
534
+ });
535
+ };
536
+
537
+ this.statusMessage = function(found) {
538
+ var options = this.$options, msg = '';
539
+ msg += options.backwards ? 'reverse-' : '';
540
+ msg += 'isearch: ' + options.needle;
541
+ msg += found ? '' : ' (not found)';
542
+ this.message(msg);
543
+ };
544
+
545
+ this.message = function(msg) {
546
+ if (this.$editor.showCommandLine) {
547
+ this.$editor.showCommandLine(msg);
548
+ this.$editor.focus();
549
+ } else {
550
+ console.log(msg);
551
+ }
552
+ };
553
+
554
+ }).call(IncrementalSearch.prototype);
555
+
556
+
557
+ exports.IncrementalSearch = IncrementalSearch;
558
+
559
+ var dom = require('./lib/dom');
560
+ dom.importCssString && dom.importCssString("\
561
+ .ace_marker-layer .ace_isearch-result {\
562
+ position: absolute;\
563
+ z-index: 6;\
564
+ box-sizing: border-box;\
565
+ }\
566
+ div.ace_isearch-result {\
567
+ border-radius: 4px;\
568
+ background-color: rgba(255, 200, 0, 0.5);\
569
+ box-shadow: 0 0 4px rgb(255, 200, 0);\
570
+ }\
571
+ .ace_dark div.ace_isearch-result {\
572
+ background-color: rgb(100, 110, 160);\
573
+ box-shadow: 0 0 4px rgb(80, 90, 140);\
574
+ }", "incremental-search-highlighting");
575
+ var commands = require("./commands/command_manager");
576
+ (function() {
577
+ this.setupIncrementalSearch = function(editor, val) {
578
+ if (this.usesIncrementalSearch == val) return;
579
+ this.usesIncrementalSearch = val;
580
+ var iSearchCommands = iSearchCommandModule.iSearchStartCommands;
581
+ var method = val ? 'addCommands' : 'removeCommands';
582
+ this[method](iSearchCommands);
583
+ };
584
+ }).call(commands.CommandManager.prototype);
585
+ var Editor = require("./editor").Editor;
586
+ require("./config").defineOptions(Editor.prototype, "editor", {
587
+ useIncrementalSearch: {
588
+ set: function(val) {
589
+ this.keyBinding.$handlers.forEach(function(handler) {
590
+ if (handler.setupIncrementalSearch) {
591
+ handler.setupIncrementalSearch(this, val);
592
+ }
593
+ });
594
+ this._emit('incrementalSearchSettingChanged', {isEnabled: val});
595
+ }
596
+ }
597
+ });
598
+
599
+ });
600
+
601
+ define("ace/keyboard/emacs",["require","exports","module","ace/lib/dom","ace/incremental_search","ace/commands/incremental_search_commands","ace/keyboard/hash_handler","ace/lib/keys"], function(require, exports, module) {
602
+ "use strict";
603
+
604
+ var dom = require("../lib/dom");
605
+ require("../incremental_search");
606
+ var iSearchCommandModule = require("../commands/incremental_search_commands");
607
+
608
+
609
+ var HashHandler = require("./hash_handler").HashHandler;
610
+ exports.handler = new HashHandler();
611
+
612
+ exports.handler.isEmacs = true;
613
+ exports.handler.$id = "ace/keyboard/emacs";
614
+
615
+ var initialized = false;
616
+ var $formerLongWords;
617
+ var $formerLineStart;
618
+
619
+ exports.handler.attach = function(editor) {
620
+ if (!initialized) {
621
+ initialized = true;
622
+ dom.importCssString('\
623
+ .emacs-mode .ace_cursor{\
624
+ border: 1px rgba(50,250,50,0.8) solid!important;\
625
+ box-sizing: border-box!important;\
626
+ background-color: rgba(0,250,0,0.9);\
627
+ opacity: 0.5;\
628
+ }\
629
+ .emacs-mode .ace_hidden-cursors .ace_cursor{\
630
+ opacity: 1;\
631
+ background-color: transparent;\
632
+ }\
633
+ .emacs-mode .ace_overwrite-cursors .ace_cursor {\
634
+ opacity: 1;\
635
+ background-color: transparent;\
636
+ border-width: 0 0 2px 2px !important;\
637
+ }\
638
+ .emacs-mode .ace_text-layer {\
639
+ z-index: 4\
640
+ }\
641
+ .emacs-mode .ace_cursor-layer {\
642
+ z-index: 2\
643
+ }', 'emacsMode'
644
+ );
645
+ }
646
+ $formerLongWords = editor.session.$selectLongWords;
647
+ editor.session.$selectLongWords = true;
648
+ $formerLineStart = editor.session.$useEmacsStyleLineStart;
649
+ editor.session.$useEmacsStyleLineStart = true;
650
+
651
+ editor.session.$emacsMark = null; // the active mark
652
+ editor.session.$emacsMarkRing = editor.session.$emacsMarkRing || [];
653
+
654
+ editor.emacsMark = function() {
655
+ return this.session.$emacsMark;
656
+ };
657
+
658
+ editor.setEmacsMark = function(p) {
659
+ this.session.$emacsMark = p;
660
+ };
661
+
662
+ editor.pushEmacsMark = function(p, activate) {
663
+ var prevMark = this.session.$emacsMark;
664
+ if (prevMark)
665
+ this.session.$emacsMarkRing.push(prevMark);
666
+ if (!p || activate) this.setEmacsMark(p);
667
+ else this.session.$emacsMarkRing.push(p);
668
+ };
669
+
670
+ editor.popEmacsMark = function() {
671
+ var mark = this.emacsMark();
672
+ if (mark) { this.setEmacsMark(null); return mark; }
673
+ return this.session.$emacsMarkRing.pop();
674
+ };
675
+
676
+ editor.getLastEmacsMark = function(p) {
677
+ return this.session.$emacsMark || this.session.$emacsMarkRing.slice(-1)[0];
678
+ };
679
+
680
+ editor.emacsMarkForSelection = function(replacement) {
681
+ var sel = this.selection,
682
+ multiRangeLength = this.multiSelect ?
683
+ this.multiSelect.getAllRanges().length : 1,
684
+ selIndex = sel.index || 0,
685
+ markRing = this.session.$emacsMarkRing,
686
+ markIndex = markRing.length - (multiRangeLength - selIndex),
687
+ lastMark = markRing[markIndex] || sel.anchor;
688
+ if (replacement) {
689
+ markRing.splice(markIndex, 1,
690
+ "row" in replacement && "column" in replacement ?
691
+ replacement : undefined);
692
+ }
693
+ return lastMark;
694
+ };
695
+
696
+ editor.on("click", $resetMarkMode);
697
+ editor.on("changeSession", $kbSessionChange);
698
+ editor.renderer.$blockCursor = true;
699
+ editor.setStyle("emacs-mode");
700
+ editor.commands.addCommands(commands);
701
+ exports.handler.platform = editor.commands.platform;
702
+ editor.$emacsModeHandler = this;
703
+ editor.addEventListener('copy', this.onCopy);
704
+ editor.addEventListener('paste', this.onPaste);
705
+ };
706
+
707
+ exports.handler.detach = function(editor) {
708
+ editor.renderer.$blockCursor = false;
709
+ editor.session.$selectLongWords = $formerLongWords;
710
+ editor.session.$useEmacsStyleLineStart = $formerLineStart;
711
+ editor.removeEventListener("click", $resetMarkMode);
712
+ editor.removeEventListener("changeSession", $kbSessionChange);
713
+ editor.unsetStyle("emacs-mode");
714
+ editor.commands.removeCommands(commands);
715
+ editor.removeEventListener('copy', this.onCopy);
716
+ editor.removeEventListener('paste', this.onPaste);
717
+ editor.$emacsModeHandler = null;
718
+ };
719
+
720
+ var $kbSessionChange = function(e) {
721
+ if (e.oldSession) {
722
+ e.oldSession.$selectLongWords = $formerLongWords;
723
+ e.oldSession.$useEmacsStyleLineStart = $formerLineStart;
724
+ }
725
+
726
+ $formerLongWords = e.session.$selectLongWords;
727
+ e.session.$selectLongWords = true;
728
+ $formerLineStart = e.session.$useEmacsStyleLineStart;
729
+ e.session.$useEmacsStyleLineStart = true;
730
+
731
+ if (!e.session.hasOwnProperty('$emacsMark'))
732
+ e.session.$emacsMark = null;
733
+ if (!e.session.hasOwnProperty('$emacsMarkRing'))
734
+ e.session.$emacsMarkRing = [];
735
+ };
736
+
737
+ var $resetMarkMode = function(e) {
738
+ e.editor.session.$emacsMark = null;
739
+ };
740
+
741
+ var keys = require("../lib/keys").KEY_MODS;
742
+ var eMods = {C: "ctrl", S: "shift", M: "alt", CMD: "command"};
743
+ var combinations = ["C-S-M-CMD",
744
+ "S-M-CMD", "C-M-CMD", "C-S-CMD", "C-S-M",
745
+ "M-CMD", "S-CMD", "S-M", "C-CMD", "C-M", "C-S",
746
+ "CMD", "M", "S", "C"];
747
+ combinations.forEach(function(c) {
748
+ var hashId = 0;
749
+ c.split("-").forEach(function(c) {
750
+ hashId = hashId | keys[eMods[c]];
751
+ });
752
+ eMods[hashId] = c.toLowerCase() + "-";
753
+ });
754
+
755
+ exports.handler.onCopy = function(e, editor) {
756
+ if (editor.$handlesEmacsOnCopy) return;
757
+ editor.$handlesEmacsOnCopy = true;
758
+ exports.handler.commands.killRingSave.exec(editor);
759
+ editor.$handlesEmacsOnCopy = false;
760
+ };
761
+
762
+ exports.handler.onPaste = function(e, editor) {
763
+ editor.pushEmacsMark(editor.getCursorPosition());
764
+ };
765
+
766
+ exports.handler.bindKey = function(key, command) {
767
+ if (typeof key == "object")
768
+ key = key[this.platform];
769
+ if (!key)
770
+ return;
771
+
772
+ var ckb = this.commandKeyBinding;
773
+ key.split("|").forEach(function(keyPart) {
774
+ keyPart = keyPart.toLowerCase();
775
+ ckb[keyPart] = command;
776
+ var keyParts = keyPart.split(" ").slice(0,-1);
777
+ keyParts.reduce(function(keyMapKeys, keyPart, i) {
778
+ var prefix = keyMapKeys[i-1] ? keyMapKeys[i-1] + ' ' : '';
779
+ return keyMapKeys.concat([prefix + keyPart]);
780
+ }, []).forEach(function(keyPart) {
781
+ if (!ckb[keyPart]) ckb[keyPart] = "null";
782
+ });
783
+ }, this);
784
+ };
785
+
786
+ exports.handler.getStatusText = function(editor, data) {
787
+ var str = "";
788
+ if (data.count)
789
+ str += data.count;
790
+ if (data.keyChain)
791
+ str += " " + data.keyChain;
792
+ return str;
793
+ };
794
+
795
+ exports.handler.handleKeyboard = function(data, hashId, key, keyCode) {
796
+ if (keyCode === -1) return undefined;
797
+
798
+ var editor = data.editor;
799
+ editor._signal("changeStatus");
800
+ if (hashId == -1) {
801
+ editor.pushEmacsMark();
802
+ if (data.count) {
803
+ var str = new Array(data.count + 1).join(key);
804
+ data.count = null;
805
+ return {command: "insertstring", args: str};
806
+ }
807
+ }
808
+
809
+ var modifier = eMods[hashId];
810
+ if (modifier == "c-" || data.count) {
811
+ var count = parseInt(key[key.length - 1]);
812
+ if (typeof count === 'number' && !isNaN(count)) {
813
+ data.count = Math.max(data.count, 0) || 0;
814
+ data.count = 10 * data.count + count;
815
+ return {command: "null"};
816
+ }
817
+ }
818
+ if (modifier) key = modifier + key;
819
+ if (data.keyChain) key = data.keyChain += " " + key;
820
+ var command = this.commandKeyBinding[key];
821
+ data.keyChain = command == "null" ? key : "";
822
+ if (!command) return undefined;
823
+ if (command === "null") return {command: "null"};
824
+
825
+ if (command === "universalArgument") {
826
+ data.count = -4;
827
+ return {command: "null"};
828
+ }
829
+ var args;
830
+ if (typeof command !== "string") {
831
+ args = command.args;
832
+ if (command.command) command = command.command;
833
+ if (command === "goorselect") {
834
+ command = editor.emacsMark() ? args[1] : args[0];
835
+ args = null;
836
+ }
837
+ }
838
+
839
+ if (typeof command === "string") {
840
+ if (command === "insertstring" ||
841
+ command === "splitline" ||
842
+ command === "togglecomment") {
843
+ editor.pushEmacsMark();
844
+ }
845
+ command = this.commands[command] || editor.commands.commands[command];
846
+ if (!command) return undefined;
847
+ }
848
+
849
+ if (!command.readOnly && !command.isYank)
850
+ data.lastCommand = null;
851
+
852
+ if (!command.readOnly && editor.emacsMark())
853
+ editor.setEmacsMark(null);
854
+
855
+ if (data.count) {
856
+ var count = data.count;
857
+ data.count = 0;
858
+ if (!command || !command.handlesCount) {
859
+ return {
860
+ args: args,
861
+ command: {
862
+ exec: function(editor, args) {
863
+ for (var i = 0; i < count; i++)
864
+ command.exec(editor, args);
865
+ },
866
+ multiSelectAction: command.multiSelectAction
867
+ }
868
+ };
869
+ } else {
870
+ if (!args) args = {};
871
+ if (typeof args === 'object') args.count = count;
872
+ }
873
+ }
874
+
875
+ return {command: command, args: args};
876
+ };
877
+
878
+ exports.emacsKeys = {
879
+ "Up|C-p" : {command: "goorselect", args: ["golineup","selectup"]},
880
+ "Down|C-n" : {command: "goorselect", args: ["golinedown","selectdown"]},
881
+ "Left|C-b" : {command: "goorselect", args: ["gotoleft","selectleft"]},
882
+ "Right|C-f" : {command: "goorselect", args: ["gotoright","selectright"]},
883
+ "C-Left|M-b" : {command: "goorselect", args: ["gotowordleft","selectwordleft"]},
884
+ "C-Right|M-f" : {command: "goorselect", args: ["gotowordright","selectwordright"]},
885
+ "Home|C-a" : {command: "goorselect", args: ["gotolinestart","selecttolinestart"]},
886
+ "End|C-e" : {command: "goorselect", args: ["gotolineend","selecttolineend"]},
887
+ "C-Home|S-M-,": {command: "goorselect", args: ["gotostart","selecttostart"]},
888
+ "C-End|S-M-." : {command: "goorselect", args: ["gotoend","selecttoend"]},
889
+ "S-Up|S-C-p" : "selectup",
890
+ "S-Down|S-C-n" : "selectdown",
891
+ "S-Left|S-C-b" : "selectleft",
892
+ "S-Right|S-C-f" : "selectright",
893
+ "S-C-Left|S-M-b" : "selectwordleft",
894
+ "S-C-Right|S-M-f" : "selectwordright",
895
+ "S-Home|S-C-a" : "selecttolinestart",
896
+ "S-End|S-C-e" : "selecttolineend",
897
+ "S-C-Home" : "selecttostart",
898
+ "S-C-End" : "selecttoend",
899
+
900
+ "C-l" : "recenterTopBottom",
901
+ "M-s" : "centerselection",
902
+ "M-g": "gotoline",
903
+ "C-x C-p": "selectall",
904
+ "C-Down": {command: "goorselect", args: ["gotopagedown","selectpagedown"]},
905
+ "C-Up": {command: "goorselect", args: ["gotopageup","selectpageup"]},
906
+ "PageDown|C-v": {command: "goorselect", args: ["gotopagedown","selectpagedown"]},
907
+ "PageUp|M-v": {command: "goorselect", args: ["gotopageup","selectpageup"]},
908
+ "S-C-Down": "selectpagedown",
909
+ "S-C-Up": "selectpageup",
910
+
911
+ "C-s": "iSearch",
912
+ "C-r": "iSearchBackwards",
913
+
914
+ "M-C-s": "findnext",
915
+ "M-C-r": "findprevious",
916
+ "S-M-5": "replace",
917
+ "Backspace": "backspace",
918
+ "Delete|C-d": "del",
919
+ "Return|C-m": {command: "insertstring", args: "\n"}, // "newline"
920
+ "C-o": "splitline",
921
+
922
+ "M-d|C-Delete": {command: "killWord", args: "right"},
923
+ "C-Backspace|M-Backspace|M-Delete": {command: "killWord", args: "left"},
924
+ "C-k": "killLine",
925
+
926
+ "C-y|S-Delete": "yank",
927
+ "M-y": "yankRotate",
928
+ "C-g": "keyboardQuit",
929
+
930
+ "C-w|C-S-W": "killRegion",
931
+ "M-w": "killRingSave",
932
+ "C-Space": "setMark",
933
+ "C-x C-x": "exchangePointAndMark",
934
+
935
+ "C-t": "transposeletters",
936
+ "M-u": "touppercase", // Doesn't work
937
+ "M-l": "tolowercase",
938
+ "M-/": "autocomplete", // Doesn't work
939
+ "C-u": "universalArgument",
940
+
941
+ "M-;": "togglecomment",
942
+
943
+ "C-/|C-x u|S-C--|C-z": "undo",
944
+ "S-C-/|S-C-x u|C--|S-C-z": "redo", // infinite undo?
945
+ "C-x r": "selectRectangularRegion",
946
+ "M-x": {command: "focusCommandLine", args: "M-x "}
947
+ };
948
+
949
+
950
+ exports.handler.bindKeys(exports.emacsKeys);
951
+
952
+ exports.handler.addCommands({
953
+ recenterTopBottom: function(editor) {
954
+ var renderer = editor.renderer;
955
+ var pos = renderer.$cursorLayer.getPixelPosition();
956
+ var h = renderer.$size.scrollerHeight - renderer.lineHeight;
957
+ var scrollTop = renderer.scrollTop;
958
+ if (Math.abs(pos.top - scrollTop) < 2) {
959
+ scrollTop = pos.top - h;
960
+ } else if (Math.abs(pos.top - scrollTop - h * 0.5) < 2) {
961
+ scrollTop = pos.top;
962
+ } else {
963
+ scrollTop = pos.top - h * 0.5;
964
+ }
965
+ editor.session.setScrollTop(scrollTop);
966
+ },
967
+ selectRectangularRegion: function(editor) {
968
+ editor.multiSelect.toggleBlockSelection();
969
+ },
970
+ setMark: {
971
+ exec: function(editor, args) {
972
+ if (args && args.count) {
973
+ if (editor.inMultiSelectMode) editor.forEachSelection(moveToMark);
974
+ else moveToMark();
975
+ moveToMark();
976
+ return;
977
+ }
978
+
979
+ var mark = editor.emacsMark(),
980
+ ranges = editor.selection.getAllRanges(),
981
+ rangePositions = ranges.map(function(r) { return {row: r.start.row, column: r.start.column}; }),
982
+ transientMarkModeActive = true,
983
+ hasNoSelection = ranges.every(function(range) { return range.isEmpty(); });
984
+ if (transientMarkModeActive && (mark || !hasNoSelection)) {
985
+ if (editor.inMultiSelectMode) editor.forEachSelection({exec: editor.clearSelection.bind(editor)});
986
+ else editor.clearSelection();
987
+ if (mark) editor.pushEmacsMark(null);
988
+ return;
989
+ }
990
+
991
+ if (!mark) {
992
+ rangePositions.forEach(function(pos) { editor.pushEmacsMark(pos); });
993
+ editor.setEmacsMark(rangePositions[rangePositions.length-1]);
994
+ return;
995
+ }
996
+ function moveToMark() {
997
+ var mark = editor.popEmacsMark();
998
+ mark && editor.moveCursorToPosition(mark);
999
+ }
1000
+
1001
+ },
1002
+ readOnly: true,
1003
+ handlesCount: true
1004
+ },
1005
+ exchangePointAndMark: {
1006
+ exec: function exchangePointAndMark$exec(editor, args) {
1007
+ var sel = editor.selection;
1008
+ if (!args.count && !sel.isEmpty()) { // just invert selection
1009
+ sel.setSelectionRange(sel.getRange(), !sel.isBackwards());
1010
+ return;
1011
+ }
1012
+
1013
+ if (args.count) { // replace mark and point
1014
+ var pos = {row: sel.lead.row, column: sel.lead.column};
1015
+ sel.clearSelection();
1016
+ sel.moveCursorToPosition(editor.emacsMarkForSelection(pos));
1017
+ } else { // create selection to last mark
1018
+ sel.selectToPosition(editor.emacsMarkForSelection());
1019
+ }
1020
+ },
1021
+ readOnly: true,
1022
+ handlesCount: true,
1023
+ multiSelectAction: "forEach"
1024
+ },
1025
+ killWord: {
1026
+ exec: function(editor, dir) {
1027
+ editor.clearSelection();
1028
+ if (dir == "left")
1029
+ editor.selection.selectWordLeft();
1030
+ else
1031
+ editor.selection.selectWordRight();
1032
+
1033
+ var range = editor.getSelectionRange();
1034
+ var text = editor.session.getTextRange(range);
1035
+ exports.killRing.add(text);
1036
+
1037
+ editor.session.remove(range);
1038
+ editor.clearSelection();
1039
+ },
1040
+ multiSelectAction: "forEach"
1041
+ },
1042
+ killLine: function(editor) {
1043
+ editor.pushEmacsMark(null);
1044
+ editor.clearSelection();
1045
+ var range = editor.getSelectionRange();
1046
+ var line = editor.session.getLine(range.start.row);
1047
+ range.end.column = line.length;
1048
+ line = line.substr(range.start.column);
1049
+
1050
+ var foldLine = editor.session.getFoldLine(range.start.row);
1051
+ if (foldLine && range.end.row != foldLine.end.row) {
1052
+ range.end.row = foldLine.end.row;
1053
+ line = "x";
1054
+ }
1055
+ if (/^\s*$/.test(line)) {
1056
+ range.end.row++;
1057
+ line = editor.session.getLine(range.end.row);
1058
+ range.end.column = /^\s*$/.test(line) ? line.length : 0;
1059
+ }
1060
+ var text = editor.session.getTextRange(range);
1061
+ if (editor.prevOp.command == this)
1062
+ exports.killRing.append(text);
1063
+ else
1064
+ exports.killRing.add(text);
1065
+
1066
+ editor.session.remove(range);
1067
+ editor.clearSelection();
1068
+ },
1069
+ yank: function(editor) {
1070
+ editor.onPaste(exports.killRing.get() || '');
1071
+ editor.keyBinding.$data.lastCommand = "yank";
1072
+ },
1073
+ yankRotate: function(editor) {
1074
+ if (editor.keyBinding.$data.lastCommand != "yank")
1075
+ return;
1076
+ editor.undo();
1077
+ editor.session.$emacsMarkRing.pop(); // also undo recording mark
1078
+ editor.onPaste(exports.killRing.rotate());
1079
+ editor.keyBinding.$data.lastCommand = "yank";
1080
+ },
1081
+ killRegion: {
1082
+ exec: function(editor) {
1083
+ exports.killRing.add(editor.getCopyText());
1084
+ editor.commands.byName.cut.exec(editor);
1085
+ editor.setEmacsMark(null);
1086
+ },
1087
+ readOnly: true,
1088
+ multiSelectAction: "forEach"
1089
+ },
1090
+ killRingSave: {
1091
+ exec: function(editor) {
1092
+ editor.$handlesEmacsOnCopy = true;
1093
+ var marks = editor.session.$emacsMarkRing.slice(),
1094
+ deselectedMarks = [];
1095
+ exports.killRing.add(editor.getCopyText());
1096
+
1097
+ setTimeout(function() {
1098
+ function deselect() {
1099
+ var sel = editor.selection, range = sel.getRange(),
1100
+ pos = sel.isBackwards() ? range.end : range.start;
1101
+ deselectedMarks.push({row: pos.row, column: pos.column});
1102
+ sel.clearSelection();
1103
+ }
1104
+ editor.$handlesEmacsOnCopy = false;
1105
+ if (editor.inMultiSelectMode) editor.forEachSelection({exec: deselect});
1106
+ else deselect();
1107
+ editor.session.$emacsMarkRing = marks.concat(deselectedMarks.reverse());
1108
+ }, 0);
1109
+ },
1110
+ readOnly: true
1111
+ },
1112
+ keyboardQuit: function(editor) {
1113
+ editor.selection.clearSelection();
1114
+ editor.setEmacsMark(null);
1115
+ editor.keyBinding.$data.count = null;
1116
+ },
1117
+ focusCommandLine: function(editor, arg) {
1118
+ if (editor.showCommandLine)
1119
+ editor.showCommandLine(arg);
1120
+ }
1121
+ });
1122
+
1123
+ exports.handler.addCommands(iSearchCommandModule.iSearchStartCommands);
1124
+
1125
+ var commands = exports.handler.commands;
1126
+ commands.yank.isYank = true;
1127
+ commands.yankRotate.isYank = true;
1128
+
1129
+ exports.killRing = {
1130
+ $data: [],
1131
+ add: function(str) {
1132
+ str && this.$data.push(str);
1133
+ if (this.$data.length > 30)
1134
+ this.$data.shift();
1135
+ },
1136
+ append: function(str) {
1137
+ var idx = this.$data.length - 1;
1138
+ var text = this.$data[idx] || "";
1139
+ if (str) text += str;
1140
+ if (text) this.$data[idx] = text;
1141
+ },
1142
+ get: function(n) {
1143
+ n = n || 1;
1144
+ return this.$data.slice(this.$data.length-n, this.$data.length).reverse().join('\n');
1145
+ },
1146
+ pop: function() {
1147
+ if (this.$data.length > 1)
1148
+ this.$data.pop();
1149
+ return this.get();
1150
+ },
1151
+ rotate: function() {
1152
+ this.$data.unshift(this.$data.pop());
1153
+ return this.get();
1154
+ }
1155
+ };
1156
+
1157
+ });
1158
+ (function() {
1159
+ window.require(["ace/keyboard/emacs"], function(m) {
1160
+ if (typeof module == "object" && typeof exports == "object" && module) {
1161
+ module.exports = m;
1162
+ }
1163
+ });
1164
+ })();
1165
+