codemirror-rails 3.15 → 3.16
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 +59 -29
- data/vendor/assets/javascripts/codemirror/addons/comment/continuecomment.js +44 -0
- data/vendor/assets/javascripts/codemirror/addons/display/fullscreen.js +30 -0
- data/vendor/assets/javascripts/codemirror/addons/edit/continuecomment.js +1 -1
- data/vendor/assets/javascripts/codemirror/addons/fold/brace-fold.js +3 -3
- data/vendor/assets/javascripts/codemirror/addons/fold/comment-fold.js +40 -0
- data/vendor/assets/javascripts/codemirror/addons/hint/show-hint.js +7 -10
- data/vendor/assets/javascripts/codemirror/addons/scroll/scrollpastend.js +34 -0
- data/vendor/assets/javascripts/codemirror/addons/search/match-highlighter.js +4 -1
- data/vendor/assets/javascripts/codemirror/keymaps/vim.js +5 -0
- data/vendor/assets/javascripts/codemirror/modes/css.js +21 -19
- data/vendor/assets/javascripts/codemirror/modes/erlang.js +122 -102
- data/vendor/assets/javascripts/codemirror/modes/javascript.js +3 -2
- data/vendor/assets/javascripts/codemirror/modes/python.js +12 -4
- data/vendor/assets/javascripts/codemirror/modes/rst.js +20 -21
- data/vendor/assets/javascripts/codemirror/modes/velocity.js +54 -12
- data/vendor/assets/javascripts/codemirror/modes/xml.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/xquery.js +5 -1
- data/vendor/assets/javascripts/codemirror/modes/yaml.js +8 -8
- data/vendor/assets/stylesheets/codemirror.css +1 -0
- data/vendor/assets/stylesheets/codemirror/addons/display/fullscreen.css +6 -0
- data/vendor/assets/stylesheets/codemirror/themes/3024-day.css +1 -0
- data/vendor/assets/stylesheets/codemirror/themes/3024-night.css +1 -0
- data/vendor/assets/stylesheets/codemirror/themes/ambiance.css +1 -1
- data/vendor/assets/stylesheets/codemirror/themes/base16-dark.css +1 -0
- data/vendor/assets/stylesheets/codemirror/themes/base16-light.css +1 -0
- data/vendor/assets/stylesheets/codemirror/themes/blackboard.css +3 -0
- data/vendor/assets/stylesheets/codemirror/themes/cobalt.css +3 -0
- data/vendor/assets/stylesheets/codemirror/themes/eclipse.css +2 -4
- data/vendor/assets/stylesheets/codemirror/themes/elegant.css +3 -0
- data/vendor/assets/stylesheets/codemirror/themes/erlang-dark.css +11 -2
- data/vendor/assets/stylesheets/codemirror/themes/lesser-dark.css +3 -0
- data/vendor/assets/stylesheets/codemirror/themes/midnight.css +2 -2
- data/vendor/assets/stylesheets/codemirror/themes/monokai.css +1 -0
- data/vendor/assets/stylesheets/codemirror/themes/neat.css +3 -0
- data/vendor/assets/stylesheets/codemirror/themes/night.css +3 -0
- data/vendor/assets/stylesheets/codemirror/themes/paraiso-dark.css +34 -0
- data/vendor/assets/stylesheets/codemirror/themes/paraiso-light.css +34 -0
- data/vendor/assets/stylesheets/codemirror/themes/rubyblue.css +2 -0
- data/vendor/assets/stylesheets/codemirror/themes/solarized.css +2 -7
- data/vendor/assets/stylesheets/codemirror/themes/the-matrix.css +26 -0
- data/vendor/assets/stylesheets/codemirror/themes/tomorrow-night-eighties.css +1 -0
- data/vendor/assets/stylesheets/codemirror/themes/twilight.css +2 -0
- data/vendor/assets/stylesheets/codemirror/themes/vibrant-ink.css +3 -0
- data/vendor/assets/stylesheets/codemirror/themes/xq-dark.css +4 -1
- data/vendor/assets/stylesheets/codemirror/themes/xq-light.css +1 -1
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a097dd836952a9d7016ff82994bb2cf95bf08c5
|
4
|
+
data.tar.gz: b9217b3006c879ae8e9df6feee1abffdd92ab939
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29a02c78ca161d4b336e380ebfcd633a125f213efb655bf7c49a1bd48755458d572f7dd45094382930004a120d0a612478d9c7ba01cdae9e8732f3e7511d010b
|
7
|
+
data.tar.gz: 8e45db94d110041b68a8c9649b88edd7f1ed11cb045a80b5f9bc2e8de6f6a39690bc994a906bae7f65831959d7f84a28f8495f58082095277790127e4d5c03b8
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// CodeMirror version 3.
|
1
|
+
// CodeMirror version 3.16
|
2
2
|
//
|
3
3
|
// CodeMirror is the only global var we claim
|
4
4
|
window.CodeMirror = (function() {
|
@@ -26,7 +26,7 @@ window.CodeMirror = (function() {
|
|
26
26
|
// This is woefully incomplete. Suggestions for alternative methods welcome.
|
27
27
|
var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent);
|
28
28
|
var mac = ios || /Mac/.test(navigator.platform);
|
29
|
-
var windows = /
|
29
|
+
var windows = /win/i.test(navigator.platform);
|
30
30
|
|
31
31
|
var opera_version = opera && navigator.userAgent.match(/Version\/(\d*\.\d*)/);
|
32
32
|
if (opera_version) opera_version = Number(opera_version[1]);
|
@@ -334,13 +334,19 @@ window.CodeMirror = (function() {
|
|
334
334
|
d.scrollbarV.style.bottom = needsH ? scrollbarWidth(d.measure) + "px" : "0";
|
335
335
|
d.scrollbarV.firstChild.style.height =
|
336
336
|
(scrollHeight - d.scroller.clientHeight + d.scrollbarV.clientHeight) + "px";
|
337
|
-
} else
|
337
|
+
} else {
|
338
|
+
d.scrollbarV.style.display = "";
|
339
|
+
d.scrollbarV.firstChild.style.height = "0";
|
340
|
+
}
|
338
341
|
if (needsH) {
|
339
342
|
d.scrollbarH.style.display = "block";
|
340
343
|
d.scrollbarH.style.right = needsV ? scrollbarWidth(d.measure) + "px" : "0";
|
341
344
|
d.scrollbarH.firstChild.style.width =
|
342
345
|
(d.scroller.scrollWidth - d.scroller.clientWidth + d.scrollbarH.clientWidth) + "px";
|
343
|
-
} else
|
346
|
+
} else {
|
347
|
+
d.scrollbarH.style.display = "";
|
348
|
+
d.scrollbarH.firstChild.style.width = "0";
|
349
|
+
}
|
344
350
|
if (needsH && needsV) {
|
345
351
|
d.scrollbarFiller.style.display = "block";
|
346
352
|
d.scrollbarFiller.style.height = d.scrollbarFiller.style.width = scrollbarWidth(d.measure) + "px";
|
@@ -457,7 +463,7 @@ window.CodeMirror = (function() {
|
|
457
463
|
var positionsChangedFrom = Infinity;
|
458
464
|
if (cm.options.lineNumbers)
|
459
465
|
for (var i = 0; i < changes.length; ++i)
|
460
|
-
if (changes[i].diff) { positionsChangedFrom = changes[i].from;
|
466
|
+
if (changes[i].diff && changes[i].from < positionsChangedFrom) { positionsChangedFrom = changes[i].from; }
|
461
467
|
|
462
468
|
var end = doc.first + doc.size;
|
463
469
|
var from = Math.max(visible.from - cm.options.viewportMargin, doc.first);
|
@@ -614,7 +620,7 @@ window.CodeMirror = (function() {
|
|
614
620
|
if (nextIntact && nextIntact.to == lineN) nextIntact = intact.shift();
|
615
621
|
if (lineIsHidden(cm.doc, line)) {
|
616
622
|
if (line.height != 0) updateLineHeight(line, 0);
|
617
|
-
if (line.widgets && cur.previousSibling) for (var i = 0; i < line.widgets.length; ++i) {
|
623
|
+
if (line.widgets && cur && cur.previousSibling) for (var i = 0; i < line.widgets.length; ++i) {
|
618
624
|
var w = line.widgets[i];
|
619
625
|
if (w.showIfHidden) {
|
620
626
|
var prev = cur.previousSibling;
|
@@ -873,9 +879,10 @@ window.CodeMirror = (function() {
|
|
873
879
|
clearInterval(display.blinker);
|
874
880
|
var on = true;
|
875
881
|
display.cursor.style.visibility = display.otherCursor.style.visibility = "";
|
876
|
-
|
877
|
-
display.
|
878
|
-
|
882
|
+
if (cm.options.cursorBlinkRate > 0)
|
883
|
+
display.blinker = setInterval(function() {
|
884
|
+
display.cursor.style.visibility = display.otherCursor.style.visibility = (on = !on) ? "" : "hidden";
|
885
|
+
}, cm.options.cursorBlinkRate);
|
879
886
|
}
|
880
887
|
|
881
888
|
// HIGHLIGHT WORKER
|
@@ -926,8 +933,8 @@ window.CodeMirror = (function() {
|
|
926
933
|
// smallest indentation, which tends to need the least context to
|
927
934
|
// parse correctly.
|
928
935
|
function findStartLine(cm, n, precise) {
|
929
|
-
var minindent, minline, doc = cm.doc;
|
930
|
-
for (var search = n, lim = n -
|
936
|
+
var minindent, minline, doc = cm.doc, maxScan = cm.doc.mode.innerMode ? 1000 : 100;
|
937
|
+
for (var search = n, lim = n - maxScan; search > lim; --search) {
|
931
938
|
if (search <= doc.first) return doc.first;
|
932
939
|
var line = getLine(doc, search - 1);
|
933
940
|
if (line.stateAfter && (!precise || search <= doc.frontier)) return search;
|
@@ -942,7 +949,7 @@ window.CodeMirror = (function() {
|
|
942
949
|
|
943
950
|
function getStateBefore(cm, n, precise) {
|
944
951
|
var doc = cm.doc, display = cm.display;
|
945
|
-
|
952
|
+
if (!doc.mode.startState) return true;
|
946
953
|
var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter;
|
947
954
|
if (!state) state = startState(doc.mode);
|
948
955
|
else state = copyState(doc.mode, state);
|
@@ -1092,6 +1099,7 @@ window.CodeMirror = (function() {
|
|
1092
1099
|
if (cur.measureRight) rect.right = getRect(cur.measureRight).left;
|
1093
1100
|
if (cur.leftSide) rect.leftSide = measureRect(getRect(cur.leftSide));
|
1094
1101
|
}
|
1102
|
+
removeChildren(cm.display.measure);
|
1095
1103
|
for (var i = 0, cur; i < data.length; ++i) if (cur = data[i]) {
|
1096
1104
|
finishRect(cur);
|
1097
1105
|
if (cur.leftSide) finishRect(cur.leftSide);
|
@@ -1444,6 +1452,10 @@ window.CodeMirror = (function() {
|
|
1444
1452
|
function readInput(cm) {
|
1445
1453
|
var input = cm.display.input, prevInput = cm.display.prevInput, doc = cm.doc, sel = doc.sel;
|
1446
1454
|
if (!cm.state.focused || hasSelection(input) || isReadOnly(cm) || cm.state.disableInput) return false;
|
1455
|
+
if (cm.state.pasteIncoming && cm.state.fakedLastChar) {
|
1456
|
+
input.value = input.value.substring(0, input.value.length - 1);
|
1457
|
+
cm.state.fakedLastChar = false;
|
1458
|
+
}
|
1447
1459
|
var text = input.value;
|
1448
1460
|
if (text == prevInput && posEq(sel.from, sel.to)) return false;
|
1449
1461
|
if (ie && !ie_lt9 && cm.display.inputHasSelection === text) {
|
@@ -1590,12 +1602,22 @@ window.CodeMirror = (function() {
|
|
1590
1602
|
on(d.scroller, "dragover", drag_);
|
1591
1603
|
on(d.scroller, "drop", operation(cm, onDrop));
|
1592
1604
|
}
|
1593
|
-
on(d.scroller, "paste", function(e){
|
1605
|
+
on(d.scroller, "paste", function(e) {
|
1594
1606
|
if (eventInWidget(d, e)) return;
|
1595
1607
|
focusInput(cm);
|
1596
1608
|
fastPoll(cm);
|
1597
1609
|
});
|
1598
1610
|
on(d.input, "paste", function() {
|
1611
|
+
// Workaround for webkit bug https://bugs.webkit.org/show_bug.cgi?id=90206
|
1612
|
+
// Add a char to the end of textarea before paste occur so that
|
1613
|
+
// selection doesn't span to the end of textarea.
|
1614
|
+
if (webkit && !cm.state.fakedLastChar && !(new Date - cm.state.lastMiddleDown < 200)) {
|
1615
|
+
var start = d.input.selectionStart, end = d.input.selectionEnd;
|
1616
|
+
d.input.value += "$";
|
1617
|
+
d.input.selectionStart = start;
|
1618
|
+
d.input.selectionEnd = end;
|
1619
|
+
cm.state.fakedLastChar = true;
|
1620
|
+
}
|
1599
1621
|
cm.state.pasteIncoming = true;
|
1600
1622
|
fastPoll(cm);
|
1601
1623
|
});
|
@@ -1659,6 +1681,7 @@ window.CodeMirror = (function() {
|
|
1659
1681
|
if (captureMiddleClick) onContextMenu.call(cm, cm, e);
|
1660
1682
|
return;
|
1661
1683
|
case 2:
|
1684
|
+
if (webkit) cm.state.lastMiddleDown = +new Date;
|
1662
1685
|
if (start) extendSelection(cm.doc, start);
|
1663
1686
|
setTimeout(bind(focusInput, cm), 20);
|
1664
1687
|
e_preventDefault(e);
|
@@ -2062,8 +2085,8 @@ window.CodeMirror = (function() {
|
|
2062
2085
|
function onKeyDown(e) {
|
2063
2086
|
var cm = this;
|
2064
2087
|
if (!cm.state.focused) onFocus(cm);
|
2065
|
-
if (ie && e.keyCode == 27) { e.returnValue = false; }
|
2066
2088
|
if (signalDOMEvent(cm, e) || cm.options.onKeyEvent && cm.options.onKeyEvent(cm, addStop(e))) return;
|
2089
|
+
if (ie && e.keyCode == 27) e.returnValue = false;
|
2067
2090
|
var code = e.keyCode;
|
2068
2091
|
// IE does strange things with escape.
|
2069
2092
|
cm.doc.sel.shift = code == 16 || e.shiftKey;
|
@@ -2100,7 +2123,10 @@ window.CodeMirror = (function() {
|
|
2100
2123
|
cm.state.focused = true;
|
2101
2124
|
if (cm.display.wrapper.className.search(/\bCodeMirror-focused\b/) == -1)
|
2102
2125
|
cm.display.wrapper.className += " CodeMirror-focused";
|
2103
|
-
|
2126
|
+
if (!cm.curOp) {
|
2127
|
+
resetInput(cm, true);
|
2128
|
+
if (webkit) setTimeout(bind(resetInput, cm, true), 0); // Issue #1730
|
2129
|
+
}
|
2104
2130
|
}
|
2105
2131
|
slowPoll(cm);
|
2106
2132
|
restartBlink(cm);
|
@@ -3731,9 +3757,10 @@ window.CodeMirror = (function() {
|
|
3731
3757
|
TextMarker.prototype.changed = function() {
|
3732
3758
|
var pos = this.find(), cm = this.doc.cm;
|
3733
3759
|
if (!pos || !cm) return;
|
3734
|
-
|
3760
|
+
if (this.type != "bookmark") pos = pos.from;
|
3761
|
+
var line = getLine(this.doc, pos.line);
|
3735
3762
|
clearCachedMeasurement(cm, line);
|
3736
|
-
if (pos.
|
3763
|
+
if (pos.line >= cm.display.showingFrom && pos.line < cm.display.showingTo) {
|
3737
3764
|
for (var node = cm.display.lineDiv.firstChild; node; node = node.nextSibling) if (node.lineObj == line) {
|
3738
3765
|
if (node.offsetHeight != line.height) updateLineHeight(line, node.offsetHeight);
|
3739
3766
|
break;
|
@@ -4396,11 +4423,13 @@ window.CodeMirror = (function() {
|
|
4396
4423
|
if (size) {
|
4397
4424
|
builder.measure[builder.pos] = widget;
|
4398
4425
|
} else {
|
4399
|
-
var elt =
|
4400
|
-
if (marker.type
|
4401
|
-
builder.pre.
|
4426
|
+
var elt = zeroWidthElement(builder.cm.display.measure);
|
4427
|
+
if (marker.type == "bookmark" && !marker.insertLeft)
|
4428
|
+
builder.measure[builder.pos] = builder.pre.appendChild(elt);
|
4429
|
+
else if (builder.measure[builder.pos])
|
4430
|
+
return;
|
4402
4431
|
else
|
4403
|
-
builder.pre.
|
4432
|
+
builder.measure[builder.pos] = builder.pre.insertBefore(elt, widget);
|
4404
4433
|
}
|
4405
4434
|
builder.measuredSomething = true;
|
4406
4435
|
}
|
@@ -4424,7 +4453,7 @@ window.CodeMirror = (function() {
|
|
4424
4453
|
if (nextChange == pos) { // Update current marker set
|
4425
4454
|
spanStyle = spanEndStyle = spanStartStyle = title = "";
|
4426
4455
|
collapsed = null; nextChange = Infinity;
|
4427
|
-
var
|
4456
|
+
var foundBookmarks = [];
|
4428
4457
|
for (var j = 0; j < spans.length; ++j) {
|
4429
4458
|
var sp = spans[j], m = sp.marker;
|
4430
4459
|
if (sp.from <= pos && (sp.to == null || sp.to > pos)) {
|
@@ -4438,14 +4467,15 @@ window.CodeMirror = (function() {
|
|
4438
4467
|
} else if (sp.from > pos && nextChange > sp.from) {
|
4439
4468
|
nextChange = sp.from;
|
4440
4469
|
}
|
4441
|
-
if (m.type == "bookmark" && sp.from == pos && m.replacedWith)
|
4470
|
+
if (m.type == "bookmark" && sp.from == pos && m.replacedWith) foundBookmarks.push(m);
|
4442
4471
|
}
|
4443
4472
|
if (collapsed && (collapsed.from || 0) == pos) {
|
4444
4473
|
buildCollapsedSpan(builder, (collapsed.to == null ? len : collapsed.to) - pos,
|
4445
4474
|
collapsed.marker, collapsed.from == null);
|
4446
4475
|
if (collapsed.to == null) return collapsed.marker.find();
|
4447
4476
|
}
|
4448
|
-
if (
|
4477
|
+
if (!collapsed && foundBookmarks.length) for (var j = 0; j < foundBookmarks.length; ++j)
|
4478
|
+
buildCollapsedSpan(builder, 0, foundBookmarks[j]);
|
4449
4479
|
}
|
4450
4480
|
if (pos >= len) break;
|
4451
4481
|
|
@@ -4741,11 +4771,11 @@ window.CodeMirror = (function() {
|
|
4741
4771
|
if (extend) extendSelection(this, pos);
|
4742
4772
|
else setSelection(this, pos, pos);
|
4743
4773
|
}),
|
4744
|
-
setSelection: docOperation(function(anchor, head) {
|
4745
|
-
setSelection(this, clipPos(this, anchor), clipPos(this, head || anchor));
|
4774
|
+
setSelection: docOperation(function(anchor, head, bias) {
|
4775
|
+
setSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), bias);
|
4746
4776
|
}),
|
4747
|
-
extendSelection: docOperation(function(from, to) {
|
4748
|
-
extendSelection(this, clipPos(this, from), to && clipPos(this, to));
|
4777
|
+
extendSelection: docOperation(function(from, to, bias) {
|
4778
|
+
extendSelection(this, clipPos(this, from), to && clipPos(this, to), bias);
|
4749
4779
|
}),
|
4750
4780
|
|
4751
4781
|
getSelection: function(lineSep) {return this.getRange(this.sel.from, this.sel.to, lineSep);},
|
@@ -5793,7 +5823,7 @@ window.CodeMirror = (function() {
|
|
5793
5823
|
|
5794
5824
|
// THE END
|
5795
5825
|
|
5796
|
-
CodeMirror.version = "3.
|
5826
|
+
CodeMirror.version = "3.16.0";
|
5797
5827
|
|
5798
5828
|
return CodeMirror;
|
5799
5829
|
})();
|
@@ -0,0 +1,44 @@
|
|
1
|
+
(function() {
|
2
|
+
var modes = ["clike", "css", "javascript"];
|
3
|
+
for (var i = 0; i < modes.length; ++i)
|
4
|
+
CodeMirror.extendMode(modes[i], {blockCommentStart: "/*",
|
5
|
+
blockCommentEnd: "*/",
|
6
|
+
blockCommentContinue: " * "});
|
7
|
+
|
8
|
+
function continueComment(cm) {
|
9
|
+
var pos = cm.getCursor(), token = cm.getTokenAt(pos);
|
10
|
+
var mode = CodeMirror.innerMode(cm.getMode(), token.state).mode;
|
11
|
+
var space;
|
12
|
+
|
13
|
+
if (token.type == "comment" && mode.blockCommentStart && mode.blockCommentContinue) {
|
14
|
+
var end = token.string.indexOf(mode.blockCommentEnd);
|
15
|
+
var full = cm.getRange(CodeMirror.Pos(pos.line, 0), CodeMirror.Pos(pos.line, token.end)), found;
|
16
|
+
if (end != -1 && end == token.string.length - mode.blockCommentEnd.length) {
|
17
|
+
// Comment ended, don't continue it
|
18
|
+
} else if (token.string.indexOf(mode.blockCommentStart) == 0) {
|
19
|
+
space = full.slice(0, token.start);
|
20
|
+
if (!/^\s*$/.test(space)) {
|
21
|
+
space = "";
|
22
|
+
for (var i = 0; i < token.start; ++i) space += " ";
|
23
|
+
}
|
24
|
+
} else if ((found = full.indexOf(mode.blockCommentContinue)) != -1 &&
|
25
|
+
found + mode.blockCommentContinue.length > token.start &&
|
26
|
+
/^\s*$/.test(full.slice(0, found))) {
|
27
|
+
space = full.slice(0, found);
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
if (space != null)
|
32
|
+
cm.replaceSelection("\n" + space + mode.blockCommentContinue, "end");
|
33
|
+
else
|
34
|
+
return CodeMirror.Pass;
|
35
|
+
}
|
36
|
+
|
37
|
+
CodeMirror.defineOption("continueComments", null, function(cm, val, prev) {
|
38
|
+
if (prev && prev != CodeMirror.Init)
|
39
|
+
cm.removeKeyMap("continueComment");
|
40
|
+
var map = {name: "continueComment"};
|
41
|
+
map[typeof val == "string" ? val : "Enter"] = continueComment;
|
42
|
+
cm.addKeyMap(map);
|
43
|
+
});
|
44
|
+
})();
|
@@ -0,0 +1,30 @@
|
|
1
|
+
(function() {
|
2
|
+
"use strict";
|
3
|
+
|
4
|
+
CodeMirror.defineOption("fullScreen", false, function(cm, val, old) {
|
5
|
+
if (old == CodeMirror.Init) old = false;
|
6
|
+
if (!old == !val) return;
|
7
|
+
if (val) setFullscreen(cm);
|
8
|
+
else setNormal(cm);
|
9
|
+
});
|
10
|
+
|
11
|
+
function setFullscreen(cm) {
|
12
|
+
var wrap = cm.getWrapperElement();
|
13
|
+
cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,
|
14
|
+
width: wrap.style.width, height: wrap.style.height};
|
15
|
+
wrap.style.width = wrap.style.height = "";
|
16
|
+
wrap.className += " CodeMirror-fullscreen";
|
17
|
+
document.documentElement.style.overflow = "hidden";
|
18
|
+
cm.refresh();
|
19
|
+
}
|
20
|
+
|
21
|
+
function setNormal(cm) {
|
22
|
+
var wrap = cm.getWrapperElement();
|
23
|
+
wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, "");
|
24
|
+
document.documentElement.style.overflow = "";
|
25
|
+
var info = cm.state.fullScreenRestore;
|
26
|
+
wrap.style.width = info.width; wrap.style.height = info.height;
|
27
|
+
window.scrollTo(info.scrollLeft, info.scrollTop);
|
28
|
+
cm.refresh();
|
29
|
+
}
|
30
|
+
})();
|
@@ -10,7 +10,7 @@
|
|
10
10
|
var mode = CodeMirror.innerMode(cm.getMode(), token.state).mode;
|
11
11
|
var space;
|
12
12
|
|
13
|
-
if (token.type == "comment" && mode.blockCommentStart) {
|
13
|
+
if (token.type == "comment" && mode.blockCommentStart && mode.blockCommentContinue) {
|
14
14
|
var end = token.string.indexOf(mode.blockCommentEnd);
|
15
15
|
var full = cm.getRange(CodeMirror.Pos(pos.line, 0), CodeMirror.Pos(pos.line, token.end)), found;
|
16
16
|
if (end != -1 && end == token.string.length - mode.blockCommentEnd.length) {
|
@@ -4,7 +4,7 @@ CodeMirror.registerHelper("fold", "brace", function(cm, start) {
|
|
4
4
|
|
5
5
|
function findOpening(openCh) {
|
6
6
|
for (var at = start.ch, pass = 0;;) {
|
7
|
-
var found = lineText.lastIndexOf(openCh, at - 1);
|
7
|
+
var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);
|
8
8
|
if (found == -1) {
|
9
9
|
if (pass == 1) break;
|
10
10
|
pass = 1;
|
@@ -12,7 +12,7 @@ CodeMirror.registerHelper("fold", "brace", function(cm, start) {
|
|
12
12
|
continue;
|
13
13
|
}
|
14
14
|
if (pass == 1 && found < start.ch) break;
|
15
|
-
tokenType = cm.
|
15
|
+
tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));
|
16
16
|
if (!/^(comment|string)/.test(tokenType)) return found + 1;
|
17
17
|
at = found - 1;
|
18
18
|
}
|
@@ -34,7 +34,7 @@ CodeMirror.registerHelper("fold", "brace", function(cm, start) {
|
|
34
34
|
if (nextClose < 0) nextClose = text.length;
|
35
35
|
pos = Math.min(nextOpen, nextClose);
|
36
36
|
if (pos == text.length) break;
|
37
|
-
if (cm.
|
37
|
+
if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {
|
38
38
|
if (pos == nextOpen) ++count;
|
39
39
|
else if (!--count) { end = i; endCh = pos; break outer; }
|
40
40
|
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
CodeMirror.registerHelper("fold", "comment", function(cm, start) {
|
2
|
+
var mode = cm.getModeAt(start), startToken = mode.blockCommentStart, endToken = mode.blockCommentEnd;
|
3
|
+
if (!startToken || !endToken) return;
|
4
|
+
var line = start.line, lineText = cm.getLine(line);
|
5
|
+
|
6
|
+
var startCh;
|
7
|
+
for (var at = start.ch, pass = 0;;) {
|
8
|
+
var found = at <= 0 ? -1 : lineText.lastIndexOf(startToken, at - 1);
|
9
|
+
if (found == -1) {
|
10
|
+
if (pass == 1) return;
|
11
|
+
pass = 1;
|
12
|
+
at = lineText.length;
|
13
|
+
continue;
|
14
|
+
}
|
15
|
+
if (pass == 1 && found < start.ch) return;
|
16
|
+
if (/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1)))) {
|
17
|
+
startCh = found + startToken.length;
|
18
|
+
break;
|
19
|
+
}
|
20
|
+
at = found - 1;
|
21
|
+
}
|
22
|
+
|
23
|
+
var depth = 1, lastLine = cm.lastLine(), end, endCh;
|
24
|
+
outer: for (var i = line; i <= lastLine; ++i) {
|
25
|
+
var text = cm.getLine(i), pos = i == line ? startCh : 0;
|
26
|
+
for (;;) {
|
27
|
+
var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);
|
28
|
+
if (nextOpen < 0) nextOpen = text.length;
|
29
|
+
if (nextClose < 0) nextClose = text.length;
|
30
|
+
pos = Math.min(nextOpen, nextClose);
|
31
|
+
if (pos == text.length) break;
|
32
|
+
if (pos == nextOpen) ++depth;
|
33
|
+
else if (!--depth) { end = i; endCh = pos; break outer; }
|
34
|
+
++pos;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
if (end == null || line == end && endCh == startCh) return;
|
38
|
+
return {from: CodeMirror.Pos(line, startCh),
|
39
|
+
to: CodeMirror.Pos(end, endCh)};
|
40
|
+
});
|
@@ -67,15 +67,11 @@
|
|
67
67
|
finished = true;
|
68
68
|
completion.close();
|
69
69
|
completion.cm.off("cursorActivity", activity);
|
70
|
-
CodeMirror.signal(data, "close");
|
71
|
-
}
|
72
|
-
function isDone() {
|
73
|
-
if (finished) return true;
|
74
|
-
if (!completion.widget) { done(); return true; }
|
70
|
+
if (data) CodeMirror.signal(data, "close");
|
75
71
|
}
|
76
72
|
|
77
73
|
function update() {
|
78
|
-
if (
|
74
|
+
if (finished) return;
|
79
75
|
CodeMirror.signal(data, "update");
|
80
76
|
if (completion.options.async)
|
81
77
|
completion.getHints(completion.cm, finishUpdate, completion.options);
|
@@ -84,9 +80,8 @@
|
|
84
80
|
}
|
85
81
|
function finishUpdate(data_) {
|
86
82
|
data = data_;
|
87
|
-
if (
|
83
|
+
if (finished) return;
|
88
84
|
if (!data || !data.list.length) return done();
|
89
|
-
completion.widget.close();
|
90
85
|
completion.widget = new Widget(completion, data);
|
91
86
|
}
|
92
87
|
|
@@ -95,10 +90,12 @@
|
|
95
90
|
var pos = completion.cm.getCursor(), line = completion.cm.getLine(pos.line);
|
96
91
|
if (pos.line != startPos.line || line.length - pos.ch != startLen - startPos.ch ||
|
97
92
|
pos.ch < startPos.ch || completion.cm.somethingSelected() ||
|
98
|
-
(pos.ch && closeOn.test(line.charAt(pos.ch - 1))))
|
93
|
+
(pos.ch && closeOn.test(line.charAt(pos.ch - 1)))) {
|
99
94
|
completion.close();
|
100
|
-
else
|
95
|
+
} else {
|
101
96
|
debounce = setTimeout(update, 170);
|
97
|
+
if (completion.widget) completion.widget.close();
|
98
|
+
}
|
102
99
|
}
|
103
100
|
this.cm.on("cursorActivity", activity);
|
104
101
|
this.onClose = done;
|