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