From: Stefan Kangas <stefan@marxist.se>
To: 46627@debbugs.gnu.org
Subject: bug#46627: [PATCH] Add new help command 'describe-command'
Date: Thu, 18 Feb 2021 17:06:16 -0800 [thread overview]
Message-ID: <CADwFkmko_NisKc=2A6o44zi=VeLgSQvnjec7aypbtAmotUAVAA@mail.gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 513 bytes --]
Severity: wishlist
As recently discussed on emacs-devel, it could be useful to have a
command `describe-command' to search for commands. Please find attached
a patch that adds such a command.
I don't know if we should add a key binding, since the most obvious
place to put it, `C-h c', is unfortunately already taken. Perhaps
`C-h x' would make some sense in analogy with `M-x'. (Or perhaps it is
worth moving `describe-key-briefly'...) So I solved it here by not
adding any key at all, for now.
Thoughts?
[-- Attachment #2: 0001-Add-new-help-command-describe-command.patch --]
[-- Type: text/x-diff, Size: 4251 bytes --]
From ed897d0d75465c6e5c37c4ba0c5a1716d86250ca Mon Sep 17 00:00:00 2001
From: Stefan Kangas <stefan@marxist.se>
Date: Fri, 19 Feb 2021 01:48:55 +0100
Subject: [PATCH] Add new help command 'describe-command'
* lisp/help-fns.el (describe-command): New command.
(help-fns--describe-function-or-command-prompt): New helper
function to prompt for a function or function.
(describe-function): Use above new helper function.
---
etc/NEWS | 4 ++++
lisp/help-fns.el | 54 ++++++++++++++++++++++++++++++++----------------
2 files changed, 40 insertions(+), 18 deletions(-)
diff --git a/etc/NEWS b/etc/NEWS
index 7665d4740f..269e760c5b 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -857,6 +857,10 @@ skipped.
---
*** 'g' ('revert-buffer') in 'help-mode' no longer requires confirmation.
+*** New command 'describe-command' shows help for a command.
+This can be used instead of 'describe-function' that describes any
+function.
+
+++
*** New command 'describe-keymap' describes keybindings in a keymap.
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index ceb6bc0901..3354accd67 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -174,26 +174,39 @@ describe-function-orig-buffer
Functions on `help-fns-describe-function-functions' can use this
to get buffer-local values.")
+(defun help-fns--describe-function-or-command-prompt (&optional want-command)
+ "Prompt for a function from `describe-function' or `describe-command'.
+If optional argument WANT-COMMAND is non-nil, prompt for an
+interactive command."
+ (let* ((fn (if want-command
+ (caar command-history)
+ (function-called-at-point)))
+ (prompt (format-prompt (if want-command
+ "Describe command"
+ "Describe function")
+ fn))
+ (enable-recursive-minibuffers t)
+ (val (completing-read
+ prompt
+ #'help--symbol-completion-table
+ (lambda (f) (if want-command
+ (commandp f)
+ (or (fboundp f) (get f 'function-documentation))))
+ t nil nil
+ (and fn (symbol-name fn)))))
+ (unless (equal val "")
+ (setq fn (intern val)))
+ (unless (and fn (symbolp fn))
+ (user-error "You didn't specify a function symbol"))
+ (unless (or (fboundp fn) (get fn 'function-documentation))
+ (user-error "Symbol's function definition is void: %s" fn))
+ (list fn)))
+
;;;###autoload
(defun describe-function (function)
"Display the full documentation of FUNCTION (a symbol).
When called from lisp, FUNCTION may also be a function object."
- (interactive
- (let* ((fn (function-called-at-point))
- (enable-recursive-minibuffers t)
- (val (completing-read
- (format-prompt "Describe function" fn)
- #'help--symbol-completion-table
- (lambda (f) (or (fboundp f) (get f 'function-documentation)))
- t nil nil
- (and fn (symbol-name fn)))))
- (unless (equal val "")
- (setq fn (intern val)))
- (unless (and fn (symbolp fn))
- (user-error "You didn't specify a function symbol"))
- (unless (or (fboundp fn) (get fn 'function-documentation))
- (user-error "Symbol's function definition is void: %s" fn))
- (list fn)))
+ (interactive (help-fns--describe-function-or-command-prompt))
;; We save describe-function-orig-buffer on the help xref stack, so
;; it is restored by the back/forward buttons. 'help-buffer'
@@ -223,9 +236,14 @@ describe-function
(describe-function-1 function)
(with-current-buffer standard-output
;; Return the text we displayed.
- (buffer-string))))
- ))
+ (buffer-string))))))
+;;;###autoload
+(defun describe-command (command)
+ "Display the full documentation of COMMAND (a symbol).
+When called from lisp, COMMAND may also be a function object."
+ (interactive (help-fns--describe-function-or-command-prompt 'is-command))
+ (describe-function command))
;; Could be this, if we make symbol-file do the work below.
;; (defun help-C-file-name (subr-or-var kind)
--
2.30.0
next reply other threads:[~2021-02-19 1:06 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-19 1:06 Stefan Kangas [this message]
2021-02-19 8:42 ` bug#46627: [PATCH] Add new help command 'describe-command' Eli Zaretskii
2021-02-19 17:42 ` Stefan Kangas
2021-02-19 18:38 ` bug#46627: [External] : " Drew Adams
2021-02-20 3:25 ` Stefan Kangas
2021-02-20 4:25 ` Drew Adams
2021-02-20 8:20 ` Eli Zaretskii
2021-02-20 7:44 ` Eli Zaretskii
2021-02-19 20:05 ` Eli Zaretskii
2021-02-20 4:10 ` Stefan Kangas
2021-02-20 8:18 ` Eli Zaretskii
2021-02-20 17:10 ` Stefan Kangas
2021-02-21 13:08 ` Lars Ingebrigtsen
2021-02-22 15:58 ` Eli Zaretskii
2021-04-28 13:58 ` Stefan Kangas
2021-04-28 14:17 ` Stefan Kangas
2021-05-02 13:14 ` Stefan Kangas
2021-02-20 12:56 ` Lars Ingebrigtsen
2021-02-20 12:59 ` Eli Zaretskii
2021-02-20 16:16 ` Eli Zaretskii
2021-02-20 14:04 ` Stefan Kangas
2021-02-20 16:06 ` Richard Stallman
2021-02-20 16:09 ` Eli Zaretskii
2021-02-20 20:06 ` bug#46627: [External] : " Drew Adams
2021-02-20 20:17 ` Eli Zaretskii
2021-02-20 20:54 ` Drew Adams
2021-02-20 16:39 ` Stefan Kangas
2021-02-20 16:49 ` Eli Zaretskii
2021-02-20 20:35 ` bug#46627: [External] : " Drew Adams
2021-02-20 20:46 ` Eli Zaretskii
2021-02-20 21:16 ` Drew Adams
2021-02-21 15:07 ` Eli Zaretskii
2021-02-21 17:55 ` Drew Adams
2021-02-21 18:11 ` Eli Zaretskii
2021-02-21 18:30 ` Drew Adams
2021-02-26 21:34 ` Drew Adams
2021-02-27 8:04 ` Eli Zaretskii
2021-02-27 17:46 ` Drew Adams
2021-02-21 6:19 ` Richard Stallman
2021-02-21 7:18 ` Stefan Kangas
2021-02-21 15:27 ` Eli Zaretskii
2021-02-21 16:39 ` Howard Melman
2021-02-21 18:01 ` bug#46627: [External] : " Drew Adams
2021-02-21 17:01 ` Stefan Kangas
2021-02-21 17:36 ` Eli Zaretskii
2021-02-21 18:02 ` Stefan Kangas
2021-02-21 18:21 ` Eli Zaretskii
2021-02-21 19:57 ` Dmitry Gutov
2021-02-21 20:13 ` Eli Zaretskii
2021-02-21 23:46 ` Dmitry Gutov
2021-02-22 15:18 ` Eli Zaretskii
2021-02-27 20:38 ` Dmitry Gutov
2021-02-28 17:27 ` Eli Zaretskii
2021-02-28 21:40 ` Dmitry Gutov
2021-03-01 6:05 ` Eli Zaretskii
2021-03-02 1:40 ` Dmitry Gutov
2021-03-02 5:31 ` Eli Zaretskii
2021-03-02 12:55 ` Dmitry Gutov
2021-03-02 13:47 ` Eli Zaretskii
2021-02-21 17:57 ` bug#46627: [External] : " Drew Adams
2021-02-21 17:33 ` Drew Adams
2021-02-21 13:06 ` Lars Ingebrigtsen
2021-02-21 6:27 ` Richard Stallman
2021-02-21 6:10 ` Richard Stallman
2021-02-21 6:27 ` Richard Stallman
2021-02-19 13:12 ` Lars Ingebrigtsen
2021-02-19 18:27 ` bug#46627: [External] : " Drew Adams
2021-02-19 18:43 ` Eli Zaretskii
2021-02-21 6:18 ` Richard Stallman
2021-02-21 6:27 ` Richard Stallman
2021-02-20 6:56 ` Richard Stallman
2021-02-20 7:14 ` Stefan Kangas
2021-02-21 6:19 ` Richard Stallman
2021-02-21 6:27 ` Richard Stallman
2021-02-21 7:17 ` Stefan Kangas
2021-02-22 6:23 ` Richard Stallman
2021-02-24 3:28 ` Stefan Kangas
2021-02-27 18:58 ` Dmitry Gutov
2021-03-01 5:18 ` Richard Stallman
2021-03-01 16:13 ` bug#46627: [External] : " Drew Adams
2021-03-02 6:29 ` Richard Stallman
2021-03-02 6:50 ` Eli Zaretskii
2021-03-03 5:55 ` Richard Stallman
2021-03-03 15:26 ` Drew Adams
2021-03-03 16:14 ` Eli Zaretskii
2021-03-02 16:52 ` Drew Adams
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='CADwFkmko_NisKc=2A6o44zi=VeLgSQvnjec7aypbtAmotUAVAA@mail.gmail.com' \
--to=stefan@marxist.se \
--cc=46627@debbugs.gnu.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).