mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
codemirror 5.65.9
This commit is contained in:
parent
b9c22fcbc8
commit
70c9292413
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/addon/edit/matchtags.js
vendored
2
libraries/codemirror/addon/edit/matchtags.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/addon/fold/xml-fold.js
vendored
2
libraries/codemirror/addon/fold/xml-fold.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
8
libraries/codemirror/addon/lint/lint.css
vendored
8
libraries/codemirror/addon/lint/lint.css
vendored
@ -69,3 +69,11 @@
|
||||
background-position: right bottom;
|
||||
width: 100%; height: 100%;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-line-error {
|
||||
background-color: rgba(183, 76, 81, 0.08);
|
||||
}
|
||||
|
||||
.CodeMirror-lint-line-warning {
|
||||
background-color: rgba(255, 211, 0, 0.1);
|
||||
}
|
||||
|
70
libraries/codemirror/addon/lint/lint.js
vendored
70
libraries/codemirror/addon/lint/lint.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -11,6 +11,7 @@
|
||||
})(function(CodeMirror) {
|
||||
"use strict";
|
||||
var GUTTER_ID = "CodeMirror-lint-markers";
|
||||
var LINT_LINE_ID = "CodeMirror-lint-line-";
|
||||
|
||||
function showTooltip(cm, e, content) {
|
||||
var tt = document.createElement("div");
|
||||
@ -58,29 +59,54 @@
|
||||
CodeMirror.on(node, "mouseout", hide);
|
||||
}
|
||||
|
||||
function LintState(cm, options, hasGutter) {
|
||||
function LintState(cm, conf, hasGutter) {
|
||||
this.marked = [];
|
||||
this.options = options;
|
||||
if (conf instanceof Function) conf = {getAnnotations: conf};
|
||||
if (!conf || conf === true) conf = {};
|
||||
this.options = {};
|
||||
this.linterOptions = conf.options || {};
|
||||
for (var prop in defaults) this.options[prop] = defaults[prop];
|
||||
for (var prop in conf) {
|
||||
if (defaults.hasOwnProperty(prop)) {
|
||||
if (conf[prop] != null) this.options[prop] = conf[prop];
|
||||
} else if (!conf.options) {
|
||||
this.linterOptions[prop] = conf[prop];
|
||||
}
|
||||
}
|
||||
this.timeout = null;
|
||||
this.hasGutter = hasGutter;
|
||||
this.onMouseOver = function(e) { onMouseOver(cm, e); };
|
||||
this.waitingFor = 0
|
||||
}
|
||||
|
||||
function parseOptions(_cm, options) {
|
||||
if (options instanceof Function) return {getAnnotations: options};
|
||||
if (!options || options === true) options = {};
|
||||
return options;
|
||||
var defaults = {
|
||||
highlightLines: false,
|
||||
tooltips: true,
|
||||
delay: 500,
|
||||
lintOnChange: true,
|
||||
getAnnotations: null,
|
||||
async: false,
|
||||
selfContain: null,
|
||||
formatAnnotation: null,
|
||||
onUpdateLinting: null
|
||||
}
|
||||
|
||||
function clearMarks(cm) {
|
||||
var state = cm.state.lint;
|
||||
if (state.hasGutter) cm.clearGutter(GUTTER_ID);
|
||||
if (state.options.highlightLines) clearErrorLines(cm);
|
||||
for (var i = 0; i < state.marked.length; ++i)
|
||||
state.marked[i].clear();
|
||||
state.marked.length = 0;
|
||||
}
|
||||
|
||||
function clearErrorLines(cm) {
|
||||
cm.eachLine(function(line) {
|
||||
var has = line.wrapClass && /\bCodeMirror-lint-line-\w+\b/.exec(line.wrapClass);
|
||||
if (has) cm.removeLineClass(line, "wrap", has[0]);
|
||||
})
|
||||
}
|
||||
|
||||
function makeMarker(cm, labels, severity, multiple, tooltips) {
|
||||
var marker = document.createElement("div"), inner = marker;
|
||||
marker.className = "CodeMirror-lint-marker CodeMirror-lint-marker-" + severity;
|
||||
@ -123,7 +149,7 @@
|
||||
return tip;
|
||||
}
|
||||
|
||||
function lintAsync(cm, getAnnotations, passOptions) {
|
||||
function lintAsync(cm, getAnnotations) {
|
||||
var state = cm.state.lint
|
||||
var id = ++state.waitingFor
|
||||
function abort() {
|
||||
@ -136,22 +162,23 @@
|
||||
if (state.waitingFor != id) return
|
||||
if (arg2 && annotations instanceof CodeMirror) annotations = arg2
|
||||
cm.operation(function() {updateLinting(cm, annotations)})
|
||||
}, passOptions, cm);
|
||||
}, state.linterOptions, cm);
|
||||
}
|
||||
|
||||
function startLinting(cm) {
|
||||
var state = cm.state.lint, options = state.options;
|
||||
var state = cm.state.lint;
|
||||
if (!state) return;
|
||||
var options = state.options;
|
||||
/*
|
||||
* Passing rules in `options` property prevents JSHint (and other linters) from complaining
|
||||
* about unrecognized rules like `onUpdateLinting`, `delay`, `lintOnChange`, etc.
|
||||
*/
|
||||
var passOptions = options.options || options;
|
||||
var getAnnotations = options.getAnnotations || cm.getHelper(CodeMirror.Pos(0, 0), "lint");
|
||||
if (!getAnnotations) return;
|
||||
if (options.async || getAnnotations.async) {
|
||||
lintAsync(cm, getAnnotations, passOptions)
|
||||
lintAsync(cm, getAnnotations)
|
||||
} else {
|
||||
var annotations = getAnnotations(cm.getValue(), passOptions, cm);
|
||||
var annotations = getAnnotations(cm.getValue(), state.linterOptions, cm);
|
||||
if (!annotations) return;
|
||||
if (annotations.then) annotations.then(function(issues) {
|
||||
cm.operation(function() {updateLinting(cm, issues)})
|
||||
@ -161,8 +188,10 @@
|
||||
}
|
||||
|
||||
function updateLinting(cm, annotationsNotSorted) {
|
||||
var state = cm.state.lint;
|
||||
if (!state) return;
|
||||
var options = state.options;
|
||||
clearMarks(cm);
|
||||
var state = cm.state.lint, options = state.options;
|
||||
|
||||
var annotations = groupByLine(annotationsNotSorted);
|
||||
|
||||
@ -194,7 +223,10 @@
|
||||
// use original annotations[line] to show multiple messages
|
||||
if (state.hasGutter)
|
||||
cm.setGutterMarker(line, GUTTER_ID, makeMarker(cm, tipLabel, maxSeverity, annotations[line].length > 1,
|
||||
state.options.tooltips));
|
||||
options.tooltips));
|
||||
|
||||
if (options.highlightLines)
|
||||
cm.addLineClass(line, "wrap", LINT_LINE_ID + maxSeverity);
|
||||
}
|
||||
if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm);
|
||||
}
|
||||
@ -203,7 +235,7 @@
|
||||
var state = cm.state.lint;
|
||||
if (!state) return;
|
||||
clearTimeout(state.timeout);
|
||||
state.timeout = setTimeout(function(){startLinting(cm);}, state.options.delay || 500);
|
||||
state.timeout = setTimeout(function(){startLinting(cm);}, state.options.delay);
|
||||
}
|
||||
|
||||
function popupTooltips(cm, annotations, e) {
|
||||
@ -243,8 +275,8 @@
|
||||
if (val) {
|
||||
var gutters = cm.getOption("gutters"), hasLintGutter = false;
|
||||
for (var i = 0; i < gutters.length; ++i) if (gutters[i] == GUTTER_ID) hasLintGutter = true;
|
||||
var state = cm.state.lint = new LintState(cm, parseOptions(cm, val), hasLintGutter);
|
||||
if (state.options.lintOnChange !== false)
|
||||
var state = cm.state.lint = new LintState(cm, val, hasLintGutter);
|
||||
if (state.options.lintOnChange)
|
||||
cm.on("change", onChange);
|
||||
if (state.options.tooltips != false && state.options.tooltips != "gutter")
|
||||
CodeMirror.on(cm.getWrapperElement(), "mouseover", state.onMouseOver);
|
||||
@ -254,6 +286,6 @@
|
||||
});
|
||||
|
||||
CodeMirror.defineExtension("performLint", function() {
|
||||
if (this.state.lint) startLinting(this);
|
||||
startLinting(this);
|
||||
});
|
||||
});
|
||||
|
2
libraries/codemirror/addon/mode/loadmode.js
vendored
2
libraries/codemirror/addon/mode/loadmode.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
3
libraries/codemirror/addon/mode/simple.js
vendored
3
libraries/codemirror/addon/mode/simple.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -68,6 +68,7 @@
|
||||
var flags = "";
|
||||
if (val instanceof RegExp) {
|
||||
if (val.ignoreCase) flags = "i";
|
||||
if (val.unicode) flags += "u"
|
||||
val = val.source;
|
||||
} else {
|
||||
val = String(val);
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// Highlighting text that matches the selection
|
||||
//
|
||||
|
@ -60,20 +60,13 @@
|
||||
.cm-fat-cursor div.CodeMirror-cursors {
|
||||
z-index: 1;
|
||||
}
|
||||
.cm-fat-cursor-mark {
|
||||
background-color: rgba(20, 255, 20, 0.5);
|
||||
-webkit-animation: blink 1.06s steps(1) infinite;
|
||||
-moz-animation: blink 1.06s steps(1) infinite;
|
||||
animation: blink 1.06s steps(1) infinite;
|
||||
}
|
||||
.cm-animate-fat-cursor {
|
||||
width: auto;
|
||||
border: 0;
|
||||
-webkit-animation: blink 1.06s steps(1) infinite;
|
||||
-moz-animation: blink 1.06s steps(1) infinite;
|
||||
animation: blink 1.06s steps(1) infinite;
|
||||
background-color: #7e7;
|
||||
}
|
||||
.cm-fat-cursor .CodeMirror-line::selection,
|
||||
.cm-fat-cursor .CodeMirror-line > span::selection,
|
||||
.cm-fat-cursor .CodeMirror-line > span > span::selection { background: transparent; }
|
||||
.cm-fat-cursor .CodeMirror-line::-moz-selection,
|
||||
.cm-fat-cursor .CodeMirror-line > span::-moz-selection,
|
||||
.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { background: transparent; }
|
||||
.cm-fat-cursor { caret-color: transparent; }
|
||||
@-moz-keyframes blink {
|
||||
0% {}
|
||||
50% { background-color: transparent; }
|
||||
@ -171,6 +164,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;}
|
||||
height: 100%;
|
||||
outline: none; /* Prevent dragging from highlighting the element */
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
.CodeMirror-sizer {
|
||||
position: relative;
|
||||
|
@ -1,7 +1,7 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// This is CodeMirror (https://codemirror.net), a code editor
|
||||
// This is CodeMirror (https://codemirror.net/5), a code editor
|
||||
// implemented in JavaScript on top of the browser's DOM.
|
||||
//
|
||||
// You can find some technical background for some of the code below
|
||||
@ -26,7 +26,8 @@
|
||||
var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);
|
||||
var webkit = !edge && /WebKit\//.test(userAgent);
|
||||
var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent);
|
||||
var chrome = !edge && /Chrome\//.test(userAgent);
|
||||
var chrome = !edge && /Chrome\/(\d+)/.exec(userAgent);
|
||||
var chrome_version = chrome && +chrome[1];
|
||||
var presto = /Opera\//.test(userAgent);
|
||||
var safari = /Apple Computer/.test(navigator.vendor);
|
||||
var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent);
|
||||
@ -111,15 +112,15 @@
|
||||
} while (child = child.parentNode)
|
||||
}
|
||||
|
||||
function activeElt() {
|
||||
function activeElt(doc) {
|
||||
// IE and Edge may throw an "Unspecified Error" when accessing document.activeElement.
|
||||
// IE < 10 will throw when accessed while the page is loading or in an iframe.
|
||||
// IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.
|
||||
var activeElement;
|
||||
try {
|
||||
activeElement = document.activeElement;
|
||||
activeElement = doc.activeElement;
|
||||
} catch(e) {
|
||||
activeElement = document.body || null;
|
||||
activeElement = doc.body || null;
|
||||
}
|
||||
while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)
|
||||
{ activeElement = activeElement.shadowRoot.activeElement; }
|
||||
@ -143,6 +144,10 @@
|
||||
else if (ie) // Suppress mysterious IE10 errors
|
||||
{ selectInput = function(node) { try { node.select(); } catch(_e) {} }; }
|
||||
|
||||
function doc(cm) { return cm.display.wrapper.ownerDocument }
|
||||
|
||||
function win(cm) { return doc(cm).defaultView }
|
||||
|
||||
function bind(f) {
|
||||
var args = Array.prototype.slice.call(arguments, 1);
|
||||
return function(){return f.apply(null, args)}
|
||||
@ -1311,6 +1316,7 @@
|
||||
if (span.marker == marker) { return span }
|
||||
} }
|
||||
}
|
||||
|
||||
// Remove a span from an array, returning undefined if no spans are
|
||||
// left (we don't store arrays for lines without spans).
|
||||
function removeMarkedSpan(spans, span) {
|
||||
@ -1319,9 +1325,16 @@
|
||||
{ if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }
|
||||
return r
|
||||
}
|
||||
|
||||
// Add a span to a line.
|
||||
function addMarkedSpan(line, span) {
|
||||
line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];
|
||||
function addMarkedSpan(line, span, op) {
|
||||
var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));
|
||||
if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {
|
||||
line.markedSpans.push(span);
|
||||
} else {
|
||||
line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];
|
||||
if (inThisOp) { inThisOp.add(line.markedSpans); }
|
||||
}
|
||||
span.marker.attachLine(line);
|
||||
}
|
||||
|
||||
@ -2186,6 +2199,7 @@
|
||||
if (cm.options.lineNumbers || markers) {
|
||||
var wrap$1 = ensureLineWrapped(lineView);
|
||||
var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px"));
|
||||
gutterWrap.setAttribute("aria-hidden", "true");
|
||||
cm.display.input.setUneditable(gutterWrap);
|
||||
wrap$1.insertBefore(gutterWrap, lineView.text);
|
||||
if (lineView.line.gutterClass)
|
||||
@ -2342,12 +2356,14 @@
|
||||
function mapFromLineView(lineView, line, lineN) {
|
||||
if (lineView.line == line)
|
||||
{ return {map: lineView.measure.map, cache: lineView.measure.cache} }
|
||||
for (var i = 0; i < lineView.rest.length; i++)
|
||||
{ if (lineView.rest[i] == line)
|
||||
{ return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }
|
||||
for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)
|
||||
{ if (lineNo(lineView.rest[i$1]) > lineN)
|
||||
{ return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }
|
||||
if (lineView.rest) {
|
||||
for (var i = 0; i < lineView.rest.length; i++)
|
||||
{ if (lineView.rest[i] == line)
|
||||
{ return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }
|
||||
for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)
|
||||
{ if (lineNo(lineView.rest[i$1]) > lineN)
|
||||
{ return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }
|
||||
}
|
||||
}
|
||||
|
||||
// Render a line into the hidden node display.externalMeasured. Used
|
||||
@ -2561,22 +2577,24 @@
|
||||
cm.display.lineNumChars = null;
|
||||
}
|
||||
|
||||
function pageScrollX() {
|
||||
function pageScrollX(doc) {
|
||||
// Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206
|
||||
// which causes page_Offset and bounding client rects to use
|
||||
// different reference viewports and invalidate our calculations.
|
||||
if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }
|
||||
return window.pageXOffset || (document.documentElement || document.body).scrollLeft
|
||||
if (chrome && android) { return -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) }
|
||||
return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft
|
||||
}
|
||||
function pageScrollY() {
|
||||
if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }
|
||||
return window.pageYOffset || (document.documentElement || document.body).scrollTop
|
||||
function pageScrollY(doc) {
|
||||
if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) }
|
||||
return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop
|
||||
}
|
||||
|
||||
function widgetTopHeight(lineObj) {
|
||||
var ref = visualLine(lineObj);
|
||||
var widgets = ref.widgets;
|
||||
var height = 0;
|
||||
if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)
|
||||
{ height += widgetHeight(lineObj.widgets[i]); } } }
|
||||
if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)
|
||||
{ height += widgetHeight(widgets[i]); } } }
|
||||
return height
|
||||
}
|
||||
|
||||
@ -2596,8 +2614,8 @@
|
||||
else { yOff -= cm.display.viewOffset; }
|
||||
if (context == "page" || context == "window") {
|
||||
var lOff = cm.display.lineSpace.getBoundingClientRect();
|
||||
yOff += lOff.top + (context == "window" ? 0 : pageScrollY());
|
||||
var xOff = lOff.left + (context == "window" ? 0 : pageScrollX());
|
||||
yOff += lOff.top + (context == "window" ? 0 : pageScrollY(doc(cm)));
|
||||
var xOff = lOff.left + (context == "window" ? 0 : pageScrollX(doc(cm)));
|
||||
rect.left += xOff; rect.right += xOff;
|
||||
}
|
||||
rect.top += yOff; rect.bottom += yOff;
|
||||
@ -2611,8 +2629,8 @@
|
||||
var left = coords.left, top = coords.top;
|
||||
// First move into "page" coordinate system
|
||||
if (context == "page") {
|
||||
left -= pageScrollX();
|
||||
top -= pageScrollY();
|
||||
left -= pageScrollX(doc(cm));
|
||||
top -= pageScrollY(doc(cm));
|
||||
} else if (context == "local" || !context) {
|
||||
var localBox = cm.display.sizer.getBoundingClientRect();
|
||||
left += localBox.left;
|
||||
@ -3141,13 +3159,19 @@
|
||||
var curFragment = result.cursors = document.createDocumentFragment();
|
||||
var selFragment = result.selection = document.createDocumentFragment();
|
||||
|
||||
var customCursor = cm.options.$customCursor;
|
||||
if (customCursor) { primary = true; }
|
||||
for (var i = 0; i < doc.sel.ranges.length; i++) {
|
||||
if (!primary && i == doc.sel.primIndex) { continue }
|
||||
var range = doc.sel.ranges[i];
|
||||
if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }
|
||||
var collapsed = range.empty();
|
||||
if (collapsed || cm.options.showCursorWhenSelecting)
|
||||
{ drawSelectionCursor(cm, range.head, curFragment); }
|
||||
if (customCursor) {
|
||||
var head = customCursor(cm, range);
|
||||
if (head) { drawSelectionCursor(cm, head, curFragment); }
|
||||
} else if (collapsed || cm.options.showCursorWhenSelecting) {
|
||||
drawSelectionCursor(cm, range.head, curFragment);
|
||||
}
|
||||
if (!collapsed)
|
||||
{ drawSelectionRange(cm, range, selFragment); }
|
||||
}
|
||||
@ -3163,6 +3187,12 @@
|
||||
cursor.style.top = pos.top + "px";
|
||||
cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px";
|
||||
|
||||
if (/\bcm-fat-cursor\b/.test(cm.getWrapperElement().className)) {
|
||||
var charPos = charCoords(cm, head, "div", null, null);
|
||||
var width = charPos.right - charPos.left;
|
||||
cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + "px";
|
||||
}
|
||||
|
||||
if (pos.other) {
|
||||
// Secondary cursor, shown when on a 'jump' in bi-directional text
|
||||
var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor"));
|
||||
@ -3335,10 +3365,14 @@
|
||||
function updateHeightsInViewport(cm) {
|
||||
var display = cm.display;
|
||||
var prevBottom = display.lineDiv.offsetTop;
|
||||
var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);
|
||||
var oldHeight = display.lineDiv.getBoundingClientRect().top;
|
||||
var mustScroll = 0;
|
||||
for (var i = 0; i < display.view.length; i++) {
|
||||
var cur = display.view[i], wrapping = cm.options.lineWrapping;
|
||||
var height = (void 0), width = 0;
|
||||
if (cur.hidden) { continue }
|
||||
oldHeight += cur.line.height;
|
||||
if (ie && ie_version < 8) {
|
||||
var bot = cur.node.offsetTop + cur.node.offsetHeight;
|
||||
height = bot - prevBottom;
|
||||
@ -3353,6 +3387,7 @@
|
||||
}
|
||||
var diff = cur.line.height - height;
|
||||
if (diff > .005 || diff < -.005) {
|
||||
if (oldHeight < viewTop) { mustScroll -= diff; }
|
||||
updateLineHeight(cur.line, height);
|
||||
updateWidgetHeight(cur.line);
|
||||
if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)
|
||||
@ -3367,6 +3402,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }
|
||||
}
|
||||
|
||||
// Read and store the height of line widgets associated with the
|
||||
@ -3410,8 +3446,9 @@
|
||||
if (signalDOMEvent(cm, "scrollCursorIntoView")) { return }
|
||||
|
||||
var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;
|
||||
var doc = display.wrapper.ownerDocument;
|
||||
if (rect.top + box.top < 0) { doScroll = true; }
|
||||
else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }
|
||||
else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) { doScroll = false; }
|
||||
if (doScroll != null && !phantom) {
|
||||
var scrollNode = elt("div", "\u200b", null, ("position: absolute;\n top: " + (rect.top - display.viewOffset - paddingTop(cm.display)) + "px;\n height: " + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + "px;\n left: " + (rect.left) + "px; width: " + (Math.max(2, rect.right - rect.left)) + "px;"));
|
||||
cm.display.lineSpace.appendChild(scrollNode);
|
||||
@ -3430,8 +3467,8 @@
|
||||
// Set pos and end to the cursor positions around the character pos sticks to
|
||||
// If pos.sticky == "before", that is around pos.ch - 1, otherwise around pos.ch
|
||||
// If pos == Pos(_, 0, "before"), pos and end are unchanged
|
||||
pos = pos.ch ? Pos(pos.line, pos.sticky == "before" ? pos.ch - 1 : pos.ch, "after") : pos;
|
||||
end = pos.sticky == "before" ? Pos(pos.line, pos.ch + 1, "before") : pos;
|
||||
pos = pos.ch ? Pos(pos.line, pos.sticky == "before" ? pos.ch - 1 : pos.ch, "after") : pos;
|
||||
}
|
||||
for (var limit = 0; limit < 5; limit++) {
|
||||
var changed = false;
|
||||
@ -3627,6 +3664,7 @@
|
||||
this.vert.firstChild.style.height =
|
||||
Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px";
|
||||
} else {
|
||||
this.vert.scrollTop = 0;
|
||||
this.vert.style.display = "";
|
||||
this.vert.firstChild.style.height = "0";
|
||||
}
|
||||
@ -3664,13 +3702,13 @@
|
||||
NativeScrollbars.prototype.zeroWidthHack = function () {
|
||||
var w = mac && !mac_geMountainLion ? "12px" : "18px";
|
||||
this.horiz.style.height = this.vert.style.width = w;
|
||||
this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none";
|
||||
this.horiz.style.visibility = this.vert.style.visibility = "hidden";
|
||||
this.disableHoriz = new Delayed;
|
||||
this.disableVert = new Delayed;
|
||||
};
|
||||
|
||||
NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {
|
||||
bar.style.pointerEvents = "auto";
|
||||
bar.style.visibility = "";
|
||||
function maybeDisable() {
|
||||
// To find out whether the scrollbar is still visible, we
|
||||
// check whether the element under the pixel in the bottom
|
||||
@ -3681,7 +3719,7 @@
|
||||
var box = bar.getBoundingClientRect();
|
||||
var elt = type == "vert" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)
|
||||
: document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);
|
||||
if (elt != bar) { bar.style.pointerEvents = "none"; }
|
||||
if (elt != bar) { bar.style.visibility = "hidden"; }
|
||||
else { delay.set(1000, maybeDisable); }
|
||||
}
|
||||
delay.set(1000, maybeDisable);
|
||||
@ -3782,7 +3820,8 @@
|
||||
scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet
|
||||
scrollToPos: null, // Used to scroll to a specific position
|
||||
focus: false,
|
||||
id: ++nextOpId // Unique ID
|
||||
id: ++nextOpId, // Unique ID
|
||||
markArrays: null // Used by addMarkedSpan
|
||||
};
|
||||
pushOperation(cm.curOp);
|
||||
}
|
||||
@ -3861,7 +3900,7 @@
|
||||
cm.display.maxLineChanged = false;
|
||||
}
|
||||
|
||||
var takeFocus = op.focus && op.focus == activeElt();
|
||||
var takeFocus = op.focus && op.focus == activeElt(doc(cm));
|
||||
if (op.preparedSelection)
|
||||
{ cm.display.input.showSelection(op.preparedSelection, takeFocus); }
|
||||
if (op.updatedDisplay || op.startHeight != cm.doc.height)
|
||||
@ -4038,11 +4077,11 @@
|
||||
|
||||
function selectionSnapshot(cm) {
|
||||
if (cm.hasFocus()) { return null }
|
||||
var active = activeElt();
|
||||
var active = activeElt(doc(cm));
|
||||
if (!active || !contains(cm.display.lineDiv, active)) { return null }
|
||||
var result = {activeElt: active};
|
||||
if (window.getSelection) {
|
||||
var sel = window.getSelection();
|
||||
var sel = win(cm).getSelection();
|
||||
if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {
|
||||
result.anchorNode = sel.anchorNode;
|
||||
result.anchorOffset = sel.anchorOffset;
|
||||
@ -4054,11 +4093,12 @@
|
||||
}
|
||||
|
||||
function restoreSelection(snapshot) {
|
||||
if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }
|
||||
if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(snapshot.activeElt.ownerDocument)) { return }
|
||||
snapshot.activeElt.focus();
|
||||
if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&
|
||||
snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {
|
||||
var sel = window.getSelection(), range = document.createRange();
|
||||
var doc = snapshot.activeElt.ownerDocument;
|
||||
var sel = doc.defaultView.getSelection(), range = doc.createRange();
|
||||
range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);
|
||||
range.collapse(false);
|
||||
sel.removeAllRanges();
|
||||
@ -4235,6 +4275,8 @@
|
||||
function updateGutterSpace(display) {
|
||||
var width = display.gutters.offsetWidth;
|
||||
display.sizer.style.marginLeft = width + "px";
|
||||
// Send an event to consumers responding to changes in gutter width.
|
||||
signalLater(display, "gutterChanged", display);
|
||||
}
|
||||
|
||||
function setDocumentHeight(cm, measure) {
|
||||
@ -4373,6 +4415,12 @@
|
||||
d.scroller.setAttribute("tabIndex", "-1");
|
||||
// The element in which the editor lives.
|
||||
d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror");
|
||||
// See #6982. FIXME remove when this has been fixed for a while in Chrome
|
||||
if (chrome && chrome_version >= 105) { d.wrapper.style.clipPath = "inset(0px)"; }
|
||||
|
||||
// This attribute is respected by automatic translation systems such as Google Translate,
|
||||
// and may also be respected by tools used by human translators.
|
||||
d.wrapper.setAttribute('translate', 'no');
|
||||
|
||||
// Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)
|
||||
if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }
|
||||
@ -4470,7 +4518,24 @@
|
||||
}
|
||||
|
||||
function onScrollWheel(cm, e) {
|
||||
// On Chrome 102, viewport updates somehow stop wheel-based
|
||||
// scrolling. Turning off pointer events during the scroll seems
|
||||
// to avoid the issue.
|
||||
if (chrome && chrome_version == 102) {
|
||||
if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = "none"; }
|
||||
else { clearTimeout(cm.display.chromeScrollHack); }
|
||||
cm.display.chromeScrollHack = setTimeout(function () {
|
||||
cm.display.chromeScrollHack = null;
|
||||
cm.display.sizer.style.pointerEvents = "";
|
||||
}, 100);
|
||||
}
|
||||
var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;
|
||||
var pixelsPerUnit = wheelPixelsPerUnit;
|
||||
if (e.deltaMode === 0) {
|
||||
dx = e.deltaX;
|
||||
dy = e.deltaY;
|
||||
pixelsPerUnit = 1;
|
||||
}
|
||||
|
||||
var display = cm.display, scroll = display.scroller;
|
||||
// Quit if there's nothing to scroll here
|
||||
@ -4499,10 +4564,10 @@
|
||||
// estimated pixels/delta value, we just handle horizontal
|
||||
// scrolling entirely here. It'll be slightly off from native, but
|
||||
// better than glitching out.
|
||||
if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {
|
||||
if (dx && !gecko && !presto && pixelsPerUnit != null) {
|
||||
if (dy && canScrollY)
|
||||
{ updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }
|
||||
setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));
|
||||
{ updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }
|
||||
setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));
|
||||
// Only prevent default scrolling if vertical scrolling is
|
||||
// actually possible. Otherwise, it causes vertical scroll
|
||||
// jitter on OSX trackpads when deltaX is small and deltaY
|
||||
@ -4515,15 +4580,15 @@
|
||||
|
||||
// 'Project' the visible viewport to cover the area that is being
|
||||
// scrolled into view (if we know enough to estimate it).
|
||||
if (dy && wheelPixelsPerUnit != null) {
|
||||
var pixels = dy * wheelPixelsPerUnit;
|
||||
if (dy && pixelsPerUnit != null) {
|
||||
var pixels = dy * pixelsPerUnit;
|
||||
var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;
|
||||
if (pixels < 0) { top = Math.max(0, top + pixels - 50); }
|
||||
else { bot = Math.min(cm.doc.height, bot + pixels + 50); }
|
||||
updateDisplaySimple(cm, {top: top, bottom: bot});
|
||||
}
|
||||
|
||||
if (wheelSamples < 20) {
|
||||
if (wheelSamples < 20 && e.deltaMode !== 0) {
|
||||
if (display.wheelStartX == null) {
|
||||
display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;
|
||||
display.wheelDX = dx; display.wheelDY = dy;
|
||||
@ -4782,6 +4847,7 @@
|
||||
estimateLineHeights(cm);
|
||||
loadMode(cm);
|
||||
setDirectionClass(cm);
|
||||
cm.options.direction = doc.direction;
|
||||
if (!cm.options.lineWrapping) { findMaxLine(cm); }
|
||||
cm.options.mode = doc.modeOption;
|
||||
regChange(cm);
|
||||
@ -5146,7 +5212,7 @@
|
||||
var range = sel.ranges[i];
|
||||
var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];
|
||||
var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);
|
||||
var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);
|
||||
var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);
|
||||
if (out || newAnchor != range.anchor || newHead != range.head) {
|
||||
if (!out) { out = sel.ranges.slice(0, i); }
|
||||
out[i] = new Range(newAnchor, newHead);
|
||||
@ -5958,7 +6024,7 @@
|
||||
if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }
|
||||
addMarkedSpan(line, new MarkedSpan(marker,
|
||||
curLine == from.line ? from.ch : null,
|
||||
curLine == to.line ? to.ch : null));
|
||||
curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);
|
||||
++curLine;
|
||||
});
|
||||
// lineIsHidden depends on the presence of the spans, so needs a second pass
|
||||
@ -6130,6 +6196,7 @@
|
||||
getRange: function(from, to, lineSep) {
|
||||
var lines = getBetween(this, clipPos(this, from), clipPos(this, to));
|
||||
if (lineSep === false) { return lines }
|
||||
if (lineSep === '') { return lines.join('') }
|
||||
return lines.join(lineSep || this.lineSeparator())
|
||||
},
|
||||
|
||||
@ -6684,10 +6751,9 @@
|
||||
// Very basic readline/emacs-style bindings, which are standard on Mac.
|
||||
keyMap.emacsy = {
|
||||
"Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown",
|
||||
"Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd",
|
||||
"Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore",
|
||||
"Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars",
|
||||
"Ctrl-O": "openLine"
|
||||
"Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp",
|
||||
"Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine",
|
||||
"Ctrl-T": "transposeChars", "Ctrl-O": "openLine"
|
||||
};
|
||||
keyMap.macDefault = {
|
||||
"Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo",
|
||||
@ -7198,7 +7264,7 @@
|
||||
function onKeyDown(e) {
|
||||
var cm = this;
|
||||
if (e.target && e.target != cm.display.input.getField()) { return }
|
||||
cm.curOp.focus = activeElt();
|
||||
cm.curOp.focus = activeElt(doc(cm));
|
||||
if (signalDOMEvent(cm, e)) { return }
|
||||
// IE does strange things with escape.
|
||||
if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }
|
||||
@ -7305,7 +7371,7 @@
|
||||
}
|
||||
if (clickInGutter(cm, e)) { return }
|
||||
var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : "single";
|
||||
window.focus();
|
||||
win(cm).focus();
|
||||
|
||||
// #3261: make sure, that we're not starting a second selection
|
||||
if (button == 1 && cm.state.selectingText)
|
||||
@ -7360,7 +7426,7 @@
|
||||
|
||||
function leftButtonDown(cm, pos, repeat, event) {
|
||||
if (ie) { setTimeout(bind(ensureFocus, cm), 0); }
|
||||
else { cm.curOp.focus = activeElt(); }
|
||||
else { cm.curOp.focus = activeElt(doc(cm)); }
|
||||
|
||||
var behavior = configureMouse(cm, repeat, event);
|
||||
|
||||
@ -7430,19 +7496,19 @@
|
||||
// Normal selection, as opposed to text dragging.
|
||||
function leftButtonSelect(cm, event, start, behavior) {
|
||||
if (ie) { delayBlurEvent(cm); }
|
||||
var display = cm.display, doc = cm.doc;
|
||||
var display = cm.display, doc$1 = cm.doc;
|
||||
e_preventDefault(event);
|
||||
|
||||
var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;
|
||||
var ourRange, ourIndex, startSel = doc$1.sel, ranges = startSel.ranges;
|
||||
if (behavior.addNew && !behavior.extend) {
|
||||
ourIndex = doc.sel.contains(start);
|
||||
ourIndex = doc$1.sel.contains(start);
|
||||
if (ourIndex > -1)
|
||||
{ ourRange = ranges[ourIndex]; }
|
||||
else
|
||||
{ ourRange = new Range(start, start); }
|
||||
} else {
|
||||
ourRange = doc.sel.primary();
|
||||
ourIndex = doc.sel.primIndex;
|
||||
ourRange = doc$1.sel.primary();
|
||||
ourIndex = doc$1.sel.primIndex;
|
||||
}
|
||||
|
||||
if (behavior.unit == "rectangle") {
|
||||
@ -7459,18 +7525,18 @@
|
||||
|
||||
if (!behavior.addNew) {
|
||||
ourIndex = 0;
|
||||
setSelection(doc, new Selection([ourRange], 0), sel_mouse);
|
||||
startSel = doc.sel;
|
||||
setSelection(doc$1, new Selection([ourRange], 0), sel_mouse);
|
||||
startSel = doc$1.sel;
|
||||
} else if (ourIndex == -1) {
|
||||
ourIndex = ranges.length;
|
||||
setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),
|
||||
setSelection(doc$1, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),
|
||||
{scroll: false, origin: "*mouse"});
|
||||
} else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) {
|
||||
setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),
|
||||
setSelection(doc$1, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),
|
||||
{scroll: false, origin: "*mouse"});
|
||||
startSel = doc.sel;
|
||||
startSel = doc$1.sel;
|
||||
} else {
|
||||
replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);
|
||||
replaceOneSelection(doc$1, ourIndex, ourRange, sel_mouse);
|
||||
}
|
||||
|
||||
var lastPos = start;
|
||||
@ -7480,19 +7546,19 @@
|
||||
|
||||
if (behavior.unit == "rectangle") {
|
||||
var ranges = [], tabSize = cm.options.tabSize;
|
||||
var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);
|
||||
var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);
|
||||
var startCol = countColumn(getLine(doc$1, start.line).text, start.ch, tabSize);
|
||||
var posCol = countColumn(getLine(doc$1, pos.line).text, pos.ch, tabSize);
|
||||
var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);
|
||||
for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));
|
||||
line <= end; line++) {
|
||||
var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);
|
||||
var text = getLine(doc$1, line).text, leftPos = findColumn(text, left, tabSize);
|
||||
if (left == right)
|
||||
{ ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }
|
||||
else if (text.length > leftPos)
|
||||
{ ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }
|
||||
}
|
||||
if (!ranges.length) { ranges.push(new Range(start, start)); }
|
||||
setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),
|
||||
setSelection(doc$1, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),
|
||||
{origin: "*mouse", scroll: false});
|
||||
cm.scrollIntoView(pos);
|
||||
} else {
|
||||
@ -7507,8 +7573,8 @@
|
||||
anchor = maxPos(oldRange.to(), range.head);
|
||||
}
|
||||
var ranges$1 = startSel.ranges.slice(0);
|
||||
ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));
|
||||
setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);
|
||||
ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc$1, anchor), head));
|
||||
setSelection(doc$1, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);
|
||||
}
|
||||
}
|
||||
|
||||
@ -7524,9 +7590,9 @@
|
||||
var cur = posFromMouse(cm, e, true, behavior.unit == "rectangle");
|
||||
if (!cur) { return }
|
||||
if (cmp(cur, lastPos) != 0) {
|
||||
cm.curOp.focus = activeElt();
|
||||
cm.curOp.focus = activeElt(doc(cm));
|
||||
extendTo(cur);
|
||||
var visible = visibleLines(display, doc);
|
||||
var visible = visibleLines(display, doc$1);
|
||||
if (cur.line >= visible.to || cur.line < visible.from)
|
||||
{ setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }
|
||||
} else {
|
||||
@ -7551,7 +7617,7 @@
|
||||
}
|
||||
off(display.wrapper.ownerDocument, "mousemove", move);
|
||||
off(display.wrapper.ownerDocument, "mouseup", up);
|
||||
doc.history.lastSelOrigin = null;
|
||||
doc$1.history.lastSelOrigin = null;
|
||||
}
|
||||
|
||||
var move = operation(cm, function (e) {
|
||||
@ -7708,7 +7774,7 @@
|
||||
for (var i = newBreaks.length - 1; i >= 0; i--)
|
||||
{ replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }
|
||||
});
|
||||
option("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g, function (cm, val, old) {
|
||||
option("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g, function (cm, val, old) {
|
||||
cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g");
|
||||
if (old != Init) { cm.refresh(); }
|
||||
});
|
||||
@ -8151,7 +8217,7 @@
|
||||
var pasted = e.clipboardData && e.clipboardData.getData("Text");
|
||||
if (pasted) {
|
||||
e.preventDefault();
|
||||
if (!cm.isReadOnly() && !cm.options.disableInput)
|
||||
if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())
|
||||
{ runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, "paste"); }); }
|
||||
return true
|
||||
}
|
||||
@ -8199,7 +8265,7 @@
|
||||
}
|
||||
|
||||
function hiddenTextarea() {
|
||||
var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none");
|
||||
var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none");
|
||||
var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;");
|
||||
// The textarea is kept positioned near the cursor to prevent the
|
||||
// fact that it'll be scrolled into view on input from scrolling
|
||||
@ -8228,7 +8294,7 @@
|
||||
|
||||
CodeMirror.prototype = {
|
||||
constructor: CodeMirror,
|
||||
focus: function(){window.focus(); this.display.input.focus();},
|
||||
focus: function(){win(this).focus(); this.display.input.focus();},
|
||||
|
||||
setOption: function(option, value) {
|
||||
var options = this.options, old = options[option];
|
||||
@ -8552,7 +8618,7 @@
|
||||
|
||||
signal(this, "overwriteToggle", this, this.state.overwrite);
|
||||
},
|
||||
hasFocus: function() { return this.display.input.getField() == activeElt() },
|
||||
hasFocus: function() { return this.display.input.getField() == activeElt(doc(this)) },
|
||||
isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },
|
||||
|
||||
scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),
|
||||
@ -8733,7 +8799,7 @@
|
||||
function findPosV(cm, pos, dir, unit) {
|
||||
var doc = cm.doc, x = pos.left, y;
|
||||
if (unit == "page") {
|
||||
var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);
|
||||
var pageSize = Math.min(cm.display.wrapper.clientHeight, win(cm).innerHeight || doc(cm).documentElement.clientHeight);
|
||||
var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);
|
||||
y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;
|
||||
|
||||
@ -8833,7 +8899,7 @@
|
||||
var kludge = hiddenTextarea(), te = kludge.firstChild;
|
||||
cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);
|
||||
te.value = lastCopied.text.join("\n");
|
||||
var hadFocus = document.activeElement;
|
||||
var hadFocus = activeElt(div.ownerDocument);
|
||||
selectInput(te);
|
||||
setTimeout(function () {
|
||||
cm.display.lineSpace.removeChild(kludge);
|
||||
@ -8856,7 +8922,7 @@
|
||||
|
||||
ContentEditableInput.prototype.prepareSelection = function () {
|
||||
var result = prepareSelection(this.cm, false);
|
||||
result.focus = document.activeElement == this.div;
|
||||
result.focus = activeElt(this.div.ownerDocument) == this.div;
|
||||
return result
|
||||
};
|
||||
|
||||
@ -8952,7 +9018,7 @@
|
||||
|
||||
ContentEditableInput.prototype.focus = function () {
|
||||
if (this.cm.options.readOnly != "nocursor") {
|
||||
if (!this.selectionInEditor() || document.activeElement != this.div)
|
||||
if (!this.selectionInEditor() || activeElt(this.div.ownerDocument) != this.div)
|
||||
{ this.showSelection(this.prepareSelection(), true); }
|
||||
this.div.focus();
|
||||
}
|
||||
@ -8963,9 +9029,11 @@
|
||||
ContentEditableInput.prototype.supportsTouch = function () { return true };
|
||||
|
||||
ContentEditableInput.prototype.receivedFocus = function () {
|
||||
var this$1 = this;
|
||||
|
||||
var input = this;
|
||||
if (this.selectionInEditor())
|
||||
{ this.pollSelection(); }
|
||||
{ setTimeout(function () { return this$1.pollSelection(); }, 20); }
|
||||
else
|
||||
{ runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }
|
||||
|
||||
@ -9302,6 +9370,7 @@
|
||||
// Used to work around IE issue with selection being forgotten when focus moves away from textarea
|
||||
this.hasSelection = false;
|
||||
this.composing = null;
|
||||
this.resetting = false;
|
||||
};
|
||||
|
||||
TextareaInput.prototype.init = function (display) {
|
||||
@ -9434,8 +9503,9 @@
|
||||
// Reset the input to correspond to the selection (or to be empty,
|
||||
// when not typing and nothing is selected)
|
||||
TextareaInput.prototype.reset = function (typing) {
|
||||
if (this.contextMenuPending || this.composing) { return }
|
||||
if (this.contextMenuPending || this.composing && typing) { return }
|
||||
var cm = this.cm;
|
||||
this.resetting = true;
|
||||
if (cm.somethingSelected()) {
|
||||
this.prevInput = "";
|
||||
var content = cm.getSelection();
|
||||
@ -9446,6 +9516,7 @@
|
||||
this.prevInput = this.textarea.value = "";
|
||||
if (ie && ie_version >= 9) { this.hasSelection = null; }
|
||||
}
|
||||
this.resetting = false;
|
||||
};
|
||||
|
||||
TextareaInput.prototype.getField = function () { return this.textarea };
|
||||
@ -9453,7 +9524,7 @@
|
||||
TextareaInput.prototype.supportsTouch = function () { return false };
|
||||
|
||||
TextareaInput.prototype.focus = function () {
|
||||
if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) {
|
||||
if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt(this.textarea.ownerDocument) != this.textarea)) {
|
||||
try { this.textarea.focus(); }
|
||||
catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM
|
||||
}
|
||||
@ -9507,7 +9578,7 @@
|
||||
// possible when it is clear that nothing happened. hasSelection
|
||||
// will be the case when there is a lot of text in the textarea,
|
||||
// in which case reading its value would be expensive.
|
||||
if (this.contextMenuPending || !cm.state.focused ||
|
||||
if (this.contextMenuPending || this.resetting || !cm.state.focused ||
|
||||
(hasSelection(input) && !prevInput && !this.composing) ||
|
||||
cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)
|
||||
{ return false }
|
||||
@ -9576,9 +9647,9 @@
|
||||
input.wrapper.style.cssText = "position: static";
|
||||
te.style.cssText = "position: absolute; width: 30px; height: 30px;\n top: " + (e.clientY - wrapperBox.top - 5) + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px;\n z-index: 1000; background: " + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";
|
||||
var oldScrollY;
|
||||
if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)
|
||||
if (webkit) { oldScrollY = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712)
|
||||
display.input.focus();
|
||||
if (webkit) { window.scrollTo(null, oldScrollY); }
|
||||
if (webkit) { te.ownerDocument.defaultView.scrollTo(null, oldScrollY); }
|
||||
display.input.reset();
|
||||
// Adds "Select all" to context menu in FF
|
||||
if (!cm.somethingSelected()) { te.value = input.prevInput = " "; }
|
||||
@ -9660,7 +9731,7 @@
|
||||
// Set autofocus to true if this textarea is focused, or if it has
|
||||
// autofocus and no other element is focused.
|
||||
if (options.autofocus == null) {
|
||||
var hasFocus = activeElt();
|
||||
var hasFocus = activeElt(textarea.ownerDocument);
|
||||
options.autofocus = hasFocus == textarea ||
|
||||
textarea.getAttribute("autofocus") != null && hasFocus == document.body;
|
||||
}
|
||||
@ -9794,7 +9865,7 @@
|
||||
|
||||
addLegacyProps(CodeMirror);
|
||||
|
||||
CodeMirror.version = "5.60.0";
|
||||
CodeMirror.version = "5.65.9";
|
||||
|
||||
return CodeMirror;
|
||||
|
||||
|
394
libraries/codemirror/keymap/vim.js
vendored
394
libraries/codemirror/keymap/vim.js
vendored
@ -1,5 +1,14 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../lib/codemirror"), require("../addon/search/searchcursor"), require("../addon/dialog/dialog"), require("../addon/edit/matchbrackets.js"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../lib/codemirror", "../addon/search/searchcursor", "../addon/dialog/dialog", "../addon/edit/matchbrackets"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
'use strict';
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/**
|
||||
* Supported keybindings:
|
||||
@ -34,15 +43,7 @@
|
||||
* 9. Ex command implementations.
|
||||
*/
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../lib/codemirror"), require("../addon/search/searchcursor"), require("../addon/dialog/dialog"), require("../addon/edit/matchbrackets.js"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../lib/codemirror", "../addon/search/searchcursor", "../addon/dialog/dialog", "../addon/edit/matchbrackets"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
'use strict';
|
||||
function initVim$1(CodeMirror) {
|
||||
|
||||
var Pos = CodeMirror.Pos;
|
||||
|
||||
@ -87,6 +88,8 @@
|
||||
{ keys: '<C-c>', type: 'keyToKey', toKeys: '<Esc>' },
|
||||
{ keys: '<C-[>', type: 'keyToKey', toKeys: '<Esc>', context: 'insert' },
|
||||
{ keys: '<C-c>', type: 'keyToKey', toKeys: '<Esc>', context: 'insert' },
|
||||
{ keys: '<C-Esc>', type: 'keyToKey', toKeys: '<Esc>' }, // ipad keyboard sends C-Esc instead of C-[
|
||||
{ keys: '<C-Esc>', type: 'keyToKey', toKeys: '<Esc>', context: 'insert' },
|
||||
{ keys: 's', type: 'keyToKey', toKeys: 'cl', context: 'normal' },
|
||||
{ keys: 's', type: 'keyToKey', toKeys: 'c', context: 'visual'},
|
||||
{ keys: 'S', type: 'keyToKey', toKeys: 'cc', context: 'normal' },
|
||||
@ -225,8 +228,8 @@
|
||||
{ keys: 'z.', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' }, motion: 'moveToFirstNonWhiteSpaceCharacter' },
|
||||
{ keys: 'zt', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }},
|
||||
{ keys: 'z<CR>', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }, motion: 'moveToFirstNonWhiteSpaceCharacter' },
|
||||
{ keys: 'z-', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }},
|
||||
{ keys: 'zb', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }, motion: 'moveToFirstNonWhiteSpaceCharacter' },
|
||||
{ keys: 'zb', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }},
|
||||
{ keys: 'z-', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }, motion: 'moveToFirstNonWhiteSpaceCharacter' },
|
||||
{ keys: '.', type: 'action', action: 'repeatLastEdit' },
|
||||
{ keys: '<C-a>', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: true, backtrack: false}},
|
||||
{ keys: '<C-x>', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: false, backtrack: false}},
|
||||
@ -276,7 +279,6 @@
|
||||
{ name: 'global', shortName: 'g' }
|
||||
];
|
||||
|
||||
var Vim = function() {
|
||||
function enterVimMode(cm) {
|
||||
cm.setOption('disableInput', true);
|
||||
cm.setOption('showCursorWhenSelecting', false);
|
||||
@ -642,8 +644,8 @@
|
||||
register.clear();
|
||||
this.latestRegister = registerName;
|
||||
if (cm.openDialog) {
|
||||
this.onRecordingDone = cm.openDialog(
|
||||
document.createTextNode('(recording)['+registerName+']'), null, {bottom:true});
|
||||
var template = dom('span', {class: 'cm-vim-message'}, 'recording @' + registerName);
|
||||
this.onRecordingDone = cm.openDialog(template, null, {bottom:true});
|
||||
}
|
||||
this.isRecording = true;
|
||||
}
|
||||
@ -716,7 +718,8 @@
|
||||
}
|
||||
|
||||
var lastInsertModeKeyTimer;
|
||||
var vimApi= {
|
||||
var vimApi = {
|
||||
enterVimMode: enterVimMode,
|
||||
buildKeyMap: function() {
|
||||
// TODO: Convert keymap into dictionary format for fast lookup.
|
||||
},
|
||||
@ -838,6 +841,8 @@
|
||||
return command();
|
||||
}
|
||||
},
|
||||
multiSelectHandleKey: multiSelectHandleKey,
|
||||
|
||||
/**
|
||||
* This is the outermost function called by CodeMirror, after keys have
|
||||
* been mapped to their Vim equivalents.
|
||||
@ -865,13 +870,17 @@
|
||||
}
|
||||
function handleEsc() {
|
||||
if (key == '<Esc>') {
|
||||
// Clear input state and get back to normal mode.
|
||||
clearInputState(cm);
|
||||
if (vim.visualMode) {
|
||||
// Get back to normal mode.
|
||||
exitVisualMode(cm);
|
||||
} else if (vim.insertMode) {
|
||||
// Get back to normal mode.
|
||||
exitInsertMode(cm);
|
||||
} else {
|
||||
// We're already in normal mode. Let '<Esc>' be handled normally.
|
||||
return;
|
||||
}
|
||||
clearInputState(cm);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -939,9 +948,10 @@
|
||||
var match = commandDispatcher.matchCommand(mainKey, defaultKeymap, vim.inputState, context);
|
||||
if (match.type == 'none') { clearInputState(cm); return false; }
|
||||
else if (match.type == 'partial') { return true; }
|
||||
else if (match.type == 'clear') { clearInputState(cm); return true; }
|
||||
|
||||
vim.inputState.keyBuffer = '';
|
||||
var keysMatcher = /^(\d*)(.*)$/.exec(keys);
|
||||
keysMatcher = /^(\d*)(.*)$/.exec(keys);
|
||||
if (keysMatcher[1] && keysMatcher[1] != '0') {
|
||||
vim.inputState.pushRepeatDigit(keysMatcher[1]);
|
||||
}
|
||||
@ -1243,7 +1253,7 @@
|
||||
}
|
||||
if (bestMatch.keys.slice(-11) == '<character>') {
|
||||
var character = lastChar(keys);
|
||||
if (!character) return {type: 'none'};
|
||||
if (!character || character.length > 1) return {type: 'clear'};
|
||||
inputState.selectedCharacter = character;
|
||||
}
|
||||
return {type: 'full', command: bestMatch};
|
||||
@ -1270,8 +1280,6 @@
|
||||
case 'keyToEx':
|
||||
this.processEx(cm, vim, command);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
},
|
||||
processMotion: function(cm, vim, command) {
|
||||
@ -1487,6 +1495,7 @@
|
||||
vimGlobalState.exCommandHistoryController.pushInput(input);
|
||||
vimGlobalState.exCommandHistoryController.reset();
|
||||
exCommandDispatcher.processCommand(cm, input);
|
||||
clearInputState(cm);
|
||||
}
|
||||
function onPromptKeyDown(e, input, close) {
|
||||
var keyName = CodeMirror.keyName(e), up, offset;
|
||||
@ -2007,7 +2016,7 @@
|
||||
}
|
||||
var orig = cm.charCoords(head, 'local');
|
||||
motionArgs.repeat = repeat;
|
||||
var curEnd = motions.moveByDisplayLines(cm, head, motionArgs, vim);
|
||||
curEnd = motions.moveByDisplayLines(cm, head, motionArgs, vim);
|
||||
if (!curEnd) {
|
||||
return null;
|
||||
}
|
||||
@ -2150,6 +2159,20 @@
|
||||
}
|
||||
} else if (character === 't') {
|
||||
tmp = expandTagUnderCursor(cm, head, inclusive);
|
||||
} else if (character === 's') {
|
||||
// account for cursor on end of sentence symbol
|
||||
var content = cm.getLine(head.line);
|
||||
if (head.ch > 0 && isEndOfSentenceSymbol(content[head.ch])) {
|
||||
head.ch -= 1;
|
||||
}
|
||||
var end = getSentence(cm, head, motionArgs.repeat, 1, inclusive);
|
||||
var start = getSentence(cm, head, motionArgs.repeat, -1, inclusive);
|
||||
// closer vim behaviour, 'a' only takes the space after the sentence if there is one before and after
|
||||
if (isWhiteSpaceString(cm.getLine(start.line)[start.ch])
|
||||
&& isWhiteSpaceString(cm.getLine(end.line)[end.ch -1])) {
|
||||
start = {line: start.line, ch: start.ch + 1};
|
||||
}
|
||||
tmp = {start: start, end: end};
|
||||
} else {
|
||||
// No text object defined for this, don't move.
|
||||
return null;
|
||||
@ -2232,7 +2255,7 @@
|
||||
} else if (args.fullLine) {
|
||||
head.ch = Number.MAX_VALUE;
|
||||
head.line--;
|
||||
cm.setSelection(anchor, head)
|
||||
cm.setSelection(anchor, head);
|
||||
text = cm.getSelection();
|
||||
cm.replaceSelection("");
|
||||
finalHead = anchor;
|
||||
@ -2284,22 +2307,30 @@
|
||||
},
|
||||
indent: function(cm, args, ranges) {
|
||||
var vim = cm.state.vim;
|
||||
var startLine = ranges[0].anchor.line;
|
||||
var endLine = vim.visualBlock ?
|
||||
ranges[ranges.length - 1].anchor.line :
|
||||
ranges[0].head.line;
|
||||
// In visual mode, n> shifts the selection right n times, instead of
|
||||
// shifting n lines right once.
|
||||
var repeat = (vim.visualMode) ? args.repeat : 1;
|
||||
if (args.linewise) {
|
||||
// The only way to delete a newline is to delete until the start of
|
||||
// the next line, so in linewise mode evalInput will include the next
|
||||
// line. We don't want this in indent, so we go back a line.
|
||||
endLine--;
|
||||
}
|
||||
for (var i = startLine; i <= endLine; i++) {
|
||||
if (cm.indentMore) {
|
||||
var repeat = (vim.visualMode) ? args.repeat : 1;
|
||||
for (var j = 0; j < repeat; j++) {
|
||||
cm.indentLine(i, args.indentRight);
|
||||
if (args.indentRight) cm.indentMore();
|
||||
else cm.indentLess();
|
||||
}
|
||||
} else {
|
||||
var startLine = ranges[0].anchor.line;
|
||||
var endLine = vim.visualBlock ?
|
||||
ranges[ranges.length - 1].anchor.line :
|
||||
ranges[0].head.line;
|
||||
// In visual mode, n> shifts the selection right n times, instead of
|
||||
// shifting n lines right once.
|
||||
var repeat = (vim.visualMode) ? args.repeat : 1;
|
||||
if (args.linewise) {
|
||||
// The only way to delete a newline is to delete until the start of
|
||||
// the next line, so in linewise mode evalInput will include the next
|
||||
// line. We don't want this in indent, so we go back a line.
|
||||
endLine--;
|
||||
}
|
||||
for (var i = startLine; i <= endLine; i++) {
|
||||
for (var j = 0; j < repeat; j++) {
|
||||
cm.indentLine(i, args.indentRight);
|
||||
}
|
||||
}
|
||||
}
|
||||
return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor);
|
||||
@ -2412,11 +2443,14 @@
|
||||
var charCoords = cm.charCoords(new Pos(lineNum, 0), 'local');
|
||||
var height = cm.getScrollInfo().clientHeight;
|
||||
var y = charCoords.top;
|
||||
var lineHeight = charCoords.bottom - y;
|
||||
switch (actionArgs.position) {
|
||||
case 'center': y = y - (height / 2) + lineHeight;
|
||||
case 'center': y = charCoords.bottom - height / 2;
|
||||
break;
|
||||
case 'bottom': y = y - height + lineHeight;
|
||||
case 'bottom':
|
||||
var lineLastCharPos = new Pos(lineNum, cm.getLine(lineNum).length - 1);
|
||||
var lineLastCharCoords = cm.charCoords(lineLastCharPos, 'local');
|
||||
var lineHeight = lineLastCharCoords.bottom - y;
|
||||
y = y - height + lineHeight;
|
||||
break;
|
||||
}
|
||||
cm.scrollTo(null, y);
|
||||
@ -2866,13 +2900,13 @@
|
||||
}
|
||||
if (!actionArgs.backtrack && (end <= cur.ch))return;
|
||||
if (match) {
|
||||
var baseStr = match[2] || match[4]
|
||||
var digits = match[3] || match[5]
|
||||
var baseStr = match[2] || match[4];
|
||||
var digits = match[3] || match[5];
|
||||
var increment = actionArgs.increase ? 1 : -1;
|
||||
var base = {'0b': 2, '0': 8, '': 10, '0x': 16}[baseStr.toLowerCase()];
|
||||
var number = parseInt(match[1] + digits, base) + (increment * actionArgs.repeat);
|
||||
numberStr = number.toString(base);
|
||||
var zeroPadding = baseStr ? new Array(digits.length - numberStr.length + 1 + match[1].length).join('0') : ''
|
||||
var zeroPadding = baseStr ? new Array(digits.length - numberStr.length + 1 + match[1].length).join('0') : '';
|
||||
if (numberStr.charAt(0) === '-') {
|
||||
numberStr = '-' + baseStr + zeroPadding + numberStr.substr(1);
|
||||
} else {
|
||||
@ -3244,9 +3278,8 @@
|
||||
fromCh = anchor.ch,
|
||||
bottom = Math.max(anchor.line, head.line),
|
||||
toCh = head.ch;
|
||||
if (fromCh < toCh) { toCh += 1 }
|
||||
else { fromCh += 1 };
|
||||
var height = bottom - top + 1;
|
||||
if (fromCh < toCh) { toCh += 1; }
|
||||
else { fromCh += 1; } var height = bottom - top + 1;
|
||||
var primary = head.line == top ? 0 : height - 1;
|
||||
var ranges = [];
|
||||
for (var i = 0; i < height; i++) {
|
||||
@ -3798,21 +3831,156 @@
|
||||
start = new Pos(i, 0);
|
||||
return { start: start, end: end };
|
||||
}
|
||||
|
||||
function findSentence(cm, cur, repeat, dir) {
|
||||
|
||||
/*
|
||||
Takes an index object
|
||||
{
|
||||
line: the line string,
|
||||
ln: line number,
|
||||
pos: index in line,
|
||||
dir: direction of traversal (-1 or 1)
|
||||
function getSentence(cm, cur, repeat, dir, inclusive /*includes whitespace*/) {
|
||||
/*
|
||||
Takes an index object
|
||||
{
|
||||
line: the line string,
|
||||
ln: line number,
|
||||
pos: index in line,
|
||||
dir: direction of traversal (-1 or 1)
|
||||
}
|
||||
and modifies the pos member to represent the
|
||||
next valid position or sets the line to null if there are
|
||||
no more valid positions.
|
||||
*/
|
||||
function nextChar(curr) {
|
||||
if (curr.pos + curr.dir < 0 || curr.pos + curr.dir >= curr.line.length) {
|
||||
curr.line = null;
|
||||
}
|
||||
and modifies the line, ln, and pos members to represent the
|
||||
next valid position or sets them to null if there are
|
||||
no more valid positions.
|
||||
*/
|
||||
else {
|
||||
curr.pos += curr.dir;
|
||||
}
|
||||
}
|
||||
/*
|
||||
Performs one iteration of traversal in forward direction
|
||||
Returns an index object of the new location
|
||||
*/
|
||||
function forward(cm, ln, pos, dir) {
|
||||
var line = cm.getLine(ln);
|
||||
|
||||
var curr = {
|
||||
line: line,
|
||||
ln: ln,
|
||||
pos: pos,
|
||||
dir: dir,
|
||||
};
|
||||
|
||||
if (curr.line === "") {
|
||||
return { ln: curr.ln, pos: curr.pos };
|
||||
}
|
||||
|
||||
var lastSentencePos = curr.pos;
|
||||
|
||||
// Move one step to skip character we start on
|
||||
nextChar(curr);
|
||||
|
||||
while (curr.line !== null) {
|
||||
lastSentencePos = curr.pos;
|
||||
if (isEndOfSentenceSymbol(curr.line[curr.pos])) {
|
||||
if (!inclusive) {
|
||||
return { ln: curr.ln, pos: curr.pos + 1 };
|
||||
} else {
|
||||
nextChar(curr);
|
||||
while (curr.line !== null ) {
|
||||
if (isWhiteSpaceString(curr.line[curr.pos])) {
|
||||
lastSentencePos = curr.pos;
|
||||
nextChar(curr);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return { ln: curr.ln, pos: lastSentencePos + 1, };
|
||||
}
|
||||
}
|
||||
nextChar(curr);
|
||||
}
|
||||
return { ln: curr.ln, pos: lastSentencePos + 1 };
|
||||
}
|
||||
|
||||
/*
|
||||
Performs one iteration of traversal in reverse direction
|
||||
Returns an index object of the new location
|
||||
*/
|
||||
function reverse(cm, ln, pos, dir) {
|
||||
var line = cm.getLine(ln);
|
||||
|
||||
var curr = {
|
||||
line: line,
|
||||
ln: ln,
|
||||
pos: pos,
|
||||
dir: dir,
|
||||
};
|
||||
|
||||
if (curr.line === "") {
|
||||
return { ln: curr.ln, pos: curr.pos };
|
||||
}
|
||||
|
||||
var lastSentencePos = curr.pos;
|
||||
|
||||
// Move one step to skip character we start on
|
||||
nextChar(curr);
|
||||
|
||||
while (curr.line !== null) {
|
||||
if (!isWhiteSpaceString(curr.line[curr.pos]) && !isEndOfSentenceSymbol(curr.line[curr.pos])) {
|
||||
lastSentencePos = curr.pos;
|
||||
}
|
||||
|
||||
else if (isEndOfSentenceSymbol(curr.line[curr.pos]) ) {
|
||||
if (!inclusive) {
|
||||
return { ln: curr.ln, pos: lastSentencePos };
|
||||
} else {
|
||||
if (isWhiteSpaceString(curr.line[curr.pos + 1])) {
|
||||
return { ln: curr.ln, pos: curr.pos + 1, };
|
||||
} else {
|
||||
return {ln: curr.ln, pos: lastSentencePos};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nextChar(curr);
|
||||
}
|
||||
curr.line = line;
|
||||
if (inclusive && isWhiteSpaceString(curr.line[curr.pos])) {
|
||||
return { ln: curr.ln, pos: curr.pos };
|
||||
} else {
|
||||
return { ln: curr.ln, pos: lastSentencePos };
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var curr_index = {
|
||||
ln: cur.line,
|
||||
pos: cur.ch,
|
||||
};
|
||||
|
||||
while (repeat > 0) {
|
||||
if (dir < 0) {
|
||||
curr_index = reverse(cm, curr_index.ln, curr_index.pos, dir);
|
||||
}
|
||||
else {
|
||||
curr_index = forward(cm, curr_index.ln, curr_index.pos, dir);
|
||||
}
|
||||
repeat--;
|
||||
}
|
||||
|
||||
return new Pos(curr_index.ln, curr_index.pos);
|
||||
}
|
||||
|
||||
function findSentence(cm, cur, repeat, dir) {
|
||||
|
||||
/*
|
||||
Takes an index object
|
||||
{
|
||||
line: the line string,
|
||||
ln: line number,
|
||||
pos: index in line,
|
||||
dir: direction of traversal (-1 or 1)
|
||||
}
|
||||
and modifies the line, ln, and pos members to represent the
|
||||
next valid position or sets them to null if there are
|
||||
no more valid positions.
|
||||
*/
|
||||
function nextChar(cm, idx) {
|
||||
if (idx.pos + idx.dir < 0 || idx.pos + idx.dir >= idx.line.length) {
|
||||
idx.ln += idx.dir;
|
||||
@ -3843,12 +4011,12 @@
|
||||
ln: ln,
|
||||
pos: pos,
|
||||
dir: dir,
|
||||
}
|
||||
};
|
||||
|
||||
var last_valid = {
|
||||
ln: curr.ln,
|
||||
pos: curr.pos,
|
||||
}
|
||||
};
|
||||
|
||||
var skip_empty_lines = (curr.line === "");
|
||||
|
||||
@ -3904,7 +4072,7 @@
|
||||
ln: ln,
|
||||
pos: pos,
|
||||
dir: dir,
|
||||
}
|
||||
};
|
||||
|
||||
var last_valid = {
|
||||
ln: curr.ln,
|
||||
@ -3933,7 +4101,7 @@
|
||||
}
|
||||
else if (curr.line !== "" && !isWhiteSpaceString(curr.line[curr.pos])) {
|
||||
skip_empty_lines = false;
|
||||
last_valid = { ln: curr.ln, pos: curr.pos }
|
||||
last_valid = { ln: curr.ln, pos: curr.pos };
|
||||
}
|
||||
|
||||
nextChar(cm, curr);
|
||||
@ -4325,7 +4493,7 @@
|
||||
}
|
||||
|
||||
function showConfirm(cm, template) {
|
||||
var pre = dom('pre', {$color: 'red', class: 'cm-vim-message'}, template);
|
||||
var pre = dom('div', {$color: 'red', $whiteSpace: 'pre', class: 'cm-vim-message'}, template);
|
||||
if (cm.openNotification) {
|
||||
cm.openNotification(pre, {bottom: true, duration: 5000});
|
||||
} else {
|
||||
@ -4920,7 +5088,7 @@
|
||||
for (var registerName in registers) {
|
||||
var text = registers[registerName].toString();
|
||||
if (text.length) {
|
||||
regInfo += '"' + registerName + ' ' + text + '\n'
|
||||
regInfo += '"' + registerName + ' ' + text + '\n';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -4932,7 +5100,7 @@
|
||||
continue;
|
||||
}
|
||||
var register = registers[registerName] || new Register();
|
||||
regInfo += '"' + registerName + ' ' + register.toString() + '\n'
|
||||
regInfo += '"' + registerName + ' ' + register.toString() + '\n';
|
||||
}
|
||||
}
|
||||
showConfirm(cm, regInfo);
|
||||
@ -5726,9 +5894,85 @@
|
||||
}
|
||||
}
|
||||
|
||||
// multiselect support
|
||||
function cloneVimState(state) {
|
||||
var n = new state.constructor();
|
||||
Object.keys(state).forEach(function(key) {
|
||||
var o = state[key];
|
||||
if (Array.isArray(o))
|
||||
o = o.slice();
|
||||
else if (o && typeof o == "object" && o.constructor != Object)
|
||||
o = cloneVimState(o);
|
||||
n[key] = o;
|
||||
});
|
||||
if (state.sel) {
|
||||
n.sel = {
|
||||
head: state.sel.head && copyCursor(state.sel.head),
|
||||
anchor: state.sel.anchor && copyCursor(state.sel.anchor)
|
||||
};
|
||||
}
|
||||
return n;
|
||||
}
|
||||
function multiSelectHandleKey(cm, key, origin) {
|
||||
var isHandled = false;
|
||||
var vim = vimApi.maybeInitVimState_(cm);
|
||||
var visualBlock = vim.visualBlock || vim.wasInVisualBlock;
|
||||
|
||||
var wasMultiselect = cm.isInMultiSelectMode();
|
||||
if (vim.wasInVisualBlock && !wasMultiselect) {
|
||||
vim.wasInVisualBlock = false;
|
||||
} else if (wasMultiselect && vim.visualBlock) {
|
||||
vim.wasInVisualBlock = true;
|
||||
}
|
||||
|
||||
if (key == '<Esc>' && !vim.insertMode && !vim.visualMode && wasMultiselect && vim.status == "<Esc>") {
|
||||
// allow editor to exit multiselect
|
||||
clearInputState(cm);
|
||||
} else if (visualBlock || !wasMultiselect || cm.inVirtualSelectionMode) {
|
||||
isHandled = vimApi.handleKey(cm, key, origin);
|
||||
} else {
|
||||
var old = cloneVimState(vim);
|
||||
|
||||
cm.operation(function() {
|
||||
cm.curOp.isVimOp = true;
|
||||
cm.forEachSelection(function() {
|
||||
var head = cm.getCursor("head");
|
||||
var anchor = cm.getCursor("anchor");
|
||||
var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0;
|
||||
var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0;
|
||||
head = offsetCursor(head, 0, headOffset);
|
||||
anchor = offsetCursor(anchor, 0, anchorOffset);
|
||||
cm.state.vim.sel.head = head;
|
||||
cm.state.vim.sel.anchor = anchor;
|
||||
|
||||
isHandled = vimApi.handleKey(cm, key, origin);
|
||||
if (cm.virtualSelection) {
|
||||
cm.state.vim = cloneVimState(old);
|
||||
}
|
||||
});
|
||||
if (cm.curOp.cursorActivity && !isHandled)
|
||||
cm.curOp.cursorActivity = false;
|
||||
cm.state.vim = vim;
|
||||
}, true);
|
||||
}
|
||||
// some commands may bring visualMode and selection out of sync
|
||||
if (isHandled && !vim.visualMode && !vim.insert && vim.visualMode != cm.somethingSelected()) {
|
||||
handleExternalSelection(cm, vim);
|
||||
}
|
||||
return isHandled;
|
||||
}
|
||||
resetVimGlobalState();
|
||||
return vimApi;
|
||||
};
|
||||
// Initialize Vim and make it available as an API.
|
||||
CodeMirror.Vim = Vim();
|
||||
});
|
||||
|
||||
return vimApi;
|
||||
}
|
||||
|
||||
function initVim(CodeMirror5) {
|
||||
CodeMirror5.Vim = initVim$1(CodeMirror5);
|
||||
return CodeMirror5.Vim;
|
||||
}
|
||||
|
||||
|
||||
|
||||
CodeMirror.Vim = initVim(CodeMirror);
|
||||
});
|
||||
|
2
libraries/codemirror/mode/apl/apl.js
vendored
2
libraries/codemirror/mode/apl/apl.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/asn.1/asn.1.js
vendored
2
libraries/codemirror/mode/asn.1/asn.1.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/*
|
||||
* =====================================================================================
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// Brainfuck mode created by Michael Kaminsky https://github.com/mkaminsky11
|
||||
|
||||
|
11
libraries/codemirror/mode/clike/clike.js
vendored
11
libraries/codemirror/mode/clike/clike.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -484,7 +484,7 @@ CodeMirror.defineMode("clike", function(config, parserConfig) {
|
||||
"instanceof interface native new package private protected public " +
|
||||
"return static strictfp super switch synchronized this throw throws transient " +
|
||||
"try volatile while @interface"),
|
||||
types: words("byte short int long float double boolean char void Boolean Byte Character Double Float " +
|
||||
types: words("var byte short int long float double boolean char void Boolean Byte Character Double Float " +
|
||||
"Integer Long Number Object Short String StringBuffer StringBuilder Void"),
|
||||
blockKeywords: words("catch class do else finally for if switch try while"),
|
||||
defKeywords: words("class interface enum @interface"),
|
||||
@ -498,6 +498,11 @@ CodeMirror.defineMode("clike", function(config, parserConfig) {
|
||||
|
||||
stream.eatWhile(/[\w\$_]/);
|
||||
return "meta";
|
||||
},
|
||||
'"': function(stream, state) {
|
||||
if (!stream.match(/""$/)) return false;
|
||||
state.tokenize = tokenTripleString;
|
||||
return state.tokenize(stream, state);
|
||||
}
|
||||
},
|
||||
modeProps: {fold: ["brace", "import"]}
|
||||
@ -659,7 +664,7 @@ CodeMirror.defineMode("clike", function(config, parserConfig) {
|
||||
"file import where by get set abstract enum open inner override private public internal " +
|
||||
"protected catch finally out final vararg reified dynamic companion constructor init " +
|
||||
"sealed field property receiver param sparam lateinit data inline noinline tailrec " +
|
||||
"external annotation crossinline const operator infix suspend actual expect setparam"
|
||||
"external annotation crossinline const operator infix suspend actual expect setparam value"
|
||||
),
|
||||
types: words(
|
||||
/* package java.lang */
|
||||
|
2
libraries/codemirror/mode/clojure/clojure.js
vendored
2
libraries/codemirror/mode/clojure/clojure.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports === "object" && typeof module === "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/cmake/cmake.js
vendored
2
libraries/codemirror/mode/cmake/cmake.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object")
|
||||
|
4
libraries/codemirror/mode/cobol/cobol.js
vendored
4
libraries/codemirror/mode/cobol/cobol.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/**
|
||||
* Author: Gautam Mehta
|
||||
@ -195,7 +195,7 @@ CodeMirror.defineMode("cobol", function () {
|
||||
case "string": // multi-line string parsing mode
|
||||
var next = false;
|
||||
while ((next = stream.next()) != null) {
|
||||
if (next == "\"" || next == "\'") {
|
||||
if ((next == "\"" || next == "\'") && !stream.match(/['"]/, false)) {
|
||||
state.mode = false;
|
||||
break;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/**
|
||||
* Link to the project's GitHub page:
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -114,6 +114,7 @@ CodeMirror.defineMode("commonlisp", function (config) {
|
||||
|
||||
closeBrackets: {pairs: "()[]{}\"\""},
|
||||
lineComment: ";;",
|
||||
fold: "brace-paren",
|
||||
blockCommentStart: "#|",
|
||||
blockCommentEnd: "|#"
|
||||
};
|
||||
|
6
libraries/codemirror/mode/crystal/crystal.js
vendored
6
libraries/codemirror/mode/crystal/crystal.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -164,10 +164,10 @@
|
||||
} else {
|
||||
if(delim = stream.match(/^%([^\w\s=])/)) {
|
||||
delim = delim[1];
|
||||
} else if (stream.match(/^%[a-zA-Z0-9_\u009F-\uFFFF]*/)) {
|
||||
} else if (stream.match(/^%[a-zA-Z_\u009F-\uFFFF][\w\u009F-\uFFFF]*/)) {
|
||||
// Macro variables
|
||||
return "meta";
|
||||
} else {
|
||||
} else if (stream.eat('%')) {
|
||||
// '%' operator
|
||||
return "operator";
|
||||
}
|
||||
|
66
libraries/codemirror/mode/css/css.js
vendored
66
libraries/codemirror/mode/css/css.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -228,7 +228,7 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
if (type == "}" || type == "{") return popAndPass(type, stream, state);
|
||||
if (type == "(") return pushContext(state, stream, "parens");
|
||||
|
||||
if (type == "hash" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {
|
||||
if (type == "hash" && !/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(stream.current())) {
|
||||
override += " error";
|
||||
} else if (type == "word") {
|
||||
wordAsValue(stream);
|
||||
@ -443,13 +443,15 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
"monochrome", "min-monochrome", "max-monochrome", "resolution",
|
||||
"min-resolution", "max-resolution", "scan", "grid", "orientation",
|
||||
"device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio",
|
||||
"pointer", "any-pointer", "hover", "any-hover", "prefers-color-scheme"
|
||||
"pointer", "any-pointer", "hover", "any-hover", "prefers-color-scheme",
|
||||
"dynamic-range", "video-dynamic-range"
|
||||
], mediaFeatures = keySet(mediaFeatures_);
|
||||
|
||||
var mediaValueKeywords_ = [
|
||||
"landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover",
|
||||
"interlace", "progressive",
|
||||
"dark", "light"
|
||||
"dark", "light",
|
||||
"standard", "high"
|
||||
], mediaValueKeywords = keySet(mediaValueKeywords_);
|
||||
|
||||
var propertyKeywords_ = [
|
||||
@ -482,7 +484,7 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
"cue-before", "cursor", "direction", "display", "dominant-baseline",
|
||||
"drop-initial-after-adjust", "drop-initial-after-align",
|
||||
"drop-initial-before-adjust", "drop-initial-before-align", "drop-initial-size",
|
||||
"drop-initial-value", "elevation", "empty-cells", "fit", "fit-position",
|
||||
"drop-initial-value", "elevation", "empty-cells", "fit", "fit-content", "fit-position",
|
||||
"flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow",
|
||||
"flex-shrink", "flex-wrap", "float", "float-offset", "flow-from", "flow-into",
|
||||
"font", "font-family", "font-feature-settings", "font-kerning",
|
||||
@ -564,7 +566,7 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
], propertyKeywords = keySet(propertyKeywords_);
|
||||
|
||||
var nonStandardPropertyKeywords_ = [
|
||||
"border-block", "border-block-color", "border-block-end",
|
||||
"accent-color", "aspect-ratio", "border-block", "border-block-color", "border-block-end",
|
||||
"border-block-end-color", "border-block-end-style", "border-block-end-width",
|
||||
"border-block-start", "border-block-start-color", "border-block-start-style",
|
||||
"border-block-start-width", "border-block-style", "border-block-width",
|
||||
@ -572,9 +574,9 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
"border-inline-end-color", "border-inline-end-style",
|
||||
"border-inline-end-width", "border-inline-start", "border-inline-start-color",
|
||||
"border-inline-start-style", "border-inline-start-width",
|
||||
"border-inline-style", "border-inline-width", "margin-block",
|
||||
"border-inline-style", "border-inline-width", "content-visibility", "margin-block",
|
||||
"margin-block-end", "margin-block-start", "margin-inline", "margin-inline-end",
|
||||
"margin-inline-start", "padding-block", "padding-block-end",
|
||||
"margin-inline-start", "overflow-anchor", "overscroll-behavior", "padding-block", "padding-block-end",
|
||||
"padding-block-start", "padding-inline", "padding-inline-end",
|
||||
"padding-inline-start", "scroll-snap-stop", "scrollbar-3d-light-color",
|
||||
"scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color",
|
||||
@ -598,16 +600,16 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
"bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown",
|
||||
"burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue",
|
||||
"cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod",
|
||||
"darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen",
|
||||
"darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen",
|
||||
"darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen",
|
||||
"darkslateblue", "darkslategray", "darkturquoise", "darkviolet",
|
||||
"deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick",
|
||||
"darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet",
|
||||
"deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick",
|
||||
"floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite",
|
||||
"gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew",
|
||||
"hotpink", "indianred", "indigo", "ivory", "khaki", "lavender",
|
||||
"lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral",
|
||||
"lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink",
|
||||
"lightsalmon", "lightseagreen", "lightskyblue", "lightslategray",
|
||||
"lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink",
|
||||
"lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey",
|
||||
"lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta",
|
||||
"maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple",
|
||||
"mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise",
|
||||
@ -617,7 +619,7 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
"papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue",
|
||||
"purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown",
|
||||
"salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue",
|
||||
"slateblue", "slategray", "snow", "springgreen", "steelblue", "tan",
|
||||
"slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan",
|
||||
"teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white",
|
||||
"whitesmoke", "yellow", "yellowgreen"
|
||||
], colorKeywords = keySet(colorKeywords_);
|
||||
@ -628,21 +630,21 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
"always", "amharic", "amharic-abegede", "antialiased", "appworkspace",
|
||||
"arabic-indic", "armenian", "asterisks", "attr", "auto", "auto-flow", "avoid", "avoid-column", "avoid-page",
|
||||
"avoid-region", "axis-pan", "background", "backwards", "baseline", "below", "bidi-override", "binary",
|
||||
"bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box",
|
||||
"both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel",
|
||||
"bengali", "blink", "block", "block-axis", "blur", "bold", "bolder", "border", "border-box",
|
||||
"both", "bottom", "break", "break-all", "break-word", "brightness", "bullets", "button",
|
||||
"buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian",
|
||||
"capitalize", "caps-lock-indicator", "caption", "captiontext", "caret",
|
||||
"cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch",
|
||||
"cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote",
|
||||
"col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse",
|
||||
"compact", "condensed", "contain", "content", "contents",
|
||||
"content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop",
|
||||
"cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal",
|
||||
"compact", "condensed", "conic-gradient", "contain", "content", "contents",
|
||||
"content-box", "context-menu", "continuous", "contrast", "copy", "counter", "counters", "cover", "crop",
|
||||
"cross", "crosshair", "cubic-bezier", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal",
|
||||
"decimal-leading-zero", "default", "default-button", "dense", "destination-atop",
|
||||
"destination-in", "destination-out", "destination-over", "devanagari", "difference",
|
||||
"disc", "discard", "disclosure-closed", "disclosure-open", "document",
|
||||
"dot-dash", "dot-dot-dash",
|
||||
"dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out",
|
||||
"dotted", "double", "down", "drop-shadow", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out",
|
||||
"element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede",
|
||||
"ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er",
|
||||
"ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er",
|
||||
@ -652,10 +654,10 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
"ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig",
|
||||
"ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed",
|
||||
"extra-expanded", "fantasy", "fast", "fill", "fill-box", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes",
|
||||
"forwards", "from", "geometricPrecision", "georgian", "graytext", "grid", "groove",
|
||||
"forwards", "from", "geometricPrecision", "georgian", "grayscale", "graytext", "grid", "groove",
|
||||
"gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew",
|
||||
"help", "hidden", "hide", "higher", "highlight", "highlighttext",
|
||||
"hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore",
|
||||
"hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "hue-rotate", "icon", "ignore",
|
||||
"inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite",
|
||||
"infobackground", "infotext", "inherit", "initial", "inline", "inline-axis",
|
||||
"inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert",
|
||||
@ -667,14 +669,10 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
"local", "logical", "loud", "lower", "lower-alpha", "lower-armenian",
|
||||
"lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian",
|
||||
"lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "manipulation", "match", "matrix", "matrix3d",
|
||||
"media-controls-background", "media-current-time-display",
|
||||
"media-fullscreen-button", "media-mute-button", "media-play-button",
|
||||
"media-return-to-realtime-button", "media-rewind-button",
|
||||
"media-seek-back-button", "media-seek-forward-button", "media-slider",
|
||||
"media-sliderthumb", "media-time-remaining-display", "media-volume-slider",
|
||||
"media-volume-slider-container", "media-volume-sliderthumb", "medium",
|
||||
"menu", "menulist", "menulist-button", "menulist-text",
|
||||
"menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic",
|
||||
"media-play-button", "media-slider", "media-sliderthumb",
|
||||
"media-volume-slider", "media-volume-sliderthumb", "medium",
|
||||
"menu", "menulist", "menulist-button",
|
||||
"menutext", "message-box", "middle", "min-intrinsic",
|
||||
"mix", "mongolian", "monospace", "move", "multiple", "multiple_mask_images", "multiply", "myanmar", "n-resize",
|
||||
"narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop",
|
||||
"no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap",
|
||||
@ -685,15 +683,15 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
||||
"pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d",
|
||||
"progress", "push-button", "radial-gradient", "radio", "read-only",
|
||||
"read-write", "read-write-plaintext-only", "rectangle", "region",
|
||||
"relative", "repeat", "repeating-linear-gradient",
|
||||
"repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse",
|
||||
"relative", "repeat", "repeating-linear-gradient", "repeating-radial-gradient",
|
||||
"repeating-conic-gradient", "repeat-x", "repeat-y", "reset", "reverse",
|
||||
"rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY",
|
||||
"rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running",
|
||||
"s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen",
|
||||
"s-resize", "sans-serif", "saturate", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen",
|
||||
"scroll", "scrollbar", "scroll-position", "se-resize", "searchfield",
|
||||
"searchfield-cancel-button", "searchfield-decoration",
|
||||
"searchfield-results-button", "searchfield-results-decoration", "self-start", "self-end",
|
||||
"semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama",
|
||||
"semi-condensed", "semi-expanded", "separate", "sepia", "serif", "show", "sidama",
|
||||
"simp-chinese-formal", "simp-chinese-informal", "single",
|
||||
"skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal",
|
||||
"slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow",
|
||||
|
3
libraries/codemirror/mode/cypher/cypher.js
vendored
3
libraries/codemirror/mode/cypher/cypher.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// By the Neo4j Team and contributors.
|
||||
// https://github.com/neo4j-contrib/CodeMirror
|
||||
@ -19,6 +19,7 @@
|
||||
|
||||
CodeMirror.defineMode("cypher", function(config) {
|
||||
var tokenBase = function(stream/*, state*/) {
|
||||
curPunc = null
|
||||
var ch = stream.next();
|
||||
if (ch ==='"') {
|
||||
stream.match(/^[^"]*"/);
|
||||
|
2
libraries/codemirror/mode/d/d.js
vendored
2
libraries/codemirror/mode/d/d.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/dart/dart.js
vendored
2
libraries/codemirror/mode/dart/dart.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/diff/diff.js
vendored
2
libraries/codemirror/mode/diff/diff.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/django/django.js
vendored
2
libraries/codemirror/mode/django/django.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/dtd/dtd.js
vendored
2
libraries/codemirror/mode/dtd/dtd.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/*
|
||||
DTD mode
|
||||
|
2
libraries/codemirror/mode/dylan/dylan.js
vendored
2
libraries/codemirror/mode/dylan/dylan.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/ebnf/ebnf.js
vendored
2
libraries/codemirror/mode/ebnf/ebnf.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/ecl/ecl.js
vendored
2
libraries/codemirror/mode/ecl/ecl.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/eiffel/eiffel.js
vendored
2
libraries/codemirror/mode/eiffel/eiffel.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
4
libraries/codemirror/mode/elm/elm.js
vendored
4
libraries/codemirror/mode/elm/elm.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: http://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -230,6 +230,8 @@
|
||||
startState: function () { return { f: normal() }; },
|
||||
copyState: function (s) { return { f: s.f }; },
|
||||
|
||||
lineComment: '--',
|
||||
|
||||
token: function(stream, state) {
|
||||
var type = state.f(stream, function(s) { state.f = s; });
|
||||
var word = stream.current();
|
||||
|
2
libraries/codemirror/mode/erlang/erlang.js
vendored
2
libraries/codemirror/mode/erlang/erlang.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/*jshint unused:true, eqnull:true, curly:true, bitwise:true */
|
||||
/*jshint undef:true, latedef:true, trailing:true */
|
||||
|
4
libraries/codemirror/mode/factor/factor.js
vendored
4
libraries/codemirror/mode/factor/factor.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// Factor syntax highlight - simple mode
|
||||
//
|
||||
@ -77,7 +77,7 @@
|
||||
// specific to simple modes.
|
||||
meta: {
|
||||
dontIndentStates: ["start", "vocabulary", "string", "string3", "stack"],
|
||||
lineComment: [ "!", "#!" ]
|
||||
lineComment: "!"
|
||||
}
|
||||
});
|
||||
|
||||
|
2
libraries/codemirror/mode/fcl/fcl.js
vendored
2
libraries/codemirror/mode/fcl/fcl.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/forth/forth.js
vendored
2
libraries/codemirror/mode/forth/forth.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// Author: Aliaksei Chapyzhenka
|
||||
|
||||
|
4
libraries/codemirror/mode/fortran/fortran.js
vendored
4
libraries/codemirror/mode/fortran/fortran.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -112,7 +112,7 @@ CodeMirror.defineMode("fortran", function() {
|
||||
"c_short", "c_signed_char", "c_size_t", "character",
|
||||
"complex", "double", "integer", "logical", "real"]);
|
||||
var isOperatorChar = /[+\-*&=<>\/\:]/;
|
||||
var litOperator = new RegExp("(\.and\.|\.or\.|\.eq\.|\.lt\.|\.le\.|\.gt\.|\.ge\.|\.ne\.|\.not\.|\.eqv\.|\.neqv\.)", "i");
|
||||
var litOperator = /^\.(and|or|eq|lt|le|gt|ge|ne|not|eqv|neqv)\./i;
|
||||
|
||||
function tokenBase(stream, state) {
|
||||
|
||||
|
10
libraries/codemirror/mode/gas/gas.js
vendored
10
libraries/codemirror/mode/gas/gas.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -144,18 +144,26 @@ CodeMirror.defineMode("gas", function(_config, parserConfig) {
|
||||
function x86(_parserConfig) {
|
||||
lineCommentStartSymbol = "#";
|
||||
|
||||
registers.al = "variable";
|
||||
registers.ah = "variable";
|
||||
registers.ax = "variable";
|
||||
registers.eax = "variable-2";
|
||||
registers.rax = "variable-3";
|
||||
|
||||
registers.bl = "variable";
|
||||
registers.bh = "variable";
|
||||
registers.bx = "variable";
|
||||
registers.ebx = "variable-2";
|
||||
registers.rbx = "variable-3";
|
||||
|
||||
registers.cl = "variable";
|
||||
registers.ch = "variable";
|
||||
registers.cx = "variable";
|
||||
registers.ecx = "variable-2";
|
||||
registers.rcx = "variable-3";
|
||||
|
||||
registers.dl = "variable";
|
||||
registers.dh = "variable";
|
||||
registers.dx = "variable";
|
||||
registers.edx = "variable-2";
|
||||
registers.rdx = "variable-3";
|
||||
|
2
libraries/codemirror/mode/gfm/gfm.js
vendored
2
libraries/codemirror/mode/gfm/gfm.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/gherkin/gherkin.js
vendored
2
libraries/codemirror/mode/gherkin/gherkin.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/*
|
||||
Gherkin mode - http://www.cukes.info/
|
||||
|
4
libraries/codemirror/mode/go/go.js
vendored
4
libraries/codemirror/mode/go/go.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -24,7 +24,7 @@ CodeMirror.defineMode("go", function(config) {
|
||||
"float32":true, "float64":true, "int8":true, "int16":true, "int32":true,
|
||||
"int64":true, "string":true, "uint8":true, "uint16":true, "uint32":true,
|
||||
"uint64":true, "int":true, "uint":true, "uintptr":true, "error": true,
|
||||
"rune":true
|
||||
"rune":true, "any":true, "comparable":true
|
||||
};
|
||||
|
||||
var atoms = {
|
||||
|
22
libraries/codemirror/mode/groovy/groovy.js
vendored
22
libraries/codemirror/mode/groovy/groovy.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -91,9 +91,14 @@ CodeMirror.defineMode("groovy", function(config) {
|
||||
if (!tripleQuoted) { break; }
|
||||
if (stream.match(quote + quote)) { end = true; break; }
|
||||
}
|
||||
if (quote == '"' && next == "$" && !escaped && stream.eat("{")) {
|
||||
state.tokenize.push(tokenBaseUntilBrace());
|
||||
return "string";
|
||||
if (quote == '"' && next == "$" && !escaped) {
|
||||
if (stream.eat("{")) {
|
||||
state.tokenize.push(tokenBaseUntilBrace());
|
||||
return "string";
|
||||
} else if (stream.match(/^\w/, false)) {
|
||||
state.tokenize.push(tokenVariableDeref);
|
||||
return "string";
|
||||
}
|
||||
}
|
||||
escaped = !escaped && next == "\\";
|
||||
}
|
||||
@ -122,6 +127,15 @@ CodeMirror.defineMode("groovy", function(config) {
|
||||
return t;
|
||||
}
|
||||
|
||||
function tokenVariableDeref(stream, state) {
|
||||
var next = stream.match(/^(\.|[\w\$_]+)/)
|
||||
if (!next) {
|
||||
state.tokenize.pop()
|
||||
return state.tokenize[state.tokenize.length-1](stream, state)
|
||||
}
|
||||
return next[0] == "." ? null : "variable"
|
||||
}
|
||||
|
||||
function tokenComment(stream, state) {
|
||||
var maybeEnd = false, ch;
|
||||
while (ch = stream.next()) {
|
||||
|
2
libraries/codemirror/mode/haml/haml.js
vendored
2
libraries/codemirror/mode/haml/haml.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function (mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/haskell/haskell.js
vendored
2
libraries/codemirror/mode/haskell/haskell.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/haxe/haxe.js
vendored
2
libraries/codemirror/mode/haxe/haxe.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -50,7 +50,7 @@
|
||||
}
|
||||
|
||||
function getTagRegexp(tagName, anchored) {
|
||||
return new RegExp((anchored ? "^" : "") + "<\/\s*" + tagName + "\s*>", "i");
|
||||
return new RegExp((anchored ? "^" : "") + "<\/\\s*" + tagName + "\\s*>", "i");
|
||||
}
|
||||
|
||||
function addTags(from, to) {
|
||||
|
2
libraries/codemirror/mode/http/http.js
vendored
2
libraries/codemirror/mode/http/http.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/idl/idl.js
vendored
2
libraries/codemirror/mode/idl/idl.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -16,6 +16,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
var statementIndent = parserConfig.statementIndent;
|
||||
var jsonldMode = parserConfig.jsonld;
|
||||
var jsonMode = parserConfig.json || jsonldMode;
|
||||
var trackScope = parserConfig.trackScope !== false
|
||||
var isTS = parserConfig.typescript;
|
||||
var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/;
|
||||
|
||||
@ -231,6 +232,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
}
|
||||
|
||||
function inScope(state, varname) {
|
||||
if (!trackScope) return false
|
||||
for (var v = state.localVars; v; v = v.next)
|
||||
if (v.name == varname) return true;
|
||||
for (var cx = state.context; cx; cx = cx.prev) {
|
||||
@ -277,6 +279,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
function register(varname) {
|
||||
var state = cx.state;
|
||||
cx.marked = "def";
|
||||
if (!trackScope) return
|
||||
if (state.context) {
|
||||
if (state.lexical.info == "var" && state.context && state.context.block) {
|
||||
// FIXME function decls are also not block scoped
|
||||
@ -327,6 +330,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
cx.state.context = new Context(cx.state.context, cx.state.localVars, true)
|
||||
cx.state.localVars = null
|
||||
}
|
||||
pushcontext.lex = pushblockcontext.lex = true
|
||||
function popcontext() {
|
||||
cx.state.localVars = cx.state.context.vars
|
||||
cx.state.context = cx.state.context.prev
|
||||
@ -376,7 +380,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
return cont(pushlex("form"), parenExpr, statement, poplex, maybeelse);
|
||||
}
|
||||
if (type == "function") return cont(functiondef);
|
||||
if (type == "for") return cont(pushlex("form"), forspec, statement, poplex);
|
||||
if (type == "for") return cont(pushlex("form"), pushblockcontext, forspec, statement, popcontext, poplex);
|
||||
if (type == "class" || (isTS && value == "interface")) {
|
||||
cx.marked = "keyword"
|
||||
return cont(pushlex("form", type == "class" ? type : value), className, poplex)
|
||||
@ -479,7 +483,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
function quasi(type, value) {
|
||||
if (type != "quasi") return pass();
|
||||
if (value.slice(value.length - 2) != "${") return cont(quasi);
|
||||
return cont(expression, continueQuasi);
|
||||
return cont(maybeexpression, continueQuasi);
|
||||
}
|
||||
function continueQuasi(type) {
|
||||
if (type == "}") {
|
||||
@ -619,6 +623,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
if (type == "{") return cont(pushlex("}"), typeprops, poplex, afterType)
|
||||
if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType, afterType)
|
||||
if (type == "<") return cont(commasep(typeexpr, ">"), typeexpr)
|
||||
if (type == "quasi") { return pass(quasiType, afterType); }
|
||||
}
|
||||
function maybeReturnType(type) {
|
||||
if (type == "=>") return cont(typeexpr)
|
||||
@ -644,6 +649,18 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
return cont()
|
||||
}
|
||||
}
|
||||
function quasiType(type, value) {
|
||||
if (type != "quasi") return pass();
|
||||
if (value.slice(value.length - 2) != "${") return cont(quasiType);
|
||||
return cont(typeexpr, continueQuasiType);
|
||||
}
|
||||
function continueQuasiType(type) {
|
||||
if (type == "}") {
|
||||
cx.marked = "string-2";
|
||||
cx.state.tokenize = tokenQuasi;
|
||||
return cont(quasiType);
|
||||
}
|
||||
}
|
||||
function typearg(type, value) {
|
||||
if (type == "variable" && cx.stream.match(/^\s*[?:]/, false) || value == "?") return cont(typearg)
|
||||
if (type == ":") return cont(typeexpr)
|
||||
@ -783,6 +800,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
if (value == "@") return cont(expression, classBody)
|
||||
}
|
||||
function classfield(type, value) {
|
||||
if (value == "!") return cont(classfield)
|
||||
if (value == "?") return cont(classfield)
|
||||
if (type == ":") return cont(typeexpr, maybeAssign)
|
||||
if (value == "=") return cont(expressionNoComma)
|
||||
@ -883,7 +901,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {
|
||||
var c = state.cc[i];
|
||||
if (c == poplex) lexical = lexical.prev;
|
||||
else if (c != maybeelse) break;
|
||||
else if (c != maybeelse && c != popcontext) break;
|
||||
}
|
||||
while ((lexical.type == "stat" || lexical.type == "form") &&
|
||||
(firstChar == "}" || ((top = state.cc[state.cc.length - 1]) &&
|
||||
@ -920,8 +938,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||
expressionAllowed: expressionAllowed,
|
||||
|
||||
skipExpression: function(state) {
|
||||
var top = state.cc[state.cc.length - 1]
|
||||
if (top == expression || top == expressionNoComma) state.cc.pop()
|
||||
parseJS(state, "atom", "atom", "true", new CodeMirror.StringStream("", 2, null))
|
||||
}
|
||||
};
|
||||
});
|
||||
|
71
libraries/codemirror/mode/jinja2/jinja2.js
vendored
71
libraries/codemirror/mode/jinja2/jinja2.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -13,18 +13,18 @@
|
||||
|
||||
CodeMirror.defineMode("jinja2", function() {
|
||||
var keywords = ["and", "as", "block", "endblock", "by", "cycle", "debug", "else", "elif",
|
||||
"extends", "filter", "endfilter", "firstof", "for",
|
||||
"extends", "filter", "endfilter", "firstof", "do", "for",
|
||||
"endfor", "if", "endif", "ifchanged", "endifchanged",
|
||||
"ifequal", "endifequal", "ifnotequal",
|
||||
"ifequal", "endifequal", "ifnotequal", "set", "raw", "endraw",
|
||||
"endifnotequal", "in", "include", "load", "not", "now", "or",
|
||||
"parsed", "regroup", "reversed", "spaceless",
|
||||
"endspaceless", "ssi", "templatetag", "openblock",
|
||||
"closeblock", "openvariable", "closevariable",
|
||||
"parsed", "regroup", "reversed", "spaceless", "call", "endcall", "macro",
|
||||
"endmacro", "endspaceless", "ssi", "templatetag", "openblock",
|
||||
"closeblock", "openvariable", "closevariable", "without", "context",
|
||||
"openbrace", "closebrace", "opencomment",
|
||||
"closecomment", "widthratio", "url", "with", "endwith",
|
||||
"get_current_language", "trans", "endtrans", "noop", "blocktrans",
|
||||
"endblocktrans", "get_available_languages",
|
||||
"get_current_language_bidi", "plural"],
|
||||
"get_current_language_bidi", "pluralize", "autoescape", "endautoescape"],
|
||||
operator = /^[+\-*&%=<>!?|~^]/,
|
||||
sign = /^[:\[\(\{]/,
|
||||
atom = ["true", "false"],
|
||||
@ -78,7 +78,24 @@
|
||||
state.instring = ch;
|
||||
stream.next();
|
||||
return "string";
|
||||
} else if(stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) {
|
||||
}
|
||||
else if (state.inbraces > 0 && ch ==")") {
|
||||
stream.next()
|
||||
state.inbraces--;
|
||||
}
|
||||
else if (ch == "(") {
|
||||
stream.next()
|
||||
state.inbraces++;
|
||||
}
|
||||
else if (state.inbrackets > 0 && ch =="]") {
|
||||
stream.next()
|
||||
state.inbrackets--;
|
||||
}
|
||||
else if (ch == "[") {
|
||||
stream.next()
|
||||
state.inbrackets++;
|
||||
}
|
||||
else if (!state.lineTag && (stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}"))) {
|
||||
state.intag = false;
|
||||
return "tag";
|
||||
} else if(stream.match(operator)) {
|
||||
@ -87,6 +104,10 @@
|
||||
} else if(stream.match(sign)) {
|
||||
state.sign = true;
|
||||
} else {
|
||||
if (stream.column() == 1 && state.lineTag && stream.match(keywords)) {
|
||||
//allow nospace after tag before the keyword
|
||||
return "keyword";
|
||||
}
|
||||
if(stream.eat(" ") || stream.sol()) {
|
||||
if(stream.match(keywords)) {
|
||||
return "keyword";
|
||||
@ -120,25 +141,51 @@
|
||||
} else if (ch = stream.eat(/\{|%/)) {
|
||||
//Cache close tag
|
||||
state.intag = ch;
|
||||
state.inbraces = 0;
|
||||
state.inbrackets = 0;
|
||||
if(ch == "{") {
|
||||
state.intag = "}";
|
||||
}
|
||||
stream.eat("-");
|
||||
return "tag";
|
||||
}
|
||||
//Line statements
|
||||
} else if (stream.eat('#')) {
|
||||
if (stream.peek() == '#') {
|
||||
stream.skipToEnd();
|
||||
return "comment"
|
||||
}
|
||||
else if (!stream.eol()) {
|
||||
state.intag = true;
|
||||
state.lineTag = true;
|
||||
state.inbraces = 0;
|
||||
state.inbrackets = 0;
|
||||
return "tag";
|
||||
}
|
||||
}
|
||||
stream.next();
|
||||
};
|
||||
|
||||
return {
|
||||
startState: function () {
|
||||
return {tokenize: tokenBase};
|
||||
return {
|
||||
tokenize: tokenBase,
|
||||
inbrackets:0,
|
||||
inbraces:0
|
||||
};
|
||||
},
|
||||
token: function (stream, state) {
|
||||
return state.tokenize(stream, state);
|
||||
token: function(stream, state) {
|
||||
var style = state.tokenize(stream, state);
|
||||
if (stream.eol() && state.lineTag && !state.instring && state.inbraces == 0 && state.inbrackets == 0) {
|
||||
//Close line statement at the EOL
|
||||
state.intag = false
|
||||
state.lineTag = false
|
||||
}
|
||||
return style;
|
||||
},
|
||||
blockCommentStart: "{#",
|
||||
blockCommentEnd: "#}"
|
||||
blockCommentEnd: "#}",
|
||||
lineComment: "##",
|
||||
};
|
||||
});
|
||||
|
||||
|
4
libraries/codemirror/mode/jsx/jsx.js
vendored
4
libraries/codemirror/mode/jsx/jsx.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -104,9 +104,9 @@
|
||||
|
||||
function jsToken(stream, state, cx) {
|
||||
if (stream.peek() == "<" && jsMode.expressionAllowed(stream, cx.state)) {
|
||||
jsMode.skipExpression(cx.state)
|
||||
state.context = new Context(CodeMirror.startState(xmlMode, jsMode.indent(cx.state, "", "")),
|
||||
xmlMode, 0, state.context)
|
||||
jsMode.skipExpression(cx.state)
|
||||
return null
|
||||
}
|
||||
|
||||
|
34
libraries/codemirror/mode/julia/julia.js
vendored
34
libraries/codemirror/mode/julia/julia.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -12,9 +12,10 @@
|
||||
"use strict";
|
||||
|
||||
CodeMirror.defineMode("julia", function(config, parserConf) {
|
||||
function wordRegexp(words, end) {
|
||||
function wordRegexp(words, end, pre) {
|
||||
if (typeof pre === "undefined") { pre = ""; }
|
||||
if (typeof end === "undefined") { end = "\\b"; }
|
||||
return new RegExp("^((" + words.join(")|(") + "))" + end);
|
||||
return new RegExp("^" + pre + "((" + words.join(")|(") + "))" + end);
|
||||
}
|
||||
|
||||
var octChar = "\\\\[0-7]{1,3}";
|
||||
@ -22,13 +23,18 @@ CodeMirror.defineMode("julia", function(config, parserConf) {
|
||||
var sChar = "\\\\[abefnrtv0%?'\"\\\\]";
|
||||
var uChar = "([^\\u0027\\u005C\\uD800-\\uDFFF]|[\\uD800-\\uDFFF][\\uDC00-\\uDFFF])";
|
||||
|
||||
var asciiOperatorsList = [
|
||||
"[<>]:", "[<>=]=", "<<=?", ">>>?=?", "=>", "--?>", "<--[->]?", "\\/\\/",
|
||||
"\\.{2,3}", "[\\.\\\\%*+\\-<>!\\/^|&]=?", "\\?", "\\$", "~", ":"
|
||||
];
|
||||
var operators = parserConf.operators || wordRegexp([
|
||||
"[<>]:", "[<>=]=", "<<=?", ">>>?=?", "=>", "->", "\\/\\/",
|
||||
"[\\\\%*+\\-<>!=\\/^|&\\u00F7\\u22BB]=?", "\\?", "\\$", "~", ":",
|
||||
"\\u00D7", "\\u2208", "\\u2209", "\\u220B", "\\u220C", "\\u2218",
|
||||
"\\u221A", "\\u221B", "\\u2229", "\\u222A", "\\u2260", "\\u2264",
|
||||
"\\u2265", "\\u2286", "\\u2288", "\\u228A", "\\u22C5",
|
||||
"\\b(in|isa)\\b(?!\.?\\()"], "");
|
||||
"[<>]:", "[<>=]=", "[!=]==", "<<=?", ">>>?=?", "=>?", "--?>", "<--[->]?", "\\/\\/",
|
||||
"[\\\\%*+\\-<>!\\/^|&\\u00F7\\u22BB]=?", "\\?", "\\$", "~", ":",
|
||||
"\\u00D7", "\\u2208", "\\u2209", "\\u220B", "\\u220C", "\\u2218",
|
||||
"\\u221A", "\\u221B", "\\u2229", "\\u222A", "\\u2260", "\\u2264",
|
||||
"\\u2265", "\\u2286", "\\u2288", "\\u228A", "\\u22C5",
|
||||
"\\b(in|isa)\\b(?!\.?\\()"
|
||||
], "");
|
||||
var delimiters = parserConf.delimiters || /^[;,()[\]{}]/;
|
||||
var identifiers = parserConf.identifiers ||
|
||||
/^[_A-Za-z\u00A1-\u2217\u2219-\uFFFF][\w\u00A1-\u2217\u2219-\uFFFF]*!*/;
|
||||
@ -57,10 +63,13 @@ CodeMirror.defineMode("julia", function(config, parserConf) {
|
||||
var keywords = wordRegexp(keywordsList);
|
||||
var builtins = wordRegexp(builtinsList);
|
||||
|
||||
var macro = /^@[_A-Za-z][\w]*/;
|
||||
var macro = /^@[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/;
|
||||
var symbol = /^:[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/;
|
||||
var stringPrefixes = /^(`|([_A-Za-z\u00A1-\uFFFF]*"("")?))/;
|
||||
|
||||
var macroOperators = wordRegexp(asciiOperatorsList, "", "@");
|
||||
var symbolOperators = wordRegexp(asciiOperatorsList, "", ":");
|
||||
|
||||
function inArray(state) {
|
||||
return (state.nestedArrays > 0);
|
||||
}
|
||||
@ -165,8 +174,7 @@ CodeMirror.defineMode("julia", function(config, parserConf) {
|
||||
}
|
||||
|
||||
// Handle symbols
|
||||
if (!leavingExpr && stream.match(symbol) ||
|
||||
stream.match(/:([<>]:|<<=?|>>>?=?|->|\/\/|\.{2,3}|[\.\\%*+\-<>!\/^|&]=?|[~\?\$])/)) {
|
||||
if (!leavingExpr && (stream.match(symbol) || stream.match(symbolOperators))) {
|
||||
return "builtin";
|
||||
}
|
||||
|
||||
@ -212,7 +220,7 @@ CodeMirror.defineMode("julia", function(config, parserConf) {
|
||||
return state.tokenize(stream, state);
|
||||
}
|
||||
|
||||
if (stream.match(macro)) {
|
||||
if (stream.match(macro) || stream.match(macroOperators)) {
|
||||
return "meta";
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/**
|
||||
* Link to the project's GitHub page:
|
||||
|
2
libraries/codemirror/mode/lua/lua.js
vendored
2
libraries/codemirror/mode/lua/lua.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's
|
||||
// CodeMirror 1 mode.
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// Mathematica mode copyright (c) 2015 by Calin Barbat
|
||||
// Based on code by Patrick Scheibe (halirutan)
|
||||
|
2
libraries/codemirror/mode/mbox/mbox.js
vendored
2
libraries/codemirror/mode/mbox/mbox.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
10
libraries/codemirror/mode/meta.js
vendored
10
libraries/codemirror/mode/meta.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -19,7 +19,7 @@
|
||||
{name: "Brainfuck", mime: "text/x-brainfuck", mode: "brainfuck", ext: ["b", "bf"]},
|
||||
{name: "C", mime: "text/x-csrc", mode: "clike", ext: ["c", "h", "ino"]},
|
||||
{name: "C++", mime: "text/x-c++src", mode: "clike", ext: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"], alias: ["cpp"]},
|
||||
{name: "Cobol", mime: "text/x-cobol", mode: "cobol", ext: ["cob", "cpy"]},
|
||||
{name: "Cobol", mime: "text/x-cobol", mode: "cobol", ext: ["cob", "cpy", "cbl"]},
|
||||
{name: "C#", mime: "text/x-csharp", mode: "clike", ext: ["cs"], alias: ["csharp", "cs"]},
|
||||
{name: "Clojure", mime: "text/x-clojure", mode: "clojure", ext: ["clj", "cljc", "cljx"]},
|
||||
{name: "ClojureScript", mime: "text/x-clojurescript", mode: "clojure", ext: ["cljs"]},
|
||||
@ -44,7 +44,7 @@
|
||||
{name: "edn", mime: "application/edn", mode: "clojure", ext: ["edn"]},
|
||||
{name: "Eiffel", mime: "text/x-eiffel", mode: "eiffel", ext: ["e"]},
|
||||
{name: "Elm", mime: "text/x-elm", mode: "elm", ext: ["elm"]},
|
||||
{name: "Embedded Javascript", mime: "application/x-ejs", mode: "htmlembedded", ext: ["ejs"]},
|
||||
{name: "Embedded JavaScript", mime: "application/x-ejs", mode: "htmlembedded", ext: ["ejs"]},
|
||||
{name: "Embedded Ruby", mime: "application/x-erb", mode: "htmlembedded", ext: ["erb"]},
|
||||
{name: "Erlang", mime: "text/x-erlang", mode: "erlang", ext: ["erl"]},
|
||||
{name: "Esper", mime: "text/x-esper", mode: "sql"},
|
||||
@ -71,12 +71,12 @@
|
||||
{name: "Java", mime: "text/x-java", mode: "clike", ext: ["java"]},
|
||||
{name: "Java Server Pages", mime: "application/x-jsp", mode: "htmlembedded", ext: ["jsp"], alias: ["jsp"]},
|
||||
{name: "JavaScript", mimes: ["text/javascript", "text/ecmascript", "application/javascript", "application/x-javascript", "application/ecmascript", "application/javascript;env=frontend", "application/javascript;env=backend"],
|
||||
mode: "javascript", ext: ["js"], alias: ["ecmascript", "js", "node"]},
|
||||
mode: "javascript", ext: ["js"], alias: ["ecmascript", "js", "node"]},
|
||||
{name: "JSON", mimes: ["application/json", "application/x-json"], mode: "javascript", ext: ["json", "map"], alias: ["json5"]},
|
||||
{name: "JSON-LD", mime: "application/ld+json", mode: "javascript", ext: ["jsonld"], alias: ["jsonld"]},
|
||||
{name: "JSX", mime: "text/jsx", mode: "jsx", ext: ["jsx"]},
|
||||
{name: "Jinja2", mime: "text/jinja2", mode: "jinja2", ext: ["j2", "jinja", "jinja2"]},
|
||||
{name: "Julia", mime: "text/x-julia", mode: "julia", ext: ["jl"]},
|
||||
{name: "Julia", mime: "text/x-julia", mode: "julia", ext: ["jl"], alias: ["jl"]},
|
||||
{name: "Kotlin", mime: "text/x-kotlin", mode: "clike", ext: ["kt"]},
|
||||
{name: "LESS", mime: "text/x-less", mode: "css", ext: ["less"]},
|
||||
{name: "LiveScript", mime: "text/x-livescript", mode: "livescript", ext: ["ls"], alias: ["ls"]},
|
||||
|
2
libraries/codemirror/mode/mirc/mirc.js
vendored
2
libraries/codemirror/mode/mirc/mirc.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
//mIRC mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara
|
||||
|
||||
|
4
libraries/codemirror/mode/mllike/mllike.js
vendored
4
libraries/codemirror/mode/mllike/mllike.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -60,7 +60,7 @@ CodeMirror.defineMode('mllike', function(_config, parserConfig) {
|
||||
}
|
||||
}
|
||||
if (ch === '(') {
|
||||
if (stream.eat('*')) {
|
||||
if (stream.match(/^\*(?!\))/)) {
|
||||
state.commentLevel++;
|
||||
state.tokenize = tokenComment;
|
||||
return state.tokenize(stream, state);
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// Modelica support for CodeMirror, copyright (c) by Lennart Ochel
|
||||
|
||||
|
2
libraries/codemirror/mode/mscgen/mscgen.js
vendored
2
libraries/codemirror/mode/mscgen/mscgen.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// mode(s) for the sequence chart dsl's mscgen, xù and msgenny
|
||||
// For more information on mscgen, see the site of the original author:
|
||||
|
2
libraries/codemirror/mode/mumps/mumps.js
vendored
2
libraries/codemirror/mode/mumps/mumps.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/*
|
||||
This MUMPS Language script was constructed using vbscript.js as a template.
|
||||
|
2
libraries/codemirror/mode/nginx/nginx.js
vendored
2
libraries/codemirror/mode/nginx/nginx.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
42
libraries/codemirror/mode/nsis/nsis.js
vendored
42
libraries/codemirror/mode/nsis/nsis.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// Author: Jan T. Sott (http://github.com/idleberg)
|
||||
|
||||
@ -24,42 +24,42 @@ CodeMirror.defineSimpleMode("nsis",{
|
||||
{ regex: /`(?:[^\\`]|\\.)*`?/, token: "string" },
|
||||
|
||||
// Compile Time Commands
|
||||
{regex: /^\s*(?:\!(include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|gettlbversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace))\b/, token: "keyword"},
|
||||
{regex: /^\s*(?:\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|error|execute|finalize|getdllversion|gettlbversion|include|insertmacro|macro|macroend|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|uninstfinalize|verbose|warning))\b/i, token: "keyword"},
|
||||
|
||||
// Conditional Compilation
|
||||
{regex: /^\s*(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/, token: "keyword", indent: true},
|
||||
{regex: /^\s*(?:\!(else|endif|macroend))\b/, token: "keyword", dedent: true},
|
||||
{regex: /^\s*(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/i, token: "keyword", indent: true},
|
||||
{regex: /^\s*(?:\!(else|endif|macroend))\b/i, token: "keyword", dedent: true},
|
||||
|
||||
// Runtime Commands
|
||||
{regex: /^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetKnownFolderPath|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfRtlLanguage|IfShellVarContextAll|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/, token: "keyword"},
|
||||
{regex: /^\s*(?:Function|PageEx|Section(?:Group)?)\b/, token: "keyword", indent: true},
|
||||
{regex: /^\s*(?:(Function|PageEx|Section(?:Group)?)End)\b/, token: "keyword", dedent: true},
|
||||
{regex: /^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetKnownFolderPath|GetLabelAddress|GetTempFileName|GetWinVer|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfRtlLanguage|IfShellVarContextAll|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Target|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/i, token: "keyword"},
|
||||
{regex: /^\s*(?:Function|PageEx|Section(?:Group)?)\b/i, token: "keyword", indent: true},
|
||||
{regex: /^\s*(?:(Function|PageEx|Section(?:Group)?)End)\b/i, token: "keyword", dedent: true},
|
||||
|
||||
// Command Options
|
||||
{regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, token: "atom"},
|
||||
{regex: /\b(?:admin|all|auto|both|bottom|bzip2|components|current|custom|directory|false|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|off|on|right|show|silent|silentlog|textonly|top|true|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|zlib)\b/, token: "builtin"},
|
||||
{regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/i, token: "atom"},
|
||||
{regex: /\b(?:admin|all|amd64-unicode|auto|both|bottom|bzip2|components|current|custom|directory|false|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|off|on|right|show|silent|silentlog|textonly|top|true|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|x-86-(ansi|unicode)|zlib)\b/i, token: "builtin"},
|
||||
|
||||
// LogicLib.nsh
|
||||
{regex: /\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/, token: "variable-2", indent: true},
|
||||
{regex: /\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:2|3|4|5|Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/i, token: "variable-2", indent: true},
|
||||
|
||||
// FileFunc.nsh
|
||||
{regex: /\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/, token: "variable-2", dedent: true},
|
||||
{regex: /\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/i, token: "variable-2", dedent: true},
|
||||
|
||||
// Memento.nsh
|
||||
{regex: /\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/, token: "variable-2", dedent: true},
|
||||
{regex: /\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/i, token: "variable-2", dedent: true},
|
||||
|
||||
// TextFunc.nsh
|
||||
{regex: /\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/, token: "variable-2", dedent: true},
|
||||
{regex: /\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/i, token: "variable-2", dedent: true},
|
||||
|
||||
// WinVer.nsh
|
||||
{regex: /\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/, token: "variable", dedent: true},
|
||||
{regex: /\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/i, token: "variable", dedent: true},
|
||||
|
||||
// WordFunc.nsh
|
||||
{regex: /\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/, token: "variable-2", dedent: true},
|
||||
{regex: /\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/i, token: "variable-2", dedent: true},
|
||||
|
||||
// x64.nsh
|
||||
{regex: /\$\{(?:RunningX64)\}/, token: "variable", dedent: true},
|
||||
{regex: /\$\{(?:Disable|Enable)X64FSRedirection\}/, token: "variable-2", dedent: true},
|
||||
{regex: /\$\{(?:RunningX64)\}/i, token: "variable", dedent: true},
|
||||
{regex: /\$\{(?:Disable|Enable)X64FSRedirection\}/i, token: "variable-2", dedent: true},
|
||||
|
||||
// Line Comment
|
||||
{regex: /(#|;).*/, token: "comment"},
|
||||
@ -71,20 +71,20 @@ CodeMirror.defineSimpleMode("nsis",{
|
||||
{regex: /[-+\/*=<>!]+/, token: "operator"},
|
||||
|
||||
// Variable
|
||||
{regex: /\$\w+/, token: "variable"},
|
||||
{regex: /\$\w[\w\.]*/, token: "variable"},
|
||||
|
||||
// Constant
|
||||
{regex: /\${[\w\.:-]+}/, token: "variable-2"},
|
||||
{regex: /\${[\!\w\.:-]+}/, token: "variable-2"},
|
||||
|
||||
// Language String
|
||||
{regex: /\$\([\w\.:-]+\)/, token: "variable-3"}
|
||||
{regex: /\$\([\!\w\.:-]+\)/, token: "variable-3"}
|
||||
],
|
||||
comment: [
|
||||
{regex: /.*?\*\//, token: "comment", next: "start"},
|
||||
{regex: /.*/, token: "comment"}
|
||||
],
|
||||
meta: {
|
||||
electricInput: /^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/,
|
||||
electricInput: /^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/i,
|
||||
blockCommentStart: "/*",
|
||||
blockCommentEnd: "*/",
|
||||
lineComment: ["#", ";"]
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/**********************************************************
|
||||
* This script provides syntax highlighting support for
|
||||
|
2
libraries/codemirror/mode/octave/octave.js
vendored
2
libraries/codemirror/mode/octave/octave.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/oz/oz.js
vendored
2
libraries/codemirror/mode/oz/oz.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/pascal/pascal.js
vendored
2
libraries/codemirror/mode/pascal/pascal.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/pegjs/pegjs.js
vendored
2
libraries/codemirror/mode/pegjs/pegjs.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
7
libraries/codemirror/mode/perl/perl.js
vendored
7
libraries/codemirror/mode/perl/perl.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08)
|
||||
// This is a part of CodeMirror from https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com)
|
||||
@ -513,9 +513,8 @@ CodeMirror.defineMode("perl",function(){
|
||||
return null;
|
||||
if(state.chain)
|
||||
return tokenChain(stream,state,state.chain,state.style,state.tail);
|
||||
if(stream.match(/^\-?[\d\.]/,false))
|
||||
if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/))
|
||||
return 'number';
|
||||
if(stream.match(/^(\-?((\d[\d_]*)?\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F_]+|0b[01_]+|\d[\d_]*(e[+-]?\d+)?)/))
|
||||
return 'number';
|
||||
if(stream.match(/^<<(?=[_a-zA-Z])/)){ // NOTE: <<SOMETHING\n...\nSOMETHING\n
|
||||
stream.eatWhile(/\w/);
|
||||
return tokenSOMETHING(stream,state,stream.current().substr(2));}
|
||||
|
10
libraries/codemirror/mode/php/php.js
vendored
10
libraries/codemirror/mode/php/php.js
vendored
File diff suppressed because one or more lines are too long
2
libraries/codemirror/mode/pig/pig.js
vendored
2
libraries/codemirror/mode/pig/pig.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/*
|
||||
* Pig Latin Mode for CodeMirror 2
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
'use strict';
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/pug/pug.js
vendored
2
libraries/codemirror/mode/pug/pug.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/puppet/puppet.js
vendored
2
libraries/codemirror/mode/puppet/puppet.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
27
libraries/codemirror/mode/python/python.js
vendored
27
libraries/codemirror/mode/python/python.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -32,7 +32,7 @@
|
||||
"sorted", "staticmethod", "str", "sum", "super", "tuple",
|
||||
"type", "vars", "zip", "__import__", "NotImplemented",
|
||||
"Ellipsis", "__debug__"];
|
||||
CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins));
|
||||
CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins).concat(["exec", "print"]));
|
||||
|
||||
function top(state) {
|
||||
return state.scopes[state.scopes.length - 1];
|
||||
@ -62,7 +62,7 @@
|
||||
var identifiers = parserConf.identifiers|| /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/;
|
||||
myKeywords = myKeywords.concat(["nonlocal", "False", "True", "None", "async", "await"]);
|
||||
myBuiltins = myBuiltins.concat(["ascii", "bytes", "exec", "print"]);
|
||||
var stringPrefixes = new RegExp("^(([rbuf]|(br)|(fr))?('{3}|\"{3}|['\"]))", "i");
|
||||
var stringPrefixes = new RegExp("^(([rbuf]|(br)|(rb)|(fr)|(rf))?('{3}|\"{3}|['\"]))", "i");
|
||||
} else {
|
||||
var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/;
|
||||
myKeywords = myKeywords.concat(["exec", "print"]);
|
||||
@ -298,7 +298,10 @@
|
||||
}
|
||||
|
||||
function tokenLexer(stream, state) {
|
||||
if (stream.sol()) state.beginningOfLine = true;
|
||||
if (stream.sol()) {
|
||||
state.beginningOfLine = true;
|
||||
state.dedent = false;
|
||||
}
|
||||
|
||||
var style = state.tokenize(stream, state);
|
||||
var current = stream.current();
|
||||
@ -315,10 +318,10 @@
|
||||
|
||||
// Handle scope changes.
|
||||
if (current == "pass" || current == "return")
|
||||
state.dedent += 1;
|
||||
state.dedent = true;
|
||||
|
||||
if (current == "lambda") state.lambda = true;
|
||||
if (current == ":" && !state.lambda && top(state).type == "py")
|
||||
if (current == ":" && !state.lambda && top(state).type == "py" && stream.match(/^\s*(?:#|$)/, false))
|
||||
pushPyScope(state);
|
||||
|
||||
if (current.length == 1 && !/string|comment/.test(style)) {
|
||||
@ -332,10 +335,8 @@
|
||||
else return ERRORCLASS;
|
||||
}
|
||||
}
|
||||
if (state.dedent > 0 && stream.eol() && top(state).type == "py") {
|
||||
if (state.scopes.length > 1) state.scopes.pop();
|
||||
state.dedent -= 1;
|
||||
}
|
||||
if (state.dedent && stream.eol() && top(state).type == "py" && state.scopes.length > 1)
|
||||
state.scopes.pop();
|
||||
|
||||
return style;
|
||||
}
|
||||
@ -370,14 +371,16 @@
|
||||
if (state.tokenize != tokenBase)
|
||||
return state.tokenize.isString ? CodeMirror.Pass : 0;
|
||||
|
||||
var scope = top(state), closing = scope.type == textAfter.charAt(0)
|
||||
var scope = top(state)
|
||||
var closing = scope.type == textAfter.charAt(0) ||
|
||||
scope.type == "py" && !state.dedent && /^(else:|elif |except |finally:)/.test(textAfter)
|
||||
if (scope.align != null)
|
||||
return scope.align - (closing ? 1 : 0)
|
||||
else
|
||||
return scope.offset - (closing ? hangingIndent : 0)
|
||||
},
|
||||
|
||||
electricInput: /^\s*[\}\]\)]$/,
|
||||
electricInput: /^\s*([\}\]\)]|else:|elif |except |finally:)$/,
|
||||
closeBrackets: {triples: "'\""},
|
||||
lineComment: "#",
|
||||
fold: "indent"
|
||||
|
2
libraries/codemirror/mode/q/q.js
vendored
2
libraries/codemirror/mode/q/q.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
6
libraries/codemirror/mode/r/r.js
vendored
6
libraries/codemirror/mode/r/r.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -54,9 +54,9 @@ CodeMirror.defineMode("r", function(config) {
|
||||
} else if (ch == "`") {
|
||||
stream.match(/[^`]+`/);
|
||||
return "variable-3";
|
||||
} else if (ch == "." && stream.match(/.[.\d]+/)) {
|
||||
} else if (ch == "." && stream.match(/.(?:[.]|\d+)/)) {
|
||||
return "keyword";
|
||||
} else if (/[\w\.]/.test(ch) && ch != "_") {
|
||||
} else if (/[a-zA-Z\.]/.test(ch)) {
|
||||
stream.eatWhile(/[\w\.]/);
|
||||
var word = stream.current();
|
||||
if (atoms.propertyIsEnumerable(word)) return "atom";
|
||||
|
2
libraries/codemirror/mode/rpm/rpm.js
vendored
2
libraries/codemirror/mode/rpm/rpm.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/rst/rst.js
vendored
2
libraries/codemirror/mode/rst/rst.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
4
libraries/codemirror/mode/ruby/ruby.js
vendored
4
libraries/codemirror/mode/ruby/ruby.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
@ -26,7 +26,7 @@ var keywordList = [
|
||||
"require_relative", "extend", "autoload", "__END__", "__FILE__", "__LINE__", "__dir__"
|
||||
], keywords = wordObj(keywordList);
|
||||
|
||||
var indentWords = wordObj(["def", "class", "case", "for", "while", "until", "module", "then",
|
||||
var indentWords = wordObj(["def", "class", "case", "for", "while", "until", "module",
|
||||
"catch", "loop", "proc", "begin"]);
|
||||
var dedentWords = wordObj(["end", "until"]);
|
||||
var opening = {"[": "]", "{": "}", "(": ")"};
|
||||
|
2
libraries/codemirror/mode/rust/rust.js
vendored
2
libraries/codemirror/mode/rust/rust.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/sas/sas.js
vendored
2
libraries/codemirror/mode/sas/sas.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
|
||||
// SAS mode copyright (c) 2016 Jared Dean, SAS Institute
|
||||
|
2
libraries/codemirror/mode/sass/sass.js
vendored
2
libraries/codemirror/mode/sass/sass.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
41
libraries/codemirror/mode/scheme/scheme.js
vendored
41
libraries/codemirror/mode/scheme/scheme.js
vendored
@ -1,8 +1,9 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
/**
|
||||
* Author: Koh Zi Han, based on implementation by Koh Zi Chun
|
||||
* Improved by: Jakub T. Jankiewicz
|
||||
*/
|
||||
|
||||
(function(mod) {
|
||||
@ -17,7 +18,7 @@
|
||||
|
||||
CodeMirror.defineMode("scheme", function () {
|
||||
var BUILTIN = "builtin", COMMENT = "comment", STRING = "string",
|
||||
ATOM = "atom", NUMBER = "number", BRACKET = "bracket";
|
||||
SYMBOL = "symbol", ATOM = "atom", NUMBER = "number", BRACKET = "bracket";
|
||||
var INDENT_WORD_SKIP = 2;
|
||||
|
||||
function makeKeywords(str) {
|
||||
@ -67,6 +68,18 @@ CodeMirror.defineMode("scheme", function () {
|
||||
return stream.match(hexMatcher);
|
||||
}
|
||||
|
||||
function processEscapedSequence(stream, options) {
|
||||
var next, escaped = false;
|
||||
while ((next = stream.next()) != null) {
|
||||
if (next == options.token && !escaped) {
|
||||
|
||||
options.state.mode = false;
|
||||
break;
|
||||
}
|
||||
escaped = !escaped && next == "\\";
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
startState: function () {
|
||||
return {
|
||||
@ -92,17 +105,19 @@ CodeMirror.defineMode("scheme", function () {
|
||||
|
||||
switch(state.mode){
|
||||
case "string": // multi-line string parsing mode
|
||||
var next, escaped = false;
|
||||
while ((next = stream.next()) != null) {
|
||||
if (next == "\"" && !escaped) {
|
||||
|
||||
state.mode = false;
|
||||
break;
|
||||
}
|
||||
escaped = !escaped && next == "\\";
|
||||
}
|
||||
processEscapedSequence(stream, {
|
||||
token: "\"",
|
||||
state: state
|
||||
});
|
||||
returnType = STRING; // continue on in scheme-string mode
|
||||
break;
|
||||
case "symbol": // escape symbol
|
||||
processEscapedSequence(stream, {
|
||||
token: "|",
|
||||
state: state
|
||||
});
|
||||
returnType = SYMBOL; // continue on in scheme-symbol mode
|
||||
break;
|
||||
case "comment": // comment parsing mode
|
||||
var next, maybeEnd = false;
|
||||
while ((next = stream.next()) != null) {
|
||||
@ -143,6 +158,9 @@ CodeMirror.defineMode("scheme", function () {
|
||||
stream.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/);
|
||||
returnType = ATOM;
|
||||
}
|
||||
} else if (ch == '|') {
|
||||
state.mode = "symbol";
|
||||
returnType = SYMBOL;
|
||||
} else if (ch == '#') {
|
||||
if (stream.eat("|")) { // Multi-line comment
|
||||
state.mode = "comment"; // toggle to comment mode
|
||||
@ -255,6 +273,7 @@ CodeMirror.defineMode("scheme", function () {
|
||||
return state.indentStack.indent;
|
||||
},
|
||||
|
||||
fold: "brace-paren",
|
||||
closeBrackets: {pairs: "()[]{}\"\""},
|
||||
lineComment: ";;"
|
||||
};
|
||||
|
2
libraries/codemirror/mode/shell/shell.js
vendored
2
libraries/codemirror/mode/shell/shell.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/sieve/sieve.js
vendored
2
libraries/codemirror/mode/sieve/sieve.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
2
libraries/codemirror/mode/slim/slim.js
vendored
2
libraries/codemirror/mode/slim/slim.js
vendored
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user