codemirror 4.13
This commit is contained in:
+46
-7
@@ -776,7 +776,16 @@
|
||||
},
|
||||
handleEx: function(cm, input) {
|
||||
exCommandDispatcher.processCommand(cm, input);
|
||||
}
|
||||
},
|
||||
|
||||
defineMotion: defineMotion,
|
||||
defineAction: defineAction,
|
||||
defineOperator: defineOperator,
|
||||
mapCommand: mapCommand,
|
||||
_mapCommand: _mapCommand,
|
||||
|
||||
exitVisualMode: exitVisualMode,
|
||||
exitInsertMode: exitInsertMode
|
||||
};
|
||||
|
||||
// Represents the current input state.
|
||||
@@ -1449,7 +1458,7 @@
|
||||
var operatorMoveTo = operators[operator](
|
||||
cm, operatorArgs, cmSel.ranges, oldAnchor, newHead);
|
||||
if (vim.visualMode) {
|
||||
exitVisualMode(cm);
|
||||
exitVisualMode(cm, operatorMoveTo != null);
|
||||
}
|
||||
if (operatorMoveTo) {
|
||||
cm.setCursor(operatorMoveTo);
|
||||
@@ -1817,6 +1826,10 @@
|
||||
}
|
||||
};
|
||||
|
||||
function defineMotion(name, fn) {
|
||||
motions[name] = fn;
|
||||
}
|
||||
|
||||
function fillArray(val, times) {
|
||||
var arr = [];
|
||||
for (var i = 0; i < times; i++) {
|
||||
@@ -1899,7 +1912,7 @@
|
||||
vimGlobalState.registerController.pushText(
|
||||
args.registerName, 'delete', text,
|
||||
args.linewise, vim.visualBlock);
|
||||
return finalHead;
|
||||
return clipCursorToContent(cm, finalHead);
|
||||
},
|
||||
indent: function(cm, args, ranges) {
|
||||
var vim = cm.state.vim;
|
||||
@@ -1967,6 +1980,10 @@
|
||||
}
|
||||
};
|
||||
|
||||
function defineOperator(name, fn) {
|
||||
operators[name] = fn;
|
||||
}
|
||||
|
||||
var actions = {
|
||||
jumpListWalk: function(cm, actionArgs, vim) {
|
||||
if (vim.visualMode) {
|
||||
@@ -2183,6 +2200,11 @@
|
||||
if (vim.visualMode) {
|
||||
curStart = cm.getCursor('anchor');
|
||||
curEnd = cm.getCursor('head');
|
||||
if (cursorIsBefore(curEnd, curStart)) {
|
||||
var tmp = curEnd;
|
||||
curEnd = curStart;
|
||||
curStart = tmp;
|
||||
}
|
||||
curEnd.ch = lineLength(cm, curEnd.line) - 1;
|
||||
} else {
|
||||
// Repeat is the number of lines to join. Minimum 2 lines.
|
||||
@@ -2201,10 +2223,10 @@
|
||||
cm.replaceRange(text, curStart, tmp);
|
||||
}
|
||||
var curFinalPos = Pos(curStart.line, finalCh);
|
||||
cm.setCursor(curFinalPos);
|
||||
if (vim.visualMode) {
|
||||
exitVisualMode(cm);
|
||||
exitVisualMode(cm, false);
|
||||
}
|
||||
cm.setCursor(curFinalPos);
|
||||
},
|
||||
newLineAndEnterInsertMode: function(cm, actionArgs, vim) {
|
||||
vim.insertMode = true;
|
||||
@@ -2367,7 +2389,7 @@
|
||||
}
|
||||
}
|
||||
if (vim.visualMode) {
|
||||
exitVisualMode(cm);
|
||||
exitVisualMode(cm, false);
|
||||
}
|
||||
cm.setCursor(curPosFinal);
|
||||
},
|
||||
@@ -2425,7 +2447,7 @@
|
||||
curStart = cursorIsBefore(selections[0].anchor, selections[0].head) ?
|
||||
selections[0].anchor : selections[0].head;
|
||||
cm.setCursor(curStart);
|
||||
exitVisualMode(cm);
|
||||
exitVisualMode(cm, false);
|
||||
} else {
|
||||
cm.setCursor(offsetCursor(curEnd, 0, -1));
|
||||
}
|
||||
@@ -2473,6 +2495,10 @@
|
||||
exitInsertMode: exitInsertMode
|
||||
};
|
||||
|
||||
function defineAction(name, fn) {
|
||||
actions[name] = fn;
|
||||
}
|
||||
|
||||
/*
|
||||
* Below are miscellaneous utility functions used by vim.js
|
||||
*/
|
||||
@@ -4627,6 +4653,19 @@
|
||||
}
|
||||
}
|
||||
|
||||
function _mapCommand(command) {
|
||||
defaultKeymap.push(command);
|
||||
}
|
||||
|
||||
function mapCommand(keys, type, name, args, extra) {
|
||||
var command = {keys: keys, type: type};
|
||||
command[type] = name;
|
||||
command[type + "Args"] = args;
|
||||
for (var key in extra)
|
||||
command[key] = extra[key];
|
||||
_mapCommand(command);
|
||||
}
|
||||
|
||||
// The timeout in milliseconds for the two-character ESC keymap should be
|
||||
// adjusted according to your typing speed to prevent false positives.
|
||||
defineOption('insertModeEscKeysTimeout', 200, 'number');
|
||||
|
||||
Reference in New Issue
Block a user