summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorChong Yidong <cyd@gnu.org>2012-07-28 18:38:55 +0800
committerChong Yidong <cyd@gnu.org>2012-07-28 18:38:55 +0800
commit345a2258671ec587a32129daf37fb53b3eea903e (patch)
treed56dcdb70927a4cf7855ce14484a050846975279 /lisp
parent049a0936caca462a2f12107813a24b70eeb97c3e (diff)
downloademacs-345a2258671ec587a32129daf37fb53b3eea903e.tar.gz
* simple.el (delete-trailing-lines): New option.
(delete-trailing-whitespace): Obey it. Fixes: debbugs:11879
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/simple.el28
2 files changed, 27 insertions, 6 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index a158e4f347a..410a23592df 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -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):
diff --git a/lisp/simple.el b/lisp/simple.el
index 3240ede0299..2011ff2b1bb 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -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))