Update dev dependencies & CodeMirror
This commit is contained in:
parent
5536f7ad22
commit
14144c287c
|
@ -7,8 +7,8 @@
|
|||
"author": "Stylus Team",
|
||||
"devDependencies": {
|
||||
"archiver": "^3.0.0",
|
||||
"codemirror": "^5.40.0",
|
||||
"eslint": "^5.4.0",
|
||||
"codemirror": "^5.41.0",
|
||||
"eslint": "^5.8.0",
|
||||
"fs-extra": "^7.0.0",
|
||||
"jsonlint": "^1.6.3",
|
||||
"less": "^3.8.1",
|
||||
|
@ -17,7 +17,7 @@
|
|||
"semver-bundle": "^0.1.1",
|
||||
"stylelint-bundle": "^8.0.0",
|
||||
"stylus-lang-bundle": "^0.54.5",
|
||||
"updates": "^4.2.1",
|
||||
"updates": "^5.1.2",
|
||||
"webext-tx-fix": "^0.3.1"
|
||||
},
|
||||
"scripts": {
|
||||
|
|
2
vendor/codemirror/README.md
vendored
2
vendor/codemirror/README.md
vendored
|
@ -1,3 +1,3 @@
|
|||
## CodeMirror v5.40.0
|
||||
## CodeMirror v5.41.0
|
||||
|
||||
Only files & folders that exist in the `vendor/codemirror` folder are copied from the `node_modules/codemirror` folder. Except all theme files are copied, in case new themes have been added.
|
||||
|
|
2
vendor/codemirror/addon/fold/brace-fold.js
vendored
2
vendor/codemirror/addon/fold/brace-fold.js
vendored
|
@ -54,7 +54,7 @@ CodeMirror.registerHelper("fold", "brace", function(cm, start) {
|
|||
++pos;
|
||||
}
|
||||
}
|
||||
if (end == null || line == end && endCh == startCh) return;
|
||||
if (end == null || line == end) return;
|
||||
return {from: CodeMirror.Pos(line, startCh),
|
||||
to: CodeMirror.Pos(end, endCh)};
|
||||
});
|
||||
|
|
109
vendor/codemirror/keymap/vim.js
vendored
109
vendor/codemirror/keymap/vim.js
vendored
|
@ -3,7 +3,7 @@
|
|||
|
||||
/**
|
||||
* Supported keybindings:
|
||||
* Too many to list. Refer to defaultKeyMap below.
|
||||
* Too many to list. Refer to defaultKeymap below.
|
||||
*
|
||||
* Supported Ex commands:
|
||||
* Refer to defaultExCommandMap below.
|
||||
|
@ -207,6 +207,7 @@
|
|||
// Ex command
|
||||
{ keys: ':', type: 'ex' }
|
||||
];
|
||||
var defaultKeymapLength = defaultKeymap.length;
|
||||
|
||||
/**
|
||||
* Ex commands
|
||||
|
@ -742,6 +743,78 @@
|
|||
unmap: function(lhs, ctx) {
|
||||
exCommandDispatcher.unmap(lhs, ctx);
|
||||
},
|
||||
// Non-recursive map function.
|
||||
// NOTE: This will not create mappings to key maps that aren't present
|
||||
// in the default key map. See TODO at bottom of function.
|
||||
noremap: function(lhs, rhs, ctx) {
|
||||
function toCtxArray(ctx) {
|
||||
return ctx ? [ctx] : ['normal', 'insert', 'visual'];
|
||||
}
|
||||
var ctxsToMap = toCtxArray(ctx);
|
||||
// Look through all actual defaults to find a map candidate.
|
||||
var actualLength = defaultKeymap.length, origLength = defaultKeymapLength;
|
||||
for (var i = actualLength - origLength;
|
||||
i < actualLength && ctxsToMap.length;
|
||||
i++) {
|
||||
var mapping = defaultKeymap[i];
|
||||
// Omit mappings that operate in the wrong context(s) and those of invalid type.
|
||||
if (mapping.keys == rhs &&
|
||||
(!ctx || !mapping.context || mapping.context === ctx) &&
|
||||
mapping.type.substr(0, 2) !== 'ex' &&
|
||||
mapping.type.substr(0, 3) !== 'key') {
|
||||
// Make a shallow copy of the original keymap entry.
|
||||
var newMapping = {};
|
||||
for (var key in mapping) {
|
||||
newMapping[key] = mapping[key];
|
||||
}
|
||||
// Modify it point to the new mapping with the proper context.
|
||||
newMapping.keys = lhs;
|
||||
if (ctx && !newMapping.context) {
|
||||
newMapping.context = ctx;
|
||||
}
|
||||
// Add it to the keymap with a higher priority than the original.
|
||||
this._mapCommand(newMapping);
|
||||
// Record the mapped contexts as complete.
|
||||
var mappedCtxs = toCtxArray(mapping.context);
|
||||
ctxsToMap = ctxsToMap.filter(function(el) { return mappedCtxs.indexOf(el) === -1; });
|
||||
}
|
||||
}
|
||||
// TODO: Create non-recursive keyToKey mappings for the unmapped contexts once those exist.
|
||||
},
|
||||
// Remove all user-defined mappings for the provided context.
|
||||
mapclear: function(ctx) {
|
||||
// Partition the existing keymap into user-defined and true defaults.
|
||||
var actualLength = defaultKeymap.length,
|
||||
origLength = defaultKeymapLength;
|
||||
var userKeymap = defaultKeymap.slice(0, actualLength - origLength);
|
||||
defaultKeymap = defaultKeymap.slice(actualLength - origLength);
|
||||
if (ctx) {
|
||||
// If a specific context is being cleared, we need to keep mappings
|
||||
// from all other contexts.
|
||||
for (var i = userKeymap.length - 1; i >= 0; i--) {
|
||||
var mapping = userKeymap[i];
|
||||
if (ctx !== mapping.context) {
|
||||
if (mapping.context) {
|
||||
this._mapCommand(mapping);
|
||||
} else {
|
||||
// `mapping` applies to all contexts so create keymap copies
|
||||
// for each context except the one being cleared.
|
||||
var contexts = ['normal', 'insert', 'visual'];
|
||||
for (var j in contexts) {
|
||||
if (contexts[j] !== ctx) {
|
||||
var newMapping = {};
|
||||
for (var key in mapping) {
|
||||
newMapping[key] = mapping[key];
|
||||
}
|
||||
newMapping.context = contexts[j];
|
||||
this._mapCommand(newMapping);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
// TODO: Expose setOption and getOption as instance methods. Need to decide how to namespace
|
||||
// them, or somehow make them work with the existing CodeMirror setOption/getOption API.
|
||||
setOption: setOption,
|
||||
|
@ -5040,32 +5113,7 @@
|
|||
var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.');
|
||||
var isPlaying = macroModeState.isPlaying;
|
||||
var lastChange = macroModeState.lastInsertModeChanges;
|
||||
// In case of visual block, the insertModeChanges are not saved as a
|
||||
// single word, so we convert them to a single word
|
||||
// so as to update the ". register as expected in real vim.
|
||||
var text = [];
|
||||
if (!isPlaying) {
|
||||
var selLength = lastChange.inVisualBlock && vim.lastSelection ?
|
||||
vim.lastSelection.visualBlock.height : 1;
|
||||
var changes = lastChange.changes;
|
||||
var text = [];
|
||||
var i = 0;
|
||||
// In case of multiple selections in blockwise visual,
|
||||
// the inserted text, for example: 'f<Backspace>oo', is stored as
|
||||
// 'f', 'f', InsertModeKey 'o', 'o', 'o', 'o'. (if you have a block with 2 lines).
|
||||
// We push the contents of the changes array as per the following:
|
||||
// 1. In case of InsertModeKey, just increment by 1.
|
||||
// 2. In case of a character, jump by selLength (2 in the example).
|
||||
while (i < changes.length) {
|
||||
// This loop will convert 'ff<bs>oooo' to 'f<bs>oo'.
|
||||
text.push(changes[i]);
|
||||
if (changes[i] instanceof InsertModeKey) {
|
||||
i++;
|
||||
} else {
|
||||
i+= selLength;
|
||||
}
|
||||
}
|
||||
lastChange.changes = text;
|
||||
cm.off('change', onChange);
|
||||
CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown);
|
||||
}
|
||||
|
@ -5196,19 +5244,26 @@
|
|||
if (!macroModeState.isPlaying) {
|
||||
while(changeObj) {
|
||||
lastChange.expectCursorActivityForChange = true;
|
||||
if (changeObj.origin == '+input' || changeObj.origin == 'paste'
|
||||
if (lastChange.ignoreCount > 1) {
|
||||
lastChange.ignoreCount--;
|
||||
} else if (changeObj.origin == '+input' || changeObj.origin == 'paste'
|
||||
|| changeObj.origin === undefined /* only in testing */) {
|
||||
var selectionCount = cm.listSelections().length;
|
||||
if (selectionCount > 1)
|
||||
lastChange.ignoreCount = selectionCount;
|
||||
var text = changeObj.text.join('\n');
|
||||
if (lastChange.maybeReset) {
|
||||
lastChange.changes = [];
|
||||
lastChange.maybeReset = false;
|
||||
}
|
||||
if (text) {
|
||||
if (cm.state.overwrite && !/\n/.test(text)) {
|
||||
lastChange.changes.push([text]);
|
||||
} else {
|
||||
lastChange.changes.push(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Change objects may be chained with next.
|
||||
changeObj = changeObj.next;
|
||||
}
|
||||
|
|
92
vendor/codemirror/lib/codemirror.js
vendored
92
vendor/codemirror/lib/codemirror.js
vendored
|
@ -193,9 +193,7 @@ var scrollerGap = 30;
|
|||
var Pass = {toString: function(){return "CodeMirror.Pass"}};
|
||||
|
||||
// Reused option objects for setSelection & friends
|
||||
var sel_dontScroll = {scroll: false};
|
||||
var sel_mouse = {origin: "*mouse"};
|
||||
var sel_move = {origin: "+move"};
|
||||
var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"};
|
||||
|
||||
// The inverse of countColumn -- find the offset that corresponds to
|
||||
// a particular column.
|
||||
|
@ -523,8 +521,7 @@ function clipPosArray(doc, array) {
|
|||
}
|
||||
|
||||
// Optimize some code when these features are not used.
|
||||
var sawReadOnlySpans = false;
|
||||
var sawCollapsedSpans = false;
|
||||
var sawReadOnlySpans = false, sawCollapsedSpans = false;
|
||||
|
||||
function seeReadOnlySpans() {
|
||||
sawReadOnlySpans = true;
|
||||
|
@ -572,7 +569,8 @@ function markedSpansBefore(old, startCh, isInsert) {
|
|||
var span = old[i], marker = span.marker;
|
||||
var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);
|
||||
if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) {
|
||||
var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));
|
||||
var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)
|
||||
;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));
|
||||
}
|
||||
} }
|
||||
return nw
|
||||
|
@ -583,7 +581,8 @@ function markedSpansAfter(old, endCh, isInsert) {
|
|||
var span = old[i], marker = span.marker;
|
||||
var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);
|
||||
if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) {
|
||||
var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,
|
||||
var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)
|
||||
;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,
|
||||
span.to == null ? null : span.to - endCh));
|
||||
}
|
||||
} }
|
||||
|
@ -1306,8 +1305,7 @@ function hasBadZoomedRects(measure) {
|
|||
}
|
||||
|
||||
// Known modes, by name and by MIME
|
||||
var modes = {};
|
||||
var mimeModes = {};
|
||||
var modes = {}, mimeModes = {};
|
||||
|
||||
// Extra arguments are stored as the mode's dependencies, which is
|
||||
// used by (legacy) mechanisms like loadmode.js to automatically
|
||||
|
@ -1800,8 +1798,7 @@ function cleanUpLine(line) {
|
|||
// Convert a style as returned by a mode (either null, or a string
|
||||
// containing one or more styles) to a CSS style. This is cached,
|
||||
// and also looks for line-wide styles.
|
||||
var styleToClassCache = {};
|
||||
var styleToClassCacheWithMode = {};
|
||||
var styleToClassCache = {}, styleToClassCacheWithMode = {};
|
||||
function interpretTokenStyle(style, options) {
|
||||
if (!style || /^\s*$/.test(style)) { return null }
|
||||
var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;
|
||||
|
@ -1822,7 +1819,7 @@ function buildLineContent(cm, lineView) {
|
|||
var builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content,
|
||||
col: 0, pos: 0, cm: cm,
|
||||
trailingSpace: false,
|
||||
splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")};
|
||||
splitSpaces: cm.getOption("lineWrapping")};
|
||||
lineView.measure = {};
|
||||
|
||||
// Iterate over the logical lines that make up this visual line.
|
||||
|
@ -1943,6 +1940,8 @@ function buildToken(builder, text, style, startStyle, endStyle, title, css) {
|
|||
builder.content.appendChild(content);
|
||||
}
|
||||
|
||||
// Change some spaces to NBSP to prevent the browser from collapsing
|
||||
// trailing spaces at the end of a line when rendering text (issue #1362).
|
||||
function splitSpaces(text, trailingBefore) {
|
||||
if (text.length > 1 && !/ /.test(text)) { return text }
|
||||
var spaceBefore = trailingBefore, result = "";
|
||||
|
@ -3745,11 +3744,11 @@ function startOperation(cm) {
|
|||
// Finish an operation, updating the display and signalling delayed events
|
||||
function endOperation(cm) {
|
||||
var op = cm.curOp;
|
||||
finishOperation(op, function (group) {
|
||||
if (op) { finishOperation(op, function (group) {
|
||||
for (var i = 0; i < group.ops.length; i++)
|
||||
{ group.ops[i].cm.curOp = null; }
|
||||
endOperations(group);
|
||||
});
|
||||
}); }
|
||||
}
|
||||
|
||||
// The DOM updates done when an operation finishes are batched so
|
||||
|
@ -4312,8 +4311,7 @@ function patchDisplay(cm, updateNumbersFrom, dims) {
|
|||
// in display.lineDiv) with the view as we go.
|
||||
for (var i = 0; i < view.length; i++) {
|
||||
var lineView = view[i];
|
||||
if (lineView.hidden) {
|
||||
} else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet
|
||||
if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet
|
||||
var node = buildLineElement(cm, lineView, lineN, dims);
|
||||
container.insertBefore(node, cur);
|
||||
} else { // Already drawn
|
||||
|
@ -4387,8 +4385,7 @@ function setGuttersForLineNumbers(options) {
|
|||
// is that it gives us a chance to update the display before the
|
||||
// actual scrolling happens, reducing flickering.
|
||||
|
||||
var wheelSamples = 0;
|
||||
var wheelPixelsPerUnit = null;
|
||||
var wheelSamples = 0, wheelPixelsPerUnit = null;
|
||||
// Fill in a browser-detected starting value on browsers where we
|
||||
// know one. These don't have to be accurate -- the result of them
|
||||
// being wrong would just be a slight flicker on the first wheel
|
||||
|
@ -4551,13 +4548,15 @@ Range.prototype.empty = function () { return this.head.line == this.anchor.line
|
|||
// Take an unsorted, potentially overlapping set of ranges, and
|
||||
// build a selection out of it. 'Consumes' ranges array (modifying
|
||||
// it).
|
||||
function normalizeSelection(ranges, primIndex) {
|
||||
function normalizeSelection(cm, ranges, primIndex) {
|
||||
var mayTouch = cm && cm.options.selectionsMayTouch;
|
||||
var prim = ranges[primIndex];
|
||||
ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });
|
||||
primIndex = indexOf(ranges, prim);
|
||||
for (var i = 1; i < ranges.length; i++) {
|
||||
var cur = ranges[i], prev = ranges[i - 1];
|
||||
if (cmp(prev.to(), cur.from()) >= 0) {
|
||||
var diff = cmp(prev.to(), cur.from());
|
||||
if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {
|
||||
var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());
|
||||
var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;
|
||||
if (i <= primIndex) { --primIndex; }
|
||||
|
@ -4597,7 +4596,7 @@ function computeSelAfterChange(doc, change) {
|
|||
out.push(new Range(adjustForChange(range.anchor, change),
|
||||
adjustForChange(range.head, change)));
|
||||
}
|
||||
return normalizeSelection(out, doc.sel.primIndex)
|
||||
return normalizeSelection(doc.cm, out, doc.sel.primIndex)
|
||||
}
|
||||
|
||||
function offsetPos(pos, old, nw) {
|
||||
|
@ -5005,7 +5004,7 @@ function extendSelections(doc, heads, options) {
|
|||
var extend = doc.cm && (doc.cm.display.shift || doc.extend);
|
||||
for (var i = 0; i < doc.sel.ranges.length; i++)
|
||||
{ out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }
|
||||
var newSel = normalizeSelection(out, doc.sel.primIndex);
|
||||
var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);
|
||||
setSelection(doc, newSel, options);
|
||||
}
|
||||
|
||||
|
@ -5013,7 +5012,7 @@ function extendSelections(doc, heads, options) {
|
|||
function replaceOneSelection(doc, i, range, options) {
|
||||
var ranges = doc.sel.ranges.slice(0);
|
||||
ranges[i] = range;
|
||||
setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options);
|
||||
setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);
|
||||
}
|
||||
|
||||
// Reset the selection to a single range.
|
||||
|
@ -5038,7 +5037,7 @@ function filterSelectionChange(doc, sel, options) {
|
|||
};
|
||||
signal(doc, "beforeSelectionChange", doc, obj);
|
||||
if (doc.cm) { signal(doc.cm, "beforeSelectionChange", doc.cm, obj); }
|
||||
if (obj.ranges != sel.ranges) { return normalizeSelection(obj.ranges, obj.ranges.length - 1) }
|
||||
if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }
|
||||
else { return sel }
|
||||
}
|
||||
|
||||
|
@ -5102,7 +5101,7 @@ function skipAtomicInSelection(doc, sel, bias, mayClear) {
|
|||
out[i] = new Range(newAnchor, newHead);
|
||||
}
|
||||
}
|
||||
return out ? normalizeSelection(out, sel.primIndex) : sel
|
||||
return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel
|
||||
}
|
||||
|
||||
function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {
|
||||
|
@ -5418,9 +5417,10 @@ function makeChangeSingleDocInEditor(cm, change, spans) {
|
|||
}
|
||||
|
||||
function replaceRange(doc, code, from, to, origin) {
|
||||
var assign;
|
||||
|
||||
if (!to) { to = from; }
|
||||
if (cmp(to, from) < 0) { var assign;
|
||||
(assign = [to, from], from = assign[0], to = assign[1]); }
|
||||
if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }
|
||||
if (typeof code == "string") { code = doc.splitLines(code); }
|
||||
makeChange(doc, {from: from, to: to, text: code, origin: origin});
|
||||
}
|
||||
|
@ -5876,7 +5876,8 @@ TextMarker.prototype.attachLine = function (line) {
|
|||
TextMarker.prototype.detachLine = function (line) {
|
||||
this.lines.splice(indexOf(this.lines, line), 1);
|
||||
if (!this.lines.length && this.doc.cm) {
|
||||
var op = this.doc.cm.curOp;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);
|
||||
var op = this.doc.cm.curOp
|
||||
;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);
|
||||
}
|
||||
};
|
||||
eventMixin(TextMarker);
|
||||
|
@ -6149,12 +6150,12 @@ Doc.prototype = createObj(BranchChunk.prototype, {
|
|||
{ out[i] = new Range(clipPos(this$1, ranges[i].anchor),
|
||||
clipPos(this$1, ranges[i].head)); }
|
||||
if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }
|
||||
setSelection(this, normalizeSelection(out, primary), options);
|
||||
setSelection(this, normalizeSelection(this.cm, out, primary), options);
|
||||
}),
|
||||
addSelection: docMethodOp(function(anchor, head, options) {
|
||||
var ranges = this.sel.ranges.slice(0);
|
||||
ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));
|
||||
setSelection(this, normalizeSelection(ranges, ranges.length - 1), options);
|
||||
setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);
|
||||
}),
|
||||
|
||||
getSelection: function(lineSep) {
|
||||
|
@ -7216,8 +7217,7 @@ PastClick.prototype.compare = function (time, pos, button) {
|
|||
cmp(pos, this.pos) == 0 && button == this.button
|
||||
};
|
||||
|
||||
var lastClick;
|
||||
var lastDoubleClick;
|
||||
var lastClick, lastDoubleClick;
|
||||
function clickRepeat(pos, button) {
|
||||
var now = +new Date;
|
||||
if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {
|
||||
|
@ -7271,7 +7271,7 @@ function onMouseDown(e) {
|
|||
if (pos) { extendSelection(cm.doc, pos); }
|
||||
setTimeout(function () { return display.input.focus(); }, 20);
|
||||
} else if (button == 3) {
|
||||
if (captureRightClick) { onContextMenu(cm, e); }
|
||||
if (captureRightClick) { cm.display.input.onContextMenu(e); }
|
||||
else { delayBlurEvent(cm); }
|
||||
}
|
||||
}
|
||||
|
@ -7409,10 +7409,10 @@ function leftButtonSelect(cm, event, start, behavior) {
|
|||
startSel = doc.sel;
|
||||
} else if (ourIndex == -1) {
|
||||
ourIndex = ranges.length;
|
||||
setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex),
|
||||
setSelection(doc, 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(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),
|
||||
setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),
|
||||
{scroll: false, origin: "*mouse"});
|
||||
startSel = doc.sel;
|
||||
} else {
|
||||
|
@ -7438,7 +7438,7 @@ function leftButtonSelect(cm, event, start, behavior) {
|
|||
{ 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(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),
|
||||
setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),
|
||||
{origin: "*mouse", scroll: false});
|
||||
cm.scrollIntoView(pos);
|
||||
} else {
|
||||
|
@ -7454,7 +7454,7 @@ function leftButtonSelect(cm, event, start, behavior) {
|
|||
}
|
||||
var ranges$1 = startSel.ranges.slice(0);
|
||||
ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));
|
||||
setSelection(doc, normalizeSelection(ranges$1, ourIndex), sel_mouse);
|
||||
setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7583,7 +7583,7 @@ function clickInGutter(cm, e) {
|
|||
function onContextMenu(cm, e) {
|
||||
if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }
|
||||
if (signalDOMEvent(cm, e, "contextmenu")) { return }
|
||||
cm.display.input.onContextMenu(e);
|
||||
if (!captureRightClick) { cm.display.input.onContextMenu(e); }
|
||||
}
|
||||
|
||||
function contextMenuInGutter(cm, e) {
|
||||
|
@ -7702,6 +7702,7 @@ function defineOptions(CodeMirror) {
|
|||
option("resetSelectionOnContextMenu", true);
|
||||
option("lineWiseCopyCut", true);
|
||||
option("pasteLinesPerSelection", true);
|
||||
option("selectionsMayTouch", false);
|
||||
|
||||
option("readOnly", false, function (cm, val) {
|
||||
if (val == "nocursor") {
|
||||
|
@ -7869,7 +7870,7 @@ function registerEventHandlers(cm) {
|
|||
// Some browsers fire contextmenu *after* opening the menu, at
|
||||
// which point we can't mess with it anymore. Context menu is
|
||||
// handled in onMouseDown for these browsers.
|
||||
if (!captureRightClick) { on(d.scroller, "contextmenu", function (e) { return onContextMenu(cm, e); }); }
|
||||
on(d.scroller, "contextmenu", function (e) { return onContextMenu(cm, e); });
|
||||
|
||||
// Used to suppress mouse event handling when a touch happens
|
||||
var touchFinished, prevTouch = {end: 0};
|
||||
|
@ -8064,7 +8065,7 @@ function applyTextInput(cm, inserted, deleted, sel, origin) {
|
|||
{ from = Pos(from.line, from.ch - deleted); }
|
||||
else if (cm.state.overwrite && !paste) // Handle overwrite
|
||||
{ to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }
|
||||
else if (lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted)
|
||||
else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted)
|
||||
{ from = to = Pos(from.line, 0); }
|
||||
}
|
||||
updateInput = cm.curOp.updateInput;
|
||||
|
@ -8156,7 +8157,7 @@ function hiddenTextarea() {
|
|||
// CodeMirror.prototype, for backwards compatibility and
|
||||
// convenience.
|
||||
|
||||
var addEditorMethods = function(CodeMirror) {
|
||||
function addEditorMethods(CodeMirror) {
|
||||
var optionHandlers = CodeMirror.optionHandlers;
|
||||
|
||||
var helpers = CodeMirror.helpers = {};
|
||||
|
@ -8593,7 +8594,7 @@ var addEditorMethods = function(CodeMirror) {
|
|||
CodeMirror.registerHelper(type, name, value);
|
||||
helpers[type]._global.push({pred: predicate, val: value});
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
// Used for horizontal relative motion. Dir is -1 or 1 (left or
|
||||
// right), unit can be "char", "column" (like char, but doesn't
|
||||
|
@ -9661,13 +9662,8 @@ for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && inde
|
|||
})(Doc.prototype[prop]); } }
|
||||
|
||||
eventMixin(Doc);
|
||||
|
||||
// INPUT HANDLING
|
||||
|
||||
CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput};
|
||||
|
||||
// MODE DEFINITION AND QUERYING
|
||||
|
||||
// Extra arguments are stored as the mode's dependencies, which is
|
||||
// used by (legacy) mechanisms like loadmode.js to automatically
|
||||
// load a mode. (Preferred mechanism is the require/define calls.)
|
||||
|
@ -9695,7 +9691,7 @@ CodeMirror.fromTextArea = fromTextArea;
|
|||
|
||||
addLegacyProps(CodeMirror);
|
||||
|
||||
CodeMirror.version = "5.40.0";
|
||||
CodeMirror.version = "5.41.0";
|
||||
|
||||
return CodeMirror;
|
||||
|
||||
|
|
2
vendor/codemirror/mode/css/css.js
vendored
2
vendor/codemirror/mode/css/css.js
vendored
|
@ -501,7 +501,7 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
|
|||
"margin-bottom", "margin-left", "margin-right", "margin-top",
|
||||
"marks", "marquee-direction", "marquee-loop",
|
||||
"marquee-play-count", "marquee-speed", "marquee-style", "max-height",
|
||||
"max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index",
|
||||
"max-width", "min-height", "min-width", "mix-blend-mode", "move-to", "nav-down", "nav-index",
|
||||
"nav-left", "nav-right", "nav-up", "object-fit", "object-position",
|
||||
"opacity", "order", "orphans", "outline",
|
||||
"outline-color", "outline-offset", "outline-style", "outline-width",
|
||||
|
|
|
@ -644,7 +644,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|||
if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(pattern) }
|
||||
if (type == "variable") { register(value); return cont(); }
|
||||
if (type == "spread") return cont(pattern);
|
||||
if (type == "[") return contCommasep(pattern, "]");
|
||||
if (type == "[") return contCommasep(eltpattern, "]");
|
||||
if (type == "{") return contCommasep(proppattern, "}");
|
||||
}
|
||||
function proppattern(type, value) {
|
||||
|
@ -657,6 +657,9 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|||
if (type == "}") return pass();
|
||||
return cont(expect(":"), pattern, maybeAssign);
|
||||
}
|
||||
function eltpattern() {
|
||||
return pass(pattern, maybeAssign)
|
||||
}
|
||||
function maybeAssign(_type, value) {
|
||||
if (value == "=") return cont(expressionNoComma);
|
||||
}
|
||||
|
|
9
vendor/codemirror/theme/gruvbox-dark.css
vendored
9
vendor/codemirror/theme/gruvbox-dark.css
vendored
|
@ -12,7 +12,7 @@
|
|||
.cm-s-gruvbox-dark .CodeMirror-linenumber {color: #7c6f64;}
|
||||
.cm-s-gruvbox-dark .CodeMirror-cursor { border-left: 1px solid #ebdbb2; }
|
||||
.cm-s-gruvbox-dark div.CodeMirror-selected { background: #928374; }
|
||||
.cm-s-gruvbox-dark span.cm-meta { color: #808000; }
|
||||
.cm-s-gruvbox-dark span.cm-meta { color: #83a598; }
|
||||
|
||||
.cm-s-gruvbox-dark span.cm-comment { color: #928374; }
|
||||
.cm-s-gruvbox-dark span.cm-number, span.cm-atom { color: #d3869b; }
|
||||
|
@ -20,15 +20,18 @@
|
|||
|
||||
.cm-s-gruvbox-dark span.cm-variable { color: #ebdbb2; }
|
||||
.cm-s-gruvbox-dark span.cm-variable-2 { color: #ebdbb2; }
|
||||
.cm-s-gruvbox-dark span.cm-variable-3, .cm-s-gruvbox-dark span.cm-type { color: black; }
|
||||
.cm-s-gruvbox-dark span.cm-variable-3, .cm-s-gruvbox-dark span.cm-type { color: #fabd2f; }
|
||||
.cm-s-gruvbox-dark span.cm-operator { color: #ebdbb2; }
|
||||
.cm-s-gruvbox-dark span.cm-callee { color: #ebdbb2; }
|
||||
.cm-s-gruvbox-dark span.cm-def { color: #ebdbb2; }
|
||||
.cm-s-gruvbox-dark span.cm-property { color: #ebdbb2; }
|
||||
.cm-s-gruvbox-dark span.cm-string { color: #b8bb26; }
|
||||
.cm-s-gruvbox-dark span.cm-string-2 { color: #8ec07c; }
|
||||
.cm-s-gruvbox-dark span.cm-qualifier { color: #555; }
|
||||
.cm-s-gruvbox-dark span.cm-qualifier { color: #8ec07c; }
|
||||
.cm-s-gruvbox-dark span.cm-attribute { color: #8ec07c; }
|
||||
|
||||
.cm-s-gruvbox-dark .CodeMirror-activeline-background { background: #3c3836; }
|
||||
.cm-s-gruvbox-dark .CodeMirror-matchingbracket { background: #928374; color:#282828 !important; }
|
||||
|
||||
.cm-s-gruvbox-dark span.cm-builtin { color: #fe8019; }
|
||||
.cm-s-gruvbox-dark span.cm-tag { color: #fe8019; }
|
||||
|
|
Loading…
Reference in New Issue
Block a user