]> code.delx.au - gnu-emacs/commitdiff
(Info-dir-remove-duplicates): Narrow buffer when
authorMartin Rudalics <rudalics@gmx.at>
Thu, 4 Sep 2008 08:17:57 +0000 (08:17 +0000)
committerMartin Rudalics <rudalics@gmx.at>
Thu, 4 Sep 2008 08:17:57 +0000 (08:17 +0000)
removing duplicate entries under same heading.  Don't skip char
matching anything but a space or tab at bol.  (Bug#864)

lisp/ChangeLog
lisp/info.el

index 190dbf9f5113cf7972827d37653637711aa430bd..e6e570082ca119c1e4d979c3d265ea53ac74fb70 100644 (file)
@@ -1,3 +1,9 @@
+2008-09-04  Martin Rudalics  <rudalics@gmx.at>
+
+       * info.el (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)
+
 2008-09-03  Alan Mackenzie  <acm@muc.de>
 
        * progmodes/cc-defs.el (c-version): Increment to 5.31.6
index fada0045782e0ab16f7f02b9878b97d6c2f80f9c..b9a772af74e718f4c7f58dcc001c2b7c75cbc630 100644 (file)
@@ -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))