New deletion command
This commit is contained in:
@@ -315,6 +315,36 @@ Apply OLDFUN with to ARGS."
|
|||||||
. conf-mode))
|
. conf-mode))
|
||||||
(add-to-list 'auto-mode-alist `(,(rx (or bos "/") "README" eos) . markdown-mode))
|
(add-to-list 'auto-mode-alist `(,(rx (or bos "/") "README" eos) . markdown-mode))
|
||||||
|
|
||||||
|
(defun my/delete-backward-char-or-tab (n &optional killflag)
|
||||||
|
"Delete N characters, or that many characters worth of tabs, before point.
|
||||||
|
If there is only whitespace between point and the beginning of the current line,
|
||||||
|
delete N characters worth of tabs, rounding up. For example, if N is 2 and
|
||||||
|
`tab-width' is 4, delete one tab. If `indent-tabs-mode' is nil, instead delete
|
||||||
|
`tab-width' spaces. In this case, deletion stops at the beginning of the
|
||||||
|
current line.
|
||||||
|
|
||||||
|
If point is anywhere else on the line, delete N characters.
|
||||||
|
|
||||||
|
If KILLFLAG is non-nil, save the deleted text to the kill ring."
|
||||||
|
(interactive "p\nP")
|
||||||
|
(unless (natnump n)
|
||||||
|
(signal 'wrong-type-argument (list 'natnump n)))
|
||||||
|
(cl-flet ((only-indentation-p ()
|
||||||
|
(let ((start (point)))
|
||||||
|
(save-excursion
|
||||||
|
(beginning-of-line)
|
||||||
|
(skip-syntax-forward " " start)
|
||||||
|
;; `back-to-indentation' does this, so I do too
|
||||||
|
(backward-prefix-chars)
|
||||||
|
(>= (point) start))))
|
||||||
|
(count-chars-for-delete-tab ()
|
||||||
|
(min (* (ceiling n tab-width) (if indent-tabs-mode 1 tab-width))
|
||||||
|
(- (point) (pos-bol)))))
|
||||||
|
(if (not (only-indentation-p))
|
||||||
|
(delete-char (- n) killflag)
|
||||||
|
(delete-char (- (count-chars-for-delete-tab)) killflag))))
|
||||||
|
(keymap-set prog-mode-map "DEL" #'my/delete-backward-char-or-tab)
|
||||||
|
|
||||||
;; Show the fill column
|
;; Show the fill column
|
||||||
;; (global-display-fill-column-indicator-mode -1)
|
;; (global-display-fill-column-indicator-mode -1)
|
||||||
;; (setopt display-fill-column-indicator-warning t)
|
;; (setopt display-fill-column-indicator-warning t)
|
||||||
|
|||||||
Reference in New Issue
Block a user