From 169d6004f9b348bec93f4feb6f3b06ce5c3f116c Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 25 Jan 2014 17:10:18 -0800 Subject: [PATCH] Some doc for delete-duplicate-lines * doc/emacs/killing.texi (Deletion): Mention delete-duplicate-lines. * lisp/sort.el (delete-duplicate-lines): Doc fix. * etc/NEWS: Related edit. --- doc/emacs/ChangeLog | 4 ++++ doc/emacs/killing.texi | 11 +++++++++++ etc/NEWS | 8 +++----- lisp/ChangeLog | 4 ++++ lisp/sort.el | 36 +++++++++++++++++------------------- 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 + + * killing.texi (Deletion): Mention delete-duplicate-lines. + 2014-01-24 Glenn Morris * 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 + + * sort.el (delete-duplicate-lines): Doc fix. + 2014-01-25 Rüdiger Sonderfeld * 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) -- 2.39.2