* lisp/info.el (Info-read-node-name-2): Don't duplicate suffixes for single completion.
authorJuri Linkov <juri@jurta.org>
Tue, 8 Jan 2013 00:28:55 +0000 (02:28 +0200)
committerJuri Linkov <juri@jurta.org>
Tue, 8 Jan 2013 00:28:55 +0000 (02:28 +0200)
(info--manual-names): Expand node completions into an explicit list
before appending it to another list.  Filter out internal buffers
with the leading space in the buffer name.  (Bug#10771)

Fixes: debbugs:12456

lisp/ChangeLog
lisp/info.el

index 9b30294..1a5a938 100644 (file)
@@ -1,3 +1,11 @@
+2013-01-08  Juri Linkov  <juri@jurta.org>
+
+       * info.el (Info-read-node-name-2): Don't duplicate suffixes for
+       single completion.  (Bug#12456)
+       (info--manual-names): Expand node completions into an explicit list
+       before appending it to another list.  Filter out internal buffers
+       with the leading space in the buffer name.  (Bug#10771)
+
 2013-01-08  Juri Linkov  <juri@jurta.org>
 
        * info.el (Info-read-node-name-1): Allow empty node name in (FILENAME)
index 9bce39a..48ad00c 100644 (file)
@@ -1742,6 +1742,7 @@ list of valid filename suffixes for Info files.  See
   (when (file-name-absolute-p string)
     (setq dirs (list (file-name-directory string))))
   (let ((names nil)
+       (names-sans-suffix nil)
         (suffix (concat (regexp-opt suffixes t) "\\'"))
         (string-dir (file-name-directory string)))
     (dolist (dir dirs)
@@ -1764,7 +1765,14 @@ list of valid filename suffixes for Info files.  See
          ;; add the unsuffixed name as a completion option.
          (when (string-match suffix file)
            (setq file (substring file 0 (match-beginning 0)))
-           (push (if string-dir (concat string-dir file) file) names)))))
+           (push (if string-dir (concat string-dir file) file)
+                 names-sans-suffix)))))
+    ;; If there is just one file, don't duplicate it with suffixes,
+    ;; so `Info-read-node-name-1' will be able to complete a single
+    ;; candidate and to add the terminating ")".
+    (if (and (= (length names) 1) (= (length names-sans-suffix) 1))
+       (setq names names-sans-suffix)
+      (setq names (append names-sans-suffix names)))
     (complete-with-action action names string pred)))
 
 (defun Info-read-node-name-1 (string predicate code)
@@ -5174,13 +5182,16 @@ Otherwise, visit the manual in a new Info buffer."
       (with-current-buffer buffer
        (and (eq major-mode 'Info-mode)
             (stringp Info-current-file)
+            (not (string= (substring (buffer-name) 0 1) " "))
             (push (file-name-sans-extension
                    (file-name-nondirectory Info-current-file))
                   names))))
     (delete-dups (append (nreverse names)
-                        (apply-partially 'Info-read-node-name-2
-                                         Info-directory-list
-                                         (mapcar 'car Info-suffix-list))))))
+                        (all-completions
+                         ""
+                         (apply-partially 'Info-read-node-name-2
+                                          Info-directory-list
+                                          (mapcar 'car Info-suffix-list)))))))
 
 (provide 'info)