Update dev dependencies & CodeMirror
This commit is contained in:
parent
5536f7ad22
commit
14144c287c
|
@ -7,8 +7,8 @@
|
||||||
"author": "Stylus Team",
|
"author": "Stylus Team",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"archiver": "^3.0.0",
|
"archiver": "^3.0.0",
|
||||||
"codemirror": "^5.40.0",
|
"codemirror": "^5.41.0",
|
||||||
"eslint": "^5.4.0",
|
"eslint": "^5.8.0",
|
||||||
"fs-extra": "^7.0.0",
|
"fs-extra": "^7.0.0",
|
||||||
"jsonlint": "^1.6.3",
|
"jsonlint": "^1.6.3",
|
||||||
"less": "^3.8.1",
|
"less": "^3.8.1",
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
"semver-bundle": "^0.1.1",
|
"semver-bundle": "^0.1.1",
|
||||||
"stylelint-bundle": "^8.0.0",
|
"stylelint-bundle": "^8.0.0",
|
||||||
"stylus-lang-bundle": "^0.54.5",
|
"stylus-lang-bundle": "^0.54.5",
|
||||||
"updates": "^4.2.1",
|
"updates": "^5.1.2",
|
||||||
"webext-tx-fix": "^0.3.1"
|
"webext-tx-fix": "^0.3.1"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"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.
|
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;
|
++pos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (end == null || line == end && endCh == startCh) return;
|
if (end == null || line == end) return;
|
||||||
return {from: CodeMirror.Pos(line, startCh),
|
return {from: CodeMirror.Pos(line, startCh),
|
||||||
to: CodeMirror.Pos(end, endCh)};
|
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:
|
* Supported keybindings:
|
||||||
* Too many to list. Refer to defaultKeyMap below.
|
* Too many to list. Refer to defaultKeymap below.
|
||||||
*
|
*
|
||||||
* Supported Ex commands:
|
* Supported Ex commands:
|
||||||
* Refer to defaultExCommandMap below.
|
* Refer to defaultExCommandMap below.
|
||||||
|
@ -207,6 +207,7 @@
|
||||||
// Ex command
|
// Ex command
|
||||||
{ keys: ':', type: 'ex' }
|
{ keys: ':', type: 'ex' }
|
||||||
];
|
];
|
||||||
|
var defaultKeymapLength = defaultKeymap.length;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ex commands
|
* Ex commands
|
||||||
|
@ -742,6 +743,78 @@
|
||||||
unmap: function(lhs, ctx) {
|
unmap: function(lhs, ctx) {
|
||||||
exCommandDispatcher.unmap(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
|
// 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.
|
// them, or somehow make them work with the existing CodeMirror setOption/getOption API.
|
||||||
setOption: setOption,
|
setOption: setOption,
|
||||||
|
@ -5040,32 +5113,7 @@
|
||||||
var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.');
|
var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.');
|
||||||
var isPlaying = macroModeState.isPlaying;
|
var isPlaying = macroModeState.isPlaying;
|
||||||
var lastChange = macroModeState.lastInsertModeChanges;
|
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) {
|
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);
|
cm.off('change', onChange);
|
||||||
CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown);
|
CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown);
|
||||||
}
|
}
|
||||||
|
@ -5196,19 +5244,26 @@
|
||||||
if (!macroModeState.isPlaying) {
|
if (!macroModeState.isPlaying) {
|
||||||
while(changeObj) {
|
while(changeObj) {
|
||||||
lastChange.expectCursorActivityForChange = true;
|
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 */) {
|
|| changeObj.origin === undefined /* only in testing */) {
|
||||||
|
var selectionCount = cm.listSelections().length;
|
||||||
|
if (selectionCount > 1)
|
||||||
|
lastChange.ignoreCount = selectionCount;
|
||||||
var text = changeObj.text.join('\n');
|
var text = changeObj.text.join('\n');
|
||||||
if (lastChange.maybeReset) {
|
if (lastChange.maybeReset) {
|
||||||
lastChange.changes = [];
|
lastChange.changes = [];
|
||||||
lastChange.maybeReset = false;
|
lastChange.maybeReset = false;
|
||||||
}
|
}
|
||||||
|
if (text) {
|
||||||
if (cm.state.overwrite && !/\n/.test(text)) {
|
if (cm.state.overwrite && !/\n/.test(text)) {
|
||||||
lastChange.changes.push([text]);
|
lastChange.changes.push([text]);
|
||||||
} else {
|
} else {
|
||||||
lastChange.changes.push(text);
|
lastChange.changes.push(text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Change objects may be chained with next.
|
// Change objects may be chained with next.
|
||||||
changeObj = changeObj.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"}};
|
var Pass = {toString: function(){return "CodeMirror.Pass"}};
|
||||||
|
|
||||||
// Reused option objects for setSelection & friends
|
// Reused option objects for setSelection & friends
|
||||||
var sel_dontScroll = {scroll: false};
|
var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"};
|
||||||
var sel_mouse = {origin: "*mouse"};
|
|
||||||
var sel_move = {origin: "+move"};
|
|
||||||
|
|
||||||
// The inverse of countColumn -- find the offset that corresponds to
|
// The inverse of countColumn -- find the offset that corresponds to
|
||||||
// a particular column.
|
// a particular column.
|
||||||
|
@ -523,8 +521,7 @@ function clipPosArray(doc, array) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Optimize some code when these features are not used.
|
// Optimize some code when these features are not used.
|
||||||
var sawReadOnlySpans = false;
|
var sawReadOnlySpans = false, sawCollapsedSpans = false;
|
||||||
var sawCollapsedSpans = false;
|
|
||||||
|
|
||||||
function seeReadOnlySpans() {
|
function seeReadOnlySpans() {
|
||||||
sawReadOnlySpans = true;
|
sawReadOnlySpans = true;
|
||||||
|
@ -572,7 +569,8 @@ function markedSpansBefore(old, startCh, isInsert) {
|
||||||
var span = old[i], marker = span.marker;
|
var span = old[i], marker = span.marker;
|
||||||
var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);
|
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)) {
|
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
|
return nw
|
||||||
|
@ -583,7 +581,8 @@ function markedSpansAfter(old, endCh, isInsert) {
|
||||||
var span = old[i], marker = span.marker;
|
var span = old[i], marker = span.marker;
|
||||||
var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);
|
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)) {
|
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));
|
span.to == null ? null : span.to - endCh));
|
||||||
}
|
}
|
||||||
} }
|
} }
|
||||||
|
@ -1306,8 +1305,7 @@ function hasBadZoomedRects(measure) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Known modes, by name and by MIME
|
// Known modes, by name and by MIME
|
||||||
var modes = {};
|
var modes = {}, mimeModes = {};
|
||||||
var mimeModes = {};
|
|
||||||
|
|
||||||
// Extra arguments are stored as the mode's dependencies, which is
|
// Extra arguments are stored as the mode's dependencies, which is
|
||||||
// used by (legacy) mechanisms like loadmode.js to automatically
|
// 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
|
// 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,
|
// containing one or more styles) to a CSS style. This is cached,
|
||||||
// and also looks for line-wide styles.
|
// and also looks for line-wide styles.
|
||||||
var styleToClassCache = {};
|
var styleToClassCache = {}, styleToClassCacheWithMode = {};
|
||||||
var styleToClassCacheWithMode = {};
|
|
||||||
function interpretTokenStyle(style, options) {
|
function interpretTokenStyle(style, options) {
|
||||||
if (!style || /^\s*$/.test(style)) { return null }
|
if (!style || /^\s*$/.test(style)) { return null }
|
||||||
var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;
|
var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;
|
||||||
|
@ -1822,7 +1819,7 @@ function buildLineContent(cm, lineView) {
|
||||||
var builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content,
|
var builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content,
|
||||||
col: 0, pos: 0, cm: cm,
|
col: 0, pos: 0, cm: cm,
|
||||||
trailingSpace: false,
|
trailingSpace: false,
|
||||||
splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")};
|
splitSpaces: cm.getOption("lineWrapping")};
|
||||||
lineView.measure = {};
|
lineView.measure = {};
|
||||||
|
|
||||||
// Iterate over the logical lines that make up this visual line.
|
// 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);
|
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) {
|
function splitSpaces(text, trailingBefore) {
|
||||||
if (text.length > 1 && !/ /.test(text)) { return text }
|
if (text.length > 1 && !/ /.test(text)) { return text }
|
||||||
var spaceBefore = trailingBefore, result = "";
|
var spaceBefore = trailingBefore, result = "";
|
||||||
|
@ -3745,11 +3744,11 @@ function startOperation(cm) {
|
||||||
// Finish an operation, updating the display and signalling delayed events
|
// Finish an operation, updating the display and signalling delayed events
|
||||||
function endOperation(cm) {
|
function endOperation(cm) {
|
||||||
var op = cm.curOp;
|
var op = cm.curOp;
|
||||||
finishOperation(op, function (group) {
|
if (op) { finishOperation(op, function (group) {
|
||||||
for (var i = 0; i < group.ops.length; i++)
|
for (var i = 0; i < group.ops.length; i++)
|
||||||
{ group.ops[i].cm.curOp = null; }
|
{ group.ops[i].cm.curOp = null; }
|
||||||
endOperations(group);
|
endOperations(group);
|
||||||
});
|
}); }
|
||||||
}
|
}
|
||||||
|
|
||||||
// The DOM updates done when an operation finishes are batched so
|
// 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.
|
// in display.lineDiv) with the view as we go.
|
||||||
for (var i = 0; i < view.length; i++) {
|
for (var i = 0; i < view.length; i++) {
|
||||||
var lineView = view[i];
|
var lineView = view[i];
|
||||||
if (lineView.hidden) {
|
if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet
|
||||||
} else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet
|
|
||||||
var node = buildLineElement(cm, lineView, lineN, dims);
|
var node = buildLineElement(cm, lineView, lineN, dims);
|
||||||
container.insertBefore(node, cur);
|
container.insertBefore(node, cur);
|
||||||
} else { // Already drawn
|
} else { // Already drawn
|
||||||
|
@ -4387,8 +4385,7 @@ function setGuttersForLineNumbers(options) {
|
||||||
// is that it gives us a chance to update the display before the
|
// is that it gives us a chance to update the display before the
|
||||||
// actual scrolling happens, reducing flickering.
|
// actual scrolling happens, reducing flickering.
|
||||||
|
|
||||||
var wheelSamples = 0;
|
var wheelSamples = 0, wheelPixelsPerUnit = null;
|
||||||
var wheelPixelsPerUnit = null;
|
|
||||||
// Fill in a browser-detected starting value on browsers where we
|
// Fill in a browser-detected starting value on browsers where we
|
||||||
// know one. These don't have to be accurate -- the result of them
|
// 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
|
// 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
|
// Take an unsorted, potentially overlapping set of ranges, and
|
||||||
// build a selection out of it. 'Consumes' ranges array (modifying
|
// build a selection out of it. 'Consumes' ranges array (modifying
|
||||||
// it).
|
// it).
|
||||||
function normalizeSelection(ranges, primIndex) {
|
function normalizeSelection(cm, ranges, primIndex) {
|
||||||
|
var mayTouch = cm && cm.options.selectionsMayTouch;
|
||||||
var prim = ranges[primIndex];
|
var prim = ranges[primIndex];
|
||||||
ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });
|
ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });
|
||||||
primIndex = indexOf(ranges, prim);
|
primIndex = indexOf(ranges, prim);
|
||||||
for (var i = 1; i < ranges.length; i++) {
|
for (var i = 1; i < ranges.length; i++) {
|
||||||
var cur = ranges[i], prev = ranges[i - 1];
|
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 from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());
|
||||||
var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;
|
var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;
|
||||||
if (i <= primIndex) { --primIndex; }
|
if (i <= primIndex) { --primIndex; }
|
||||||
|
@ -4597,7 +4596,7 @@ function computeSelAfterChange(doc, change) {
|
||||||
out.push(new Range(adjustForChange(range.anchor, change),
|
out.push(new Range(adjustForChange(range.anchor, change),
|
||||||
adjustForChange(range.head, change)));
|
adjustForChange(range.head, change)));
|
||||||
}
|
}
|
||||||
return normalizeSelection(out, doc.sel.primIndex)
|
return normalizeSelection(doc.cm, out, doc.sel.primIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
function offsetPos(pos, old, nw) {
|
function offsetPos(pos, old, nw) {
|
||||||
|
@ -5005,7 +5004,7 @@ function extendSelections(doc, heads, options) {
|
||||||
var extend = doc.cm && (doc.cm.display.shift || doc.extend);
|
var extend = doc.cm && (doc.cm.display.shift || doc.extend);
|
||||||
for (var i = 0; i < doc.sel.ranges.length; i++)
|
for (var i = 0; i < doc.sel.ranges.length; i++)
|
||||||
{ out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }
|
{ 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);
|
setSelection(doc, newSel, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5013,7 +5012,7 @@ function extendSelections(doc, heads, options) {
|
||||||
function replaceOneSelection(doc, i, range, options) {
|
function replaceOneSelection(doc, i, range, options) {
|
||||||
var ranges = doc.sel.ranges.slice(0);
|
var ranges = doc.sel.ranges.slice(0);
|
||||||
ranges[i] = range;
|
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.
|
// Reset the selection to a single range.
|
||||||
|
@ -5038,7 +5037,7 @@ function filterSelectionChange(doc, sel, options) {
|
||||||
};
|
};
|
||||||
signal(doc, "beforeSelectionChange", doc, obj);
|
signal(doc, "beforeSelectionChange", doc, obj);
|
||||||
if (doc.cm) { signal(doc.cm, "beforeSelectionChange", doc.cm, 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 }
|
else { return sel }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5102,7 +5101,7 @@ function skipAtomicInSelection(doc, sel, bias, mayClear) {
|
||||||
out[i] = new Range(newAnchor, newHead);
|
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) {
|
function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {
|
||||||
|
@ -5418,9 +5417,10 @@ function makeChangeSingleDocInEditor(cm, change, spans) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function replaceRange(doc, code, from, to, origin) {
|
function replaceRange(doc, code, from, to, origin) {
|
||||||
|
var assign;
|
||||||
|
|
||||||
if (!to) { to = from; }
|
if (!to) { to = from; }
|
||||||
if (cmp(to, from) < 0) { var assign;
|
if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }
|
||||||
(assign = [to, from], from = assign[0], to = assign[1]); }
|
|
||||||
if (typeof code == "string") { code = doc.splitLines(code); }
|
if (typeof code == "string") { code = doc.splitLines(code); }
|
||||||
makeChange(doc, {from: from, to: to, text: code, origin: origin});
|
makeChange(doc, {from: from, to: to, text: code, origin: origin});
|
||||||
}
|
}
|
||||||
|
@ -5876,7 +5876,8 @@ TextMarker.prototype.attachLine = function (line) {
|
||||||
TextMarker.prototype.detachLine = function (line) {
|
TextMarker.prototype.detachLine = function (line) {
|
||||||
this.lines.splice(indexOf(this.lines, line), 1);
|
this.lines.splice(indexOf(this.lines, line), 1);
|
||||||
if (!this.lines.length && this.doc.cm) {
|
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);
|
eventMixin(TextMarker);
|
||||||
|
@ -6149,12 +6150,12 @@ Doc.prototype = createObj(BranchChunk.prototype, {
|
||||||
{ out[i] = new Range(clipPos(this$1, ranges[i].anchor),
|
{ out[i] = new Range(clipPos(this$1, ranges[i].anchor),
|
||||||
clipPos(this$1, ranges[i].head)); }
|
clipPos(this$1, ranges[i].head)); }
|
||||||
if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }
|
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) {
|
addSelection: docMethodOp(function(anchor, head, options) {
|
||||||
var ranges = this.sel.ranges.slice(0);
|
var ranges = this.sel.ranges.slice(0);
|
||||||
ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));
|
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) {
|
getSelection: function(lineSep) {
|
||||||
|
@ -7216,8 +7217,7 @@ PastClick.prototype.compare = function (time, pos, button) {
|
||||||
cmp(pos, this.pos) == 0 && button == this.button
|
cmp(pos, this.pos) == 0 && button == this.button
|
||||||
};
|
};
|
||||||
|
|
||||||
var lastClick;
|
var lastClick, lastDoubleClick;
|
||||||
var lastDoubleClick;
|
|
||||||
function clickRepeat(pos, button) {
|
function clickRepeat(pos, button) {
|
||||||
var now = +new Date;
|
var now = +new Date;
|
||||||
if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {
|
if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {
|
||||||
|
@ -7271,7 +7271,7 @@ function onMouseDown(e) {
|
||||||
if (pos) { extendSelection(cm.doc, pos); }
|
if (pos) { extendSelection(cm.doc, pos); }
|
||||||
setTimeout(function () { return display.input.focus(); }, 20);
|
setTimeout(function () { return display.input.focus(); }, 20);
|
||||||
} else if (button == 3) {
|
} else if (button == 3) {
|
||||||
if (captureRightClick) { onContextMenu(cm, e); }
|
if (captureRightClick) { cm.display.input.onContextMenu(e); }
|
||||||
else { delayBlurEvent(cm); }
|
else { delayBlurEvent(cm); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7409,10 +7409,10 @@ function leftButtonSelect(cm, event, start, behavior) {
|
||||||
startSel = doc.sel;
|
startSel = doc.sel;
|
||||||
} else if (ourIndex == -1) {
|
} else if (ourIndex == -1) {
|
||||||
ourIndex = ranges.length;
|
ourIndex = ranges.length;
|
||||||
setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex),
|
setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),
|
||||||
{scroll: false, origin: "*mouse"});
|
{scroll: false, origin: "*mouse"});
|
||||||
} else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) {
|
} 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"});
|
{scroll: false, origin: "*mouse"});
|
||||||
startSel = doc.sel;
|
startSel = doc.sel;
|
||||||
} else {
|
} else {
|
||||||
|
@ -7438,7 +7438,7 @@ function leftButtonSelect(cm, event, start, behavior) {
|
||||||
{ ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }
|
{ ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }
|
||||||
}
|
}
|
||||||
if (!ranges.length) { ranges.push(new Range(start, start)); }
|
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});
|
{origin: "*mouse", scroll: false});
|
||||||
cm.scrollIntoView(pos);
|
cm.scrollIntoView(pos);
|
||||||
} else {
|
} else {
|
||||||
|
@ -7454,7 +7454,7 @@ function leftButtonSelect(cm, event, start, behavior) {
|
||||||
}
|
}
|
||||||
var ranges$1 = startSel.ranges.slice(0);
|
var ranges$1 = startSel.ranges.slice(0);
|
||||||
ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));
|
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) {
|
function onContextMenu(cm, e) {
|
||||||
if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }
|
if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }
|
||||||
if (signalDOMEvent(cm, e, "contextmenu")) { return }
|
if (signalDOMEvent(cm, e, "contextmenu")) { return }
|
||||||
cm.display.input.onContextMenu(e);
|
if (!captureRightClick) { cm.display.input.onContextMenu(e); }
|
||||||
}
|
}
|
||||||
|
|
||||||
function contextMenuInGutter(cm, e) {
|
function contextMenuInGutter(cm, e) {
|
||||||
|
@ -7702,6 +7702,7 @@ function defineOptions(CodeMirror) {
|
||||||
option("resetSelectionOnContextMenu", true);
|
option("resetSelectionOnContextMenu", true);
|
||||||
option("lineWiseCopyCut", true);
|
option("lineWiseCopyCut", true);
|
||||||
option("pasteLinesPerSelection", true);
|
option("pasteLinesPerSelection", true);
|
||||||
|
option("selectionsMayTouch", false);
|
||||||
|
|
||||||
option("readOnly", false, function (cm, val) {
|
option("readOnly", false, function (cm, val) {
|
||||||
if (val == "nocursor") {
|
if (val == "nocursor") {
|
||||||
|
@ -7869,7 +7870,7 @@ function registerEventHandlers(cm) {
|
||||||
// Some browsers fire contextmenu *after* opening the menu, at
|
// Some browsers fire contextmenu *after* opening the menu, at
|
||||||
// which point we can't mess with it anymore. Context menu is
|
// which point we can't mess with it anymore. Context menu is
|
||||||
// handled in onMouseDown for these browsers.
|
// 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
|
// Used to suppress mouse event handling when a touch happens
|
||||||
var touchFinished, prevTouch = {end: 0};
|
var touchFinished, prevTouch = {end: 0};
|
||||||
|
@ -8064,7 +8065,7 @@ function applyTextInput(cm, inserted, deleted, sel, origin) {
|
||||||
{ from = Pos(from.line, from.ch - deleted); }
|
{ from = Pos(from.line, from.ch - deleted); }
|
||||||
else if (cm.state.overwrite && !paste) // Handle overwrite
|
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)); }
|
{ 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); }
|
{ from = to = Pos(from.line, 0); }
|
||||||
}
|
}
|
||||||
updateInput = cm.curOp.updateInput;
|
updateInput = cm.curOp.updateInput;
|
||||||
|
@ -8156,7 +8157,7 @@ function hiddenTextarea() {
|
||||||
// CodeMirror.prototype, for backwards compatibility and
|
// CodeMirror.prototype, for backwards compatibility and
|
||||||
// convenience.
|
// convenience.
|
||||||
|
|
||||||
var addEditorMethods = function(CodeMirror) {
|
function addEditorMethods(CodeMirror) {
|
||||||
var optionHandlers = CodeMirror.optionHandlers;
|
var optionHandlers = CodeMirror.optionHandlers;
|
||||||
|
|
||||||
var helpers = CodeMirror.helpers = {};
|
var helpers = CodeMirror.helpers = {};
|
||||||
|
@ -8593,7 +8594,7 @@ var addEditorMethods = function(CodeMirror) {
|
||||||
CodeMirror.registerHelper(type, name, value);
|
CodeMirror.registerHelper(type, name, value);
|
||||||
helpers[type]._global.push({pred: predicate, val: value});
|
helpers[type]._global.push({pred: predicate, val: value});
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
|
|
||||||
// Used for horizontal relative motion. Dir is -1 or 1 (left or
|
// Used for horizontal relative motion. Dir is -1 or 1 (left or
|
||||||
// right), unit can be "char", "column" (like char, but doesn't
|
// 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]); } }
|
})(Doc.prototype[prop]); } }
|
||||||
|
|
||||||
eventMixin(Doc);
|
eventMixin(Doc);
|
||||||
|
|
||||||
// INPUT HANDLING
|
|
||||||
|
|
||||||
CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput};
|
CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput};
|
||||||
|
|
||||||
// MODE DEFINITION AND QUERYING
|
|
||||||
|
|
||||||
// Extra arguments are stored as the mode's dependencies, which is
|
// Extra arguments are stored as the mode's dependencies, which is
|
||||||
// used by (legacy) mechanisms like loadmode.js to automatically
|
// used by (legacy) mechanisms like loadmode.js to automatically
|
||||||
// load a mode. (Preferred mechanism is the require/define calls.)
|
// load a mode. (Preferred mechanism is the require/define calls.)
|
||||||
|
@ -9695,7 +9691,7 @@ CodeMirror.fromTextArea = fromTextArea;
|
||||||
|
|
||||||
addLegacyProps(CodeMirror);
|
addLegacyProps(CodeMirror);
|
||||||
|
|
||||||
CodeMirror.version = "5.40.0";
|
CodeMirror.version = "5.41.0";
|
||||||
|
|
||||||
return CodeMirror;
|
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",
|
"margin-bottom", "margin-left", "margin-right", "margin-top",
|
||||||
"marks", "marquee-direction", "marquee-loop",
|
"marks", "marquee-direction", "marquee-loop",
|
||||||
"marquee-play-count", "marquee-speed", "marquee-style", "max-height",
|
"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",
|
"nav-left", "nav-right", "nav-up", "object-fit", "object-position",
|
||||||
"opacity", "order", "orphans", "outline",
|
"opacity", "order", "orphans", "outline",
|
||||||
"outline-color", "outline-offset", "outline-style", "outline-width",
|
"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 (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(pattern) }
|
||||||
if (type == "variable") { register(value); return cont(); }
|
if (type == "variable") { register(value); return cont(); }
|
||||||
if (type == "spread") return cont(pattern);
|
if (type == "spread") return cont(pattern);
|
||||||
if (type == "[") return contCommasep(pattern, "]");
|
if (type == "[") return contCommasep(eltpattern, "]");
|
||||||
if (type == "{") return contCommasep(proppattern, "}");
|
if (type == "{") return contCommasep(proppattern, "}");
|
||||||
}
|
}
|
||||||
function proppattern(type, value) {
|
function proppattern(type, value) {
|
||||||
|
@ -657,6 +657,9 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||||
if (type == "}") return pass();
|
if (type == "}") return pass();
|
||||||
return cont(expect(":"), pattern, maybeAssign);
|
return cont(expect(":"), pattern, maybeAssign);
|
||||||
}
|
}
|
||||||
|
function eltpattern() {
|
||||||
|
return pass(pattern, maybeAssign)
|
||||||
|
}
|
||||||
function maybeAssign(_type, value) {
|
function maybeAssign(_type, value) {
|
||||||
if (value == "=") return cont(expressionNoComma);
|
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-linenumber {color: #7c6f64;}
|
||||||
.cm-s-gruvbox-dark .CodeMirror-cursor { border-left: 1px solid #ebdbb2; }
|
.cm-s-gruvbox-dark .CodeMirror-cursor { border-left: 1px solid #ebdbb2; }
|
||||||
.cm-s-gruvbox-dark div.CodeMirror-selected { background: #928374; }
|
.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-comment { color: #928374; }
|
||||||
.cm-s-gruvbox-dark span.cm-number, span.cm-atom { color: #d3869b; }
|
.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 { color: #ebdbb2; }
|
||||||
.cm-s-gruvbox-dark span.cm-variable-2 { 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-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-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 { color: #b8bb26; }
|
||||||
.cm-s-gruvbox-dark span.cm-string-2 { color: #8ec07c; }
|
.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 span.cm-attribute { color: #8ec07c; }
|
||||||
|
|
||||||
.cm-s-gruvbox-dark .CodeMirror-activeline-background { background: #3c3836; }
|
.cm-s-gruvbox-dark .CodeMirror-activeline-background { background: #3c3836; }
|
||||||
.cm-s-gruvbox-dark .CodeMirror-matchingbracket { background: #928374; color:#282828 !important; }
|
.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-builtin { color: #fe8019; }
|
||||||
|
.cm-s-gruvbox-dark span.cm-tag { color: #fe8019; }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user