qword 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/ChangeLog +2333 -0
  2. package/LICENSE +22 -0
  3. package/README.md +170 -0
  4. package/assets/font/DroidSansMono.eot +0 -0
  5. package/assets/font/DroidSansMono.woff +0 -0
  6. package/assets/font/DroidSansMono.woff2 +0 -0
  7. package/assets/index.html +24 -0
  8. package/assets/style.css +34 -0
  9. package/bin/dword.js +109 -0
  10. package/client/_clipboard.js +53 -0
  11. package/client/_init-socket.js +77 -0
  12. package/client/_on-save.js +38 -0
  13. package/client/codemirror/show-trailing.js +54 -0
  14. package/client/codemirror/use-soft-tabs.js +38 -0
  15. package/client/dword.js +717 -0
  16. package/client/loadremote.js +93 -0
  17. package/client/save.js +53 -0
  18. package/client/set-key-map.js +3 -0
  19. package/client/show-message.js +30 -0
  20. package/client/story.js +55 -0
  21. package/codemirror/codemirror.js +3 -0
  22. package/css/dword.css +20 -0
  23. package/dist/2b22a33a0a80bb926bbc.png +1 -0
  24. package/dist/8e9019bd86255ac9a618.png +1 -0
  25. package/dist/codemirror.js +2 -0
  26. package/dist/codemirror.js.map +1 -0
  27. package/dist/dword.js +2 -0
  28. package/dist/dword.js.map +1 -0
  29. package/dist-dev/2b22a33a0a80bb926bbc.png +1 -0
  30. package/dist-dev/8e9019bd86255ac9a618.png +1 -0
  31. package/dist-dev/codemirror.js +104 -0
  32. package/dist-dev/dword.js +960 -0
  33. package/img/dword.png +0 -0
  34. package/json/bin.json +4 -0
  35. package/json/edit.json +17 -0
  36. package/json/ext.json +12 -0
  37. package/json/modules.json +22 -0
  38. package/modules/cm-searchbox/ChangeLog +60 -0
  39. package/modules/cm-searchbox/LICENSE +21 -0
  40. package/modules/cm-searchbox/README.md +27 -0
  41. package/modules/cm-searchbox/img/searchbox.png +0 -0
  42. package/modules/cm-searchbox/lib/searchbox.js +679 -0
  43. package/modules/cm-searchbox/package.json +27 -0
  44. package/modules/cm-show-invisibles/ChangeLog +108 -0
  45. package/modules/cm-show-invisibles/LICENSE +21 -0
  46. package/modules/cm-show-invisibles/README.md +25 -0
  47. package/modules/cm-show-invisibles/lib/show-invisibles.js +131 -0
  48. package/modules/cm-show-invisibles/package.json +34 -0
  49. package/modules/codemirror/AUTHORS +992 -0
  50. package/modules/codemirror/CHANGELOG.md +2290 -0
  51. package/modules/codemirror/CONTRIBUTING.md +97 -0
  52. package/modules/codemirror/LICENSE +21 -0
  53. package/modules/codemirror/README.md +48 -0
  54. package/modules/codemirror/addon/comment/comment.js +211 -0
  55. package/modules/codemirror/addon/comment/continuecomment.js +114 -0
  56. package/modules/codemirror/addon/dialog/dialog.css +32 -0
  57. package/modules/codemirror/addon/dialog/dialog.js +163 -0
  58. package/modules/codemirror/addon/display/autorefresh.js +47 -0
  59. package/modules/codemirror/addon/display/fullscreen.css +6 -0
  60. package/modules/codemirror/addon/display/fullscreen.js +41 -0
  61. package/modules/codemirror/addon/display/panel.js +133 -0
  62. package/modules/codemirror/addon/display/placeholder.js +78 -0
  63. package/modules/codemirror/addon/display/rulers.js +51 -0
  64. package/modules/codemirror/addon/edit/closebrackets.js +201 -0
  65. package/modules/codemirror/addon/edit/closetag.js +185 -0
  66. package/modules/codemirror/addon/edit/continuelist.js +101 -0
  67. package/modules/codemirror/addon/edit/matchbrackets.js +160 -0
  68. package/modules/codemirror/addon/edit/matchtags.js +66 -0
  69. package/modules/codemirror/addon/edit/trailingspace.js +27 -0
  70. package/modules/codemirror/addon/fold/brace-fold.js +119 -0
  71. package/modules/codemirror/addon/fold/comment-fold.js +59 -0
  72. package/modules/codemirror/addon/fold/foldcode.js +159 -0
  73. package/modules/codemirror/addon/fold/foldgutter.css +20 -0
  74. package/modules/codemirror/addon/fold/foldgutter.js +169 -0
  75. package/modules/codemirror/addon/fold/indent-fold.js +48 -0
  76. package/modules/codemirror/addon/fold/markdown-fold.js +49 -0
  77. package/modules/codemirror/addon/fold/xml-fold.js +184 -0
  78. package/modules/codemirror/addon/hint/anyword-hint.js +41 -0
  79. package/modules/codemirror/addon/hint/css-hint.js +66 -0
  80. package/modules/codemirror/addon/hint/html-hint.js +351 -0
  81. package/modules/codemirror/addon/hint/javascript-hint.js +162 -0
  82. package/modules/codemirror/addon/hint/show-hint.css +37 -0
  83. package/modules/codemirror/addon/hint/show-hint.js +523 -0
  84. package/modules/codemirror/addon/hint/sql-hint.js +304 -0
  85. package/modules/codemirror/addon/hint/xml-hint.js +132 -0
  86. package/modules/codemirror/addon/lint/coffeescript-lint.js +47 -0
  87. package/modules/codemirror/addon/lint/css-lint.js +40 -0
  88. package/modules/codemirror/addon/lint/html-lint.js +59 -0
  89. package/modules/codemirror/addon/lint/javascript-lint.js +65 -0
  90. package/modules/codemirror/addon/lint/json-lint.js +40 -0
  91. package/modules/codemirror/addon/lint/lint.css +79 -0
  92. package/modules/codemirror/addon/lint/lint.js +288 -0
  93. package/modules/codemirror/addon/lint/yaml-lint.js +41 -0
  94. package/modules/codemirror/addon/merge/merge.css +119 -0
  95. package/modules/codemirror/addon/merge/merge.js +1018 -0
  96. package/modules/codemirror/addon/mode/loadmode.js +66 -0
  97. package/modules/codemirror/addon/mode/multiplex.js +136 -0
  98. package/modules/codemirror/addon/mode/multiplex_test.js +49 -0
  99. package/modules/codemirror/addon/mode/overlay.js +90 -0
  100. package/modules/codemirror/addon/mode/simple.js +216 -0
  101. package/modules/codemirror/addon/runmode/colorize.js +40 -0
  102. package/modules/codemirror/addon/runmode/runmode-standalone.js +334 -0
  103. package/modules/codemirror/addon/runmode/runmode.js +76 -0
  104. package/modules/codemirror/addon/runmode/runmode.node.js +329 -0
  105. package/modules/codemirror/addon/scroll/annotatescrollbar.js +128 -0
  106. package/modules/codemirror/addon/scroll/scrollpastend.js +48 -0
  107. package/modules/codemirror/addon/scroll/simplescrollbars.css +66 -0
  108. package/modules/codemirror/addon/scroll/simplescrollbars.js +152 -0
  109. package/modules/codemirror/addon/search/jump-to-line.js +53 -0
  110. package/modules/codemirror/addon/search/match-highlighter.js +167 -0
  111. package/modules/codemirror/addon/search/matchesonscrollbar.css +8 -0
  112. package/modules/codemirror/addon/search/matchesonscrollbar.js +97 -0
  113. package/modules/codemirror/addon/search/search.js +295 -0
  114. package/modules/codemirror/addon/search/searchcursor.js +305 -0
  115. package/modules/codemirror/addon/selection/active-line.js +72 -0
  116. package/modules/codemirror/addon/selection/mark-selection.js +119 -0
  117. package/modules/codemirror/addon/selection/selection-pointer.js +98 -0
  118. package/modules/codemirror/addon/tern/tern.css +87 -0
  119. package/modules/codemirror/addon/tern/tern.js +756 -0
  120. package/modules/codemirror/addon/tern/worker.js +44 -0
  121. package/modules/codemirror/addon/wrap/hardwrap.js +160 -0
  122. package/modules/codemirror/bin/source-highlight +48 -0
  123. package/modules/codemirror/changes +3 -0
  124. package/modules/codemirror/changes.md +42 -0
  125. package/modules/codemirror/changes.txt +8 -0
  126. package/modules/codemirror/diff +781 -0
  127. package/modules/codemirror/dist/index.cjs +102 -0
  128. package/modules/codemirror/dist/index.d.cts +52 -0
  129. package/modules/codemirror/dist/index.d.ts +52 -0
  130. package/modules/codemirror/dist/index.js +96 -0
  131. package/modules/codemirror/keymap/emacs.js +545 -0
  132. package/modules/codemirror/keymap/sublime.js +720 -0
  133. package/modules/codemirror/keymap/vim.js +5978 -0
  134. package/modules/codemirror/lib/codemirror.css +344 -0
  135. package/modules/codemirror/lib/codemirror.js +9884 -0
  136. package/modules/codemirror/mode/apl/apl.js +174 -0
  137. package/modules/codemirror/mode/asciiarmor/asciiarmor.js +74 -0
  138. package/modules/codemirror/mode/asn.1/asn.1.js +204 -0
  139. package/modules/codemirror/mode/asterisk/asterisk.js +220 -0
  140. package/modules/codemirror/mode/brainfuck/brainfuck.js +85 -0
  141. package/modules/codemirror/mode/clike/clike.js +942 -0
  142. package/modules/codemirror/mode/clojure/clojure.js +293 -0
  143. package/modules/codemirror/mode/cmake/cmake.js +97 -0
  144. package/modules/codemirror/mode/cobol/cobol.js +255 -0
  145. package/modules/codemirror/mode/coffeescript/coffeescript.js +359 -0
  146. package/modules/codemirror/mode/commonlisp/commonlisp.js +125 -0
  147. package/modules/codemirror/mode/crystal/crystal.js +433 -0
  148. package/modules/codemirror/mode/css/css.js +862 -0
  149. package/modules/codemirror/mode/cypher/cypher.js +152 -0
  150. package/modules/codemirror/mode/d/d.js +223 -0
  151. package/modules/codemirror/mode/dart/dart.js +168 -0
  152. package/modules/codemirror/mode/diff/diff.js +47 -0
  153. package/modules/codemirror/mode/django/django.js +356 -0
  154. package/modules/codemirror/mode/dockerfile/dockerfile.js +211 -0
  155. package/modules/codemirror/mode/dtd/dtd.js +142 -0
  156. package/modules/codemirror/mode/dylan/dylan.js +352 -0
  157. package/modules/codemirror/mode/ebnf/ebnf.js +195 -0
  158. package/modules/codemirror/mode/ecl/ecl.js +206 -0
  159. package/modules/codemirror/mode/eiffel/eiffel.js +160 -0
  160. package/modules/codemirror/mode/elm/elm.js +245 -0
  161. package/modules/codemirror/mode/erlang/erlang.js +619 -0
  162. package/modules/codemirror/mode/factor/factor.js +85 -0
  163. package/modules/codemirror/mode/fcl/fcl.js +173 -0
  164. package/modules/codemirror/mode/forth/forth.js +180 -0
  165. package/modules/codemirror/mode/fortran/fortran.js +188 -0
  166. package/modules/codemirror/mode/gas/gas.js +355 -0
  167. package/modules/codemirror/mode/gfm/gfm.js +129 -0
  168. package/modules/codemirror/mode/gherkin/gherkin.js +194 -0
  169. package/modules/codemirror/mode/go/go.js +187 -0
  170. package/modules/codemirror/mode/groovy/groovy.js +245 -0
  171. package/modules/codemirror/mode/haml/haml.js +161 -0
  172. package/modules/codemirror/mode/handlebars/handlebars.js +70 -0
  173. package/modules/codemirror/mode/haskell/haskell.js +268 -0
  174. package/modules/codemirror/mode/haskell-literate/haskell-literate.js +43 -0
  175. package/modules/codemirror/mode/haxe/haxe.js +515 -0
  176. package/modules/codemirror/mode/htmlembedded/htmlembedded.js +37 -0
  177. package/modules/codemirror/mode/htmlmixed/htmlmixed.js +153 -0
  178. package/modules/codemirror/mode/http/http.js +113 -0
  179. package/modules/codemirror/mode/idl/idl.js +290 -0
  180. package/modules/codemirror/mode/javascript/javascript.js +960 -0
  181. package/modules/codemirror/mode/jinja2/jinja2.js +193 -0
  182. package/modules/codemirror/mode/jsx/jsx.js +149 -0
  183. package/modules/codemirror/mode/julia/julia.js +390 -0
  184. package/modules/codemirror/mode/livescript/livescript.js +280 -0
  185. package/modules/codemirror/mode/lua/lua.js +160 -0
  186. package/modules/codemirror/mode/markdown/markdown.js +886 -0
  187. package/modules/codemirror/mode/mathematica/mathematica.js +176 -0
  188. package/modules/codemirror/mode/mbox/mbox.js +129 -0
  189. package/modules/codemirror/mode/meta.js +221 -0
  190. package/modules/codemirror/mode/mirc/mirc.js +193 -0
  191. package/modules/codemirror/mode/mllike/mllike.js +359 -0
  192. package/modules/codemirror/mode/modelica/modelica.js +245 -0
  193. package/modules/codemirror/mode/mscgen/mscgen.js +175 -0
  194. package/modules/codemirror/mode/mumps/mumps.js +148 -0
  195. package/modules/codemirror/mode/nginx/nginx.js +178 -0
  196. package/modules/codemirror/mode/nsis/nsis.js +95 -0
  197. package/modules/codemirror/mode/ntriples/ntriples.js +195 -0
  198. package/modules/codemirror/mode/octave/octave.js +139 -0
  199. package/modules/codemirror/mode/oz/oz.js +252 -0
  200. package/modules/codemirror/mode/pascal/pascal.js +136 -0
  201. package/modules/codemirror/mode/pegjs/pegjs.js +111 -0
  202. package/modules/codemirror/mode/perl/perl.js +836 -0
  203. package/modules/codemirror/mode/php/php.js +234 -0
  204. package/modules/codemirror/mode/pig/pig.js +178 -0
  205. package/modules/codemirror/mode/powershell/powershell.js +398 -0
  206. package/modules/codemirror/mode/properties/properties.js +78 -0
  207. package/modules/codemirror/mode/protobuf/protobuf.js +72 -0
  208. package/modules/codemirror/mode/pug/pug.js +591 -0
  209. package/modules/codemirror/mode/puppet/puppet.js +220 -0
  210. package/modules/codemirror/mode/python/python.js +402 -0
  211. package/modules/codemirror/mode/q/q.js +139 -0
  212. package/modules/codemirror/mode/r/r.js +190 -0
  213. package/modules/codemirror/mode/rpm/changes/index.html +66 -0
  214. package/modules/codemirror/mode/rpm/rpm.js +109 -0
  215. package/modules/codemirror/mode/rst/rst.js +557 -0
  216. package/modules/codemirror/mode/ruby/ruby.js +303 -0
  217. package/modules/codemirror/mode/rust/rust.js +72 -0
  218. package/modules/codemirror/mode/sas/sas.js +303 -0
  219. package/modules/codemirror/mode/sass/sass.js +459 -0
  220. package/modules/codemirror/mode/scheme/scheme.js +284 -0
  221. package/modules/codemirror/mode/shell/shell.js +168 -0
  222. package/modules/codemirror/mode/sieve/sieve.js +193 -0
  223. package/modules/codemirror/mode/slim/slim.js +575 -0
  224. package/modules/codemirror/mode/smalltalk/smalltalk.js +168 -0
  225. package/modules/codemirror/mode/smarty/smarty.js +225 -0
  226. package/modules/codemirror/mode/solr/solr.js +104 -0
  227. package/modules/codemirror/mode/soy/soy.js +665 -0
  228. package/modules/codemirror/mode/sparql/sparql.js +184 -0
  229. package/modules/codemirror/mode/spreadsheet/spreadsheet.js +112 -0
  230. package/modules/codemirror/mode/sql/sql.js +529 -0
  231. package/modules/codemirror/mode/stex/stex.js +264 -0
  232. package/modules/codemirror/mode/stylus/stylus.js +775 -0
  233. package/modules/codemirror/mode/swift/swift.js +221 -0
  234. package/modules/codemirror/mode/tcl/tcl.js +140 -0
  235. package/modules/codemirror/mode/textile/textile.js +469 -0
  236. package/modules/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
  237. package/modules/codemirror/mode/tiddlywiki/tiddlywiki.js +308 -0
  238. package/modules/codemirror/mode/tiki/tiki.css +26 -0
  239. package/modules/codemirror/mode/tiki/tiki.js +312 -0
  240. package/modules/codemirror/mode/toml/toml.js +88 -0
  241. package/modules/codemirror/mode/tornado/tornado.js +68 -0
  242. package/modules/codemirror/mode/troff/troff.js +84 -0
  243. package/modules/codemirror/mode/ttcn/ttcn.js +283 -0
  244. package/modules/codemirror/mode/ttcn-cfg/ttcn-cfg.js +214 -0
  245. package/modules/codemirror/mode/turtle/turtle.js +162 -0
  246. package/modules/codemirror/mode/twig/twig.js +141 -0
  247. package/modules/codemirror/mode/vb/vb.js +275 -0
  248. package/modules/codemirror/mode/vbscript/vbscript.js +350 -0
  249. package/modules/codemirror/mode/velocity/velocity.js +202 -0
  250. package/modules/codemirror/mode/verilog/verilog.js +781 -0
  251. package/modules/codemirror/mode/vhdl/vhdl.js +189 -0
  252. package/modules/codemirror/mode/vue/vue.js +77 -0
  253. package/modules/codemirror/mode/wast/wast.js +132 -0
  254. package/modules/codemirror/mode/webidl/webidl.js +195 -0
  255. package/modules/codemirror/mode/xml/xml.js +417 -0
  256. package/modules/codemirror/mode/xquery/xquery.js +448 -0
  257. package/modules/codemirror/mode/yacas/yacas.js +204 -0
  258. package/modules/codemirror/mode/yaml/yaml.js +120 -0
  259. package/modules/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +72 -0
  260. package/modules/codemirror/mode/z80/z80.js +116 -0
  261. package/modules/codemirror/package.json +52 -0
  262. package/modules/codemirror/src/addon/runmode/codemirror-standalone.js +24 -0
  263. package/modules/codemirror/src/addon/runmode/codemirror.node.js +21 -0
  264. package/modules/codemirror/src/addon/runmode/runmode-standalone.js +2 -0
  265. package/modules/codemirror/src/addon/runmode/runmode.node.js +2 -0
  266. package/modules/codemirror/src/codemirror.js +3 -0
  267. package/modules/codemirror/src/display/Display.js +116 -0
  268. package/modules/codemirror/src/display/focus.js +50 -0
  269. package/modules/codemirror/src/display/gutters.js +44 -0
  270. package/modules/codemirror/src/display/highlight_worker.js +55 -0
  271. package/modules/codemirror/src/display/line_numbers.js +48 -0
  272. package/modules/codemirror/src/display/mode_state.js +22 -0
  273. package/modules/codemirror/src/display/operations.js +206 -0
  274. package/modules/codemirror/src/display/scroll_events.js +132 -0
  275. package/modules/codemirror/src/display/scrollbars.js +194 -0
  276. package/modules/codemirror/src/display/scrolling.js +186 -0
  277. package/modules/codemirror/src/display/selection.js +173 -0
  278. package/modules/codemirror/src/display/update_display.js +267 -0
  279. package/modules/codemirror/src/display/update_line.js +189 -0
  280. package/modules/codemirror/src/display/update_lines.js +82 -0
  281. package/modules/codemirror/src/display/view_tracking.js +153 -0
  282. package/modules/codemirror/src/edit/CodeMirror.js +217 -0
  283. package/modules/codemirror/src/edit/commands.js +178 -0
  284. package/modules/codemirror/src/edit/deleteNearSelection.js +30 -0
  285. package/modules/codemirror/src/edit/drop_events.js +130 -0
  286. package/modules/codemirror/src/edit/fromTextArea.js +61 -0
  287. package/modules/codemirror/src/edit/global_events.js +45 -0
  288. package/modules/codemirror/src/edit/key_events.js +163 -0
  289. package/modules/codemirror/src/edit/legacy.js +62 -0
  290. package/modules/codemirror/src/edit/main.js +69 -0
  291. package/modules/codemirror/src/edit/methods.js +555 -0
  292. package/modules/codemirror/src/edit/mouse_events.js +417 -0
  293. package/modules/codemirror/src/edit/options.js +194 -0
  294. package/modules/codemirror/src/edit/utils.js +7 -0
  295. package/modules/codemirror/src/input/#ContentEditableInput.js# +475 -0
  296. package/modules/codemirror/src/input/ContentEditableInput.js +546 -0
  297. package/modules/codemirror/src/input/TextareaInput.js +380 -0
  298. package/modules/codemirror/src/input/indent.js +71 -0
  299. package/modules/codemirror/src/input/input.js +134 -0
  300. package/modules/codemirror/src/input/keymap.js +147 -0
  301. package/modules/codemirror/src/input/keynames.js +17 -0
  302. package/modules/codemirror/src/input/movement.js +111 -0
  303. package/modules/codemirror/src/line/highlight.js +284 -0
  304. package/modules/codemirror/src/line/line_data.js +349 -0
  305. package/modules/codemirror/src/line/pos.js +40 -0
  306. package/modules/codemirror/src/line/saw_special_spans.js +10 -0
  307. package/modules/codemirror/src/line/spans.js +390 -0
  308. package/modules/codemirror/src/line/utils_line.js +85 -0
  309. package/modules/codemirror/src/measurement/position_measurement.js +702 -0
  310. package/modules/codemirror/src/measurement/widgets.js +26 -0
  311. package/modules/codemirror/src/model/Doc.js +436 -0
  312. package/modules/codemirror/src/model/change_measurement.js +61 -0
  313. package/modules/codemirror/src/model/changes.js +339 -0
  314. package/modules/codemirror/src/model/chunk.js +167 -0
  315. package/modules/codemirror/src/model/document_data.js +112 -0
  316. package/modules/codemirror/src/model/history.js +228 -0
  317. package/modules/codemirror/src/model/line_widget.js +78 -0
  318. package/modules/codemirror/src/model/mark_text.js +293 -0
  319. package/modules/codemirror/src/model/selection.js +84 -0
  320. package/modules/codemirror/src/model/selection_updates.js +216 -0
  321. package/modules/codemirror/src/modes.js +96 -0
  322. package/modules/codemirror/src/util/StringStream.js +90 -0
  323. package/modules/codemirror/src/util/bidi.js +215 -0
  324. package/modules/codemirror/src/util/browser.js +34 -0
  325. package/modules/codemirror/src/util/dom.js +111 -0
  326. package/modules/codemirror/src/util/event.js +103 -0
  327. package/modules/codemirror/src/util/feature_detection.js +84 -0
  328. package/modules/codemirror/src/util/misc.js +168 -0
  329. package/modules/codemirror/src/util/operation_group.js +72 -0
  330. package/modules/codemirror/theme/3024-day.css +41 -0
  331. package/modules/codemirror/theme/3024-night.css +39 -0
  332. package/modules/codemirror/theme/abbott.css +268 -0
  333. package/modules/codemirror/theme/abcdef.css +32 -0
  334. package/modules/codemirror/theme/ambiance-mobile.css +5 -0
  335. package/modules/codemirror/theme/ambiance.css +74 -0
  336. package/modules/codemirror/theme/ayu-dark.css +44 -0
  337. package/modules/codemirror/theme/ayu-mirage.css +45 -0
  338. package/modules/codemirror/theme/base16-dark.css +40 -0
  339. package/modules/codemirror/theme/base16-light.css +38 -0
  340. package/modules/codemirror/theme/bespin.css +34 -0
  341. package/modules/codemirror/theme/blackboard.css +32 -0
  342. package/modules/codemirror/theme/cobalt.css +25 -0
  343. package/modules/codemirror/theme/colorforth.css +33 -0
  344. package/modules/codemirror/theme/darcula.css +53 -0
  345. package/modules/codemirror/theme/dracula.css +40 -0
  346. package/modules/codemirror/theme/duotone-dark.css +35 -0
  347. package/modules/codemirror/theme/duotone-light.css +36 -0
  348. package/modules/codemirror/theme/eclipse.css +23 -0
  349. package/modules/codemirror/theme/elegant.css +13 -0
  350. package/modules/codemirror/theme/erlang-dark.css +34 -0
  351. package/modules/codemirror/theme/gruvbox-dark.css +39 -0
  352. package/modules/codemirror/theme/hopscotch.css +34 -0
  353. package/modules/codemirror/theme/icecoder.css +43 -0
  354. package/modules/codemirror/theme/idea.css +42 -0
  355. package/modules/codemirror/theme/isotope.css +34 -0
  356. package/modules/codemirror/theme/juejin.css +30 -0
  357. package/modules/codemirror/theme/lesser-dark.css +47 -0
  358. package/modules/codemirror/theme/liquibyte.css +95 -0
  359. package/modules/codemirror/theme/lucario.css +37 -0
  360. package/modules/codemirror/theme/material-darker.css +135 -0
  361. package/modules/codemirror/theme/material-ocean.css +141 -0
  362. package/modules/codemirror/theme/material-palenight.css +141 -0
  363. package/modules/codemirror/theme/material.css +141 -0
  364. package/modules/codemirror/theme/mbo.css +37 -0
  365. package/modules/codemirror/theme/mdn-like.css +46 -0
  366. package/modules/codemirror/theme/midnight.css +39 -0
  367. package/modules/codemirror/theme/monokai.css +41 -0
  368. package/modules/codemirror/theme/moxer.css +143 -0
  369. package/modules/codemirror/theme/neat.css +12 -0
  370. package/modules/codemirror/theme/neo.css +43 -0
  371. package/modules/codemirror/theme/night.css +27 -0
  372. package/modules/codemirror/theme/nord.css +42 -0
  373. package/modules/codemirror/theme/oceanic-next.css +46 -0
  374. package/modules/codemirror/theme/panda-syntax.css +85 -0
  375. package/modules/codemirror/theme/paraiso-dark.css +38 -0
  376. package/modules/codemirror/theme/paraiso-light.css +38 -0
  377. package/modules/codemirror/theme/pastel-on-dark.css +52 -0
  378. package/modules/codemirror/theme/railscasts.css +34 -0
  379. package/modules/codemirror/theme/rubyblue.css +25 -0
  380. package/modules/codemirror/theme/seti.css +44 -0
  381. package/modules/codemirror/theme/shadowfox.css +52 -0
  382. package/modules/codemirror/theme/solarized.css +165 -0
  383. package/modules/codemirror/theme/ssms.css +16 -0
  384. package/modules/codemirror/theme/the-matrix.css +30 -0
  385. package/modules/codemirror/theme/tomorrow-night-bright.css +35 -0
  386. package/modules/codemirror/theme/tomorrow-night-eighties.css +38 -0
  387. package/modules/codemirror/theme/ttcn.css +64 -0
  388. package/modules/codemirror/theme/twilight.css +32 -0
  389. package/modules/codemirror/theme/vibrant-ink.css +34 -0
  390. package/modules/codemirror/theme/xq-dark.css +53 -0
  391. package/modules/codemirror/theme/xq-light.css +43 -0
  392. package/modules/codemirror/theme/yeti.css +44 -0
  393. package/modules/codemirror/theme/yonce.css +59 -0
  394. package/modules/codemirror/theme/zenburn.css +37 -0
  395. package/modules/codemirror-emmet/README.md +56 -0
  396. package/modules/codemirror-emmet/dist/emmet.js +48661 -0
  397. package/modules/codemirror-emmet/dist/emmet.min.js +8 -0
  398. package/modules/codemirror-emmet/dist/emmetPlugin.js +840 -0
  399. package/modules/codemirror-emmet/dist/emmetPlugin.min.js +1 -0
  400. package/modules/codemirror-emmet/dist/index.html +46 -0
  401. package/modules/codemirror-emmet/editor.js +204 -0
  402. package/modules/codemirror-emmet/gulpfile.js +54 -0
  403. package/modules/codemirror-emmet/index.html +68 -0
  404. package/modules/codemirror-emmet/package.json +36 -0
  405. package/modules/codemirror-emmet/plugin.js +201 -0
  406. package/modules/codemirror-emmet/shim.js +19 -0
  407. package/modules/codemirror-emmet/vendor/almond.js +410 -0
  408. package/modules/codemirror-emmet/vendor/codemirror/v4/codemirror.css +270 -0
  409. package/modules/codemirror-emmet/vendor/codemirror/v4/codemirror.js +7339 -0
  410. package/modules/codemirror-emmet/vendor/codemirror/v4/css.js +701 -0
  411. package/modules/codemirror-emmet/vendor/codemirror/v4/htmlmixed.js +117 -0
  412. package/modules/codemirror-emmet/vendor/codemirror/v4/xml.js +349 -0
  413. package/modules/jshint/README.md +114 -0
  414. package/modules/jshint/dist/jshint-rhino.js +32143 -0
  415. package/modules/jshint/dist/jshint.js +32141 -0
  416. package/modules/jshint/package.json +77 -0
  417. package/modules/loadremote/ChangeLog +23 -0
  418. package/modules/loadremote/LICENSE +21 -0
  419. package/modules/loadremote/README.md +53 -0
  420. package/modules/loadremote/lib/loadremote.js +147 -0
  421. package/modules/loadremote/package.json +26 -0
  422. package/package.json +107 -0
  423. package/server/edit.js +54 -0
  424. package/server/index.js +193 -0
@@ -0,0 +1,295 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: https://codemirror.net/5/LICENSE
3
+
4
+ // Define search commands. Depends on dialog.js or another
5
+ // implementation of the openDialog method.
6
+
7
+ // Replace works a little oddly -- it will do the replace on the next
8
+ // Ctrl-G (or whatever is bound to findNext) press. You prevent a
9
+ // replace by making sure the match is no longer selected when hitting
10
+ // Ctrl-G.
11
+
12
+ (function(mod) {
13
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
14
+ mod(require("../../lib/codemirror"), require("./searchcursor"), require("../dialog/dialog"));
15
+ else if (typeof define == "function" && define.amd) // AMD
16
+ define(["../../lib/codemirror", "./searchcursor", "../dialog/dialog"], mod);
17
+ else // Plain browser env
18
+ mod(CodeMirror);
19
+ })(function(CodeMirror) {
20
+ "use strict";
21
+
22
+ // default search panel location
23
+ CodeMirror.defineOption("search", {bottom: false});
24
+
25
+ function searchOverlay(query, caseInsensitive) {
26
+ if (typeof query == "string")
27
+ query = new RegExp(query.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), caseInsensitive ? "gi" : "g");
28
+ else if (!query.global)
29
+ query = new RegExp(query.source, query.ignoreCase ? "gi" : "g");
30
+
31
+ return {token: function(stream) {
32
+ query.lastIndex = stream.pos;
33
+ var match = query.exec(stream.string);
34
+ if (match && match.index == stream.pos) {
35
+ stream.pos += match[0].length || 1;
36
+ return "searching";
37
+ } else if (match) {
38
+ stream.pos = match.index;
39
+ } else {
40
+ stream.skipToEnd();
41
+ }
42
+ }};
43
+ }
44
+
45
+ function SearchState() {
46
+ this.posFrom = this.posTo = this.lastQuery = this.query = null;
47
+ this.overlay = null;
48
+ }
49
+
50
+ function getSearchState(cm) {
51
+ return cm.state.search || (cm.state.search = new SearchState());
52
+ }
53
+
54
+ function queryCaseInsensitive(query) {
55
+ return typeof query == "string" && query == query.toLowerCase();
56
+ }
57
+
58
+ function getSearchCursor(cm, query, pos) {
59
+ // Heuristic: if the query string is all lowercase, do a case insensitive search.
60
+ return cm.getSearchCursor(query, pos, {caseFold: queryCaseInsensitive(query), multiline: true});
61
+ }
62
+
63
+ function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {
64
+ cm.openDialog(text, onEnter, {
65
+ value: deflt,
66
+ selectValueOnOpen: true,
67
+ closeOnEnter: false,
68
+ onClose: function() { clearSearch(cm); },
69
+ onKeyDown: onKeyDown,
70
+ bottom: cm.options.search.bottom
71
+ });
72
+ }
73
+
74
+ function dialog(cm, text, shortText, deflt, f) {
75
+ if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true, bottom: cm.options.search.bottom});
76
+ else f(prompt(shortText, deflt));
77
+ }
78
+
79
+ function confirmDialog(cm, text, shortText, fs) {
80
+ if (cm.openConfirm) cm.openConfirm(text, fs);
81
+ else if (confirm(shortText)) fs[0]();
82
+ }
83
+
84
+ function parseString(string) {
85
+ return string.replace(/\\([nrt\\])/g, function(match, ch) {
86
+ if (ch == "n") return "\n"
87
+ if (ch == "r") return "\r"
88
+ if (ch == "t") return "\t"
89
+ if (ch == "\\") return "\\"
90
+ return match
91
+ })
92
+ }
93
+
94
+ function parseQuery(query) {
95
+ var isRE = query.match(/^\/(.*)\/([a-z]*)$/);
96
+ if (isRE) {
97
+ try { query = new RegExp(isRE[1], isRE[2].indexOf("i") == -1 ? "" : "i"); }
98
+ catch(e) {} // Not a regular expression after all, do a string search
99
+ } else {
100
+ query = parseString(query)
101
+ }
102
+ if (typeof query == "string" ? query == "" : query.test(""))
103
+ query = /x^/;
104
+ return query;
105
+ }
106
+
107
+ function startSearch(cm, state, query) {
108
+ state.queryText = query;
109
+ state.query = parseQuery(query);
110
+ cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));
111
+ state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));
112
+ cm.addOverlay(state.overlay);
113
+ if (cm.showMatchesOnScrollbar) {
114
+ if (state.annotate) { state.annotate.clear(); state.annotate = null; }
115
+ state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));
116
+ }
117
+ }
118
+
119
+ function doSearch(cm, rev, persistent, immediate) {
120
+ var state = getSearchState(cm);
121
+ if (state.query) return findNext(cm, rev);
122
+ var q = cm.getSelection() || state.lastQuery;
123
+ if (q instanceof RegExp && q.source == "x^") q = null
124
+ if (persistent && cm.openDialog) {
125
+ var hiding = null
126
+ var searchNext = function(query, event) {
127
+ CodeMirror.e_stop(event);
128
+ if (!query) return;
129
+ if (query != state.queryText) {
130
+ startSearch(cm, state, query);
131
+ state.posFrom = state.posTo = cm.getCursor();
132
+ }
133
+ if (hiding) hiding.style.opacity = 1
134
+ findNext(cm, event.shiftKey, function(_, to) {
135
+ var dialog
136
+ if (to.line < 3 && document.querySelector &&
137
+ (dialog = cm.display.wrapper.querySelector(".CodeMirror-dialog")) &&
138
+ dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, "window").top)
139
+ (hiding = dialog).style.opacity = .4
140
+ })
141
+ };
142
+ persistentDialog(cm, getQueryDialog(cm), q, searchNext, function(event, query) {
143
+ var keyName = CodeMirror.keyName(event)
144
+ var extra = cm.getOption('extraKeys'), cmd = (extra && extra[keyName]) || CodeMirror.keyMap[cm.getOption("keyMap")][keyName]
145
+ if (cmd == "findNext" || cmd == "findPrev" ||
146
+ cmd == "findPersistentNext" || cmd == "findPersistentPrev") {
147
+ CodeMirror.e_stop(event);
148
+ startSearch(cm, getSearchState(cm), query);
149
+ cm.execCommand(cmd);
150
+ } else if (cmd == "find" || cmd == "findPersistent") {
151
+ CodeMirror.e_stop(event);
152
+ searchNext(query, event);
153
+ }
154
+ });
155
+ if (immediate && q) {
156
+ startSearch(cm, state, q);
157
+ findNext(cm, rev);
158
+ }
159
+ } else {
160
+ dialog(cm, getQueryDialog(cm), "Search for:", q, function(query) {
161
+ if (query && !state.query) cm.operation(function() {
162
+ startSearch(cm, state, query);
163
+ state.posFrom = state.posTo = cm.getCursor();
164
+ findNext(cm, rev);
165
+ });
166
+ });
167
+ }
168
+ }
169
+
170
+ function findNext(cm, rev, callback) {cm.operation(function() {
171
+ var state = getSearchState(cm);
172
+ var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);
173
+ if (!cursor.find(rev)) {
174
+ cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));
175
+ if (!cursor.find(rev)) return;
176
+ }
177
+ cm.setSelection(cursor.from(), cursor.to());
178
+ cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);
179
+ state.posFrom = cursor.from(); state.posTo = cursor.to();
180
+ if (callback) callback(cursor.from(), cursor.to())
181
+ });}
182
+
183
+ function clearSearch(cm) {cm.operation(function() {
184
+ var state = getSearchState(cm);
185
+ state.lastQuery = state.query;
186
+ if (!state.query) return;
187
+ state.query = state.queryText = null;
188
+ cm.removeOverlay(state.overlay);
189
+ if (state.annotate) { state.annotate.clear(); state.annotate = null; }
190
+ });}
191
+
192
+ function el(tag, attrs) {
193
+ var element = tag ? document.createElement(tag) : document.createDocumentFragment();
194
+ for (var key in attrs) {
195
+ element[key] = attrs[key];
196
+ }
197
+ for (var i = 2; i < arguments.length; i++) {
198
+ var child = arguments[i]
199
+ element.appendChild(typeof child == "string" ? document.createTextNode(child) : child);
200
+ }
201
+ return element;
202
+ }
203
+
204
+ function getQueryDialog(cm) {
205
+ var label = el("label", {className: "CodeMirror-search-label"},
206
+ cm.phrase("Search:"),
207
+ el("input", {type: "text", "style": "width: 10em", className: "CodeMirror-search-field",
208
+ id: "CodeMirror-search-field"}));
209
+ label.setAttribute("for","CodeMirror-search-field");
210
+ return el("", null, label, " ",
211
+ el("span", {style: "color: #666", className: "CodeMirror-search-hint"},
212
+ cm.phrase("(Use /re/ syntax for regexp search)")));
213
+ }
214
+ function getReplaceQueryDialog(cm) {
215
+ return el("", null, " ",
216
+ el("input", {type: "text", "style": "width: 10em", className: "CodeMirror-search-field"}), " ",
217
+ el("span", {style: "color: #666", className: "CodeMirror-search-hint"},
218
+ cm.phrase("(Use /re/ syntax for regexp search)")));
219
+ }
220
+ function getReplacementQueryDialog(cm) {
221
+ return el("", null,
222
+ el("span", {className: "CodeMirror-search-label"}, cm.phrase("With:")), " ",
223
+ el("input", {type: "text", "style": "width: 10em", className: "CodeMirror-search-field"}));
224
+ }
225
+ function getDoReplaceConfirm(cm) {
226
+ return el("", null,
227
+ el("span", {className: "CodeMirror-search-label"}, cm.phrase("Replace?")), " ",
228
+ el("button", {}, cm.phrase("Yes")), " ",
229
+ el("button", {}, cm.phrase("No")), " ",
230
+ el("button", {}, cm.phrase("All")), " ",
231
+ el("button", {}, cm.phrase("Stop")));
232
+ }
233
+
234
+ function replaceAll(cm, query, text) {
235
+ cm.operation(function() {
236
+ for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {
237
+ if (typeof query != "string") {
238
+ var match = cm.getRange(cursor.from(), cursor.to()).match(query);
239
+ cursor.replace(text.replace(/\$(\d)/g, function(_, i) {return match[i];}));
240
+ } else cursor.replace(text);
241
+ }
242
+ });
243
+ }
244
+
245
+ function replace(cm, all) {
246
+ if (cm.getOption("readOnly")) return;
247
+ var query = cm.getSelection() || getSearchState(cm).lastQuery;
248
+ var dialogText = all ? cm.phrase("Replace all:") : cm.phrase("Replace:")
249
+ var fragment = el("", null,
250
+ el("span", {className: "CodeMirror-search-label"}, dialogText),
251
+ getReplaceQueryDialog(cm))
252
+ dialog(cm, fragment, dialogText, query, function(query) {
253
+ if (!query) return;
254
+ query = parseQuery(query);
255
+ dialog(cm, getReplacementQueryDialog(cm), cm.phrase("Replace with:"), "", function(text) {
256
+ text = parseString(text)
257
+ if (all) {
258
+ replaceAll(cm, query, text)
259
+ } else {
260
+ clearSearch(cm);
261
+ var cursor = getSearchCursor(cm, query, cm.getCursor("from"));
262
+ var advance = function() {
263
+ var start = cursor.from(), match;
264
+ if (!(match = cursor.findNext())) {
265
+ cursor = getSearchCursor(cm, query);
266
+ if (!(match = cursor.findNext()) ||
267
+ (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;
268
+ }
269
+ cm.setSelection(cursor.from(), cursor.to());
270
+ cm.scrollIntoView({from: cursor.from(), to: cursor.to()});
271
+ confirmDialog(cm, getDoReplaceConfirm(cm), cm.phrase("Replace?"),
272
+ [function() {doReplace(match);}, advance,
273
+ function() {replaceAll(cm, query, text)}]);
274
+ };
275
+ var doReplace = function(match) {
276
+ cursor.replace(typeof query == "string" ? text :
277
+ text.replace(/\$(\d)/g, function(_, i) {return match[i];}));
278
+ advance();
279
+ };
280
+ advance();
281
+ }
282
+ });
283
+ });
284
+ }
285
+
286
+ CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};
287
+ CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);};
288
+ CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);};
289
+ CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);};
290
+ CodeMirror.commands.findNext = doSearch;
291
+ CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};
292
+ CodeMirror.commands.clearSearch = clearSearch;
293
+ CodeMirror.commands.replace = replace;
294
+ CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};
295
+ });
@@ -0,0 +1,305 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: https://codemirror.net/5/LICENSE
3
+
4
+ (function(mod) {
5
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
6
+ mod(require("../../lib/codemirror"))
7
+ else if (typeof define == "function" && define.amd) // AMD
8
+ define(["../../lib/codemirror"], mod)
9
+ else // Plain browser env
10
+ mod(CodeMirror)
11
+ })(function(CodeMirror) {
12
+ "use strict"
13
+ var Pos = CodeMirror.Pos
14
+
15
+ function regexpFlags(regexp) {
16
+ var flags = regexp.flags
17
+ return flags != null ? flags : (regexp.ignoreCase ? "i" : "")
18
+ + (regexp.global ? "g" : "")
19
+ + (regexp.multiline ? "m" : "")
20
+ }
21
+
22
+ function ensureFlags(regexp, flags) {
23
+ var current = regexpFlags(regexp), target = current
24
+ for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)
25
+ target += flags.charAt(i)
26
+ return current == target ? regexp : new RegExp(regexp.source, target)
27
+ }
28
+
29
+ function maybeMultiline(regexp) {
30
+ return /\\s|\\n|\n|\\W|\\D|\[\^/.test(regexp.source)
31
+ }
32
+
33
+ function searchRegexpForward(doc, regexp, start) {
34
+ regexp = ensureFlags(regexp, "g")
35
+ for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {
36
+ regexp.lastIndex = ch
37
+ var string = doc.getLine(line), match = regexp.exec(string)
38
+ if (match)
39
+ return {from: Pos(line, match.index),
40
+ to: Pos(line, match.index + match[0].length),
41
+ match: match}
42
+ }
43
+ }
44
+
45
+ function searchRegexpForwardMultiline(doc, regexp, start) {
46
+ if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)
47
+
48
+ regexp = ensureFlags(regexp, "gm")
49
+ var string, chunk = 1
50
+ for (var line = start.line, last = doc.lastLine(); line <= last;) {
51
+ // This grows the search buffer in exponentially-sized chunks
52
+ // between matches, so that nearby matches are fast and don't
53
+ // require concatenating the whole document (in case we're
54
+ // searching for something that has tons of matches), but at the
55
+ // same time, the amount of retries is limited.
56
+ for (var i = 0; i < chunk; i++) {
57
+ if (line > last) break
58
+ var curLine = doc.getLine(line++)
59
+ string = string == null ? curLine : string + "\n" + curLine
60
+ }
61
+ chunk = chunk * 2
62
+ regexp.lastIndex = start.ch
63
+ var match = regexp.exec(string)
64
+ if (match) {
65
+ var before = string.slice(0, match.index).split("\n"), inside = match[0].split("\n")
66
+ var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length
67
+ return {from: Pos(startLine, startCh),
68
+ to: Pos(startLine + inside.length - 1,
69
+ inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),
70
+ match: match}
71
+ }
72
+ }
73
+ }
74
+
75
+ function lastMatchIn(string, regexp, endMargin) {
76
+ var match, from = 0
77
+ while (from <= string.length) {
78
+ regexp.lastIndex = from
79
+ var newMatch = regexp.exec(string)
80
+ if (!newMatch) break
81
+ var end = newMatch.index + newMatch[0].length
82
+ if (end > string.length - endMargin) break
83
+ if (!match || end > match.index + match[0].length)
84
+ match = newMatch
85
+ from = newMatch.index + 1
86
+ }
87
+ return match
88
+ }
89
+
90
+ function searchRegexpBackward(doc, regexp, start) {
91
+ regexp = ensureFlags(regexp, "g")
92
+ for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {
93
+ var string = doc.getLine(line)
94
+ var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)
95
+ if (match)
96
+ return {from: Pos(line, match.index),
97
+ to: Pos(line, match.index + match[0].length),
98
+ match: match}
99
+ }
100
+ }
101
+
102
+ function searchRegexpBackwardMultiline(doc, regexp, start) {
103
+ if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)
104
+ regexp = ensureFlags(regexp, "gm")
105
+ var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch
106
+ for (var line = start.line, first = doc.firstLine(); line >= first;) {
107
+ for (var i = 0; i < chunkSize && line >= first; i++) {
108
+ var curLine = doc.getLine(line--)
109
+ string = string == null ? curLine : curLine + "\n" + string
110
+ }
111
+ chunkSize *= 2
112
+
113
+ var match = lastMatchIn(string, regexp, endMargin)
114
+ if (match) {
115
+ var before = string.slice(0, match.index).split("\n"), inside = match[0].split("\n")
116
+ var startLine = line + before.length, startCh = before[before.length - 1].length
117
+ return {from: Pos(startLine, startCh),
118
+ to: Pos(startLine + inside.length - 1,
119
+ inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),
120
+ match: match}
121
+ }
122
+ }
123
+ }
124
+
125
+ var doFold, noFold
126
+ if (String.prototype.normalize) {
127
+ doFold = function(str) { return str.normalize("NFD").toLowerCase() }
128
+ noFold = function(str) { return str.normalize("NFD") }
129
+ } else {
130
+ doFold = function(str) { return str.toLowerCase() }
131
+ noFold = function(str) { return str }
132
+ }
133
+
134
+ // Maps a position in a case-folded line back to a position in the original line
135
+ // (compensating for codepoints increasing in number during folding)
136
+ function adjustPos(orig, folded, pos, foldFunc) {
137
+ if (orig.length == folded.length) return pos
138
+ for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {
139
+ if (min == max) return min
140
+ var mid = (min + max) >> 1
141
+ var len = foldFunc(orig.slice(0, mid)).length
142
+ if (len == pos) return mid
143
+ else if (len > pos) max = mid
144
+ else min = mid + 1
145
+ }
146
+ }
147
+
148
+ function searchStringForward(doc, query, start, caseFold) {
149
+ // Empty string would match anything and never progress, so we
150
+ // define it to match nothing instead.
151
+ if (!query.length) return null
152
+ var fold = caseFold ? doFold : noFold
153
+ var lines = fold(query).split(/\r|\n\r?/)
154
+
155
+ search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {
156
+ var orig = doc.getLine(line).slice(ch), string = fold(orig)
157
+ if (lines.length == 1) {
158
+ var found = string.indexOf(lines[0])
159
+ if (found == -1) continue search
160
+ var start = adjustPos(orig, string, found, fold) + ch
161
+ return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),
162
+ to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}
163
+ } else {
164
+ var cutFrom = string.length - lines[0].length
165
+ if (string.slice(cutFrom) != lines[0]) continue search
166
+ for (var i = 1; i < lines.length - 1; i++)
167
+ if (fold(doc.getLine(line + i)) != lines[i]) continue search
168
+ var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]
169
+ if (endString.slice(0, lastLine.length) != lastLine) continue search
170
+ return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),
171
+ to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}
172
+ }
173
+ }
174
+ }
175
+
176
+ function searchStringBackward(doc, query, start, caseFold) {
177
+ if (!query.length) return null
178
+ var fold = caseFold ? doFold : noFold
179
+ var lines = fold(query).split(/\r|\n\r?/)
180
+
181
+ search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {
182
+ var orig = doc.getLine(line)
183
+ if (ch > -1) orig = orig.slice(0, ch)
184
+ var string = fold(orig)
185
+ if (lines.length == 1) {
186
+ var found = string.lastIndexOf(lines[0])
187
+ if (found == -1) continue search
188
+ return {from: Pos(line, adjustPos(orig, string, found, fold)),
189
+ to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}
190
+ } else {
191
+ var lastLine = lines[lines.length - 1]
192
+ if (string.slice(0, lastLine.length) != lastLine) continue search
193
+ for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)
194
+ if (fold(doc.getLine(start + i)) != lines[i]) continue search
195
+ var top = doc.getLine(line + 1 - lines.length), topString = fold(top)
196
+ if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search
197
+ return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),
198
+ to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}
199
+ }
200
+ }
201
+ }
202
+
203
+ function SearchCursor(doc, query, pos, options) {
204
+ this.atOccurrence = false
205
+ this.afterEmptyMatch = false
206
+ this.doc = doc
207
+ pos = pos ? doc.clipPos(pos) : Pos(0, 0)
208
+ this.pos = {from: pos, to: pos}
209
+
210
+ var caseFold
211
+ if (typeof options == "object") {
212
+ caseFold = options.caseFold
213
+ } else { // Backwards compat for when caseFold was the 4th argument
214
+ caseFold = options
215
+ options = null
216
+ }
217
+
218
+ if (typeof query == "string") {
219
+ if (caseFold == null) caseFold = false
220
+ this.matches = function(reverse, pos) {
221
+ return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)
222
+ }
223
+ } else {
224
+ query = ensureFlags(query, "gm")
225
+ if (!options || options.multiline !== false)
226
+ this.matches = function(reverse, pos) {
227
+ return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)
228
+ }
229
+ else
230
+ this.matches = function(reverse, pos) {
231
+ return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)
232
+ }
233
+ }
234
+ }
235
+
236
+ SearchCursor.prototype = {
237
+ findNext: function() {return this.find(false)},
238
+ findPrevious: function() {return this.find(true)},
239
+
240
+ find: function(reverse) {
241
+ var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);
242
+ if (this.afterEmptyMatch && this.atOccurrence) {
243
+ // do not return the same 0 width match twice
244
+ head = Pos(head.line, head.ch)
245
+ if (reverse) {
246
+ head.ch--;
247
+ if (head.ch < 0) {
248
+ head.line--;
249
+ head.ch = (this.doc.getLine(head.line) || "").length;
250
+ }
251
+ } else {
252
+ head.ch++;
253
+ if (head.ch > (this.doc.getLine(head.line) || "").length) {
254
+ head.ch = 0;
255
+ head.line++;
256
+ }
257
+ }
258
+ if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {
259
+ return this.atOccurrence = false
260
+ }
261
+ }
262
+ var result = this.matches(reverse, head)
263
+ this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0
264
+
265
+ if (result) {
266
+ this.pos = result
267
+ this.atOccurrence = true
268
+ return this.pos.match || true
269
+ } else {
270
+ var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)
271
+ this.pos = {from: end, to: end}
272
+ return this.atOccurrence = false
273
+ }
274
+ },
275
+
276
+ from: function() {if (this.atOccurrence) return this.pos.from},
277
+ to: function() {if (this.atOccurrence) return this.pos.to},
278
+
279
+ replace: function(newText, origin) {
280
+ if (!this.atOccurrence) return
281
+ var lines = CodeMirror.splitLines(newText)
282
+ this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)
283
+ this.pos.to = Pos(this.pos.from.line + lines.length - 1,
284
+ lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))
285
+ }
286
+ }
287
+
288
+ CodeMirror.defineExtension("getSearchCursor", function(query, pos, caseFold) {
289
+ return new SearchCursor(this.doc, query, pos, caseFold)
290
+ })
291
+ CodeMirror.defineDocExtension("getSearchCursor", function(query, pos, caseFold) {
292
+ return new SearchCursor(this, query, pos, caseFold)
293
+ })
294
+
295
+ CodeMirror.defineExtension("selectMatches", function(query, caseFold) {
296
+ var ranges = []
297
+ var cur = this.getSearchCursor(query, this.getCursor("from"), caseFold)
298
+ while (cur.findNext()) {
299
+ if (CodeMirror.cmpPos(cur.to(), this.getCursor("to")) > 0) break
300
+ ranges.push({anchor: cur.from(), head: cur.to()})
301
+ }
302
+ if (ranges.length)
303
+ this.setSelections(ranges, 0)
304
+ })
305
+ });
@@ -0,0 +1,72 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: https://codemirror.net/5/LICENSE
3
+
4
+ (function(mod) {
5
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
6
+ mod(require("../../lib/codemirror"));
7
+ else if (typeof define == "function" && define.amd) // AMD
8
+ define(["../../lib/codemirror"], mod);
9
+ else // Plain browser env
10
+ mod(CodeMirror);
11
+ })(function(CodeMirror) {
12
+ "use strict";
13
+ var WRAP_CLASS = "CodeMirror-activeline";
14
+ var BACK_CLASS = "CodeMirror-activeline-background";
15
+ var GUTT_CLASS = "CodeMirror-activeline-gutter";
16
+
17
+ CodeMirror.defineOption("styleActiveLine", false, function(cm, val, old) {
18
+ var prev = old == CodeMirror.Init ? false : old;
19
+ if (val == prev) return
20
+ if (prev) {
21
+ cm.off("beforeSelectionChange", selectionChange);
22
+ clearActiveLines(cm);
23
+ delete cm.state.activeLines;
24
+ }
25
+ if (val) {
26
+ cm.state.activeLines = [];
27
+ updateActiveLines(cm, cm.listSelections());
28
+ cm.on("beforeSelectionChange", selectionChange);
29
+ }
30
+ });
31
+
32
+ function clearActiveLines(cm) {
33
+ for (var i = 0; i < cm.state.activeLines.length; i++) {
34
+ cm.removeLineClass(cm.state.activeLines[i], "wrap", WRAP_CLASS);
35
+ cm.removeLineClass(cm.state.activeLines[i], "background", BACK_CLASS);
36
+ cm.removeLineClass(cm.state.activeLines[i], "gutter", GUTT_CLASS);
37
+ }
38
+ }
39
+
40
+ function sameArray(a, b) {
41
+ if (a.length != b.length) return false;
42
+ for (var i = 0; i < a.length; i++)
43
+ if (a[i] != b[i]) return false;
44
+ return true;
45
+ }
46
+
47
+ function updateActiveLines(cm, ranges) {
48
+ var active = [];
49
+ for (var i = 0; i < ranges.length; i++) {
50
+ var range = ranges[i];
51
+ var option = cm.getOption("styleActiveLine");
52
+ if (typeof option == "object" && option.nonEmpty ? range.anchor.line != range.head.line : !range.empty())
53
+ continue
54
+ var line = cm.getLineHandleVisualStart(range.head.line);
55
+ if (active[active.length - 1] != line) active.push(line);
56
+ }
57
+ if (sameArray(cm.state.activeLines, active)) return;
58
+ cm.operation(function() {
59
+ clearActiveLines(cm);
60
+ for (var i = 0; i < active.length; i++) {
61
+ cm.addLineClass(active[i], "wrap", WRAP_CLASS);
62
+ cm.addLineClass(active[i], "background", BACK_CLASS);
63
+ cm.addLineClass(active[i], "gutter", GUTT_CLASS);
64
+ }
65
+ cm.state.activeLines = active;
66
+ });
67
+ }
68
+
69
+ function selectionChange(cm, sel) {
70
+ updateActiveLines(cm, sel.ranges);
71
+ }
72
+ });