summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/emacs/ChangeLog4
-rw-r--r--doc/emacs/killing.texi11
-rw-r--r--etc/NEWS8
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/sort.el36
5 files changed, 39 insertions, 24 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 7e42d0fcaba..ac8c13ddf1d 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,7 @@
+2014-01-26 Glenn Morris <rgm@gnu.org>
+
+ * killing.texi (Deletion): Mention delete-duplicate-lines.
+
2014-01-24 Glenn Morris <rgm@gnu.org>
* ack.texi (Acknowledgments): No longer mention obsolete xesam.el,
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi
index 52adbb85431..1da226971eb 100644
--- a/doc/emacs/killing.texi
+++ b/doc/emacs/killing.texi
@@ -136,6 +136,17 @@ the current line). On a solitary blank line, it deletes that line.
previous line, by deleting a newline and all surrounding spaces, usually
leaving a single space. @xref{Indentation,M-^}.
+@c Not really sure where to put this...
+@findex delete-duplicate-lines
+ The command @code{delete-duplicate-lines} searches the region for
+identical lines, and removes all but one copy of each. Normally it
+keeps the first instance of each repeated line, but with a @kbd{C-u}
+prefix argument it keeps the last. With a @kbd{C-u C-u} prefix
+argument, it only searches for adjacent identical lines. This is a
+more efficient mode of operation, useful when the lines have already
+been sorted. With a @kbd{C-u C-u C-u} prefix argument, it retains
+repeated blank lines.
+
@node Killing by Lines
@subsection Killing by Lines
diff --git a/etc/NEWS b/etc/NEWS
index db79daec851..f913b80da86 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -312,12 +312,10 @@ macros in registers.
*** New command `C-x r f' (`frameset-to-register').
See Changes in Emacs 24.4, above.
++++
** New command `delete-duplicate-lines'.
-When its arg ADJACENT is non-nil (when called interactively with C-u
-C-u) it works like the utility `uniq'. Otherwise by default it
-deletes duplicate lines everywhere in the region without regard to
-adjacency. When its arg KEEP-BLANKS is non-nil (when called
-interactively with C-u C-u C-u), duplicate blank lines are preserved.
+This searches the region for identical lines, and removes all but one
+copy of each repeated line. The lines need not be sorted.
* Changes in Specialized Modes and Packages in Emacs 24.4
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b9e79743b3c..cded7bcb0fc 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,7 @@
+2014-01-26 Glenn Morris <rgm@gnu.org>
+
+ * sort.el (delete-duplicate-lines): Doc fix.
+
2014-01-25 RĂ¼diger Sonderfeld <ruediger@c-plusplus.de>
* progmodes/ada-mode.el (ada):
diff --git a/lisp/sort.el b/lisp/sort.el
index 9e89d0089b2..152345083fb 100644
--- a/lisp/sort.el
+++ b/lisp/sort.el
@@ -570,25 +570,23 @@ From a program takes two point or marker arguments, BEG and END."
;;;###autoload
(defun delete-duplicate-lines (beg end &optional reverse adjacent keep-blanks
interactive)
- "Delete duplicate lines in the region between BEG and END.
-
-If REVERSE is nil, search and delete duplicates forward keeping the first
-occurrence of duplicate lines. If REVERSE is non-nil (when called
-interactively with C-u prefix), search and delete duplicates backward
-keeping the last occurrence of duplicate lines.
-
-If ADJACENT is non-nil (when called interactively with two C-u prefixes),
-delete repeated lines only if they are adjacent. It works like the utility
-`uniq' and is useful when lines are already sorted in a large file since
-this is more efficient in performance and memory usage than when ADJACENT
-is nil that uses additional memory to remember previous lines.
-
-If KEEP-BLANKS is non-nil (when called interactively with three C-u prefixes),
-duplicate blank lines are preserved.
-
-When called from Lisp and INTERACTIVE is omitted or nil, return the number
-of deleted duplicate lines, do not print it; if INTERACTIVE is t, the
-function behaves in all respects as if it had been called interactively."
+ "Delete all but one copy of any identical lines in the region.
+Non-interactively, arguments BEG and END delimit the region.
+Normally it searches forwards, keeping the first instance of
+each identical line. If REVERSE is non-nil (interactively, with
+a C-u prefix), it searches backwards and keeps the last instance of
+each repeated line.
+
+Identical lines need not be adjacent, unless the argument
+ADJACENT is non-nil (interactively, with a C-u C-u prefix).
+This is a more efficient mode of operation, and may be useful
+on large regions that have already been sorted.
+
+If the argument KEEP-BLANKS is non-nil (interactively, with a
+C-u C-u C-u prefix), it retains repeated blank lines.
+
+Returns the number of deleted lines. Interactively, or if INTERACTIVE
+is non-nil, it also prints a message describing the number of deletions."
(interactive
(progn
(barf-if-buffer-read-only)