mirror of
https://github.com/TiddlyWiki/TiddlyWiki5.git
synced 2026-04-30 13:27:01 +00:00
added suport for vim and emacs keymaps (codemirror updated to 3.20)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// CodeMirror version 3.19.1
|
||||
// CodeMirror version 3.20
|
||||
//
|
||||
// CodeMirror is the only global var we claim
|
||||
window.CodeMirror = (function() {
|
||||
@@ -9,9 +9,13 @@ window.CodeMirror = (function() {
|
||||
// Crude, but necessary to handle a number of hard-to-feature-detect
|
||||
// bugs and behavior differences.
|
||||
var gecko = /gecko\/\d/i.test(navigator.userAgent);
|
||||
// IE11 currently doesn't count as 'ie', since it has almost none of
|
||||
// the same bugs as earlier versions. Use ie_gt10 to handle
|
||||
// incompatibilities in that version.
|
||||
var ie = /MSIE \d/.test(navigator.userAgent);
|
||||
var ie_lt8 = ie && (document.documentMode == null || document.documentMode < 8);
|
||||
var ie_lt9 = ie && (document.documentMode == null || document.documentMode < 9);
|
||||
var ie_gt10 = /Trident\/([7-9]|\d{2,})\./.test(navigator.userAgent);
|
||||
var webkit = /WebKit\//.test(navigator.userAgent);
|
||||
var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(navigator.userAgent);
|
||||
var chrome = /Chrome\//.test(navigator.userAgent);
|
||||
@@ -908,7 +912,7 @@ window.CodeMirror = (function() {
|
||||
doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.showingTo + 500), function(line) {
|
||||
if (doc.frontier >= cm.display.showingFrom) { // Visible
|
||||
var oldStyles = line.styles;
|
||||
line.styles = highlightLine(cm, line, state);
|
||||
line.styles = highlightLine(cm, line, state, true);
|
||||
var ischange = !oldStyles || oldStyles.length != line.styles.length;
|
||||
for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i];
|
||||
if (ischange) {
|
||||
@@ -917,7 +921,7 @@ window.CodeMirror = (function() {
|
||||
}
|
||||
line.stateAfter = copyState(doc.mode, state);
|
||||
} else {
|
||||
processLine(cm, line, state);
|
||||
processLine(cm, line.text, state);
|
||||
line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null;
|
||||
}
|
||||
++doc.frontier;
|
||||
@@ -961,7 +965,7 @@ window.CodeMirror = (function() {
|
||||
if (!state) state = startState(doc.mode);
|
||||
else state = copyState(doc.mode, state);
|
||||
doc.iter(pos, n, function(line) {
|
||||
processLine(cm, line, state);
|
||||
processLine(cm, line.text, state);
|
||||
var save = pos == n - 1 || pos % 5 == 0 || pos >= display.showingFrom && pos < display.showingTo;
|
||||
line.stateAfter = save ? copyState(doc.mode, state) : null;
|
||||
++pos;
|
||||
@@ -1385,8 +1389,10 @@ window.CodeMirror = (function() {
|
||||
}
|
||||
if (!updated && op.selectionChanged) updateSelection(cm);
|
||||
if (op.updateScrollPos) {
|
||||
display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = newScrollPos.scrollTop;
|
||||
display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = newScrollPos.scrollLeft;
|
||||
var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, newScrollPos.scrollTop));
|
||||
var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, newScrollPos.scrollLeft));
|
||||
display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top;
|
||||
display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left;
|
||||
alignHorizontally(cm);
|
||||
if (op.scrollToPos)
|
||||
scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos.from),
|
||||
@@ -1905,7 +1911,6 @@ window.CodeMirror = (function() {
|
||||
if (cm.state.draggingText) replaceRange(cm.doc, "", curFrom, curTo, "paste");
|
||||
cm.replaceSelection(text, null, "paste");
|
||||
focusInput(cm);
|
||||
onFocus(cm);
|
||||
}
|
||||
}
|
||||
catch(e){}
|
||||
@@ -2761,10 +2766,10 @@ window.CodeMirror = (function() {
|
||||
for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";}
|
||||
if (pos < indentation) indentString += spaceStr(indentation - pos);
|
||||
|
||||
if (indentString == curSpaceString)
|
||||
setSelection(cm.doc, Pos(n, curSpaceString.length), Pos(n, curSpaceString.length));
|
||||
else
|
||||
if (indentString != curSpaceString)
|
||||
replaceRange(cm.doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input");
|
||||
else if (doc.sel.head.line == n && doc.sel.head.ch < curSpaceString.length)
|
||||
setSelection(doc, Pos(n, curSpaceString.length), Pos(n, curSpaceString.length), 1);
|
||||
line.stateAfter = null;
|
||||
}
|
||||
|
||||
@@ -2865,7 +2870,7 @@ window.CodeMirror = (function() {
|
||||
|
||||
CodeMirror.prototype = {
|
||||
constructor: CodeMirror,
|
||||
focus: function(){window.focus(); focusInput(this); onFocus(this); fastPoll(this);},
|
||||
focus: function(){window.focus(); focusInput(this); fastPoll(this);},
|
||||
|
||||
setOption: function(option, value) {
|
||||
var options = this.options, old = options[option];
|
||||
@@ -3278,8 +3283,14 @@ window.CodeMirror = (function() {
|
||||
clearCaches(cm);
|
||||
regChange(cm);
|
||||
}, true);
|
||||
option("specialChars", /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\ufeff]/g, function(cm, val) {
|
||||
cm.options.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g");
|
||||
cm.refresh();
|
||||
}, true);
|
||||
option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true);
|
||||
option("electricChars", true);
|
||||
option("rtlMoveVisually", !windows);
|
||||
option("wholeLineUpdateBefore", true);
|
||||
|
||||
option("theme", "default", function(cm) {
|
||||
themeChanged(cm);
|
||||
@@ -3312,8 +3323,14 @@ window.CodeMirror = (function() {
|
||||
option("resetSelectionOnContextMenu", true);
|
||||
|
||||
option("readOnly", false, function(cm, val) {
|
||||
if (val == "nocursor") {onBlur(cm); cm.display.input.blur();}
|
||||
else if (!val) resetInput(cm, true);
|
||||
if (val == "nocursor") {
|
||||
onBlur(cm);
|
||||
cm.display.input.blur();
|
||||
cm.display.disabled = true;
|
||||
} else {
|
||||
cm.display.disabled = false;
|
||||
if (!val) resetInput(cm, true);
|
||||
}
|
||||
});
|
||||
option("dragDrop", true);
|
||||
|
||||
@@ -4247,6 +4264,7 @@ window.CodeMirror = (function() {
|
||||
this.height = estimateHeight ? estimateHeight(this) : 1;
|
||||
};
|
||||
eventMixin(Line);
|
||||
Line.prototype.lineNo = function() { return lineNo(this); };
|
||||
|
||||
function updateLine(line, text, markedSpans, estimateHeight) {
|
||||
line.text = text;
|
||||
@@ -4267,7 +4285,7 @@ window.CodeMirror = (function() {
|
||||
// Run the given mode's parser over a line, update the styles
|
||||
// array, which contains alternating fragments of text and CSS
|
||||
// classes.
|
||||
function runMode(cm, text, mode, state, f) {
|
||||
function runMode(cm, text, mode, state, f, forceToEnd) {
|
||||
var flattenSpans = mode.flattenSpans;
|
||||
if (flattenSpans == null) flattenSpans = cm.options.flattenSpans;
|
||||
var curStart = 0, curStyle = null;
|
||||
@@ -4276,6 +4294,7 @@ window.CodeMirror = (function() {
|
||||
while (!stream.eol()) {
|
||||
if (stream.pos > cm.options.maxHighlightLength) {
|
||||
flattenSpans = false;
|
||||
if (forceToEnd) processLine(cm, text, state, stream.pos);
|
||||
stream.pos = text.length;
|
||||
style = null;
|
||||
} else {
|
||||
@@ -4295,12 +4314,14 @@ window.CodeMirror = (function() {
|
||||
}
|
||||
}
|
||||
|
||||
function highlightLine(cm, line, state) {
|
||||
function highlightLine(cm, line, state, forceToEnd) {
|
||||
// A styles array always starts with a number identifying the
|
||||
// mode/overlays that it is based on (for easy invalidation).
|
||||
var st = [cm.state.modeGen];
|
||||
// Compute the base array of styles
|
||||
runMode(cm, line.text, cm.doc.mode, state, function(end, style) {st.push(end, style);});
|
||||
runMode(cm, line.text, cm.doc.mode, state, function(end, style) {
|
||||
st.push(end, style);
|
||||
}, forceToEnd);
|
||||
|
||||
// Run overlays, adjust style array.
|
||||
for (var o = 0; o < cm.state.overlays.length; ++o) {
|
||||
@@ -4339,10 +4360,11 @@ window.CodeMirror = (function() {
|
||||
|
||||
// Lightweight form of highlight -- proceed over this line and
|
||||
// update state, but don't save a style array.
|
||||
function processLine(cm, line, state) {
|
||||
function processLine(cm, text, state, startAt) {
|
||||
var mode = cm.doc.mode;
|
||||
var stream = new StringStream(line.text, cm.options.tabSize);
|
||||
if (line.text == "" && mode.blankLine) mode.blankLine(state);
|
||||
var stream = new StringStream(text, cm.options.tabSize);
|
||||
stream.start = stream.pos = startAt || 0;
|
||||
if (text == "" && mode.blankLine) mode.blankLine(state);
|
||||
while (!stream.eol() && stream.pos <= cm.options.maxHighlightLength) {
|
||||
mode.token(stream, state);
|
||||
stream.start = stream.pos;
|
||||
@@ -4399,7 +4421,7 @@ window.CodeMirror = (function() {
|
||||
// Work around problem with the reported dimensions of single-char
|
||||
// direction spans on IE (issue #1129). See also the comment in
|
||||
// cursorCoords.
|
||||
if (measure && ie && (order = getOrder(line))) {
|
||||
if (measure && (ie || ie_gt10) && (order = getOrder(line))) {
|
||||
var l = order.length - 1;
|
||||
if (order[l].from == order[l].to) --l;
|
||||
var last = order[l], prev = order[l - 1];
|
||||
@@ -4417,17 +4439,23 @@ window.CodeMirror = (function() {
|
||||
return builder;
|
||||
}
|
||||
|
||||
var tokenSpecialChars = /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\uFEFF]/g;
|
||||
function defaultSpecialCharPlaceholder(ch) {
|
||||
var token = elt("span", "\u2022", "cm-invalidchar");
|
||||
token.title = "\\u" + ch.charCodeAt(0).toString(16);
|
||||
return token;
|
||||
}
|
||||
|
||||
function buildToken(builder, text, style, startStyle, endStyle, title) {
|
||||
if (!text) return;
|
||||
if (!tokenSpecialChars.test(text)) {
|
||||
var special = builder.cm.options.specialChars;
|
||||
if (!special.test(text)) {
|
||||
builder.col += text.length;
|
||||
var content = document.createTextNode(text);
|
||||
} else {
|
||||
var content = document.createDocumentFragment(), pos = 0;
|
||||
while (true) {
|
||||
tokenSpecialChars.lastIndex = pos;
|
||||
var m = tokenSpecialChars.exec(text);
|
||||
special.lastIndex = pos;
|
||||
var m = special.exec(text);
|
||||
var skipped = m ? m.index - pos : text.length - pos;
|
||||
if (skipped) {
|
||||
content.appendChild(document.createTextNode(text.slice(pos, pos + skipped)));
|
||||
@@ -4440,8 +4468,7 @@ window.CodeMirror = (function() {
|
||||
content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab"));
|
||||
builder.col += tabWidth;
|
||||
} else {
|
||||
var token = elt("span", "\u2022", "cm-invalidchar");
|
||||
token.title = "\\u" + m[0].charCodeAt(0).toString(16);
|
||||
var token = builder.cm.options.specialCharPlaceholder(m[0]);
|
||||
content.appendChild(token);
|
||||
builder.col += 1;
|
||||
}
|
||||
@@ -4594,7 +4621,8 @@ window.CodeMirror = (function() {
|
||||
var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;
|
||||
|
||||
// First adjust the line structure
|
||||
if (from.ch == 0 && to.ch == 0 && lastText == "") {
|
||||
if (from.ch == 0 && to.ch == 0 && lastText == "" &&
|
||||
(!doc.cm || doc.cm.options.wholeLineUpdateBefore)) {
|
||||
// This is a whole-line replace. Treated specially to make
|
||||
// sure line objects move the way they are supposed to.
|
||||
for (var i = 0, e = text.length - 1, added = []; i < e; ++i)
|
||||
@@ -5481,7 +5509,7 @@ window.CodeMirror = (function() {
|
||||
return true;
|
||||
}
|
||||
|
||||
var isExtendingChar = /[\u0300-\u036F\u0483-\u0487\u0488-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\uA66F\uA670-\uA672\uA674-\uA67D\uA69F\udc00-\udfff]/;
|
||||
var isExtendingChar = /[\u0300-\u036F\u0483-\u0487\u0488-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\uA66F\u1DC0–\u1DFF\u20D0–\u20FF\uA670-\uA672\uA674-\uA67D\uA69F\udc00-\udfff\uFE20–\uFE2F]/;
|
||||
|
||||
// DOM UTILITIES
|
||||
|
||||
@@ -5910,7 +5938,7 @@ window.CodeMirror = (function() {
|
||||
|
||||
// THE END
|
||||
|
||||
CodeMirror.version = "3.19.1";
|
||||
CodeMirror.version = "3.20.0";
|
||||
|
||||
return CodeMirror;
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user