Mercurial > emacs
changeset 106231:7b0de5c2aa2a
(Man-completion-cache): New var.
(Man-completion-table): Use it.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Wed, 25 Nov 2009 03:51:00 +0000 |
parents | eb5b55788509 |
children | f44541b1d13c |
files | lisp/ChangeLog lisp/man.el |
diffstat | 2 files changed, 15 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Wed Nov 25 03:28:24 2009 +0000 +++ b/lisp/ChangeLog Wed Nov 25 03:51:00 2009 +0000 @@ -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).
--- a/lisp/man.el Wed Nov 25 03:28:24 2009 +0000 +++ b/lisp/man.el Wed Nov 25 03:51:00 2009 +0000 @@ -749,10 +749,17 @@ ;;;###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 @@ ;; 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)))