codemirror-rails 5.10 → 5.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/codemirror/rails/version.rb +2 -2
- data/vendor/assets/javascripts/codemirror.js +15 -12
- data/vendor/assets/javascripts/codemirror/addons/edit/closebrackets.js +1 -1
- data/vendor/assets/javascripts/codemirror/addons/fold/foldgutter.js +2 -2
- data/vendor/assets/javascripts/codemirror/addons/search/match-highlighter.js +32 -11
- data/vendor/assets/javascripts/codemirror/modes/clike.js +1 -3
- data/vendor/assets/javascripts/codemirror/modes/clojure.js +8 -3
- data/vendor/assets/javascripts/codemirror/modes/css.js +14 -13
- data/vendor/assets/javascripts/codemirror/modes/django.js +3 -4
- data/vendor/assets/javascripts/codemirror/modes/haskell-literate.js +43 -0
- data/vendor/assets/javascripts/codemirror/modes/jade.js +3 -3
- data/vendor/assets/javascripts/codemirror/modes/javascript.js +15 -4
- data/vendor/assets/javascripts/codemirror/modes/jsx.js +147 -0
- data/vendor/assets/javascripts/codemirror/modes/julia.js +143 -78
- data/vendor/assets/javascripts/codemirror/modes/markdown.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/nginx.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/ruby.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/swift.js +42 -3
- data/vendor/assets/javascripts/codemirror/modes/xml.js +78 -69
- data/vendor/assets/javascripts/codemirror/modes/yaml-frontmatter.js +1 -1
- data/vendor/assets/stylesheets/codemirror/modes/tiki.css +1 -1
- data/vendor/assets/stylesheets/codemirror/themes/mbo.css +1 -1
- data/vendor/assets/stylesheets/codemirror/themes/monokai.css +1 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1929b6a736399491a5fbf53a11bca4735924bfa2
|
4
|
+
data.tar.gz: 022e71456c14fad9f3b6cb764a4d7de3dd594769
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e57b062d2e7529735bb27007f5a1e51a2d96e85a2f446c50708beb531b8bcc3bb091cc7dd9228fac3be69b3021b90063423b9424483a1fc3f06c90a450e55a9
|
7
|
+
data.tar.gz: d03c8b1a078dc4b251510e56e69759c153485306d0fad08590af3d80b44bf99f2332998115e933f793e57eaa3fa1d9f9c04a4dca73f465617642b50bbecbb50f
|
@@ -1258,6 +1258,7 @@
|
|
1258
1258
|
});
|
1259
1259
|
|
1260
1260
|
function prepareCopyCut(e) {
|
1261
|
+
if (signalDOMEvent(cm, e)) return
|
1261
1262
|
if (cm.somethingSelected()) {
|
1262
1263
|
lastCopied = cm.getSelections();
|
1263
1264
|
if (input.inaccurateSelection) {
|
@@ -1615,6 +1616,7 @@
|
|
1615
1616
|
});
|
1616
1617
|
|
1617
1618
|
function onCopyCut(e) {
|
1619
|
+
if (signalDOMEvent(cm, e)) return
|
1618
1620
|
if (cm.somethingSelected()) {
|
1619
1621
|
lastCopied = cm.getSelections();
|
1620
1622
|
if (e.type == "cut") cm.replaceSelection("", null, "cut");
|
@@ -3433,7 +3435,7 @@
|
|
3433
3435
|
return dx * dx + dy * dy > 20 * 20;
|
3434
3436
|
}
|
3435
3437
|
on(d.scroller, "touchstart", function(e) {
|
3436
|
-
if (!isMouseLikeTouchEvent(e)) {
|
3438
|
+
if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)) {
|
3437
3439
|
clearTimeout(touchFinished);
|
3438
3440
|
var now = +new Date;
|
3439
3441
|
d.activeTouch = {start: now, moved: false,
|
@@ -3562,7 +3564,7 @@
|
|
3562
3564
|
// not interfere with, such as a scrollbar or widget.
|
3563
3565
|
function onMouseDown(e) {
|
3564
3566
|
var cm = this, display = cm.display;
|
3565
|
-
if (display.activeTouch && display.input.supportsTouch()
|
3567
|
+
if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) return;
|
3566
3568
|
display.shift = e.shiftKey;
|
3567
3569
|
|
3568
3570
|
if (eventInWidget(display, e)) {
|
@@ -4814,10 +4816,9 @@
|
|
4814
4816
|
function findPosH(doc, pos, dir, unit, visually) {
|
4815
4817
|
var line = pos.line, ch = pos.ch, origDir = dir;
|
4816
4818
|
var lineObj = getLine(doc, line);
|
4817
|
-
var possible = true;
|
4818
4819
|
function findNextLine() {
|
4819
4820
|
var l = line + dir;
|
4820
|
-
if (l < doc.first || l >= doc.first + doc.size) return
|
4821
|
+
if (l < doc.first || l >= doc.first + doc.size) return false
|
4821
4822
|
line = l;
|
4822
4823
|
return lineObj = getLine(doc, l);
|
4823
4824
|
}
|
@@ -4827,14 +4828,16 @@
|
|
4827
4828
|
if (!boundToLine && findNextLine()) {
|
4828
4829
|
if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj);
|
4829
4830
|
else ch = dir < 0 ? lineObj.text.length : 0;
|
4830
|
-
} else return
|
4831
|
+
} else return false
|
4831
4832
|
} else ch = next;
|
4832
4833
|
return true;
|
4833
4834
|
}
|
4834
4835
|
|
4835
|
-
if (unit == "char")
|
4836
|
-
|
4837
|
-
else if (unit == "
|
4836
|
+
if (unit == "char") {
|
4837
|
+
moveOnce()
|
4838
|
+
} else if (unit == "column") {
|
4839
|
+
moveOnce(true)
|
4840
|
+
} else if (unit == "word" || unit == "group") {
|
4838
4841
|
var sawType = null, group = unit == "group";
|
4839
4842
|
var helper = doc.cm && doc.cm.getHelper(pos, "wordChars");
|
4840
4843
|
for (var first = true;; first = false) {
|
@@ -4855,7 +4858,7 @@
|
|
4855
4858
|
}
|
4856
4859
|
}
|
4857
4860
|
var result = skipAtomic(doc, Pos(line, ch), pos, origDir, true);
|
4858
|
-
if (!
|
4861
|
+
if (!cmp(pos, result)) result.hitSide = true;
|
4859
4862
|
return result;
|
4860
4863
|
}
|
4861
4864
|
|
@@ -7113,14 +7116,14 @@
|
|
7113
7116
|
if (endStyles) for (var j = 0; j < endStyles.length; j += 2)
|
7114
7117
|
if (endStyles[j + 1] == nextChange) spanEndStyle += " " + endStyles[j]
|
7115
7118
|
|
7119
|
+
if (!collapsed || collapsed.from == pos) for (var j = 0; j < foundBookmarks.length; ++j)
|
7120
|
+
buildCollapsedSpan(builder, 0, foundBookmarks[j]);
|
7116
7121
|
if (collapsed && (collapsed.from || 0) == pos) {
|
7117
7122
|
buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,
|
7118
7123
|
collapsed.marker, collapsed.from == null);
|
7119
7124
|
if (collapsed.to == null) return;
|
7120
7125
|
if (collapsed.to == pos) collapsed = false;
|
7121
7126
|
}
|
7122
|
-
if (!collapsed && foundBookmarks.length) for (var j = 0; j < foundBookmarks.length; ++j)
|
7123
|
-
buildCollapsedSpan(builder, 0, foundBookmarks[j]);
|
7124
7127
|
}
|
7125
7128
|
if (pos >= len) break;
|
7126
7129
|
|
@@ -8881,7 +8884,7 @@
|
|
8881
8884
|
|
8882
8885
|
// THE END
|
8883
8886
|
|
8884
|
-
CodeMirror.version = "5.
|
8887
|
+
CodeMirror.version = "5.11.0";
|
8885
8888
|
|
8886
8889
|
return CodeMirror;
|
8887
8890
|
});
|
@@ -63,7 +63,7 @@
|
|
63
63
|
}
|
64
64
|
for (var i = ranges.length - 1; i >= 0; i--) {
|
65
65
|
var cur = ranges[i].head;
|
66
|
-
cm.replaceRange("", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1));
|
66
|
+
cm.replaceRange("", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), "+delete");
|
67
67
|
}
|
68
68
|
}
|
69
69
|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
cm.off("viewportChange", onViewportChange);
|
21
21
|
cm.off("fold", onFold);
|
22
22
|
cm.off("unfold", onFold);
|
23
|
-
cm.off("swapDoc",
|
23
|
+
cm.off("swapDoc", onChange);
|
24
24
|
}
|
25
25
|
if (val) {
|
26
26
|
cm.state.foldGutter = new State(parseOptions(val));
|
@@ -30,7 +30,7 @@
|
|
30
30
|
cm.on("viewportChange", onViewportChange);
|
31
31
|
cm.on("fold", onFold);
|
32
32
|
cm.on("unfold", onFold);
|
33
|
-
cm.on("swapDoc",
|
33
|
+
cm.on("swapDoc", onChange);
|
34
34
|
}
|
35
35
|
});
|
36
36
|
|
@@ -16,13 +16,14 @@
|
|
16
16
|
// highlighted only if the selected text is a word. showToken, when enabled,
|
17
17
|
// will cause the current token to be highlighted when nothing is selected.
|
18
18
|
// delay is used to specify how much time to wait, in milliseconds, before
|
19
|
-
// highlighting the matches.
|
19
|
+
// highlighting the matches. If annotateScrollbar is enabled, the occurances
|
20
|
+
// will be highlighted on the scrollbar via the matchesonscrollbar addon.
|
20
21
|
|
21
22
|
(function(mod) {
|
22
23
|
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
23
|
-
mod(require("../../lib/codemirror"));
|
24
|
+
mod(require("../../lib/codemirror"), require("./matchesonscrollbar"));
|
24
25
|
else if (typeof define == "function" && define.amd) // AMD
|
25
|
-
define(["../../lib/codemirror"], mod);
|
26
|
+
define(["../../lib/codemirror", "./matchesonscrollbar"], mod);
|
26
27
|
else // Plain browser env
|
27
28
|
mod(CodeMirror);
|
28
29
|
})(function(CodeMirror) {
|
@@ -40,18 +41,19 @@
|
|
40
41
|
this.showToken = options.showToken;
|
41
42
|
this.delay = options.delay;
|
42
43
|
this.wordsOnly = options.wordsOnly;
|
44
|
+
this.annotateScrollbar = options.annotateScrollbar;
|
43
45
|
}
|
44
46
|
if (this.style == null) this.style = DEFAULT_TOKEN_STYLE;
|
45
47
|
if (this.minChars == null) this.minChars = DEFAULT_MIN_CHARS;
|
46
48
|
if (this.delay == null) this.delay = DEFAULT_DELAY;
|
47
49
|
if (this.wordsOnly == null) this.wordsOnly = DEFAULT_WORDS_ONLY;
|
48
50
|
this.overlay = this.timeout = null;
|
51
|
+
this.matchesonscroll = null;
|
49
52
|
}
|
50
53
|
|
51
54
|
CodeMirror.defineOption("highlightSelectionMatches", false, function(cm, val, old) {
|
52
55
|
if (old && old != CodeMirror.Init) {
|
53
|
-
|
54
|
-
if (over) cm.removeOverlay(over);
|
56
|
+
removeOverlay(cm);
|
55
57
|
clearTimeout(cm.state.matchHighlighter.timeout);
|
56
58
|
cm.state.matchHighlighter = null;
|
57
59
|
cm.off("cursorActivity", cursorActivity);
|
@@ -69,20 +71,39 @@
|
|
69
71
|
state.timeout = setTimeout(function() {highlightMatches(cm);}, state.delay);
|
70
72
|
}
|
71
73
|
|
74
|
+
function addOverlay(cm, query, hasBoundary, style) {
|
75
|
+
var state = cm.state.matchHighlighter;
|
76
|
+
cm.addOverlay(state.overlay = makeOverlay(query, hasBoundary, style));
|
77
|
+
if (state.annotateScrollbar) {
|
78
|
+
var searchFor = hasBoundary ? new RegExp("\\b" + query + "\\b") : query;
|
79
|
+
state.matchesonscroll = cm.showMatchesOnScrollbar(searchFor, true,
|
80
|
+
{className: "CodeMirror-selection-highlight-scrollbar"});
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
function removeOverlay(cm) {
|
85
|
+
var state = cm.state.matchHighlighter;
|
86
|
+
if (state.overlay) {
|
87
|
+
cm.removeOverlay(state.overlay);
|
88
|
+
state.overlay = null;
|
89
|
+
if (state.annotateScrollbar) {
|
90
|
+
state.matchesonscroll.clear();
|
91
|
+
state.matchesonscroll = null;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
72
96
|
function highlightMatches(cm) {
|
73
97
|
cm.operation(function() {
|
74
98
|
var state = cm.state.matchHighlighter;
|
75
|
-
|
76
|
-
cm.removeOverlay(state.overlay);
|
77
|
-
state.overlay = null;
|
78
|
-
}
|
99
|
+
removeOverlay(cm);
|
79
100
|
if (!cm.somethingSelected() && state.showToken) {
|
80
101
|
var re = state.showToken === true ? /[\w$]/ : state.showToken;
|
81
102
|
var cur = cm.getCursor(), line = cm.getLine(cur.line), start = cur.ch, end = start;
|
82
103
|
while (start && re.test(line.charAt(start - 1))) --start;
|
83
104
|
while (end < line.length && re.test(line.charAt(end))) ++end;
|
84
105
|
if (start < end)
|
85
|
-
|
106
|
+
addOverlay(cm, line.slice(start, end), re, state.style);
|
86
107
|
return;
|
87
108
|
}
|
88
109
|
var from = cm.getCursor("from"), to = cm.getCursor("to");
|
@@ -90,7 +111,7 @@
|
|
90
111
|
if (state.wordsOnly && !isWord(cm, from, to)) return;
|
91
112
|
var selection = cm.getRange(from, to).replace(/^\s+|\s+$/g, "");
|
92
113
|
if (selection.length >= state.minChars)
|
93
|
-
|
114
|
+
addOverlay(cm, selection, false, state.style);
|
94
115
|
});
|
95
116
|
}
|
96
117
|
|
@@ -264,9 +264,7 @@ CodeMirror.defineMode("clike", function(config, parserConfig) {
|
|
264
264
|
function cppHook(stream, state) {
|
265
265
|
if (!state.startOfLine) return false
|
266
266
|
for (var ch, next = null; ch = stream.peek();) {
|
267
|
-
if (
|
268
|
-
break
|
269
|
-
} else if (ch == "\\" && stream.match(/^.$/)) {
|
267
|
+
if (ch == "\\" && stream.match(/^.$/)) {
|
270
268
|
next = cppHook
|
271
269
|
break
|
272
270
|
} else if (ch == "/" && stream.match(/^\/[\/\*]/, false)) {
|
@@ -59,7 +59,8 @@ CodeMirror.defineMode("clojure", function (options) {
|
|
59
59
|
sign: /[+-]/,
|
60
60
|
exponent: /e/i,
|
61
61
|
keyword_char: /[^\s\(\[\;\)\]]/,
|
62
|
-
symbol: /[\w*+!\-\._?:<>\/\xa1-\uffff]
|
62
|
+
symbol: /[\w*+!\-\._?:<>\/\xa1-\uffff]/,
|
63
|
+
block_indent: /^(?:def|with)[^\/]+$|\/(?:def|with)/
|
63
64
|
};
|
64
65
|
|
65
66
|
function stateStack(indent, type, prev) { // represents a state stack object
|
@@ -96,6 +97,9 @@ CodeMirror.defineMode("clojure", function (options) {
|
|
96
97
|
if ( '.' == stream.peek() ) {
|
97
98
|
stream.eat('.');
|
98
99
|
stream.eatWhile(tests.digit);
|
100
|
+
} else if ('/' == stream.peek() ) {
|
101
|
+
stream.eat('/');
|
102
|
+
stream.eatWhile(tests.digit);
|
99
103
|
}
|
100
104
|
|
101
105
|
if ( stream.eat(tests.exponent) ) {
|
@@ -139,7 +143,7 @@ CodeMirror.defineMode("clojure", function (options) {
|
|
139
143
|
}
|
140
144
|
|
141
145
|
// skip spaces
|
142
|
-
if (stream.eatSpace()) {
|
146
|
+
if (state.mode != "string" && stream.eatSpace()) {
|
143
147
|
return null;
|
144
148
|
}
|
145
149
|
var returnType = null;
|
@@ -187,7 +191,7 @@ CodeMirror.defineMode("clojure", function (options) {
|
|
187
191
|
}
|
188
192
|
|
189
193
|
if (keyWord.length > 0 && (indentKeys.propertyIsEnumerable(keyWord) ||
|
190
|
-
|
194
|
+
tests.block_indent.test(keyWord))) { // indent-word
|
191
195
|
pushStack(state, indentTemp + INDENT_WORD_SKIP, ch);
|
192
196
|
} else { // non-indent word
|
193
197
|
// we continue eating the spaces
|
@@ -240,5 +244,6 @@ CodeMirror.defineMode("clojure", function (options) {
|
|
240
244
|
});
|
241
245
|
|
242
246
|
CodeMirror.defineMIME("text/x-clojure", "clojure");
|
247
|
+
CodeMirror.defineMIME("text/x-clojurescript", "clojure");
|
243
248
|
|
244
249
|
});
|
@@ -452,8 +452,8 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
|
452
452
|
"animation-direction", "animation-duration", "animation-fill-mode",
|
453
453
|
"animation-iteration-count", "animation-name", "animation-play-state",
|
454
454
|
"animation-timing-function", "appearance", "azimuth", "backface-visibility",
|
455
|
-
"background", "background-attachment", "background-
|
456
|
-
"background-image", "background-origin", "background-position",
|
455
|
+
"background", "background-attachment", "background-blend-mode", "background-clip",
|
456
|
+
"background-color", "background-image", "background-origin", "background-position",
|
457
457
|
"background-repeat", "background-size", "baseline-shift", "binding",
|
458
458
|
"bleed", "bookmark-label", "bookmark-level", "bookmark-state",
|
459
459
|
"bookmark-target", "border", "border-bottom", "border-bottom-color",
|
@@ -597,11 +597,12 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
|
597
597
|
"capitalize", "caps-lock-indicator", "caption", "captiontext", "caret",
|
598
598
|
"cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch",
|
599
599
|
"cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote",
|
600
|
-
"col-resize", "collapse", "
|
600
|
+
"col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse",
|
601
|
+
"compact", "condensed", "contain", "content",
|
601
602
|
"content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop",
|
602
|
-
"cross", "crosshair", "currentcolor", "cursive", "cyclic", "dashed", "decimal",
|
603
|
+
"cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal",
|
603
604
|
"decimal-leading-zero", "default", "default-button", "destination-atop",
|
604
|
-
"destination-in", "destination-out", "destination-over", "devanagari",
|
605
|
+
"destination-in", "destination-out", "destination-over", "devanagari", "difference",
|
605
606
|
"disc", "discard", "disclosure-closed", "disclosure-open", "document",
|
606
607
|
"dot-dash", "dot-dot-dash",
|
607
608
|
"dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out",
|
@@ -612,23 +613,23 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
|
612
613
|
"ethiopic-halehame-gez", "ethiopic-halehame-om-et",
|
613
614
|
"ethiopic-halehame-sid-et", "ethiopic-halehame-so-et",
|
614
615
|
"ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig",
|
615
|
-
"ethiopic-numeric", "ew-resize", "expanded", "extends", "extra-condensed",
|
616
|
+
"ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed",
|
616
617
|
"extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes",
|
617
618
|
"forwards", "from", "geometricPrecision", "georgian", "graytext", "groove",
|
618
|
-
"gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hebrew",
|
619
|
+
"gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew",
|
619
620
|
"help", "hidden", "hide", "higher", "highlight", "highlighttext",
|
620
|
-
"hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "icon", "ignore",
|
621
|
+
"hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore",
|
621
622
|
"inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite",
|
622
623
|
"infobackground", "infotext", "inherit", "initial", "inline", "inline-axis",
|
623
624
|
"inline-block", "inline-flex", "inline-table", "inset", "inside", "intrinsic", "invert",
|
624
625
|
"italic", "japanese-formal", "japanese-informal", "justify", "kannada",
|
625
626
|
"katakana", "katakana-iroha", "keep-all", "khmer",
|
626
627
|
"korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal",
|
627
|
-
"landscape", "lao", "large", "larger", "left", "level", "lighter",
|
628
|
+
"landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten",
|
628
629
|
"line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem",
|
629
630
|
"local", "logical", "loud", "lower", "lower-alpha", "lower-armenian",
|
630
631
|
"lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian",
|
631
|
-
"lower-roman", "lowercase", "ltr", "malayalam", "match", "matrix", "matrix3d",
|
632
|
+
"lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "match", "matrix", "matrix3d",
|
632
633
|
"media-controls-background", "media-current-time-display",
|
633
634
|
"media-fullscreen-button", "media-mute-button", "media-play-button",
|
634
635
|
"media-return-to-realtime-button", "media-rewind-button",
|
@@ -637,7 +638,7 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
|
637
638
|
"media-volume-slider-container", "media-volume-sliderthumb", "medium",
|
638
639
|
"menu", "menulist", "menulist-button", "menulist-text",
|
639
640
|
"menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic",
|
640
|
-
"mix", "mongolian", "monospace", "move", "multiple", "myanmar", "n-resize",
|
641
|
+
"mix", "mongolian", "monospace", "move", "multiple", "multiply", "myanmar", "n-resize",
|
641
642
|
"narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop",
|
642
643
|
"no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap",
|
643
644
|
"ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote",
|
@@ -651,7 +652,7 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
|
651
652
|
"repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse",
|
652
653
|
"rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY",
|
653
654
|
"rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running",
|
654
|
-
"s-resize", "sans-serif", "scale", "scale3d", "scaleX", "scaleY", "scaleZ",
|
655
|
+
"s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen",
|
655
656
|
"scroll", "scrollbar", "se-resize", "searchfield",
|
656
657
|
"searchfield-cancel-button", "searchfield-decoration",
|
657
658
|
"searchfield-results-button", "searchfield-results-decoration",
|
@@ -659,7 +660,7 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
|
659
660
|
"simp-chinese-formal", "simp-chinese-informal", "single",
|
660
661
|
"skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal",
|
661
662
|
"slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow",
|
662
|
-
"small", "small-caps", "small-caption", "smaller", "solid", "somali",
|
663
|
+
"small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali",
|
663
664
|
"source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "spell-out", "square",
|
664
665
|
"square-button", "start", "static", "status-bar", "stretch", "stroke", "sub",
|
665
666
|
"subpixel-antialiased", "super", "sw-resize", "symbolic", "symbols", "table",
|
@@ -61,7 +61,7 @@
|
|
61
61
|
|
62
62
|
// Ignore completely any stream series that do not match the
|
63
63
|
// Django template opening tags.
|
64
|
-
while (stream.next() != null && !stream.match(
|
64
|
+
while (stream.next() != null && !stream.match(/\{[{%#]/, false)) {}
|
65
65
|
return null;
|
66
66
|
}
|
67
67
|
|
@@ -317,9 +317,8 @@
|
|
317
317
|
|
318
318
|
// Mark everything as comment inside the tag and the tag itself.
|
319
319
|
function inComment (stream, state) {
|
320
|
-
if (stream.match(
|
321
|
-
|
322
|
-
}
|
320
|
+
if (stream.match(/^.*?#\}/)) state.tokenize = tokenBase
|
321
|
+
else stream.skipToEnd()
|
323
322
|
return "comment";
|
324
323
|
}
|
325
324
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
2
|
+
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
3
|
+
|
4
|
+
(function (mod) {
|
5
|
+
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
6
|
+
mod(require("../../lib/codemirror"), require("../haskell/haskell"))
|
7
|
+
else if (typeof define == "function" && define.amd) // AMD
|
8
|
+
define(["../../lib/codemirror", "../haskell/haskell"], mod)
|
9
|
+
else // Plain browser env
|
10
|
+
mod(CodeMirror)
|
11
|
+
})(function (CodeMirror) {
|
12
|
+
"use strict"
|
13
|
+
|
14
|
+
CodeMirror.defineMode("haskell-literate", function (config, parserConfig) {
|
15
|
+
var baseMode = CodeMirror.getMode(config, (parserConfig && parserConfig.base) || "haskell")
|
16
|
+
|
17
|
+
return {
|
18
|
+
startState: function () {
|
19
|
+
return {
|
20
|
+
inCode: false,
|
21
|
+
baseState: CodeMirror.startState(baseMode)
|
22
|
+
}
|
23
|
+
},
|
24
|
+
token: function (stream, state) {
|
25
|
+
if (stream.sol()) {
|
26
|
+
if (state.inCode = stream.eat(">"))
|
27
|
+
return "meta"
|
28
|
+
}
|
29
|
+
if (state.inCode) {
|
30
|
+
return baseMode.token(stream, state.baseState)
|
31
|
+
} else {
|
32
|
+
stream.skipToEnd()
|
33
|
+
return "comment"
|
34
|
+
}
|
35
|
+
},
|
36
|
+
innerMode: function (state) {
|
37
|
+
return state.inCode ? {state: state.baseState, mode: baseMode} : null
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}, "haskell")
|
41
|
+
|
42
|
+
CodeMirror.defineMIME("text/x-literate-haskell", "haskell-literate")
|
43
|
+
})
|
@@ -74,7 +74,7 @@ CodeMirror.defineMode('jade', function (config) {
|
|
74
74
|
res.javaScriptArguments = this.javaScriptArguments;
|
75
75
|
res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth;
|
76
76
|
res.isInterpolating = this.isInterpolating;
|
77
|
-
res.interpolationNesting = this.
|
77
|
+
res.interpolationNesting = this.interpolationNesting;
|
78
78
|
|
79
79
|
res.jsState = CodeMirror.copyState(jsMode, this.jsState);
|
80
80
|
|
@@ -167,7 +167,7 @@ CodeMirror.defineMode('jade', function (config) {
|
|
167
167
|
if (state.interpolationNesting < 0) {
|
168
168
|
stream.next();
|
169
169
|
state.isInterpolating = false;
|
170
|
-
return '
|
170
|
+
return 'punctuation';
|
171
171
|
}
|
172
172
|
} else if (stream.peek() === '{') {
|
173
173
|
state.interpolationNesting++;
|
@@ -583,7 +583,7 @@ CodeMirror.defineMode('jade', function (config) {
|
|
583
583
|
copyState: copyState,
|
584
584
|
token: nextToken
|
585
585
|
};
|
586
|
-
});
|
586
|
+
}, 'javascript', 'css', 'htmlmixed');
|
587
587
|
|
588
588
|
CodeMirror.defineMIME('text/x-jade', 'jade');
|
589
589
|
|