[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#864: 23.0.60; Info-dir-remove-duplicates fails to remove duplicates
From: |
martin rudalics |
Subject: |
bug#864: 23.0.60; Info-dir-remove-duplicates fails to remove duplicates |
Date: |
Wed, 03 Sep 2008 08:43:34 +0200 |
User-agent: |
Thunderbird 2.0.0.16 (Windows/20080708) |
> I did bellow patch to fix this. (You know, I am not a good Lisp
> programmer.)
>
> Index: lisp/info.el
> ===================================================================
> RCS file: /sources/emacs/emacs/lisp/info.el,v
> retrieving revision 1.541
> diff -u -d -w -r1.541 info.el
> --- lisp/info.el 30 Aug 2008 20:16:36 -0000 1.541
> +++ lisp/info.el 2 Sep 2008 15:05:54 -0000
> @@ -1222,9 +1222,10 @@
> ;; Fold case straight away; `member-ignore-case' here wasteful.
> (let ((x (downcase (match-string 1))))
> (if (member x seen)
> - (delete-region (match-beginning 0)
> + (progn (delete-region (match-beginning 0)
> (progn (re-search-forward "^[^ \t]" nil t)
> (match-beginning 0)))
> + (forward-line 0))
> (push x seen))))))))))
>
> ;; Note that on entry to this function the current-buffer must be the
Looks good to me. However, could you try the attached patch instead
which also does away with the quite obscure "limit" thing.
martin
*** info.el.~1.541.~ 2008-08-31 09:48:43.390625000 +0200
--- info.el 2008-09-03 08:33:07.734375000 +0200
***************
*** 1213,1231 ****
(delete-region (1- (point)) (point))))
;; Now remove duplicate entries under the same heading.
! (let ((seen nil)
! (limit (point-marker)))
! (goto-char start)
! (while (and (> limit (point))
! (re-search-forward "^* \\([^:\n]+:\\(:\\|[^.\n]+\\).\\)"
! limit 'move))
! ;; Fold case straight away; `member-ignore-case' here wasteful.
! (let ((x (downcase (match-string 1))))
! (if (member x seen)
! (delete-region (match-beginning 0)
! (progn (re-search-forward "^[^ \t]" nil t)
! (match-beginning 0)))
! (push x seen))))))))))
;; Note that on entry to this function the current-buffer must be the
;; *info* buffer; not the info tags buffer.
--- 1213,1232 ----
(delete-region (1- (point)) (point))))
;; Now remove duplicate entries under the same heading.
! (let (seen)
! (save-restriction
! (narrow-to-region start (point))
! (goto-char (point-min))
! (while (re-search-forward "^* \\([^:\n]+:\\(:\\|[^.\n]+\\).\\)"
nil 'move)
! ;; Fold case straight away; `member-ignore-case' here wasteful.
! (let ((x (downcase (match-string 1))))
! (if (member x seen)
! (delete-region
! (match-beginning 0)
! (if (re-search-forward "^[^ \t]" nil 'move)
! (goto-char (match-beginning 0))
! (point-max)))
! (push x seen)))))))))))
;; Note that on entry to this function the current-buffer must be the
;; *info* buffer; not the info tags buffer.