summaryrefslogtreecommitdiff
path: root/lisp/info.el
diff options
context:
space:
mode:
authorMartin Rudalics <rudalics@gmx.at>2008-09-04 08:17:57 +0000
committerMartin Rudalics <rudalics@gmx.at>2008-09-04 08:17:57 +0000
commit3bfd723a3858a4cddf29e0e6c5da7cb60f590106 (patch)
tree6cea2838c3f062b3addd6e2d3bf9a8b24ed02c37 /lisp/info.el
parentc7dfa6a3f1330f260e9bda005ead44667cb6a537 (diff)
downloademacs-3bfd723a3858a4cddf29e0e6c5da7cb60f590106.tar.gz
(Info-dir-remove-duplicates): Narrow buffer when
removing duplicate entries under same heading. Don't skip char matching anything but a space or tab at bol. (Bug#864)
Diffstat (limited to 'lisp/info.el')
-rw-r--r--lisp/info.el31
1 files changed, 16 insertions, 15 deletions
diff --git a/lisp/info.el b/lisp/info.el
index fada0045782..b9a772af74e 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -1213,19 +1213,20 @@ a case-insensitive match is tried."
(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))))))))))
+ (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.
@@ -3836,10 +3837,10 @@ the variable `Info-file-list-for-emacs'."
((string-equal (downcase tag) "prev") Info-prev-link-keymap)
((string-equal (downcase tag) "next") Info-next-link-keymap)
((string-equal (downcase tag) "up" ) Info-up-link-keymap))))))
-
+
(when (> Info-breadcrumbs-depth 0)
(Info-insert-breadcrumbs))
-
+
;; Treat header line.
(when Info-use-header-line
(goto-char (point-min))