From: Stefan Monnier <monnier@iro.umontreal.ca>
To: jidanni@jidanni.org
Cc: 3717@emacsbugs.donarmstrong.com
Subject: bug#3717: M-x man completion
Date: Tue, 30 Jun 2009 00:02:33 +0200 [thread overview]
Message-ID: <jwv1vp23dkb.fsf-monnier+emacsbugreports@gnu.org> (raw)
In-Reply-To: <87bpo63gxh.fsf@jidanni.org> (jidanni@jidanni.org's message of "Tue, 30 Jun 2009 04:48:10 +0800")
>>>>> "jidanni" == jidanni <jidanni@jidanni.org> writes:
> severity: wishlist
> I was thinking when M-x man prompts
> Manual entry (default Neurdsburg):
> wouldn't it be neat if there was completion, just like for
> M-! shell-command...
I use the patch below. It's very lightly tested.
Stefan
=== modified file 'lisp/man.el'
--- lisp/man.el 2009-03-07 20:30:47 +0000
+++ lisp/man.el 2009-03-14 03:18:28 +0000
@@ -749,6 +749,22 @@
;;;###autoload
(defalias 'manual-entry 'man)
+(defun Man-completion-table (string pred action)
+ (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)))
;;;###autoload
(defun man (man-args)
@@ -765,12 +781,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))))
next prev parent reply other threads:[~2009-06-29 22:02 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87fx7x72qd.fsf@mail.jurta.org>
2009-06-29 20:48 ` bug#3717: M-x man completion jidanni
2009-06-29 22:02 ` Stefan Monnier [this message]
2009-06-30 7:50 ` Sven Joachim
[not found] ` <87ab3pfqj0.fsf@jidanni.org>
2009-11-24 17:11 ` Juri Linkov
2009-11-24 20:01 ` Stefan Monnier
2009-11-25 17:29 ` Juri Linkov
2009-11-25 19:30 ` Stefan Monnier
2009-11-25 21:17 ` Juri Linkov
2009-11-25 23:18 ` Kevin Ryde
2009-11-26 9:28 ` Juri Linkov
2009-11-26 22:09 ` Kevin Ryde
2009-11-27 2:30 ` Stefan Monnier
2009-12-04 22:53 ` Kevin Ryde
2009-12-05 9:31 ` Eli Zaretskii
2009-12-11 22:43 ` Kevin Ryde
2009-12-12 9:03 ` Eli Zaretskii
2009-11-25 23:04 ` Kevin Ryde
2009-11-26 9:28 ` Juri Linkov
2009-11-26 16:54 ` Stefan Monnier
2009-12-02 22:41 ` Kevin Ryde
2009-12-03 0:53 ` Stefan Monnier
2009-12-04 22:50 ` Kevin Ryde
2009-12-05 5:02 ` Stefan Monnier
2009-12-05 23:12 ` Kevin Ryde
2009-12-07 2:26 ` Stefan Monnier
2009-11-26 22:01 ` Kevin Ryde
2009-11-26 22:36 ` Juri Linkov
2009-11-26 23:15 ` Kevin Ryde
2009-11-27 9:01 ` Juri Linkov
2009-11-28 17:56 ` Juri Linkov
2009-11-28 20:14 ` Kevin Ryde
2009-11-28 22:54 ` Juri Linkov
2009-12-15 6:18 ` jidanni
2009-12-15 8:04 ` Eli Zaretskii
2009-12-16 0:42 ` Juri Linkov
2009-12-16 4:19 ` Eli Zaretskii
2009-12-16 21:25 ` Kevin Ryde
[not found] ` <87ljh29ypb.fsf@mail.jurta.org>
[not found] ` <87r5qt5p52.fsf@blah.blah>
2009-12-17 23:35 ` Juri Linkov
2009-12-18 1:00 ` Kevin Ryde
2009-11-26 23:34 ` jidanni
2009-11-27 0:24 ` Kevin Ryde
2009-11-27 9:04 ` Juri Linkov
2009-11-25 23:11 ` Kevin Ryde
2009-11-26 3:03 ` Stefan Monnier
2009-11-26 21:12 ` Kevin Ryde
2009-12-16 21:40 ` Kevin Ryde
2009-12-16 21:44 ` Kevin Ryde
2009-11-24 22:58 ` Kevin Ryde
2009-11-24 23:45 ` Kevin Ryde
2009-11-25 4:21 ` Eli Zaretskii
2009-11-25 14:47 ` Stefan Monnier
2009-11-25 22:53 ` Kevin Ryde
2009-11-26 4:20 ` Eli Zaretskii
2009-11-26 21:36 ` Kevin Ryde
2009-11-27 8:47 ` Eli Zaretskii
2009-11-28 19:49 ` Kevin Ryde
2009-11-28 22:59 ` Juri Linkov
2009-11-29 15:34 ` Stefan Monnier
2009-06-30 22:38 ` Kevin Ryde
2009-11-29 16:15 ` bug#3717: marked as done (M-x man completion) Emacs bug Tracking System
2009-08-06 1:47 ` bug#4056: 23.1.50; use shell-command completion for M-x man page names jidanni
2009-11-29 16:15 ` bug#4056: marked as done (23.1.50; use shell-command completion for M-x man page names) Emacs bug Tracking System
2010-01-23 22:04 ` bug#4056: completion--some: Searching for program: no such file or directory, LC_CTYPE=C man jidanni
2010-02-08 19:07 ` bug#4056: " jidanni
2010-02-09 0:42 ` Kenichi Handa
2010-02-11 16:10 ` Stefan Monnier
2010-02-09 0:51 ` jidanni
2010-02-11 21:42 ` jidanni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=jwv1vp23dkb.fsf-monnier+emacsbugreports@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=3717@emacsbugs.donarmstrong.com \
--cc=jidanni@jidanni.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).