* lisp/info.el (Info-read-node-name-2): Don't duplicate suffixes for single completion.

(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
This commit is contained in:
Juri Linkov 2013-01-08 02:28:55 +02:00
parent c6a22ce23d
commit 8a2e287c26
2 changed files with 23 additions and 4 deletions

View 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)

View 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)