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,187 @@
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.defineMode("go", function(config) {
15
+ var indentUnit = config.indentUnit;
16
+
17
+ var keywords = {
18
+ "break":true, "case":true, "chan":true, "const":true, "continue":true,
19
+ "default":true, "defer":true, "else":true, "fallthrough":true, "for":true,
20
+ "func":true, "go":true, "goto":true, "if":true, "import":true,
21
+ "interface":true, "map":true, "package":true, "range":true, "return":true,
22
+ "select":true, "struct":true, "switch":true, "type":true, "var":true,
23
+ "bool":true, "byte":true, "complex64":true, "complex128":true,
24
+ "float32":true, "float64":true, "int8":true, "int16":true, "int32":true,
25
+ "int64":true, "string":true, "uint8":true, "uint16":true, "uint32":true,
26
+ "uint64":true, "int":true, "uint":true, "uintptr":true, "error": true,
27
+ "rune":true, "any":true, "comparable":true
28
+ };
29
+
30
+ var atoms = {
31
+ "true":true, "false":true, "iota":true, "nil":true, "append":true,
32
+ "cap":true, "close":true, "complex":true, "copy":true, "delete":true, "imag":true,
33
+ "len":true, "make":true, "new":true, "panic":true, "print":true,
34
+ "println":true, "real":true, "recover":true
35
+ };
36
+
37
+ var isOperatorChar = /[+\-*&^%:=<>!|\/]/;
38
+
39
+ var curPunc;
40
+
41
+ function tokenBase(stream, state) {
42
+ var ch = stream.next();
43
+ if (ch == '"' || ch == "'" || ch == "`") {
44
+ state.tokenize = tokenString(ch);
45
+ return state.tokenize(stream, state);
46
+ }
47
+ if (/[\d\.]/.test(ch)) {
48
+ if (ch == ".") {
49
+ stream.match(/^[0-9_]+([eE][\-+]?[0-9_]+)?/);
50
+ } else if (ch == "0") {
51
+ stream.match(/^[xX][0-9a-fA-F_]+/) || stream.match(/^[0-7_]+/);
52
+ } else {
53
+ stream.match(/^[0-9_]*\.?[0-9_]*([eE][\-+]?[0-9_]+)?/);
54
+ }
55
+ return "number";
56
+ }
57
+ if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
58
+ curPunc = ch;
59
+ return null;
60
+ }
61
+ if (ch == "/") {
62
+ if (stream.eat("*")) {
63
+ state.tokenize = tokenComment;
64
+ return tokenComment(stream, state);
65
+ }
66
+ if (stream.eat("/")) {
67
+ stream.skipToEnd();
68
+ return "comment";
69
+ }
70
+ }
71
+ if (isOperatorChar.test(ch)) {
72
+ stream.eatWhile(isOperatorChar);
73
+ return "operator";
74
+ }
75
+ stream.eatWhile(/[\w\$_\xa1-\uffff]/);
76
+ var cur = stream.current();
77
+ if (keywords.propertyIsEnumerable(cur)) {
78
+ if (cur == "case" || cur == "default") curPunc = "case";
79
+ return "keyword";
80
+ }
81
+ if (atoms.propertyIsEnumerable(cur)) return "atom";
82
+ return "variable";
83
+ }
84
+
85
+ function tokenString(quote) {
86
+ return function(stream, state) {
87
+ var escaped = false, next, end = false;
88
+ while ((next = stream.next()) != null) {
89
+ if (next == quote && !escaped) {end = true; break;}
90
+ escaped = !escaped && quote != "`" && next == "\\";
91
+ }
92
+ if (end || !(escaped || quote == "`"))
93
+ state.tokenize = tokenBase;
94
+ return "string";
95
+ };
96
+ }
97
+
98
+ function tokenComment(stream, state) {
99
+ var maybeEnd = false, ch;
100
+ while (ch = stream.next()) {
101
+ if (ch == "/" && maybeEnd) {
102
+ state.tokenize = tokenBase;
103
+ break;
104
+ }
105
+ maybeEnd = (ch == "*");
106
+ }
107
+ return "comment";
108
+ }
109
+
110
+ function Context(indented, column, type, align, prev) {
111
+ this.indented = indented;
112
+ this.column = column;
113
+ this.type = type;
114
+ this.align = align;
115
+ this.prev = prev;
116
+ }
117
+ function pushContext(state, col, type) {
118
+ return state.context = new Context(state.indented, col, type, null, state.context);
119
+ }
120
+ function popContext(state) {
121
+ if (!state.context.prev) return;
122
+ var t = state.context.type;
123
+ if (t == ")" || t == "]" || t == "}")
124
+ state.indented = state.context.indented;
125
+ return state.context = state.context.prev;
126
+ }
127
+
128
+ // Interface
129
+
130
+ return {
131
+ startState: function(basecolumn) {
132
+ return {
133
+ tokenize: null,
134
+ context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
135
+ indented: 0,
136
+ startOfLine: true
137
+ };
138
+ },
139
+
140
+ token: function(stream, state) {
141
+ var ctx = state.context;
142
+ if (stream.sol()) {
143
+ if (ctx.align == null) ctx.align = false;
144
+ state.indented = stream.indentation();
145
+ state.startOfLine = true;
146
+ if (ctx.type == "case") ctx.type = "}";
147
+ }
148
+ if (stream.eatSpace()) return null;
149
+ curPunc = null;
150
+ var style = (state.tokenize || tokenBase)(stream, state);
151
+ if (style == "comment") return style;
152
+ if (ctx.align == null) ctx.align = true;
153
+
154
+ if (curPunc == "{") pushContext(state, stream.column(), "}");
155
+ else if (curPunc == "[") pushContext(state, stream.column(), "]");
156
+ else if (curPunc == "(") pushContext(state, stream.column(), ")");
157
+ else if (curPunc == "case") ctx.type = "case";
158
+ else if (curPunc == "}" && ctx.type == "}") popContext(state);
159
+ else if (curPunc == ctx.type) popContext(state);
160
+ state.startOfLine = false;
161
+ return style;
162
+ },
163
+
164
+ indent: function(state, textAfter) {
165
+ if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass;
166
+ var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);
167
+ if (ctx.type == "case" && /^(?:case|default)\b/.test(textAfter)) {
168
+ state.context.type = "}";
169
+ return ctx.indented;
170
+ }
171
+ var closing = firstChar == ctx.type;
172
+ if (ctx.align) return ctx.column + (closing ? 0 : 1);
173
+ else return ctx.indented + (closing ? 0 : indentUnit);
174
+ },
175
+
176
+ electricChars: "{}):",
177
+ closeBrackets: "()[]{}''\"\"``",
178
+ fold: "brace",
179
+ blockCommentStart: "/*",
180
+ blockCommentEnd: "*/",
181
+ lineComment: "//"
182
+ };
183
+ });
184
+
185
+ CodeMirror.defineMIME("text/x-go", "go");
186
+
187
+ });
@@ -0,0 +1,245 @@
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.defineMode("groovy", function(config) {
15
+ function words(str) {
16
+ var obj = {}, words = str.split(" ");
17
+ for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
18
+ return obj;
19
+ }
20
+ var keywords = words(
21
+ "abstract as assert boolean break byte case catch char class const continue def default " +
22
+ "do double else enum extends final finally float for goto if implements import in " +
23
+ "instanceof int interface long native new package private protected public return " +
24
+ "short static strictfp super switch synchronized threadsafe throw throws trait transient " +
25
+ "try void volatile while");
26
+ var blockKeywords = words("catch class def do else enum finally for if interface switch trait try while");
27
+ var standaloneKeywords = words("return break continue");
28
+ var atoms = words("null true false this");
29
+
30
+ var curPunc;
31
+ function tokenBase(stream, state) {
32
+ var ch = stream.next();
33
+ if (ch == '"' || ch == "'") {
34
+ return startString(ch, stream, state);
35
+ }
36
+ if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
37
+ curPunc = ch;
38
+ return null;
39
+ }
40
+ if (/\d/.test(ch)) {
41
+ stream.eatWhile(/[\w\.]/);
42
+ if (stream.eat(/eE/)) { stream.eat(/\+\-/); stream.eatWhile(/\d/); }
43
+ return "number";
44
+ }
45
+ if (ch == "/") {
46
+ if (stream.eat("*")) {
47
+ state.tokenize.push(tokenComment);
48
+ return tokenComment(stream, state);
49
+ }
50
+ if (stream.eat("/")) {
51
+ stream.skipToEnd();
52
+ return "comment";
53
+ }
54
+ if (expectExpression(state.lastToken, false)) {
55
+ return startString(ch, stream, state);
56
+ }
57
+ }
58
+ if (ch == "-" && stream.eat(">")) {
59
+ curPunc = "->";
60
+ return null;
61
+ }
62
+ if (/[+\-*&%=<>!?|\/~]/.test(ch)) {
63
+ stream.eatWhile(/[+\-*&%=<>|~]/);
64
+ return "operator";
65
+ }
66
+ stream.eatWhile(/[\w\$_]/);
67
+ if (ch == "@") { stream.eatWhile(/[\w\$_\.]/); return "meta"; }
68
+ if (state.lastToken == ".") return "property";
69
+ if (stream.eat(":")) { curPunc = "proplabel"; return "property"; }
70
+ var cur = stream.current();
71
+ if (atoms.propertyIsEnumerable(cur)) { return "atom"; }
72
+ if (keywords.propertyIsEnumerable(cur)) {
73
+ if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
74
+ else if (standaloneKeywords.propertyIsEnumerable(cur)) curPunc = "standalone";
75
+ return "keyword";
76
+ }
77
+ return "variable";
78
+ }
79
+ tokenBase.isBase = true;
80
+
81
+ function startString(quote, stream, state) {
82
+ var tripleQuoted = false;
83
+ if (quote != "/" && stream.eat(quote)) {
84
+ if (stream.eat(quote)) tripleQuoted = true;
85
+ else return "string";
86
+ }
87
+ function t(stream, state) {
88
+ var escaped = false, next, end = !tripleQuoted;
89
+ while ((next = stream.next()) != null) {
90
+ if (next == quote && !escaped) {
91
+ if (!tripleQuoted) { break; }
92
+ if (stream.match(quote + quote)) { end = true; break; }
93
+ }
94
+ if (quote == '"' && next == "$" && !escaped) {
95
+ if (stream.eat("{")) {
96
+ state.tokenize.push(tokenBaseUntilBrace());
97
+ return "string";
98
+ } else if (stream.match(/^\w/, false)) {
99
+ state.tokenize.push(tokenVariableDeref);
100
+ return "string";
101
+ }
102
+ }
103
+ escaped = !escaped && next == "\\";
104
+ }
105
+ if (end) state.tokenize.pop();
106
+ return "string";
107
+ }
108
+ state.tokenize.push(t);
109
+ return t(stream, state);
110
+ }
111
+
112
+ function tokenBaseUntilBrace() {
113
+ var depth = 1;
114
+ function t(stream, state) {
115
+ if (stream.peek() == "}") {
116
+ depth--;
117
+ if (depth == 0) {
118
+ state.tokenize.pop();
119
+ return state.tokenize[state.tokenize.length-1](stream, state);
120
+ }
121
+ } else if (stream.peek() == "{") {
122
+ depth++;
123
+ }
124
+ return tokenBase(stream, state);
125
+ }
126
+ t.isBase = true;
127
+ return t;
128
+ }
129
+
130
+ function tokenVariableDeref(stream, state) {
131
+ var next = stream.match(/^(\.|[\w\$_]+)/)
132
+ if (!next || !stream.match(next[0] == "." ? /^[\w$_]/ : /^\./)) state.tokenize.pop()
133
+ if (!next) return state.tokenize[state.tokenize.length-1](stream, state)
134
+ return next[0] == "." ? null : "variable"
135
+ }
136
+
137
+ function tokenComment(stream, state) {
138
+ var maybeEnd = false, ch;
139
+ while (ch = stream.next()) {
140
+ if (ch == "/" && maybeEnd) {
141
+ state.tokenize.pop();
142
+ break;
143
+ }
144
+ maybeEnd = (ch == "*");
145
+ }
146
+ return "comment";
147
+ }
148
+
149
+ function expectExpression(last, newline) {
150
+ return !last || last == "operator" || last == "->" || /[\.\[\{\(,;:]/.test(last) ||
151
+ last == "newstatement" || last == "keyword" || last == "proplabel" ||
152
+ (last == "standalone" && !newline);
153
+ }
154
+
155
+ function Context(indented, column, type, align, prev) {
156
+ this.indented = indented;
157
+ this.column = column;
158
+ this.type = type;
159
+ this.align = align;
160
+ this.prev = prev;
161
+ }
162
+ function pushContext(state, col, type) {
163
+ return state.context = new Context(state.indented, col, type, null, state.context);
164
+ }
165
+ function popContext(state) {
166
+ var t = state.context.type;
167
+ if (t == ")" || t == "]" || t == "}")
168
+ state.indented = state.context.indented;
169
+ return state.context = state.context.prev;
170
+ }
171
+
172
+ // Interface
173
+
174
+ return {
175
+ startState: function(basecolumn) {
176
+ return {
177
+ tokenize: [tokenBase],
178
+ context: new Context((basecolumn || 0) - config.indentUnit, 0, "top", false),
179
+ indented: 0,
180
+ startOfLine: true,
181
+ lastToken: null
182
+ };
183
+ },
184
+
185
+ token: function(stream, state) {
186
+ var ctx = state.context;
187
+ if (stream.sol()) {
188
+ if (ctx.align == null) ctx.align = false;
189
+ state.indented = stream.indentation();
190
+ state.startOfLine = true;
191
+ // Automatic semicolon insertion
192
+ if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) {
193
+ popContext(state); ctx = state.context;
194
+ }
195
+ }
196
+ if (stream.eatSpace()) return null;
197
+ curPunc = null;
198
+ var style = state.tokenize[state.tokenize.length-1](stream, state);
199
+ if (style == "comment") return style;
200
+ if (ctx.align == null) ctx.align = true;
201
+
202
+ if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state);
203
+ // Handle indentation for {x -> \n ... }
204
+ else if (curPunc == "->" && ctx.type == "statement" && ctx.prev.type == "}") {
205
+ popContext(state);
206
+ state.context.align = false;
207
+ }
208
+ else if (curPunc == "{") pushContext(state, stream.column(), "}");
209
+ else if (curPunc == "[") pushContext(state, stream.column(), "]");
210
+ else if (curPunc == "(") pushContext(state, stream.column(), ")");
211
+ else if (curPunc == "}") {
212
+ while (ctx.type == "statement") ctx = popContext(state);
213
+ if (ctx.type == "}") ctx = popContext(state);
214
+ while (ctx.type == "statement") ctx = popContext(state);
215
+ }
216
+ else if (curPunc == ctx.type) popContext(state);
217
+ else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement"))
218
+ pushContext(state, stream.column(), "statement");
219
+ state.startOfLine = false;
220
+ state.lastToken = curPunc || style;
221
+ return style;
222
+ },
223
+
224
+ indent: function(state, textAfter) {
225
+ if (!state.tokenize[state.tokenize.length-1].isBase) return CodeMirror.Pass;
226
+ var firstChar = textAfter && textAfter.charAt(0), ctx = state.context;
227
+ if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) ctx = ctx.prev;
228
+ var closing = firstChar == ctx.type;
229
+ if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : config.indentUnit);
230
+ else if (ctx.align) return ctx.column + (closing ? 0 : 1);
231
+ else return ctx.indented + (closing ? 0 : config.indentUnit);
232
+ },
233
+
234
+ electricChars: "{}",
235
+ closeBrackets: {triples: "'\""},
236
+ fold: "brace",
237
+ blockCommentStart: "/*",
238
+ blockCommentEnd: "*/",
239
+ lineComment: "//"
240
+ };
241
+ });
242
+
243
+ CodeMirror.defineMIME("text/x-groovy", "groovy");
244
+
245
+ });
@@ -0,0 +1,161 @@
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("../htmlmixed/htmlmixed"), require("../ruby/ruby"));
7
+ else if (typeof define == "function" && define.amd) // AMD
8
+ define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod);
9
+ else // Plain browser env
10
+ mod(CodeMirror);
11
+ })(function(CodeMirror) {
12
+ "use strict";
13
+
14
+ // full haml mode. This handled embedded ruby and html fragments too
15
+ CodeMirror.defineMode("haml", function(config) {
16
+ var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"});
17
+ var rubyMode = CodeMirror.getMode(config, "ruby");
18
+
19
+ function rubyInQuote(endQuote) {
20
+ return function(stream, state) {
21
+ var ch = stream.peek();
22
+ if (ch == endQuote && state.rubyState.tokenize.length == 1) {
23
+ // step out of ruby context as it seems to complete processing all the braces
24
+ stream.next();
25
+ state.tokenize = html;
26
+ return "closeAttributeTag";
27
+ } else {
28
+ return ruby(stream, state);
29
+ }
30
+ };
31
+ }
32
+
33
+ function ruby(stream, state) {
34
+ if (stream.match("-#")) {
35
+ stream.skipToEnd();
36
+ return "comment";
37
+ }
38
+ return rubyMode.token(stream, state.rubyState);
39
+ }
40
+
41
+ function html(stream, state) {
42
+ var ch = stream.peek();
43
+
44
+ // handle haml declarations. All declarations that cant be handled here
45
+ // will be passed to html mode
46
+ if (state.previousToken.style == "comment" ) {
47
+ if (state.indented > state.previousToken.indented) {
48
+ stream.skipToEnd();
49
+ return "commentLine";
50
+ }
51
+ }
52
+
53
+ if (state.startOfLine) {
54
+ if (ch == "!" && stream.match("!!")) {
55
+ stream.skipToEnd();
56
+ return "tag";
57
+ } else if (stream.match(/^%[\w:#\.]+=/)) {
58
+ state.tokenize = ruby;
59
+ return "hamlTag";
60
+ } else if (stream.match(/^%[\w:]+/)) {
61
+ return "hamlTag";
62
+ } else if (ch == "/" ) {
63
+ stream.skipToEnd();
64
+ return "comment";
65
+ }
66
+ }
67
+
68
+ if (state.startOfLine || state.previousToken.style == "hamlTag") {
69
+ if ( ch == "#" || ch == ".") {
70
+ stream.match(/[\w-#\.]*/);
71
+ return "hamlAttribute";
72
+ }
73
+ }
74
+
75
+ // do not handle --> as valid ruby, make it HTML close comment instead
76
+ if (state.startOfLine && !stream.match("-->", false) && (ch == "=" || ch == "-" )) {
77
+ state.tokenize = ruby;
78
+ return state.tokenize(stream, state);
79
+ }
80
+
81
+ if (state.previousToken.style == "hamlTag" ||
82
+ state.previousToken.style == "closeAttributeTag" ||
83
+ state.previousToken.style == "hamlAttribute") {
84
+ if (ch == "(") {
85
+ state.tokenize = rubyInQuote(")");
86
+ return state.tokenize(stream, state);
87
+ } else if (ch == "{") {
88
+ if (!stream.match(/^\{%.*/)) {
89
+ state.tokenize = rubyInQuote("}");
90
+ return state.tokenize(stream, state);
91
+ }
92
+ }
93
+ }
94
+
95
+ return htmlMode.token(stream, state.htmlState);
96
+ }
97
+
98
+ return {
99
+ // default to html mode
100
+ startState: function() {
101
+ var htmlState = CodeMirror.startState(htmlMode);
102
+ var rubyState = CodeMirror.startState(rubyMode);
103
+ return {
104
+ htmlState: htmlState,
105
+ rubyState: rubyState,
106
+ indented: 0,
107
+ previousToken: { style: null, indented: 0},
108
+ tokenize: html
109
+ };
110
+ },
111
+
112
+ copyState: function(state) {
113
+ return {
114
+ htmlState : CodeMirror.copyState(htmlMode, state.htmlState),
115
+ rubyState: CodeMirror.copyState(rubyMode, state.rubyState),
116
+ indented: state.indented,
117
+ previousToken: state.previousToken,
118
+ tokenize: state.tokenize
119
+ };
120
+ },
121
+
122
+ token: function(stream, state) {
123
+ if (stream.sol()) {
124
+ state.indented = stream.indentation();
125
+ state.startOfLine = true;
126
+ }
127
+ if (stream.eatSpace()) return null;
128
+ var style = state.tokenize(stream, state);
129
+ state.startOfLine = false;
130
+ // dont record comment line as we only want to measure comment line with
131
+ // the opening comment block
132
+ if (style && style != "commentLine") {
133
+ state.previousToken = { style: style, indented: state.indented };
134
+ }
135
+ // if current state is ruby and the previous token is not `,` reset the
136
+ // tokenize to html
137
+ if (stream.eol() && state.tokenize == ruby) {
138
+ stream.backUp(1);
139
+ var ch = stream.peek();
140
+ stream.next();
141
+ if (ch && ch != ",") {
142
+ state.tokenize = html;
143
+ }
144
+ }
145
+ // reprocess some of the specific style tag when finish setting previousToken
146
+ if (style == "hamlTag") {
147
+ style = "tag";
148
+ } else if (style == "commentLine") {
149
+ style = "comment";
150
+ } else if (style == "hamlAttribute") {
151
+ style = "attribute";
152
+ } else if (style == "closeAttributeTag") {
153
+ style = null;
154
+ }
155
+ return style;
156
+ }
157
+ };
158
+ }, "htmlmixed", "ruby");
159
+
160
+ CodeMirror.defineMIME("text/x-haml", "haml");
161
+ });
@@ -0,0 +1,70 @@
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("../../addon/mode/simple"), require("../../addon/mode/multiplex"));
7
+ else if (typeof define == "function" && define.amd) // AMD
8
+ define(["../../lib/codemirror", "../../addon/mode/simple", "../../addon/mode/multiplex"], mod);
9
+ else // Plain browser env
10
+ mod(CodeMirror);
11
+ })(function(CodeMirror) {
12
+ "use strict";
13
+
14
+ CodeMirror.defineSimpleMode("handlebars-tags", {
15
+ start: [
16
+ { regex: /\{\{\{/, push: "handlebars_raw", token: "tag" },
17
+ { regex: /\{\{!--/, push: "dash_comment", token: "comment" },
18
+ { regex: /\{\{!/, push: "comment", token: "comment" },
19
+ { regex: /\{\{/, push: "handlebars", token: "tag" }
20
+ ],
21
+ handlebars_raw: [
22
+ { regex: /\}\}\}/, pop: true, token: "tag" },
23
+ ],
24
+ handlebars: [
25
+ { regex: /\}\}/, pop: true, token: "tag" },
26
+
27
+ // Double and single quotes
28
+ { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" },
29
+ { regex: /'(?:[^\\']|\\.)*'?/, token: "string" },
30
+
31
+ // Handlebars keywords
32
+ { regex: />|[#\/]([A-Za-z_]\w*)/, token: "keyword" },
33
+ { regex: /(?:else|this)\b/, token: "keyword" },
34
+
35
+ // Numeral
36
+ { regex: /\d+/i, token: "number" },
37
+
38
+ // Atoms like = and .
39
+ { regex: /=|~|@|true|false/, token: "atom" },
40
+
41
+ // Paths
42
+ { regex: /(?:\.\.\/)*(?:[A-Za-z_][\w\.]*)+/, token: "variable-2" }
43
+ ],
44
+ dash_comment: [
45
+ { regex: /--\}\}/, pop: true, token: "comment" },
46
+
47
+ // Commented code
48
+ { regex: /./, token: "comment"}
49
+ ],
50
+ comment: [
51
+ { regex: /\}\}/, pop: true, token: "comment" },
52
+ { regex: /./, token: "comment" }
53
+ ],
54
+ meta: {
55
+ blockCommentStart: "{{--",
56
+ blockCommentEnd: "--}}"
57
+ }
58
+ });
59
+
60
+ CodeMirror.defineMode("handlebars", function(config, parserConfig) {
61
+ var handlebars = CodeMirror.getMode(config, "handlebars-tags");
62
+ if (!parserConfig || !parserConfig.base) return handlebars;
63
+ return CodeMirror.multiplexingMode(
64
+ CodeMirror.getMode(config, parserConfig.base),
65
+ {open: "{{", close: /\}\}\}?/, mode: handlebars, parseDelimiters: true}
66
+ );
67
+ });
68
+
69
+ CodeMirror.defineMIME("text/x-handlebars-template", "handlebars");
70
+ });