ll-plus 2.10.24 → 2.10.25

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 (191) hide show
  1. package/package.json +1 -1
  2. package/theme-chalk/code-editor-vue3/addon/comment/comment.js +211 -0
  3. package/theme-chalk/code-editor-vue3/addon/comment/continuecomment.js +114 -0
  4. package/theme-chalk/code-editor-vue3/addon/dialog/dialog.css +32 -0
  5. package/theme-chalk/code-editor-vue3/addon/dialog/dialog.js +163 -0
  6. package/theme-chalk/code-editor-vue3/addon/display/autorefresh.js +47 -0
  7. package/theme-chalk/code-editor-vue3/addon/display/fullscreen.css +6 -0
  8. package/theme-chalk/code-editor-vue3/addon/display/fullscreen.js +41 -0
  9. package/theme-chalk/code-editor-vue3/addon/display/panel.js +133 -0
  10. package/theme-chalk/code-editor-vue3/addon/display/placeholder.js +78 -0
  11. package/theme-chalk/code-editor-vue3/addon/display/rulers.js +51 -0
  12. package/theme-chalk/code-editor-vue3/addon/edit/closebrackets.js +201 -0
  13. package/theme-chalk/code-editor-vue3/addon/edit/closetag.js +185 -0
  14. package/theme-chalk/code-editor-vue3/addon/edit/continuelist.js +101 -0
  15. package/theme-chalk/code-editor-vue3/addon/edit/matchbrackets.js +160 -0
  16. package/theme-chalk/code-editor-vue3/addon/edit/matchtags.js +66 -0
  17. package/theme-chalk/code-editor-vue3/addon/edit/trailingspace.js +27 -0
  18. package/theme-chalk/code-editor-vue3/addon/fold/brace-fold.js +119 -0
  19. package/theme-chalk/code-editor-vue3/addon/fold/comment-fold.js +59 -0
  20. package/theme-chalk/code-editor-vue3/addon/fold/foldcode.js +159 -0
  21. package/theme-chalk/code-editor-vue3/addon/fold/foldgutter.css +20 -0
  22. package/theme-chalk/code-editor-vue3/addon/fold/foldgutter.js +169 -0
  23. package/theme-chalk/code-editor-vue3/addon/fold/indent-fold.js +48 -0
  24. package/theme-chalk/code-editor-vue3/addon/fold/markdown-fold.js +49 -0
  25. package/theme-chalk/code-editor-vue3/addon/fold/xml-fold.js +184 -0
  26. package/theme-chalk/code-editor-vue3/addon/hint/anyword-hint.js +41 -0
  27. package/theme-chalk/code-editor-vue3/addon/hint/css-hint.js +66 -0
  28. package/theme-chalk/code-editor-vue3/addon/hint/html-hint.js +351 -0
  29. package/theme-chalk/code-editor-vue3/addon/hint/javascript-hint.js +162 -0
  30. package/theme-chalk/code-editor-vue3/addon/hint/show-hint.css +37 -0
  31. package/theme-chalk/code-editor-vue3/addon/hint/show-hint.js +523 -0
  32. package/theme-chalk/code-editor-vue3/addon/hint/sql-hint.js +304 -0
  33. package/theme-chalk/code-editor-vue3/addon/hint/xml-hint.js +132 -0
  34. package/theme-chalk/code-editor-vue3/addon/lint/coffeescript-lint.js +47 -0
  35. package/theme-chalk/code-editor-vue3/addon/lint/css-lint.js +40 -0
  36. package/theme-chalk/code-editor-vue3/addon/lint/html-lint.js +59 -0
  37. package/theme-chalk/code-editor-vue3/addon/lint/javascript-lint.js +65 -0
  38. package/theme-chalk/code-editor-vue3/addon/lint/json-lint.js +40 -0
  39. package/theme-chalk/code-editor-vue3/addon/lint/lint.css +79 -0
  40. package/theme-chalk/code-editor-vue3/addon/lint/lint.js +288 -0
  41. package/theme-chalk/code-editor-vue3/addon/lint/yaml-lint.js +41 -0
  42. package/theme-chalk/code-editor-vue3/addon/merge/merge.css +119 -0
  43. package/theme-chalk/code-editor-vue3/addon/merge/merge.js +1018 -0
  44. package/theme-chalk/code-editor-vue3/addon/mode/loadmode.js +66 -0
  45. package/theme-chalk/code-editor-vue3/addon/mode/multiplex.js +136 -0
  46. package/theme-chalk/code-editor-vue3/addon/mode/multiplex_test.js +49 -0
  47. package/theme-chalk/code-editor-vue3/addon/mode/overlay.js +90 -0
  48. package/theme-chalk/code-editor-vue3/addon/mode/simple.js +216 -0
  49. package/theme-chalk/code-editor-vue3/addon/runmode/colorize.js +40 -0
  50. package/theme-chalk/code-editor-vue3/addon/runmode/runmode-standalone.js +334 -0
  51. package/theme-chalk/code-editor-vue3/addon/runmode/runmode.js +76 -0
  52. package/theme-chalk/code-editor-vue3/addon/runmode/runmode.node.js +329 -0
  53. package/theme-chalk/code-editor-vue3/addon/scroll/annotatescrollbar.js +128 -0
  54. package/theme-chalk/code-editor-vue3/addon/scroll/scrollpastend.js +48 -0
  55. package/theme-chalk/code-editor-vue3/addon/scroll/simplescrollbars.css +66 -0
  56. package/theme-chalk/code-editor-vue3/addon/scroll/simplescrollbars.js +152 -0
  57. package/theme-chalk/code-editor-vue3/addon/search/jump-to-line.js +53 -0
  58. package/theme-chalk/code-editor-vue3/addon/search/match-highlighter.js +167 -0
  59. package/theme-chalk/code-editor-vue3/addon/search/matchesonscrollbar.css +8 -0
  60. package/theme-chalk/code-editor-vue3/addon/search/matchesonscrollbar.js +97 -0
  61. package/theme-chalk/code-editor-vue3/addon/search/search.js +295 -0
  62. package/theme-chalk/code-editor-vue3/addon/search/searchcursor.js +305 -0
  63. package/theme-chalk/code-editor-vue3/addon/selection/active-line.js +72 -0
  64. package/theme-chalk/code-editor-vue3/addon/selection/mark-selection.js +119 -0
  65. package/theme-chalk/code-editor-vue3/addon/selection/selection-pointer.js +98 -0
  66. package/theme-chalk/code-editor-vue3/addon/tern/tern.css +87 -0
  67. package/theme-chalk/code-editor-vue3/addon/tern/tern.js +756 -0
  68. package/theme-chalk/code-editor-vue3/addon/tern/worker.js +44 -0
  69. package/theme-chalk/code-editor-vue3/addon/wrap/hardwrap.js +160 -0
  70. package/theme-chalk/code-editor-vue3/lib/codemirror.css +344 -0
  71. package/theme-chalk/code-editor-vue3/lib/codemirror.js +9884 -0
  72. package/theme-chalk/code-editor-vue3/mode/apl/apl.js +174 -0
  73. package/theme-chalk/code-editor-vue3/mode/asciiarmor/asciiarmor.js +74 -0
  74. package/theme-chalk/code-editor-vue3/mode/asn.1/asn.1.js +204 -0
  75. package/theme-chalk/code-editor-vue3/mode/asterisk/asterisk.js +220 -0
  76. package/theme-chalk/code-editor-vue3/mode/brainfuck/brainfuck.js +85 -0
  77. package/theme-chalk/code-editor-vue3/mode/clike/clike.js +942 -0
  78. package/theme-chalk/code-editor-vue3/mode/clojure/clojure.js +293 -0
  79. package/theme-chalk/code-editor-vue3/mode/cmake/cmake.js +97 -0
  80. package/theme-chalk/code-editor-vue3/mode/cobol/cobol.js +255 -0
  81. package/theme-chalk/code-editor-vue3/mode/coffeescript/coffeescript.js +359 -0
  82. package/theme-chalk/code-editor-vue3/mode/commonlisp/commonlisp.js +125 -0
  83. package/theme-chalk/code-editor-vue3/mode/crystal/crystal.js +433 -0
  84. package/theme-chalk/code-editor-vue3/mode/cypher/cypher.js +152 -0
  85. package/theme-chalk/code-editor-vue3/mode/d/d.js +223 -0
  86. package/theme-chalk/code-editor-vue3/mode/dart/dart.js +168 -0
  87. package/theme-chalk/code-editor-vue3/mode/diff/diff.js +47 -0
  88. package/theme-chalk/code-editor-vue3/mode/django/django.js +356 -0
  89. package/theme-chalk/code-editor-vue3/mode/dockerfile/dockerfile.js +211 -0
  90. package/theme-chalk/code-editor-vue3/mode/dtd/dtd.js +142 -0
  91. package/theme-chalk/code-editor-vue3/mode/dylan/dylan.js +352 -0
  92. package/theme-chalk/code-editor-vue3/mode/ebnf/ebnf.js +195 -0
  93. package/theme-chalk/code-editor-vue3/mode/ecl/ecl.js +206 -0
  94. package/theme-chalk/code-editor-vue3/mode/eiffel/eiffel.js +160 -0
  95. package/theme-chalk/code-editor-vue3/mode/elm/elm.js +245 -0
  96. package/theme-chalk/code-editor-vue3/mode/erlang/erlang.js +619 -0
  97. package/theme-chalk/code-editor-vue3/mode/factor/factor.js +85 -0
  98. package/theme-chalk/code-editor-vue3/mode/fcl/fcl.js +173 -0
  99. package/theme-chalk/code-editor-vue3/mode/forth/forth.js +180 -0
  100. package/theme-chalk/code-editor-vue3/mode/fortran/fortran.js +188 -0
  101. package/theme-chalk/code-editor-vue3/mode/gas/gas.js +353 -0
  102. package/theme-chalk/code-editor-vue3/mode/gfm/gfm.js +129 -0
  103. package/theme-chalk/code-editor-vue3/mode/gherkin/gherkin.js +178 -0
  104. package/theme-chalk/code-editor-vue3/mode/go/go.js +187 -0
  105. package/theme-chalk/code-editor-vue3/mode/groovy/groovy.js +245 -0
  106. package/theme-chalk/code-editor-vue3/mode/haml/haml.js +161 -0
  107. package/theme-chalk/code-editor-vue3/mode/handlebars/handlebars.js +70 -0
  108. package/theme-chalk/code-editor-vue3/mode/haskell/haskell.js +268 -0
  109. package/theme-chalk/code-editor-vue3/mode/haskell-literate/haskell-literate.js +43 -0
  110. package/theme-chalk/code-editor-vue3/mode/haxe/haxe.js +515 -0
  111. package/theme-chalk/code-editor-vue3/mode/htmlmixed/htmlmixed.js +153 -0
  112. package/theme-chalk/code-editor-vue3/mode/http/http.js +113 -0
  113. package/theme-chalk/code-editor-vue3/mode/idl/idl.js +290 -0
  114. package/theme-chalk/code-editor-vue3/mode/jinja2/jinja2.js +193 -0
  115. package/theme-chalk/code-editor-vue3/mode/julia/julia.js +390 -0
  116. package/theme-chalk/code-editor-vue3/mode/livescript/livescript.js +280 -0
  117. package/theme-chalk/code-editor-vue3/mode/lua/lua.js +160 -0
  118. package/theme-chalk/code-editor-vue3/mode/markdown/markdown.js +886 -0
  119. package/theme-chalk/code-editor-vue3/mode/mathematica/mathematica.js +176 -0
  120. package/theme-chalk/code-editor-vue3/mode/mbox/mbox.js +129 -0
  121. package/theme-chalk/code-editor-vue3/mode/meta.js +221 -0
  122. package/theme-chalk/code-editor-vue3/mode/mirc/mirc.js +193 -0
  123. package/theme-chalk/code-editor-vue3/mode/mllike/mllike.js +359 -0
  124. package/theme-chalk/code-editor-vue3/mode/modelica/modelica.js +245 -0
  125. package/theme-chalk/code-editor-vue3/mode/mscgen/mscgen.js +175 -0
  126. package/theme-chalk/code-editor-vue3/mode/mumps/mumps.js +148 -0
  127. package/theme-chalk/code-editor-vue3/mode/nginx/nginx.js +178 -0
  128. package/theme-chalk/code-editor-vue3/mode/nsis/nsis.js +95 -0
  129. package/theme-chalk/code-editor-vue3/mode/ntriples/ntriples.js +195 -0
  130. package/theme-chalk/code-editor-vue3/mode/octave/octave.js +139 -0
  131. package/theme-chalk/code-editor-vue3/mode/oz/oz.js +252 -0
  132. package/theme-chalk/code-editor-vue3/mode/pascal/pascal.js +136 -0
  133. package/theme-chalk/code-editor-vue3/mode/pegjs/pegjs.js +111 -0
  134. package/theme-chalk/code-editor-vue3/mode/perl/perl.js +836 -0
  135. package/theme-chalk/code-editor-vue3/mode/php/php.js +234 -0
  136. package/theme-chalk/code-editor-vue3/mode/pig/pig.js +178 -0
  137. package/theme-chalk/code-editor-vue3/mode/powershell/powershell.js +398 -0
  138. package/theme-chalk/code-editor-vue3/mode/properties/properties.js +78 -0
  139. package/theme-chalk/code-editor-vue3/mode/protobuf/protobuf.js +72 -0
  140. package/theme-chalk/code-editor-vue3/mode/pug/pug.js +591 -0
  141. package/theme-chalk/code-editor-vue3/mode/puppet/puppet.js +220 -0
  142. package/theme-chalk/code-editor-vue3/mode/python/python.js +402 -0
  143. package/theme-chalk/code-editor-vue3/mode/q/q.js +139 -0
  144. package/theme-chalk/code-editor-vue3/mode/r/r.js +190 -0
  145. package/theme-chalk/code-editor-vue3/mode/rpm/changes/index.html +66 -0
  146. package/theme-chalk/code-editor-vue3/mode/rpm/rpm.js +109 -0
  147. package/theme-chalk/code-editor-vue3/mode/rst/rst.js +557 -0
  148. package/theme-chalk/code-editor-vue3/mode/ruby/ruby.js +303 -0
  149. package/theme-chalk/code-editor-vue3/mode/rust/rust.js +72 -0
  150. package/theme-chalk/code-editor-vue3/mode/sas/sas.js +303 -0
  151. package/theme-chalk/code-editor-vue3/mode/sass/sass.js +459 -0
  152. package/theme-chalk/code-editor-vue3/mode/scheme/scheme.js +284 -0
  153. package/theme-chalk/code-editor-vue3/mode/shell/shell.js +168 -0
  154. package/theme-chalk/code-editor-vue3/mode/sieve/sieve.js +193 -0
  155. package/theme-chalk/code-editor-vue3/mode/slim/slim.js +575 -0
  156. package/theme-chalk/code-editor-vue3/mode/smalltalk/smalltalk.js +168 -0
  157. package/theme-chalk/code-editor-vue3/mode/smarty/smarty.js +225 -0
  158. package/theme-chalk/code-editor-vue3/mode/solr/solr.js +104 -0
  159. package/theme-chalk/code-editor-vue3/mode/soy/soy.js +665 -0
  160. package/theme-chalk/code-editor-vue3/mode/sparql/sparql.js +184 -0
  161. package/theme-chalk/code-editor-vue3/mode/spreadsheet/spreadsheet.js +112 -0
  162. package/theme-chalk/code-editor-vue3/mode/sql/sql.js +525 -0
  163. package/theme-chalk/code-editor-vue3/mode/stex/stex.js +264 -0
  164. package/theme-chalk/code-editor-vue3/mode/stylus/stylus.js +775 -0
  165. package/theme-chalk/code-editor-vue3/mode/swift/swift.js +221 -0
  166. package/theme-chalk/code-editor-vue3/mode/tcl/tcl.js +140 -0
  167. package/theme-chalk/code-editor-vue3/mode/textile/textile.js +469 -0
  168. package/theme-chalk/code-editor-vue3/mode/tiddlywiki/tiddlywiki.css +14 -0
  169. package/theme-chalk/code-editor-vue3/mode/tiddlywiki/tiddlywiki.js +308 -0
  170. package/theme-chalk/code-editor-vue3/mode/tiki/tiki.css +26 -0
  171. package/theme-chalk/code-editor-vue3/mode/tiki/tiki.js +312 -0
  172. package/theme-chalk/code-editor-vue3/mode/toml/toml.js +88 -0
  173. package/theme-chalk/code-editor-vue3/mode/tornado/tornado.js +68 -0
  174. package/theme-chalk/code-editor-vue3/mode/troff/troff.js +84 -0
  175. package/theme-chalk/code-editor-vue3/mode/ttcn/ttcn.js +283 -0
  176. package/theme-chalk/code-editor-vue3/mode/ttcn-cfg/ttcn-cfg.js +214 -0
  177. package/theme-chalk/code-editor-vue3/mode/turtle/turtle.js +162 -0
  178. package/theme-chalk/code-editor-vue3/mode/twig/twig.js +141 -0
  179. package/theme-chalk/code-editor-vue3/mode/vb/vb.js +275 -0
  180. package/theme-chalk/code-editor-vue3/mode/vbscript/vbscript.js +350 -0
  181. package/theme-chalk/code-editor-vue3/mode/velocity/velocity.js +202 -0
  182. package/theme-chalk/code-editor-vue3/mode/verilog/verilog.js +781 -0
  183. package/theme-chalk/code-editor-vue3/mode/vhdl/vhdl.js +189 -0
  184. package/theme-chalk/code-editor-vue3/mode/wast/wast.js +132 -0
  185. package/theme-chalk/code-editor-vue3/mode/webidl/webidl.js +195 -0
  186. package/theme-chalk/code-editor-vue3/mode/xml/xml.js +417 -0
  187. package/theme-chalk/code-editor-vue3/mode/xquery/xquery.js +448 -0
  188. package/theme-chalk/code-editor-vue3/mode/yacas/yacas.js +204 -0
  189. package/theme-chalk/code-editor-vue3/mode/yaml/yaml.js +120 -0
  190. package/theme-chalk/code-editor-vue3/mode/yaml-frontmatter/yaml-frontmatter.js +72 -0
  191. package/theme-chalk/code-editor-vue3/mode/z80/z80.js +116 -0
@@ -0,0 +1,159 @@
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
+
14
+ function doFold(cm, pos, options, force) {
15
+ if (options && options.call) {
16
+ var finder = options;
17
+ options = null;
18
+ } else {
19
+ var finder = getOption(cm, options, "rangeFinder");
20
+ }
21
+ if (typeof pos == "number") pos = CodeMirror.Pos(pos, 0);
22
+ var minSize = getOption(cm, options, "minFoldSize");
23
+
24
+ function getRange(allowFolded) {
25
+ var range = finder(cm, pos);
26
+ if (!range || range.to.line - range.from.line < minSize) return null;
27
+ if (force === "fold") return range;
28
+
29
+ var marks = cm.findMarksAt(range.from);
30
+ for (var i = 0; i < marks.length; ++i) {
31
+ if (marks[i].__isFold) {
32
+ if (!allowFolded) return null;
33
+ range.cleared = true;
34
+ marks[i].clear();
35
+ }
36
+ }
37
+ return range;
38
+ }
39
+
40
+ var range = getRange(true);
41
+ if (getOption(cm, options, "scanUp")) while (!range && pos.line > cm.firstLine()) {
42
+ pos = CodeMirror.Pos(pos.line - 1, 0);
43
+ range = getRange(false);
44
+ }
45
+ if (!range || range.cleared || force === "unfold") return;
46
+
47
+ var myWidget = makeWidget(cm, options, range);
48
+ CodeMirror.on(myWidget, "mousedown", function(e) {
49
+ myRange.clear();
50
+ CodeMirror.e_preventDefault(e);
51
+ });
52
+ var myRange = cm.markText(range.from, range.to, {
53
+ replacedWith: myWidget,
54
+ clearOnEnter: getOption(cm, options, "clearOnEnter"),
55
+ __isFold: true
56
+ });
57
+ myRange.on("clear", function(from, to) {
58
+ CodeMirror.signal(cm, "unfold", cm, from, to);
59
+ });
60
+ CodeMirror.signal(cm, "fold", cm, range.from, range.to);
61
+ }
62
+
63
+ function makeWidget(cm, options, range) {
64
+ var widget = getOption(cm, options, "widget");
65
+
66
+ if (typeof widget == "function") {
67
+ widget = widget(range.from, range.to);
68
+ }
69
+
70
+ if (typeof widget == "string") {
71
+ var text = document.createTextNode(widget);
72
+ widget = document.createElement("span");
73
+ widget.appendChild(text);
74
+ widget.className = "CodeMirror-foldmarker";
75
+ } else if (widget) {
76
+ widget = widget.cloneNode(true)
77
+ }
78
+ return widget;
79
+ }
80
+
81
+ // Clumsy backwards-compatible interface
82
+ CodeMirror.newFoldFunction = function(rangeFinder, widget) {
83
+ return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); };
84
+ };
85
+
86
+ // New-style interface
87
+ CodeMirror.defineExtension("foldCode", function(pos, options, force) {
88
+ doFold(this, pos, options, force);
89
+ });
90
+
91
+ CodeMirror.defineExtension("isFolded", function(pos) {
92
+ var marks = this.findMarksAt(pos);
93
+ for (var i = 0; i < marks.length; ++i)
94
+ if (marks[i].__isFold) return true;
95
+ });
96
+
97
+ CodeMirror.commands.toggleFold = function(cm) {
98
+ cm.foldCode(cm.getCursor());
99
+ };
100
+ CodeMirror.commands.fold = function(cm) {
101
+ cm.foldCode(cm.getCursor(), null, "fold");
102
+ };
103
+ CodeMirror.commands.unfold = function(cm) {
104
+ cm.foldCode(cm.getCursor(), { scanUp: false }, "unfold");
105
+ };
106
+ CodeMirror.commands.foldAll = function(cm) {
107
+ cm.operation(function() {
108
+ for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)
109
+ cm.foldCode(CodeMirror.Pos(i, 0), { scanUp: false }, "fold");
110
+ });
111
+ };
112
+ CodeMirror.commands.unfoldAll = function(cm) {
113
+ cm.operation(function() {
114
+ for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)
115
+ cm.foldCode(CodeMirror.Pos(i, 0), { scanUp: false }, "unfold");
116
+ });
117
+ };
118
+
119
+ CodeMirror.registerHelper("fold", "combine", function() {
120
+ var funcs = Array.prototype.slice.call(arguments, 0);
121
+ return function(cm, start) {
122
+ for (var i = 0; i < funcs.length; ++i) {
123
+ var found = funcs[i](cm, start);
124
+ if (found) return found;
125
+ }
126
+ };
127
+ });
128
+
129
+ CodeMirror.registerHelper("fold", "auto", function(cm, start) {
130
+ var helpers = cm.getHelpers(start, "fold");
131
+ for (var i = 0; i < helpers.length; i++) {
132
+ var cur = helpers[i](cm, start);
133
+ if (cur) return cur;
134
+ }
135
+ });
136
+
137
+ var defaultOptions = {
138
+ rangeFinder: CodeMirror.fold.auto,
139
+ widget: "\u2194",
140
+ minFoldSize: 0,
141
+ scanUp: false,
142
+ clearOnEnter: true
143
+ };
144
+
145
+ CodeMirror.defineOption("foldOptions", null);
146
+
147
+ function getOption(cm, options, name) {
148
+ if (options && options[name] !== undefined)
149
+ return options[name];
150
+ var editorOptions = cm.options.foldOptions;
151
+ if (editorOptions && editorOptions[name] !== undefined)
152
+ return editorOptions[name];
153
+ return defaultOptions[name];
154
+ }
155
+
156
+ CodeMirror.defineExtension("foldOption", function(options, name) {
157
+ return getOption(this, options, name);
158
+ });
159
+ });
@@ -0,0 +1,20 @@
1
+ .CodeMirror-foldmarker {
2
+ color: blue;
3
+ text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px;
4
+ font-family: arial;
5
+ line-height: .3;
6
+ cursor: pointer;
7
+ }
8
+ .CodeMirror-foldgutter {
9
+ width: .7em;
10
+ }
11
+ .CodeMirror-foldgutter-open,
12
+ .CodeMirror-foldgutter-folded {
13
+ cursor: pointer;
14
+ }
15
+ .CodeMirror-foldgutter-open:after {
16
+ content: "\25BE";
17
+ }
18
+ .CodeMirror-foldgutter-folded:after {
19
+ content: "\25B8";
20
+ }
@@ -0,0 +1,169 @@
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"), require("./foldcode"));
7
+ else if (typeof define == "function" && define.amd) // AMD
8
+ define(["../../lib/codemirror", "./foldcode"], mod);
9
+ else // Plain browser env
10
+ mod(CodeMirror);
11
+ })(function(CodeMirror) {
12
+ "use strict";
13
+
14
+ CodeMirror.defineOption("foldGutter", false, function(cm, val, old) {
15
+ if (old && old != CodeMirror.Init) {
16
+ cm.clearGutter(cm.state.foldGutter.options.gutter);
17
+ cm.state.foldGutter = null;
18
+ cm.off("gutterClick", onGutterClick);
19
+ cm.off("changes", onChange);
20
+ cm.off("viewportChange", onViewportChange);
21
+ cm.off("fold", onFold);
22
+ cm.off("unfold", onFold);
23
+ cm.off("swapDoc", onChange);
24
+ cm.off("optionChange", optionChange);
25
+ }
26
+ if (val) {
27
+ cm.state.foldGutter = new State(parseOptions(val));
28
+ updateInViewport(cm);
29
+ cm.on("gutterClick", onGutterClick);
30
+ cm.on("changes", onChange);
31
+ cm.on("viewportChange", onViewportChange);
32
+ cm.on("fold", onFold);
33
+ cm.on("unfold", onFold);
34
+ cm.on("swapDoc", onChange);
35
+ cm.on("optionChange", optionChange);
36
+ }
37
+ });
38
+
39
+ var Pos = CodeMirror.Pos;
40
+
41
+ function State(options) {
42
+ this.options = options;
43
+ this.from = this.to = 0;
44
+ }
45
+
46
+ function parseOptions(opts) {
47
+ if (opts === true) opts = {};
48
+ if (opts.gutter == null) opts.gutter = "CodeMirror-foldgutter";
49
+ if (opts.indicatorOpen == null) opts.indicatorOpen = "CodeMirror-foldgutter-open";
50
+ if (opts.indicatorFolded == null) opts.indicatorFolded = "CodeMirror-foldgutter-folded";
51
+ return opts;
52
+ }
53
+
54
+ function isFolded(cm, line) {
55
+ var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));
56
+ for (var i = 0; i < marks.length; ++i) {
57
+ if (marks[i].__isFold) {
58
+ var fromPos = marks[i].find(-1);
59
+ if (fromPos && fromPos.line === line)
60
+ return marks[i];
61
+ }
62
+ }
63
+ }
64
+
65
+ function marker(spec) {
66
+ if (typeof spec == "string") {
67
+ var elt = document.createElement("div");
68
+ elt.className = spec + " CodeMirror-guttermarker-subtle";
69
+ return elt;
70
+ } else {
71
+ return spec.cloneNode(true);
72
+ }
73
+ }
74
+
75
+ function updateFoldInfo(cm, from, to) {
76
+ var opts = cm.state.foldGutter.options, cur = from - 1;
77
+ var minSize = cm.foldOption(opts, "minFoldSize");
78
+ var func = cm.foldOption(opts, "rangeFinder");
79
+ // we can reuse the built-in indicator element if its className matches the new state
80
+ var clsFolded = typeof opts.indicatorFolded == "string" && classTest(opts.indicatorFolded);
81
+ var clsOpen = typeof opts.indicatorOpen == "string" && classTest(opts.indicatorOpen);
82
+ cm.eachLine(from, to, function(line) {
83
+ ++cur;
84
+ var mark = null;
85
+ var old = line.gutterMarkers;
86
+ if (old) old = old[opts.gutter];
87
+ if (isFolded(cm, cur)) {
88
+ if (clsFolded && old && clsFolded.test(old.className)) return;
89
+ mark = marker(opts.indicatorFolded);
90
+ } else {
91
+ var pos = Pos(cur, 0);
92
+ var range = func && func(cm, pos);
93
+ if (range && range.to.line - range.from.line >= minSize) {
94
+ if (clsOpen && old && clsOpen.test(old.className)) return;
95
+ mark = marker(opts.indicatorOpen);
96
+ }
97
+ }
98
+ if (!mark && !old) return;
99
+ cm.setGutterMarker(line, opts.gutter, mark);
100
+ });
101
+ }
102
+
103
+ // copied from CodeMirror/src/util/dom.js
104
+ function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*") }
105
+
106
+ function updateInViewport(cm) {
107
+ var vp = cm.getViewport(), state = cm.state.foldGutter;
108
+ if (!state) return;
109
+ cm.operation(function() {
110
+ updateFoldInfo(cm, vp.from, vp.to);
111
+ });
112
+ state.from = vp.from; state.to = vp.to;
113
+ }
114
+
115
+ function onGutterClick(cm, line, gutter) {
116
+ var state = cm.state.foldGutter;
117
+ if (!state) return;
118
+ var opts = state.options;
119
+ if (gutter != opts.gutter) return;
120
+ var folded = isFolded(cm, line);
121
+ if (folded) folded.clear();
122
+ else cm.foldCode(Pos(line, 0), opts);
123
+ }
124
+
125
+ function optionChange(cm, option) {
126
+ if (option == "mode") onChange(cm)
127
+ }
128
+
129
+ function onChange(cm) {
130
+ var state = cm.state.foldGutter;
131
+ if (!state) return;
132
+ var opts = state.options;
133
+ state.from = state.to = 0;
134
+ clearTimeout(state.changeUpdate);
135
+ state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);
136
+ }
137
+
138
+ function onViewportChange(cm) {
139
+ var state = cm.state.foldGutter;
140
+ if (!state) return;
141
+ var opts = state.options;
142
+ clearTimeout(state.changeUpdate);
143
+ state.changeUpdate = setTimeout(function() {
144
+ var vp = cm.getViewport();
145
+ if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {
146
+ updateInViewport(cm);
147
+ } else {
148
+ cm.operation(function() {
149
+ if (vp.from < state.from) {
150
+ updateFoldInfo(cm, vp.from, state.from);
151
+ state.from = vp.from;
152
+ }
153
+ if (vp.to > state.to) {
154
+ updateFoldInfo(cm, state.to, vp.to);
155
+ state.to = vp.to;
156
+ }
157
+ });
158
+ }
159
+ }, opts.updateViewportTimeSpan || 400);
160
+ }
161
+
162
+ function onFold(cm, from) {
163
+ var state = cm.state.foldGutter;
164
+ if (!state) return;
165
+ var line = from.line;
166
+ if (line >= state.from && line < state.to)
167
+ updateFoldInfo(cm, line, line + 1);
168
+ }
169
+ });
@@ -0,0 +1,48 @@
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
+
14
+ function lineIndent(cm, lineNo) {
15
+ var text = cm.getLine(lineNo)
16
+ var spaceTo = text.search(/\S/)
17
+ if (spaceTo == -1 || /\bcomment\b/.test(cm.getTokenTypeAt(CodeMirror.Pos(lineNo, spaceTo + 1))))
18
+ return -1
19
+ return CodeMirror.countColumn(text, null, cm.getOption("tabSize"))
20
+ }
21
+
22
+ CodeMirror.registerHelper("fold", "indent", function(cm, start) {
23
+ var myIndent = lineIndent(cm, start.line)
24
+ if (myIndent < 0) return
25
+ var lastLineInFold = null
26
+
27
+ // Go through lines until we find a line that definitely doesn't belong in
28
+ // the block we're folding, or to the end.
29
+ for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) {
30
+ var indent = lineIndent(cm, i)
31
+ if (indent == -1) {
32
+ } else if (indent > myIndent) {
33
+ // Lines with a greater indent are considered part of the block.
34
+ lastLineInFold = i;
35
+ } else {
36
+ // If this line has non-space, non-comment content, and is
37
+ // indented less or equal to the start line, it is the start of
38
+ // another block.
39
+ break;
40
+ }
41
+ }
42
+ if (lastLineInFold) return {
43
+ from: CodeMirror.Pos(start.line, cm.getLine(start.line).length),
44
+ to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length)
45
+ };
46
+ });
47
+
48
+ });
@@ -0,0 +1,49 @@
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
+
14
+ CodeMirror.registerHelper("fold", "markdown", function(cm, start) {
15
+ var maxDepth = 100;
16
+
17
+ function isHeader(lineNo) {
18
+ var tokentype = cm.getTokenTypeAt(CodeMirror.Pos(lineNo, 0));
19
+ return tokentype && /\bheader\b/.test(tokentype);
20
+ }
21
+
22
+ function headerLevel(lineNo, line, nextLine) {
23
+ var match = line && line.match(/^#+/);
24
+ if (match && isHeader(lineNo)) return match[0].length;
25
+ match = nextLine && nextLine.match(/^[=\-]+\s*$/);
26
+ if (match && isHeader(lineNo + 1)) return nextLine[0] == "=" ? 1 : 2;
27
+ return maxDepth;
28
+ }
29
+
30
+ var firstLine = cm.getLine(start.line), nextLine = cm.getLine(start.line + 1);
31
+ var level = headerLevel(start.line, firstLine, nextLine);
32
+ if (level === maxDepth) return undefined;
33
+
34
+ var lastLineNo = cm.lastLine();
35
+ var end = start.line, nextNextLine = cm.getLine(end + 2);
36
+ while (end < lastLineNo) {
37
+ if (headerLevel(end + 1, nextLine, nextNextLine) <= level) break;
38
+ ++end;
39
+ nextLine = nextNextLine;
40
+ nextNextLine = cm.getLine(end + 2);
41
+ }
42
+
43
+ return {
44
+ from: CodeMirror.Pos(start.line, firstLine.length),
45
+ to: CodeMirror.Pos(end, cm.getLine(end).length)
46
+ };
47
+ });
48
+
49
+ });
@@ -0,0 +1,184 @@
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
+
14
+ var Pos = CodeMirror.Pos;
15
+ function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }
16
+
17
+ var nameStartChar = "A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
18
+ var nameChar = nameStartChar + "\-\:\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
19
+ var xmlTagStart = new RegExp("<(/?)([" + nameStartChar + "][" + nameChar + "]*)", "g");
20
+
21
+ function Iter(cm, line, ch, range) {
22
+ this.line = line; this.ch = ch;
23
+ this.cm = cm; this.text = cm.getLine(line);
24
+ this.min = range ? Math.max(range.from, cm.firstLine()) : cm.firstLine();
25
+ this.max = range ? Math.min(range.to - 1, cm.lastLine()) : cm.lastLine();
26
+ }
27
+
28
+ function tagAt(iter, ch) {
29
+ var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch));
30
+ return type && /\btag\b/.test(type);
31
+ }
32
+
33
+ function nextLine(iter) {
34
+ if (iter.line >= iter.max) return;
35
+ iter.ch = 0;
36
+ iter.text = iter.cm.getLine(++iter.line);
37
+ return true;
38
+ }
39
+ function prevLine(iter) {
40
+ if (iter.line <= iter.min) return;
41
+ iter.text = iter.cm.getLine(--iter.line);
42
+ iter.ch = iter.text.length;
43
+ return true;
44
+ }
45
+
46
+ function toTagEnd(iter) {
47
+ for (;;) {
48
+ var gt = iter.text.indexOf(">", iter.ch);
49
+ if (gt == -1) { if (nextLine(iter)) continue; else return; }
50
+ if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; }
51
+ var lastSlash = iter.text.lastIndexOf("/", gt);
52
+ var selfClose = lastSlash > -1 && !/\S/.test(iter.text.slice(lastSlash + 1, gt));
53
+ iter.ch = gt + 1;
54
+ return selfClose ? "selfClose" : "regular";
55
+ }
56
+ }
57
+ function toTagStart(iter) {
58
+ for (;;) {
59
+ var lt = iter.ch ? iter.text.lastIndexOf("<", iter.ch - 1) : -1;
60
+ if (lt == -1) { if (prevLine(iter)) continue; else return; }
61
+ if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; }
62
+ xmlTagStart.lastIndex = lt;
63
+ iter.ch = lt;
64
+ var match = xmlTagStart.exec(iter.text);
65
+ if (match && match.index == lt) return match;
66
+ }
67
+ }
68
+
69
+ function toNextTag(iter) {
70
+ for (;;) {
71
+ xmlTagStart.lastIndex = iter.ch;
72
+ var found = xmlTagStart.exec(iter.text);
73
+ if (!found) { if (nextLine(iter)) continue; else return; }
74
+ if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1; continue; }
75
+ iter.ch = found.index + found[0].length;
76
+ return found;
77
+ }
78
+ }
79
+ function toPrevTag(iter) {
80
+ for (;;) {
81
+ var gt = iter.ch ? iter.text.lastIndexOf(">", iter.ch - 1) : -1;
82
+ if (gt == -1) { if (prevLine(iter)) continue; else return; }
83
+ if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; }
84
+ var lastSlash = iter.text.lastIndexOf("/", gt);
85
+ var selfClose = lastSlash > -1 && !/\S/.test(iter.text.slice(lastSlash + 1, gt));
86
+ iter.ch = gt + 1;
87
+ return selfClose ? "selfClose" : "regular";
88
+ }
89
+ }
90
+
91
+ function findMatchingClose(iter, tag) {
92
+ var stack = [];
93
+ for (;;) {
94
+ var next = toNextTag(iter), end, startLine = iter.line, startCh = iter.ch - (next ? next[0].length : 0);
95
+ if (!next || !(end = toTagEnd(iter))) return;
96
+ if (end == "selfClose") continue;
97
+ if (next[1]) { // closing tag
98
+ for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == next[2]) {
99
+ stack.length = i;
100
+ break;
101
+ }
102
+ if (i < 0 && (!tag || tag == next[2])) return {
103
+ tag: next[2],
104
+ from: Pos(startLine, startCh),
105
+ to: Pos(iter.line, iter.ch)
106
+ };
107
+ } else { // opening tag
108
+ stack.push(next[2]);
109
+ }
110
+ }
111
+ }
112
+ function findMatchingOpen(iter, tag) {
113
+ var stack = [];
114
+ for (;;) {
115
+ var prev = toPrevTag(iter);
116
+ if (!prev) return;
117
+ if (prev == "selfClose") { toTagStart(iter); continue; }
118
+ var endLine = iter.line, endCh = iter.ch;
119
+ var start = toTagStart(iter);
120
+ if (!start) return;
121
+ if (start[1]) { // closing tag
122
+ stack.push(start[2]);
123
+ } else { // opening tag
124
+ for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == start[2]) {
125
+ stack.length = i;
126
+ break;
127
+ }
128
+ if (i < 0 && (!tag || tag == start[2])) return {
129
+ tag: start[2],
130
+ from: Pos(iter.line, iter.ch),
131
+ to: Pos(endLine, endCh)
132
+ };
133
+ }
134
+ }
135
+ }
136
+
137
+ CodeMirror.registerHelper("fold", "xml", function(cm, start) {
138
+ var iter = new Iter(cm, start.line, 0);
139
+ for (;;) {
140
+ var openTag = toNextTag(iter)
141
+ if (!openTag || iter.line != start.line) return
142
+ var end = toTagEnd(iter)
143
+ if (!end) return
144
+ if (!openTag[1] && end != "selfClose") {
145
+ var startPos = Pos(iter.line, iter.ch);
146
+ var endPos = findMatchingClose(iter, openTag[2]);
147
+ return endPos && cmp(endPos.from, startPos) > 0 ? {from: startPos, to: endPos.from} : null
148
+ }
149
+ }
150
+ });
151
+ CodeMirror.findMatchingTag = function(cm, pos, range) {
152
+ var iter = new Iter(cm, pos.line, pos.ch, range);
153
+ if (iter.text.indexOf(">") == -1 && iter.text.indexOf("<") == -1) return;
154
+ var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);
155
+ var start = end && toTagStart(iter);
156
+ if (!end || !start || cmp(iter, pos) > 0) return;
157
+ var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};
158
+ if (end == "selfClose") return {open: here, close: null, at: "open"};
159
+
160
+ if (start[1]) { // closing tag
161
+ return {open: findMatchingOpen(iter, start[2]), close: here, at: "close"};
162
+ } else { // opening tag
163
+ iter = new Iter(cm, to.line, to.ch, range);
164
+ return {open: here, close: findMatchingClose(iter, start[2]), at: "open"};
165
+ }
166
+ };
167
+
168
+ CodeMirror.findEnclosingTag = function(cm, pos, range, tag) {
169
+ var iter = new Iter(cm, pos.line, pos.ch, range);
170
+ for (;;) {
171
+ var open = findMatchingOpen(iter, tag);
172
+ if (!open) break;
173
+ var forward = new Iter(cm, pos.line, pos.ch, range);
174
+ var close = findMatchingClose(forward, open.tag);
175
+ if (close) return {open: open, close: close};
176
+ }
177
+ };
178
+
179
+ // Used by addon/edit/closetag.js
180
+ CodeMirror.scanForClosingTag = function(cm, pos, name, end) {
181
+ var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} : null);
182
+ return findMatchingClose(iter, name);
183
+ };
184
+ });
@@ -0,0 +1,41 @@
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
+
14
+ var WORD = /[\w$]+/, RANGE = 500;
15
+
16
+ CodeMirror.registerHelper("hint", "anyword", function(editor, options) {
17
+ var word = options && options.word || WORD;
18
+ var range = options && options.range || RANGE;
19
+ var cur = editor.getCursor(), curLine = editor.getLine(cur.line);
20
+ var end = cur.ch, start = end;
21
+ while (start && word.test(curLine.charAt(start - 1))) --start;
22
+ var curWord = start != end && curLine.slice(start, end);
23
+
24
+ var list = options && options.list || [], seen = {};
25
+ var re = new RegExp(word.source, "g");
26
+ for (var dir = -1; dir <= 1; dir += 2) {
27
+ var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;
28
+ for (; line != endLine; line += dir) {
29
+ var text = editor.getLine(line), m;
30
+ while (m = re.exec(text)) {
31
+ if (line == cur.line && m[0] === curWord) continue;
32
+ if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {
33
+ seen[m[0]] = true;
34
+ list.push(m[0]);
35
+ }
36
+ }
37
+ }
38
+ }
39
+ return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};
40
+ });
41
+ });