Mercurial > emacs
changeset 106221:6c0524d168f6
(Man-completion-table): New function.
(man): Use it.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Tue, 24 Nov 2009 20:00:41 +0000 |
parents | a88a54e96796 |
children | 35b575add861 |
files | lisp/ChangeLog lisp/man.el |
diffstat | 2 files changed, 39 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Tue Nov 24 15:31:01 2009 +0000 +++ b/lisp/ChangeLog Tue Nov 24 20:00:41 2009 +0000 @@ -1,6 +1,11 @@ +2009-11-24 Stefan Monnier <monnier@iro.umontreal.ca> + + * man.el (Man-completion-table): New function. + (man): Use it. + 2009-11-24 David Reitter <david.reitter@gmail.com> - * vc-git.el (vc-git-registered): use checkout directory (where + * vc-git.el (vc-git-registered): Use checkout directory (where .git is) rather than the file's directory and a relative path spec to work around a bug in git. @@ -12,18 +17,18 @@ (eshell-parse-colon-path): New defun. (eshell-file-attributes): Use `eshell-parse-colon-path'. - * eshell/esh-ext.el (eshell-search-path): Use - `eshell-parse-colon-path'. + * eshell/esh-ext.el (eshell-search-path): + Use `eshell-parse-colon-path'. (eshell-remote-command): Remove argument HANDLER. (eshell-external-command): Check for FTP remote connection. - * eshell/esh-proc.el (eshell-gather-process-output): Use - `file-truename', in order to start also symlinked files. Apply - `start-file-process' instead of `start-process'. Shorten `command' - to the local file name part. - - * eshell/em-cmpl.el (eshell-complete-commands-list): Use - `eshell-parse-colon-path'. + * eshell/esh-proc.el (eshell-gather-process-output): + Use `file-truename', in order to start also symlinked files. + Apply `start-file-process' instead of `start-process'. + Shorten `command' to the local file name part. + + * eshell/em-cmpl.el (eshell-complete-commands-list): + Use `eshell-parse-colon-path'. * eshell/em-unix.el (eshell/du): Check for FTP remote connection. @@ -33,8 +38,7 @@ 2009-11-24 Tassilo Horn <tassilo@member.fsf.org> * doc-view.el (doc-view-mode): Switch off view-mode explicitly, - because it could be enabled automatically if view-read-only is - non-nil. + because it could be enabled automatically if view-read-only is non-nil. 2009-11-24 Michael Kifer <kifer@cs.stonybrook.edu>
--- a/lisp/man.el Tue Nov 24 15:31:01 2009 +0000 +++ b/lisp/man.el Tue Nov 24 20:00:41 2009 +0000 @@ -749,6 +749,26 @@ ;;;###autoload (defalias 'manual-entry 'man) +(defun Man-completion-table (string pred action) + (cond + ((memq action '(t nil)) + (let ((table '())) + (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 + ;; regexp are accepted: under GNU/Linux it seems it's ERE-style, + ;; 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)) + (goto-char (point-min)) + (while (re-search-forward "^[^ \t\n]+" nil t) + (push (match-string 0) 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))) + ((eq action 'lambda) t) + ((eq (car-safe action) 'boundaries) nil))) ;;;###autoload (defun man (man-args) @@ -765,12 +785,13 @@ `Man-switches' variable, which see." (interactive (list (let* ((default-entry (Man-default-man-entry)) - (input (read-string + (input (completing-read (format "Manual entry%s" (if (string= default-entry "") ": " (format " (default %s): " default-entry))) - nil 'Man-topic-history default-entry))) + 'Man-completion-table + nil nil nil 'Man-topic-history default-entry))) (if (string= input "") (error "No man args given") input))))