Commit cc2b2b6c authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(backward-delete-char-untabify-method): New user option.

(backward-delete-char-untabify): Obey it.
This implements "hungry" delete.
parent b4b33e01
......@@ -322,12 +322,22 @@ column specified by the function `current-left-margin'."
(if (eq arg '-) (setq arg -1))
(kill-region (point) (forward-point (- arg))))
(defcustom backward-delete-char-untabify-method 'untabify
"*The method for untabifying when deleting backward.
Can be `untabify' -- turn a tab to many spaces, then delete one space.
`hungry' -- delete all whitespace, both tabs and spaces.
nil -- just delete one character."
:type '(choice (const untabify) (const hungry) (const nil))
:group 'killing)
(defun backward-delete-char-untabify (arg &optional killp)
"Delete characters backward, changing tabs into spaces.
The exact behavior depends on `backward-delete-char-untabify-method'.
Delete ARG chars, and kill (save in kill ring) if KILLP is non-nil.
Interactively, ARG is the prefix arg (default 1)
and KILLP is t if a prefix arg was specified."
(interactive "*p\nP")
(when (eq backward-delete-char-untabify-method 'untabify)
(let ((count arg))
(while (and (> count 0) (not (bobp)))
......@@ -338,8 +348,14 @@ and KILLP is t if a prefix arg was specified."
(insert-char ?\ col)
(delete-char 1)))
(forward-char -1)
(setq count (1- count)))))
(delete-backward-char arg killp))
(setq count (1- count))))))
(if (eq backward-delete-char-untabify-method 'hungry)
(let ((wh (- (point) (save-excursion (skip-chars-backward " \t")
(+ arg (if (zerop wh) 0 (1- wh))))
(defun zap-to-char (arg char)
"Kill up to and including ARG'th occurrence of CHAR.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment