mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-01 11:14:55 +00:00
* lisp/sort.el (delete-duplicate-lines): Accept an optional `keep-blanks'
argument (before the `interactive' argument).
This commit is contained in:
parent
5010583555
commit
9631677d73
6
etc/NEWS
6
etc/NEWS
@ -264,10 +264,12 @@ New features include:
|
||||
name and arguments. Useful to trace the value of (current-buffer) or
|
||||
(point) when the function is invoked.
|
||||
|
||||
** New command `delete-duplicate-lines' has two types of operation:
|
||||
when its arg ADJACENT is non-nil (when called interactively with C-u C-u)
|
||||
** New command `delete-duplicate-lines' has new types of operation:
|
||||
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 it arg KEEP-BLANKS is non-nil (when called interactively with C-u C-u C-u),
|
||||
duplicate blank lines are preserved.
|
||||
|
||||
** New `cycle-spacing' command allows cycling between having just one
|
||||
space, no spaces, or reverting to the original spacing. Like
|
||||
|
@ -1,3 +1,8 @@
|
||||
2013-05-24 Sam Steingold <sds@gnu.org>
|
||||
|
||||
* sort.el (delete-duplicate-lines): Accept an optional `keep-blanks'
|
||||
argument (before the `interactive' argument).
|
||||
|
||||
2013-05-24 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* image-mode.el (image-mode-winprops): Add winprops to
|
||||
|
25
lisp/sort.el
25
lisp/sort.el
@ -568,7 +568,8 @@ From a program takes two point or marker arguments, BEG and END."
|
||||
(insert (car ll)))))
|
||||
|
||||
;;;###autoload
|
||||
(defun delete-duplicate-lines (beg end &optional reverse adjacent interactive)
|
||||
(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
|
||||
@ -582,6 +583,9 @@ delete repeated lines only if they are adjacent. It works like the utility
|
||||
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."
|
||||
@ -591,6 +595,7 @@ function behaves in all respects as if it had been called interactively."
|
||||
(list (region-beginning) (region-end)
|
||||
(equal current-prefix-arg '(4))
|
||||
(equal current-prefix-arg '(16))
|
||||
(equal current-prefix-arg '(64))
|
||||
t)))
|
||||
(let ((lines (unless adjacent (make-hash-table :weakness 'key :test 'equal)))
|
||||
line prev-line
|
||||
@ -605,14 +610,16 @@ function behaves in all respects as if it had been called interactively."
|
||||
(and (< (point) end) (not (eobp))))
|
||||
(setq line (buffer-substring-no-properties
|
||||
(line-beginning-position) (line-end-position)))
|
||||
(if (if adjacent (equal line prev-line) (gethash line lines))
|
||||
(progn
|
||||
(delete-region (progn (forward-line 0) (point))
|
||||
(progn (forward-line 1) (point)))
|
||||
(if reverse (forward-line -1))
|
||||
(setq count (1+ count)))
|
||||
(if adjacent (setq prev-line line) (puthash line t lines))
|
||||
(forward-line (if reverse -1 1)))))
|
||||
(if (and keep-blanks (string= "" line))
|
||||
(forward-line 1)
|
||||
(if (if adjacent (equal line prev-line) (gethash line lines))
|
||||
(progn
|
||||
(delete-region (progn (forward-line 0) (point))
|
||||
(progn (forward-line 1) (point)))
|
||||
(if reverse (forward-line -1))
|
||||
(setq count (1+ count)))
|
||||
(if adjacent (setq prev-line line) (puthash line t lines))
|
||||
(forward-line (if reverse -1 1))))))
|
||||
(set-marker beg nil)
|
||||
(set-marker end nil)
|
||||
(when interactive
|
||||
|
Loading…
Reference in New Issue
Block a user