unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
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))))





  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).