From: Mark Walters <markwalters1009@gmail.com>
To: Austin Clements <amdragon@MIT.EDU>, notmuch@notmuchmail.org
Subject: Re: [PATCH 4/6] emacs: Support overriding help and describing prefix action
Date: Sun, 06 Oct 2013 21:14:04 +0100 [thread overview]
Message-ID: <87wqlqqhrn.fsf@qmul.ac.uk> (raw)
In-Reply-To: <1381029768-11883-5-git-send-email-amdragon@mit.edu>
This whole series looks good to me. If you are rolling another version
for any reason I have one trivial comment
On Sun, 06 Oct 2013, Austin Clements <amdragon@MIT.EDU> wrote:
> Traditionally, function documentation strings are intended primarily
> for programmers, rather than users. They're written from the
> perspective of calling the function, not interactively invoking it.
> They're only ever displayed along with the function prototype (and
> often refer to argument names). And built-in help commands like
> `describe-bindings' show the name of the command, not its
> documentation.
>
> The notmuch help system is like `describe-bindings', but tries to be
> more user-friendly by displaying documentation strings, rather than
> Elisp command names. For most commands, this is fine, but for some
> the "programmer description" is inappropriate for interactive use.
> This is particularly noticeable for commands that take an optional
> prefix argument.
>
> This patch adds support for two symbol properties: notmuch-doc and
> notmuch-prefix-doc, which let a command override its interactive
> documentation and provide separate documentation for its prefixed
> invocation. If notmuch-prefix-doc is present, we add an extra line to
> the help giving the prefixed key sequence along with the documentation
> for the prefixed command.
> ---
> emacs/notmuch.el | 29 ++++++++++++++++++++++++-----
> 1 file changed, 24 insertions(+), 5 deletions(-)
>
> diff --git a/emacs/notmuch.el b/emacs/notmuch.el
> index a36849f..278bd35 100644
> --- a/emacs/notmuch.el
> +++ b/emacs/notmuch.el
> @@ -140,7 +140,7 @@ This is basically just `format-kbd-macro' but we also convert ESC to M-."
> "M-"
> (concat desc " "))))
>
> -(defun notmuch-describe-keymap (keymap &optional prefix tail)
> +(defun notmuch-describe-keymap (keymap ua-keys &optional prefix tail)
> "Return a list of strings, each describing one key in KEYMAP.
>
> Each string gives a human-readable description of the key and the
It would be nice to document the ua-keys variable here. It took me some
time to work out what was going in (and I worked out based on the
caller).
Best wishes
Mark
> @@ -151,10 +151,19 @@ first line of documentation for the bound function."
> ((keymapp binding)
> (setq tail
> (notmuch-describe-keymap
> - binding (notmuch-prefix-key-description key) tail)))
> + binding ua-keys (notmuch-prefix-key-description key) tail)))
> (t
> + (when (and ua-keys (symbolp binding)
> + (get binding 'notmuch-prefix-doc))
> + ;; Documentation for prefixed command
> + (let ((ua-desc (key-description ua-keys)))
> + (push (concat ua-desc " " prefix (format-kbd-macro (vector key))
> + "\t" (get binding 'notmuch-prefix-doc))
> + tail)))
> + ;; Documentation for command
> (push (concat prefix (format-kbd-macro (vector key)) "\t"
> - (notmuch-documentation-first-line binding))
> + (or (and (symbolp binding) (get binding 'notmuch-doc))
> + (notmuch-documentation-first-line binding)))
> tail))))
> keymap)
> tail)
> @@ -165,14 +174,24 @@ first line of documentation for the bound function."
> (while (string-match "\\\\{\\([^}[:space:]]*\\)}" doc beg)
> (let* ((keymap-name (substring doc (match-beginning 1) (match-end 1)))
> (keymap (symbol-value (intern keymap-name)))
> - (desc-list (notmuch-describe-keymap keymap))
> + (ua-keys (where-is-internal 'universal-argument keymap t))
> + (desc-list (notmuch-describe-keymap keymap ua-keys))
> (desc (mapconcat #'identity desc-list "\n")))
> (setq doc (replace-match desc 1 1 doc)))
> (setq beg (match-end 0)))
> doc))
>
> (defun notmuch-help ()
> - "Display help for the current notmuch mode."
> + "Display help for the current notmuch mode.
> +
> +This is similar to `describe-function' for the current major
> +mode, but bindings tables are shown with documentation strings
> +rather than command names. By default, this uses the first line
> +of each command's documentation string. A command can override
> +this by setting the 'notmuch-doc property of its command symbol.
> +A command that supports a prefix argument can explicitly document
> +its prefixed behavior by setting the 'notmuch-prefix-doc property
> +of its command symbol."
> (interactive)
> (let* ((mode major-mode)
> (doc (substitute-command-keys (notmuch-substitute-command-keys (documentation mode t)))))
> --
> 1.8.4.rc3
>
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch
next prev parent reply other threads:[~2013-10-06 20:14 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-06 3:22 [PATCH 0/6] emacs: Built-in help improvements and clean up doc strings Austin Clements
2013-10-06 3:22 ` [PATCH 1/6] emacs: `notmuch-mua-new-forward-message' is not interactive Austin Clements
2013-10-06 3:22 ` [PATCH 2/6] emacs: `notmuch-mua-new-reply' is also " Austin Clements
2013-10-06 3:22 ` [PATCH 3/6] emacs: Clean up a few documentation strings Austin Clements
2013-10-06 3:22 ` [PATCH 4/6] emacs: Support overriding help and describing prefix action Austin Clements
2013-10-06 20:14 ` Mark Walters [this message]
2013-10-07 5:54 ` Tomi Ollila
2013-10-07 22:49 ` Austin Clements
2013-10-06 3:22 ` [PATCH 5/6] emacs: Improve interactive use documentation Austin Clements
2013-10-06 3:22 ` [PATCH 6/6] News for Emacs help improvements Austin Clements
2013-10-07 23:40 ` David Bremner
2013-10-07 22:48 ` [PATCH 7/6] emacs: Improved `notmuch-describe-keymap' documentation Austin Clements
2013-10-08 6:46 ` Mark Walters
2013-10-10 10:45 ` David Bremner
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://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wqlqqhrn.fsf@qmul.ac.uk \
--to=markwalters1009@gmail.com \
--cc=amdragon@MIT.EDU \
--cc=notmuch@notmuchmail.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://yhetil.org/notmuch.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).