summaryrefslogtreecommitdiff
path: root/lisp/info.el
diff options
context:
space:
mode:
authorJuri Linkov <juri@jurta.org>2013-01-08 02:28:55 +0200
committerJuri Linkov <juri@jurta.org>2013-01-08 02:28:55 +0200
commit8a2e287c26d7bd115be088aa03a3a332b44c7e78 (patch)
tree040634858b662402d8030194812e37ec3d0b32f9 /lisp/info.el
parentc6a22ce23dad655c84f95bad1ed5191c2682f74e (diff)
downloademacs-8a2e287c26d7bd115be088aa03a3a332b44c7e78.tar.gz
* 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
Diffstat (limited to 'lisp/info.el')
-rw-r--r--lisp/info.el19
1 files changed, 15 insertions, 4 deletions
diff --git a/lisp/info.el b/lisp/info.el
index 9bce39a6d3a..48ad00c9f28 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -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)