\f
* 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,
+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):
(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)
;; 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))