mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-24 07:20:37 +00:00
(Man-completion-cache): New var.
(Man-completion-table): Use it.
This commit is contained in:
parent
eb708e6624
commit
e2ec6dd513
@ -1,5 +1,8 @@
|
||||
2009-11-25 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* man.el (Man-completion-cache): New var.
|
||||
(Man-completion-table): Use it.
|
||||
|
||||
* vc.el (vc-print-log-internal): Make `limit' optional for better
|
||||
compatibility (e.g. with vc-annotate.el).
|
||||
|
||||
|
14
lisp/man.el
14
lisp/man.el
@ -749,10 +749,17 @@ POS defaults to `point'."
|
||||
;;;###autoload
|
||||
(defalias 'manual-entry 'man)
|
||||
|
||||
(defvar Man-completion-cache nil
|
||||
;; On my machine, "man -k" is so fast that a cache makes no sense,
|
||||
;; but apparently that's not the case in all cases, so let's add a cache.
|
||||
"Cache of completion table of the form (PREFIX . TABLE).")
|
||||
|
||||
(defun Man-completion-table (string pred action)
|
||||
(cond
|
||||
((memq action '(t nil))
|
||||
(let ((table '()))
|
||||
(let ((table (cdr Man-completion-cache)))
|
||||
(unless (and Man-completion-cache
|
||||
(string-prefix-p (car Man-completion-cache) string))
|
||||
(with-temp-buffer
|
||||
;; Actually for my `man' the arg is a regexp. Don't know how
|
||||
;; standard that is. Also, it's not clear what kind of
|
||||
@ -760,10 +767,13 @@ POS defaults to `point'."
|
||||
;; whereas under MacOSX it seems to be BRE-style and
|
||||
;; doesn't accept backslashes at all. Let's not bother to
|
||||
;; quote anything.
|
||||
(call-process "man" nil '(t nil) nil "-k" (concat "^" string))
|
||||
(call-process manual-program nil '(t nil) nil
|
||||
"-k" (concat "^" string))
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward "^[^ \t\n]+" nil t)
|
||||
(push (match-string 0) table)))
|
||||
;; Cache the table for later reuse.
|
||||
(setq Man-completion-cache (cons string table)))
|
||||
;; The table may contain false positives since the match is made
|
||||
;; by "man -k" not just on the manpage's name.
|
||||
(complete-with-action action table string pred)))
|
||||
|
Loading…
Reference in New Issue
Block a user