CodeMirror 5.58.0 (#1037)
This commit is contained in:
parent
30983db679
commit
2b149f97a5
6
package-lock.json
generated
6
package-lock.json
generated
|
@ -1917,9 +1917,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"codemirror": {
|
"codemirror": {
|
||||||
"version": "5.57.0",
|
"version": "5.58.0",
|
||||||
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.57.0.tgz",
|
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.58.0.tgz",
|
||||||
"integrity": "sha512-WGc6UL7Hqt+8a6ZAsj/f1ApQl3NPvHY/UQSzG6fB6l4BjExgVdhFaxd7mRTw1UCiYe/6q86zHP+kfvBQcZGvUg=="
|
"integrity": "sha512-OUK+7EgaYnLyC0F09UWjckLWvviy02IDDGTW5Zmj60a3gdGnFtUM6rVsqrfl5+YSylQVQBNfAGG4KF7tQOb4/Q=="
|
||||||
},
|
},
|
||||||
"collection-visit": {
|
"collection-visit": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"repository": "openstyles/stylus",
|
"repository": "openstyles/stylus",
|
||||||
"author": "Stylus Team",
|
"author": "Stylus Team",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"codemirror": "^5.57.0",
|
"codemirror": "^5.58.0",
|
||||||
"db-to-cloud": "^0.4.5",
|
"db-to-cloud": "^0.4.5",
|
||||||
"jsonlint": "^1.6.3",
|
"jsonlint": "^1.6.3",
|
||||||
"less-bundle": "github:openstyles/less-bundle#v0.1.0",
|
"less-bundle": "github:openstyles/less-bundle#v0.1.0",
|
||||||
|
|
2
vendor/codemirror/README.md
vendored
2
vendor/codemirror/README.md
vendored
|
@ -1,4 +1,4 @@
|
||||||
## codemirror v5.57.0
|
## codemirror v5.58.0
|
||||||
|
|
||||||
Following files are copied from npm (node_modules):
|
Following files are copied from npm (node_modules):
|
||||||
|
|
||||||
|
|
24
vendor/codemirror/addon/lint/lint.css
vendored
24
vendor/codemirror/addon/lint/lint.css
vendored
|
@ -25,22 +25,20 @@
|
||||||
-ms-transition: opacity .4s;
|
-ms-transition: opacity .4s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {
|
.CodeMirror-lint-mark {
|
||||||
background-position: left bottom;
|
background-position: left bottom;
|
||||||
background-repeat: repeat-x;
|
background-repeat: repeat-x;
|
||||||
}
|
}
|
||||||
|
|
||||||
.CodeMirror-lint-mark-error {
|
|
||||||
background-image:
|
|
||||||
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==")
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
.CodeMirror-lint-mark-warning {
|
.CodeMirror-lint-mark-warning {
|
||||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=");
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=");
|
||||||
}
|
}
|
||||||
|
|
||||||
.CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {
|
.CodeMirror-lint-mark-error {
|
||||||
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==");
|
||||||
|
}
|
||||||
|
|
||||||
|
.CodeMirror-lint-marker {
|
||||||
background-position: center center;
|
background-position: center center;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
@ -51,20 +49,20 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.CodeMirror-lint-message-error, .CodeMirror-lint-message-warning {
|
.CodeMirror-lint-message {
|
||||||
padding-left: 18px;
|
padding-left: 18px;
|
||||||
background-position: top left;
|
background-position: top left;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {
|
|
||||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=");
|
|
||||||
}
|
|
||||||
|
|
||||||
.CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {
|
.CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {
|
||||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=");
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {
|
||||||
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=");
|
||||||
|
}
|
||||||
|
|
||||||
.CodeMirror-lint-marker-multiple {
|
.CodeMirror-lint-marker-multiple {
|
||||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC");
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC");
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
|
|
8
vendor/codemirror/addon/lint/lint.js
vendored
8
vendor/codemirror/addon/lint/lint.js
vendored
|
@ -83,10 +83,10 @@
|
||||||
|
|
||||||
function makeMarker(cm, labels, severity, multiple, tooltips) {
|
function makeMarker(cm, labels, severity, multiple, tooltips) {
|
||||||
var marker = document.createElement("div"), inner = marker;
|
var marker = document.createElement("div"), inner = marker;
|
||||||
marker.className = "CodeMirror-lint-marker-" + severity;
|
marker.className = "CodeMirror-lint-marker CodeMirror-lint-marker-" + severity;
|
||||||
if (multiple) {
|
if (multiple) {
|
||||||
inner = marker.appendChild(document.createElement("div"));
|
inner = marker.appendChild(document.createElement("div"));
|
||||||
inner.className = "CodeMirror-lint-marker-multiple";
|
inner.className = "CodeMirror-lint-marker CodeMirror-lint-marker-multiple";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tooltips != false) CodeMirror.on(inner, "mouseover", function(e) {
|
if (tooltips != false) CodeMirror.on(inner, "mouseover", function(e) {
|
||||||
|
@ -114,7 +114,7 @@
|
||||||
var severity = ann.severity;
|
var severity = ann.severity;
|
||||||
if (!severity) severity = "error";
|
if (!severity) severity = "error";
|
||||||
var tip = document.createElement("div");
|
var tip = document.createElement("div");
|
||||||
tip.className = "CodeMirror-lint-message-" + severity;
|
tip.className = "CodeMirror-lint-message CodeMirror-lint-message-" + severity;
|
||||||
if (typeof ann.messageHTML != 'undefined') {
|
if (typeof ann.messageHTML != 'undefined') {
|
||||||
tip.innerHTML = ann.messageHTML;
|
tip.innerHTML = ann.messageHTML;
|
||||||
} else {
|
} else {
|
||||||
|
@ -183,7 +183,7 @@
|
||||||
if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));
|
if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));
|
||||||
|
|
||||||
if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {
|
if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {
|
||||||
className: "CodeMirror-lint-mark-" + severity,
|
className: "CodeMirror-lint-mark CodeMirror-lint-mark-" + severity,
|
||||||
__annotation: ann
|
__annotation: ann
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
155
vendor/codemirror/keymap/vim.js
vendored
155
vendor/codemirror/keymap/vim.js
vendored
|
@ -8,7 +8,7 @@
|
||||||
* Supported Ex commands:
|
* Supported Ex commands:
|
||||||
* Refer to defaultExCommandMap below.
|
* Refer to defaultExCommandMap below.
|
||||||
*
|
*
|
||||||
* Registers: unnamed, -, a-z, A-Z, 0-9
|
* Registers: unnamed, -, ., :, /, _, a-z, A-Z, 0-9
|
||||||
* (Does not respect the special case for number registers when delete
|
* (Does not respect the special case for number registers when delete
|
||||||
* operator is made with these commands: %, (, ), , /, ?, n, N, {, } )
|
* operator is made with these commands: %, (, ), , /, ?, n, N, {, } )
|
||||||
* TODO: Implement the remaining registers.
|
* TODO: Implement the remaining registers.
|
||||||
|
@ -141,6 +141,8 @@
|
||||||
{ keys: 'gU', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, isEdit: true },
|
{ keys: 'gU', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, isEdit: true },
|
||||||
{ keys: 'n', type: 'motion', motion: 'findNext', motionArgs: { forward: true, toJumplist: true }},
|
{ keys: 'n', type: 'motion', motion: 'findNext', motionArgs: { forward: true, toJumplist: true }},
|
||||||
{ keys: 'N', type: 'motion', motion: 'findNext', motionArgs: { forward: false, toJumplist: true }},
|
{ keys: 'N', type: 'motion', motion: 'findNext', motionArgs: { forward: false, toJumplist: true }},
|
||||||
|
{ keys: 'gn', type: 'motion', motion: 'findAndSelectNextInclusive', motionArgs: { forward: true }},
|
||||||
|
{ keys: 'gN', type: 'motion', motion: 'findAndSelectNextInclusive', motionArgs: { forward: false }},
|
||||||
// Operator-Motion dual commands
|
// Operator-Motion dual commands
|
||||||
{ keys: 'x', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorMotionArgs: { visualLine: false }},
|
{ keys: 'x', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorMotionArgs: { visualLine: false }},
|
||||||
{ keys: 'X', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: false }, operatorMotionArgs: { visualLine: true }},
|
{ keys: 'X', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: false }, operatorMotionArgs: { visualLine: true }},
|
||||||
|
@ -416,7 +418,7 @@
|
||||||
var lowerCaseAlphabet = makeKeyRange(97, 26);
|
var lowerCaseAlphabet = makeKeyRange(97, 26);
|
||||||
var numbers = makeKeyRange(48, 10);
|
var numbers = makeKeyRange(48, 10);
|
||||||
var validMarks = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['<', '>']);
|
var validMarks = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['<', '>']);
|
||||||
var validRegisters = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['-', '"', '.', ':', '/']);
|
var validRegisters = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['-', '"', '.', ':', '_', '/']);
|
||||||
|
|
||||||
function isLine(cm, line) {
|
function isLine(cm, line) {
|
||||||
return line >= cm.firstLine() && line <= cm.lastLine();
|
return line >= cm.firstLine() && line <= cm.lastLine();
|
||||||
|
@ -1128,6 +1130,8 @@
|
||||||
}
|
}
|
||||||
RegisterController.prototype = {
|
RegisterController.prototype = {
|
||||||
pushText: function(registerName, operator, text, linewise, blockwise) {
|
pushText: function(registerName, operator, text, linewise, blockwise) {
|
||||||
|
// The black hole register, "_, means delete/yank to nowhere.
|
||||||
|
if (registerName === '_') return;
|
||||||
if (linewise && text.charAt(text.length - 1) !== '\n'){
|
if (linewise && text.charAt(text.length - 1) !== '\n'){
|
||||||
text += '\n';
|
text += '\n';
|
||||||
}
|
}
|
||||||
|
@ -1574,7 +1578,7 @@
|
||||||
motionArgs.repeat = repeat;
|
motionArgs.repeat = repeat;
|
||||||
clearInputState(cm);
|
clearInputState(cm);
|
||||||
if (motion) {
|
if (motion) {
|
||||||
var motionResult = motions[motion](cm, origHead, motionArgs, vim);
|
var motionResult = motions[motion](cm, origHead, motionArgs, vim, inputState);
|
||||||
vim.lastMotion = motions[motion];
|
vim.lastMotion = motions[motion];
|
||||||
if (!motionResult) {
|
if (!motionResult) {
|
||||||
return;
|
return;
|
||||||
|
@ -1772,6 +1776,87 @@
|
||||||
highlightSearchMatches(cm, query);
|
highlightSearchMatches(cm, query);
|
||||||
return findNext(cm, prev/** prev */, query, motionArgs.repeat);
|
return findNext(cm, prev/** prev */, query, motionArgs.repeat);
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* Find and select the next occurrence of the search query. If the cursor is currently
|
||||||
|
* within a match, then find and select the current match. Otherwise, find the next occurrence in the
|
||||||
|
* appropriate direction.
|
||||||
|
*
|
||||||
|
* This differs from `findNext` in the following ways:
|
||||||
|
*
|
||||||
|
* 1. Instead of only returning the "from", this returns a "from", "to" range.
|
||||||
|
* 2. If the cursor is currently inside a search match, this selects the current match
|
||||||
|
* instead of the next match.
|
||||||
|
* 3. If there is no associated operator, this will turn on visual mode.
|
||||||
|
*/
|
||||||
|
findAndSelectNextInclusive: function(cm, _head, motionArgs, vim, prevInputState) {
|
||||||
|
var state = getSearchState(cm);
|
||||||
|
var query = state.getQuery();
|
||||||
|
|
||||||
|
if (!query) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var prev = !motionArgs.forward;
|
||||||
|
prev = (state.isReversed()) ? !prev : prev;
|
||||||
|
|
||||||
|
// next: [from, to] | null
|
||||||
|
var next = findNextFromAndToInclusive(cm, prev, query, motionArgs.repeat, vim);
|
||||||
|
|
||||||
|
// No matches.
|
||||||
|
if (!next) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there's an operator that will be executed, return the selection.
|
||||||
|
if (prevInputState.operator) {
|
||||||
|
return next;
|
||||||
|
}
|
||||||
|
|
||||||
|
// At this point, we know that there is no accompanying operator -- let's
|
||||||
|
// deal with visual mode in order to select an appropriate match.
|
||||||
|
|
||||||
|
var from = next[0];
|
||||||
|
// For whatever reason, when we use the "to" as returned by searchcursor.js directly,
|
||||||
|
// the resulting selection is extended by 1 char. Let's shrink it so that only the
|
||||||
|
// match is selected.
|
||||||
|
var to = Pos(next[1].line, next[1].ch - 1);
|
||||||
|
|
||||||
|
if (vim.visualMode) {
|
||||||
|
// If we were in visualLine or visualBlock mode, get out of it.
|
||||||
|
if (vim.visualLine || vim.visualBlock) {
|
||||||
|
vim.visualLine = false;
|
||||||
|
vim.visualBlock = false;
|
||||||
|
CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: ""});
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we're currently in visual mode, we should extend the selection to include
|
||||||
|
// the search result.
|
||||||
|
var anchor = vim.sel.anchor;
|
||||||
|
if (anchor) {
|
||||||
|
if (state.isReversed()) {
|
||||||
|
if (motionArgs.forward) {
|
||||||
|
return [anchor, from];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [anchor, to];
|
||||||
|
} else {
|
||||||
|
if (motionArgs.forward) {
|
||||||
|
return [anchor, to];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [anchor, from];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Let's turn visual mode on.
|
||||||
|
vim.visualMode = true;
|
||||||
|
vim.visualLine = false;
|
||||||
|
vim.visualBlock = false;
|
||||||
|
CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: ""});
|
||||||
|
}
|
||||||
|
|
||||||
|
return prev ? [to, from] : [from, to];
|
||||||
|
},
|
||||||
goToMark: function(cm, _head, motionArgs, vim) {
|
goToMark: function(cm, _head, motionArgs, vim) {
|
||||||
var pos = getMarkPos(cm, vim, motionArgs.selectedCharacter);
|
var pos = getMarkPos(cm, vim, motionArgs.selectedCharacter);
|
||||||
if (pos) {
|
if (pos) {
|
||||||
|
@ -1867,8 +1952,8 @@
|
||||||
// move to previous/next line is triggered.
|
// move to previous/next line is triggered.
|
||||||
if (line < first && cur.line == first){
|
if (line < first && cur.line == first){
|
||||||
return this.moveToStartOfLine(cm, head, motionArgs, vim);
|
return this.moveToStartOfLine(cm, head, motionArgs, vim);
|
||||||
}else if (line > last && cur.line == last){
|
} else if (line > last && cur.line == last){
|
||||||
return this.moveToEol(cm, head, motionArgs, vim, true);
|
return moveToEol(cm, head, motionArgs, vim, true);
|
||||||
}
|
}
|
||||||
if (motionArgs.toFirstChar){
|
if (motionArgs.toFirstChar){
|
||||||
endCh=findFirstNonWhiteSpaceCharacter(cm.getLine(line));
|
endCh=findFirstNonWhiteSpaceCharacter(cm.getLine(line));
|
||||||
|
@ -1970,16 +2055,8 @@
|
||||||
vim.lastHSPos = cm.charCoords(head,'div').left;
|
vim.lastHSPos = cm.charCoords(head,'div').left;
|
||||||
return moveToColumn(cm, repeat);
|
return moveToColumn(cm, repeat);
|
||||||
},
|
},
|
||||||
moveToEol: function(cm, head, motionArgs, vim, keepHPos) {
|
moveToEol: function(cm, head, motionArgs, vim) {
|
||||||
var cur = head;
|
return moveToEol(cm, head, motionArgs, vim, false);
|
||||||
var retval= Pos(cur.line + motionArgs.repeat - 1, Infinity);
|
|
||||||
var end=cm.clipPos(retval);
|
|
||||||
end.ch--;
|
|
||||||
if (!keepHPos) {
|
|
||||||
vim.lastHPos = Infinity;
|
|
||||||
vim.lastHSPos = cm.charCoords(end,'div').left;
|
|
||||||
}
|
|
||||||
return retval;
|
|
||||||
},
|
},
|
||||||
moveToFirstNonWhiteSpaceCharacter: function(cm, head) {
|
moveToFirstNonWhiteSpaceCharacter: function(cm, head) {
|
||||||
// Go to the start of the line where the text begins, or the end for
|
// Go to the start of the line where the text begins, or the end for
|
||||||
|
@ -3607,6 +3684,18 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function moveToEol(cm, head, motionArgs, vim, keepHPos) {
|
||||||
|
var cur = head;
|
||||||
|
var retval= Pos(cur.line + motionArgs.repeat - 1, Infinity);
|
||||||
|
var end=cm.clipPos(retval);
|
||||||
|
end.ch--;
|
||||||
|
if (!keepHPos) {
|
||||||
|
vim.lastHPos = Infinity;
|
||||||
|
vim.lastHSPos = cm.charCoords(end,'div').left;
|
||||||
|
}
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
function moveToCharacter(cm, repeat, forward, character) {
|
function moveToCharacter(cm, repeat, forward, character) {
|
||||||
var cur = cm.getCursor();
|
var cur = cm.getCursor();
|
||||||
var start = cur.ch;
|
var start = cur.ch;
|
||||||
|
@ -4348,6 +4437,42 @@
|
||||||
return cursor.from();
|
return cursor.from();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Pretty much the same as `findNext`, except for the following differences:
|
||||||
|
*
|
||||||
|
* 1. Before starting the search, move to the previous search. This way if our cursor is
|
||||||
|
* already inside a match, we should return the current match.
|
||||||
|
* 2. Rather than only returning the cursor's from, we return the cursor's from and to as a tuple.
|
||||||
|
*/
|
||||||
|
function findNextFromAndToInclusive(cm, prev, query, repeat, vim) {
|
||||||
|
if (repeat === undefined) { repeat = 1; }
|
||||||
|
return cm.operation(function() {
|
||||||
|
var pos = cm.getCursor();
|
||||||
|
var cursor = cm.getSearchCursor(query, pos);
|
||||||
|
|
||||||
|
// Go back one result to ensure that if the cursor is currently a match, we keep it.
|
||||||
|
var found = cursor.find(!prev);
|
||||||
|
|
||||||
|
// If we haven't moved, go back one more (similar to if i==0 logic in findNext).
|
||||||
|
if (!vim.visualMode && found && cursorEqual(cursor.from(), pos)) {
|
||||||
|
cursor.find(!prev);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < repeat; i++) {
|
||||||
|
found = cursor.find(prev);
|
||||||
|
if (!found) {
|
||||||
|
// SearchCursor may have returned null because it hit EOF, wrap
|
||||||
|
// around and try again.
|
||||||
|
cursor = cm.getSearchCursor(query,
|
||||||
|
(prev) ? Pos(cm.lastLine()) : Pos(cm.firstLine(), 0) );
|
||||||
|
if (!cursor.find(prev)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [cursor.from(), cursor.to()];
|
||||||
|
});
|
||||||
|
}
|
||||||
function clearSearchHighlight(cm) {
|
function clearSearchHighlight(cm) {
|
||||||
var state = getSearchState(cm);
|
var state = getSearchState(cm);
|
||||||
cm.removeOverlay(getSearchState(cm).getOverlay());
|
cm.removeOverlay(getSearchState(cm).getOverlay());
|
||||||
|
|
1
vendor/codemirror/lib/codemirror.css
vendored
1
vendor/codemirror/lib/codemirror.css
vendored
|
@ -184,6 +184,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;}
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 6;
|
z-index: 6;
|
||||||
display: none;
|
display: none;
|
||||||
|
outline: none;
|
||||||
}
|
}
|
||||||
.CodeMirror-vscrollbar {
|
.CodeMirror-vscrollbar {
|
||||||
right: 0; top: 0;
|
right: 0; top: 0;
|
||||||
|
|
42
vendor/codemirror/lib/codemirror.js
vendored
42
vendor/codemirror/lib/codemirror.js
vendored
|
@ -1841,7 +1841,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;
|
builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;
|
||||||
if (style || startStyle || endStyle || mustWrap || css) {
|
if (style || startStyle || endStyle || mustWrap || css || attributes) {
|
||||||
var fullStyle = style || "";
|
var fullStyle = style || "";
|
||||||
if (startStyle) { fullStyle += startStyle; }
|
if (startStyle) { fullStyle += startStyle; }
|
||||||
if (endStyle) { fullStyle += endStyle; }
|
if (endStyle) { fullStyle += endStyle; }
|
||||||
|
@ -3276,8 +3276,10 @@
|
||||||
var on = true;
|
var on = true;
|
||||||
display.cursorDiv.style.visibility = "";
|
display.cursorDiv.style.visibility = "";
|
||||||
if (cm.options.cursorBlinkRate > 0)
|
if (cm.options.cursorBlinkRate > 0)
|
||||||
{ display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; },
|
{ display.blinker = setInterval(function () {
|
||||||
cm.options.cursorBlinkRate); }
|
if (!cm.hasFocus()) { onBlur(cm); }
|
||||||
|
display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden";
|
||||||
|
}, cm.options.cursorBlinkRate); }
|
||||||
else if (cm.options.cursorBlinkRate < 0)
|
else if (cm.options.cursorBlinkRate < 0)
|
||||||
{ display.cursorDiv.style.visibility = "hidden"; }
|
{ display.cursorDiv.style.visibility = "hidden"; }
|
||||||
}
|
}
|
||||||
|
@ -7002,7 +7004,7 @@
|
||||||
goGroupRight: function (cm) { return cm.moveH(1, "group"); },
|
goGroupRight: function (cm) { return cm.moveH(1, "group"); },
|
||||||
goGroupLeft: function (cm) { return cm.moveH(-1, "group"); },
|
goGroupLeft: function (cm) { return cm.moveH(-1, "group"); },
|
||||||
goWordRight: function (cm) { return cm.moveH(1, "word"); },
|
goWordRight: function (cm) { return cm.moveH(1, "word"); },
|
||||||
delCharBefore: function (cm) { return cm.deleteH(-1, "char"); },
|
delCharBefore: function (cm) { return cm.deleteH(-1, "codepoint"); },
|
||||||
delCharAfter: function (cm) { return cm.deleteH(1, "char"); },
|
delCharAfter: function (cm) { return cm.deleteH(1, "char"); },
|
||||||
delWordBefore: function (cm) { return cm.deleteH(-1, "word"); },
|
delWordBefore: function (cm) { return cm.deleteH(-1, "word"); },
|
||||||
delWordAfter: function (cm) { return cm.deleteH(1, "word"); },
|
delWordAfter: function (cm) { return cm.deleteH(1, "word"); },
|
||||||
|
@ -7877,7 +7879,9 @@
|
||||||
attachDoc(this, doc);
|
attachDoc(this, doc);
|
||||||
|
|
||||||
if ((options.autofocus && !mobile) || this.hasFocus())
|
if ((options.autofocus && !mobile) || this.hasFocus())
|
||||||
{ setTimeout(bind(onFocus, this), 20); }
|
{ setTimeout(function () {
|
||||||
|
if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }
|
||||||
|
}, 20); }
|
||||||
else
|
else
|
||||||
{ onBlur(this); }
|
{ onBlur(this); }
|
||||||
|
|
||||||
|
@ -8640,14 +8644,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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 "codepoint", "char", "column" (like char, but
|
||||||
// cross line boundaries), "word" (across next word), or "group" (to
|
// doesn't cross line boundaries), "word" (across next word), or
|
||||||
// the start of next group of word or non-word-non-whitespace
|
// "group" (to the start of next group of word or
|
||||||
// chars). The visually param controls whether, in right-to-left
|
// non-word-non-whitespace chars). The visually param controls
|
||||||
// text, direction 1 means to move towards the next index in the
|
// whether, in right-to-left text, direction 1 means to move towards
|
||||||
// string, or towards the character to the right of the current
|
// the next index in the string, or towards the character to the right
|
||||||
// position. The resulting position will have a hitSide=true
|
// of the current position. The resulting position will have a
|
||||||
// property if it reached the end of the document.
|
// hitSide=true property if it reached the end of the document.
|
||||||
function findPosH(doc, pos, dir, unit, visually) {
|
function findPosH(doc, pos, dir, unit, visually) {
|
||||||
var oldPos = pos;
|
var oldPos = pos;
|
||||||
var origDir = dir;
|
var origDir = dir;
|
||||||
|
@ -8661,7 +8665,12 @@
|
||||||
}
|
}
|
||||||
function moveOnce(boundToLine) {
|
function moveOnce(boundToLine) {
|
||||||
var next;
|
var next;
|
||||||
if (visually) {
|
if (unit == "codepoint") {
|
||||||
|
var ch = lineObj.text.charCodeAt(pos.ch + (unit > 0 ? 0 : -1));
|
||||||
|
if (isNaN(ch)) { next = null; }
|
||||||
|
else { next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (ch >= 0xD800 && ch < 0xDC00 ? 2 : 1))),
|
||||||
|
-dir); }
|
||||||
|
} else if (visually) {
|
||||||
next = moveVisually(doc.cm, lineObj, pos, dir);
|
next = moveVisually(doc.cm, lineObj, pos, dir);
|
||||||
} else {
|
} else {
|
||||||
next = moveLogically(lineObj, pos, dir);
|
next = moveLogically(lineObj, pos, dir);
|
||||||
|
@ -8677,7 +8686,7 @@
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unit == "char") {
|
if (unit == "char" || unit == "codepoint") {
|
||||||
moveOnce();
|
moveOnce();
|
||||||
} else if (unit == "column") {
|
} else if (unit == "column") {
|
||||||
moveOnce(true);
|
moveOnce(true);
|
||||||
|
@ -9621,6 +9630,7 @@
|
||||||
TextareaInput.prototype.readOnlyChanged = function (val) {
|
TextareaInput.prototype.readOnlyChanged = function (val) {
|
||||||
if (!val) { this.reset(); }
|
if (!val) { this.reset(); }
|
||||||
this.textarea.disabled = val == "nocursor";
|
this.textarea.disabled = val == "nocursor";
|
||||||
|
this.textarea.readOnly = !!val;
|
||||||
};
|
};
|
||||||
|
|
||||||
TextareaInput.prototype.setUneditable = function () {};
|
TextareaInput.prototype.setUneditable = function () {};
|
||||||
|
@ -9771,7 +9781,7 @@
|
||||||
|
|
||||||
addLegacyProps(CodeMirror);
|
addLegacyProps(CodeMirror);
|
||||||
|
|
||||||
CodeMirror.version = "5.57.0";
|
CodeMirror.version = "5.58.0";
|
||||||
|
|
||||||
return CodeMirror;
|
return CodeMirror;
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
||||||
if (ch != ">" || !state.lexical || state.lexical.type != ">") {
|
if (ch != ">" || !state.lexical || state.lexical.type != ">") {
|
||||||
if (stream.eat("=")) {
|
if (stream.eat("=")) {
|
||||||
if (ch == "!" || ch == "=") stream.eat("=")
|
if (ch == "!" || ch == "=") stream.eat("=")
|
||||||
} else if (/[<>*+\-]/.test(ch)) {
|
} else if (/[<>*+\-|&?]/.test(ch)) {
|
||||||
stream.eat(ch)
|
stream.eat(ch)
|
||||||
if (ch == ">") stream.eat(ch)
|
if (ch == ">") stream.eat(ch)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user