[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r112717: * lisp/sort.el (delete-dupli
From: |
Sam Steingold |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r112717: * lisp/sort.el (delete-duplicate-lines): Accept an optional `keep-blanks' |
Date: |
Fri, 24 May 2013 14:39:21 -0400 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 112717
committer: Sam Steingold <address@hidden>
branch nick: trunk
timestamp: Fri 2013-05-24 14:39:21 -0400
message:
* lisp/sort.el (delete-duplicate-lines): Accept an optional `keep-blanks'
argument (before the `interactive' argument).
modified:
etc/NEWS
lisp/ChangeLog
lisp/sort.el
=== modified file 'etc/NEWS'
--- a/etc/NEWS 2013-05-24 10:43:31 +0000
+++ b/etc/NEWS 2013-05-24 18:39:21 +0000
@@ -264,10 +264,12 @@
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
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2013-05-24 17:42:23 +0000
+++ b/lisp/ChangeLog 2013-05-24 18:39:21 +0000
@@ -1,3 +1,8 @@
+2013-05-24 Sam Steingold <address@hidden>
+
+ * sort.el (delete-duplicate-lines): Accept an optional `keep-blanks'
+ argument (before the `interactive' argument).
+
2013-05-24 Stefan Monnier <address@hidden>
* image-mode.el (image-mode-winprops): Add winprops to
=== modified file 'lisp/sort.el'
--- a/lisp/sort.el 2013-01-02 16:13:04 +0000
+++ b/lisp/sort.el 2013-05-24 18:39:21 +0000
@@ -568,7 +568,8 @@
(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 @@
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 @@
(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 @@
(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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r112717: * lisp/sort.el (delete-duplicate-lines): Accept an optional `keep-blanks',
Sam Steingold <=