From 3073bdd97a4e55c3fa8c69ecbabdc18c4dd0b3a7 Mon Sep 17 00:00:00 2001 From: Nicolas Kick <nickasd@users.noreply.github.com> Date: Thu, 13 Jul 2017 20:14:35 +0200 Subject: [PATCH] [sublime keymap] "Add to selection" bindings (Ctrl-Alt-Up/Down on Windows, Cmd-Shift-Up/Down on Mac) --- keymap/sublime.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/keymap/sublime.js b/keymap/sublime.js index 0ce895587..98266e44f 100644 --- a/keymap/sublime.js +++ b/keymap/sublime.js @@ -165,6 +165,23 @@ cm.state.sublimeFindFullWord = cm.doc.sel; }; + function addCursorToSelection(cm, dir) { + var ranges = cm.listSelections(), newRanges = []; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + var newAnchor = cm.findPosV(range.anchor, dir, "line"); + var newHead = cm.findPosV(range.head, dir, "line"); + var newRange = {anchor: newAnchor, head: newHead}; + newRanges.push(range); + newRanges.push(newRange); + } + cm.setSelections(newRanges); + } + + var addCursorToLineCombo = mac ? "Shift-Cmd" : 'Alt-Ctrl'; + cmds[map[addCursorToLineCombo + "Up"] = "addCursorToPrevLine"] = function(cm) { addCursorToSelection(cm, -1); }; + cmds[map[addCursorToLineCombo + "Down"] = "addCursorToNextLine"] = function(cm) { addCursorToSelection(cm, 1); }; + function isSelectedRange(ranges, from, to) { for (var i = 0; i < ranges.length; i++) if (ranges[i].from() == from && ranges[i].to() == to) return true -- GitLab