* simple.el (delete-trailing-lines): New option.

(delete-trailing-whitespace): Obey it.

Fixes: debbugs:11879
This commit is contained in:
Chong Yidong 2012-07-28 18:38:55 +08:00
parent 049a0936ca
commit 345a225867
3 changed files with 31 additions and 6 deletions

View file

@ -147,6 +147,10 @@ for it.
* Editing Changes in Emacs 24.2
** New option `delete-trailing-lines' specifies whether the
M-x delete-trailing-lines command should delete trailing lines at the
end of the buffer. It defaults to t.
** Search changes
*** Global `M-s _' starts a symbol (identifier) incremental search,

View file

@ -1,3 +1,8 @@
2012-07-28 Chong Yidong <cyd@gnu.org>
* simple.el (delete-trailing-lines): New option.
(delete-trailing-whitespace): Obey it (Bug#11879).
2012-07-28 David Engster <deng@randomsample.de>
* xml.el (xml-node-name, xml-parse-file, xml-parse-region):

View file

@ -564,13 +564,28 @@ On nonblank line, delete any immediately following blank lines."
(if (looking-at "^[ \t]*\n\\'")
(delete-region (point) (point-max)))))
(defcustom delete-trailing-lines t
"If non-nil, \\[delete-trailing-whitespace] deletes trailing lines.
Trailing lines are deleted only if `delete-trailing-whitespace'
is called on the entire buffer (rather than an active region)."
:type 'boolean
:group 'editing
:version "24.2")
(defun delete-trailing-whitespace (&optional start end)
"Delete all the trailing whitespace across the current buffer.
All whitespace after the last non-whitespace character in a line is deleted.
This respects narrowing, created by \\[narrow-to-region] and friends.
A formfeed is not considered whitespace by this function.
If END is nil, also delete all trailing lines at the end of the buffer.
If the region is active, only delete whitespace within the region."
"Delete trailing whitespace between START and END.
If called interactively, START and END are the start/end of the
region if the mark is active, or of the buffer's accessible
portion if the mark is inactive.
This command deletes whitespace characters after the last
non-whitespace character in each line between START and END. It
does not consider formfeed characters to be whitespace.
If this command acts on the entire buffer (i.e. if called
interactively with the mark inactive, or called from Lisp with
END nil), it also deletes all trailing lines at the end of the
buffer if the variable `delete-trailing-lines' is non-nil."
(interactive (progn
(barf-if-buffer-read-only)
(if (use-region-p)
@ -590,6 +605,7 @@ If the region is active, only delete whitespace within the region."
;; Delete trailing empty lines.
(goto-char end-marker)
(when (and (not end)
delete-trailing-lines
;; Really the end of buffer.
(save-restriction (widen) (eobp))
(<= (skip-chars-backward "\n") -2))