From 8dbb84f44d3f4cdecde25e910277ca1816f80a24 Mon Sep 17 00:00:00 2001 From: Vincent Woo <me@vincentwoo.com> Date: Fri, 13 Mar 2015 04:08:41 -0700 Subject: [PATCH] [sublime keymap] Add sublime-style smart backspace --- keymap/sublime.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/keymap/sublime.js b/keymap/sublime.js index 45936c36..2b49f1ae 100644 --- a/keymap/sublime.js +++ b/keymap/sublime.js @@ -409,6 +409,22 @@ map[cK + ctrl + "Backspace"] = "delLineLeft"; + cmds[map["Backspace"] = "smartBackspace"] = function(cm) { + if (cm.somethingSelected()) { + return CodeMirror.Pass; + } + + var tabSize = cm.getOption('tabSize'); + var cursor = cm.getCursor(); + var toStartOfLine = cm.getRange({line: cursor.line, ch: 0}, cursor); + var column = CodeMirror.countColumn(toStartOfLine, null, tabSize); + + if (/^\s+$/.test(toStartOfLine) && column % tabSize == 0) { + return cm.indentSelection('subtract'); + } + return CodeMirror.Pass; + }; + cmds[map[cK + ctrl + "K"] = "delLineRight"] = function(cm) { cm.operation(function() { var ranges = cm.listSelections(); -- GitLab