When pressing backspace, it deletes a single character, however, I would like it to go back the the previous tab-stop level in the case there is only preceding white-space.
This can be done using this function, based on this answer on the Emacs wiki.
(defun my-backspace-whitespace-to-tab-stop () "Delete whitespace backwards to the next tab-stop, otherwise delete one character." (interactive) (if (or indent-tabs-mode (use-region-p) (> (point) (save-excursion (back-to-indentation) (point)))) (call-interactively 'backward-delete-char) (let ((step (% (current-column) tab-width)) (pt (point))) (when (zerop step) (setq step tab-width)) ;; Account for edge case near beginning of buffer. (setq step (min (- pt 1) step)) (save-match-data (if (string-match "[^\t ]*\\([\t ]+\\)$" (buffer-substring-no-properties (- pt step) pt)) (backward-delete-char (- (match-end 1) (match-beginning 1))) (call-interactively 'backward-delete-char))))))