From dc5c236024e73b07dd192df1216391437875af66 Mon Sep 17 00:00:00 2001 From: Tomi Ollila Date: Thu, 14 Nov 2013 14:12:44 +0200 Subject: [PATCH] Re: [PATCH] emacs: add '?' to some prefix keymaps to describe its bindings --- 7f/2b8c1e8f0e6b4a639fcd25da0459fa334ac8c1 | 160 ++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 7f/2b8c1e8f0e6b4a639fcd25da0459fa334ac8c1 diff --git a/7f/2b8c1e8f0e6b4a639fcd25da0459fa334ac8c1 b/7f/2b8c1e8f0e6b4a639fcd25da0459fa334ac8c1 new file mode 100644 index 000000000..3e82b780f --- /dev/null +++ b/7f/2b8c1e8f0e6b4a639fcd25da0459fa334ac8c1 @@ -0,0 +1,160 @@ +Return-Path: +X-Original-To: notmuch@notmuchmail.org +Delivered-To: notmuch@notmuchmail.org +Received: from localhost (localhost [127.0.0.1]) + by olra.theworths.org (Postfix) with ESMTP id 8C1F3431FCF + for ; Thu, 14 Nov 2013 04:13:05 -0800 (PST) +X-Virus-Scanned: Debian amavisd-new at olra.theworths.org +X-Spam-Flag: NO +X-Spam-Score: 0 +X-Spam-Level: +X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none] + autolearn=disabled +Received: from olra.theworths.org ([127.0.0.1]) + by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id hCRrdx-C1gk7 for ; + Thu, 14 Nov 2013 04:12:56 -0800 (PST) +Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34]) + by olra.theworths.org (Postfix) with ESMTP id 8E156431FAE + for ; Thu, 14 Nov 2013 04:12:56 -0800 (PST) +Received: from guru.guru-group.fi (localhost [IPv6:::1]) + by guru.guru-group.fi (Postfix) with ESMTP id BED59100033; + Thu, 14 Nov 2013 14:12:44 +0200 (EET) +From: Tomi Ollila +To: Mark Walters , notmuch@notmuchmail.org +Subject: Re: [PATCH] emacs: add '?' to some prefix keymaps to describe its + bindings +In-Reply-To: <1384422586-21806-1-git-send-email-markwalters1009@gmail.com> +References: <1384422586-21806-1-git-send-email-markwalters1009@gmail.com> +User-Agent: Notmuch/0.16+174~g9a06aa2 (http://notmuchmail.org) Emacs/24.3.1 + (x86_64-unknown-linux-gnu) +X-Face: HhBM'cA~ +MIME-Version: 1.0 +Content-Type: text/plain +X-BeenThere: notmuch@notmuchmail.org +X-Mailman-Version: 2.1.13 +Precedence: list +List-Id: "Use and development of the notmuch mail system." + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +X-List-Received-Date: Thu, 14 Nov 2013 12:13:05 -0000 + +On Thu, Nov 14 2013, Mark Walters wrote: + +> Added function notmuch-subkeymap-help to describe keybindings of a +> subkeymap (eg after . or c in notmuch-search and notmuch-show). +> --- +> This a reimplementation of Tomi's patch at +> id:1377346540-7094-1-git-send-email-tomi.ollila@iki.fi but the help +> screen shows docstrings rather than function names. + +Good stuff, works fine (much better than mine). Tests pass. +1 + +> Best wishes +> +> Mark + +Tomi + +> +> +> +> +> +> emacs/notmuch-lib.el | 25 ++++++++++++++++++++++++- +> emacs/notmuch-show.el | 2 ++ +> emacs/notmuch.el | 1 + +> 3 files changed, 27 insertions(+), 1 deletions(-) +> +> diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el +> index 49fe644..2be409b 100644 +> --- a/emacs/notmuch-lib.el +> +++ b/emacs/notmuch-lib.el +> @@ -231,7 +231,8 @@ depending on the value of `notmuch-poll-script'." +> "Given a prefix key code, return a human-readable string representation. +> +> This is basically just `format-kbd-macro' but we also convert ESC to M-." +> - (let ((desc (format-kbd-macro (vector key)))) +> + (let* ((key-vector (if (vectorp key) key (vector key))) +> + (desc (format-kbd-macro key-vector))) +> (if (string= desc "ESC") +> "M-" +> (concat desc " ")))) +> @@ -337,6 +338,28 @@ of its command symbol." +> (set-buffer-modified-p nil) +> (view-buffer (current-buffer) 'kill-buffer-if-not-modified)))) +> +> +(defun notmuch-subkeymap-help () +> + "Show help for a subkeymap." +> + (interactive) +> + (let* ((key (this-command-keys-vector)) +> + (prefix (make-vector (1- (length key)) nil)) +> + (i 0)) +> + (while (< i (length prefix)) +> + (aset prefix i (aref key i)) +> + (setq i (1+ i))) +> + +> + (let* ((subkeymap (key-binding prefix)) +> + (ua-keys (where-is-internal 'universal-argument nil t)) +> + (prefix-string (notmuch-prefix-key-description prefix)) +> + (desc-alist (notmuch-describe-keymap subkeymap ua-keys subkeymap prefix-string)) +> + (desc-list (mapcar (lambda (arg) (concat (car arg) "\t" (cdr arg))) desc-alist)) +> + (desc (mapconcat #'identity desc-list "\n"))) +> + (with-help-window (help-buffer) +> + (with-current-buffer standard-output +> + (insert "\nPress 'q' to quit this window.\n\n") +> + (insert desc))) +> + (pop-to-buffer (help-buffer))))) +> + +> (defvar notmuch-buffer-refresh-function nil +> "Function to call to refresh the current buffer.") +> (make-variable-buffer-local 'notmuch-buffer-refresh-function) +> diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el +> index f00273a..45dca8b 100644 +> --- a/emacs/notmuch-show.el +> +++ b/emacs/notmuch-show.el +> @@ -1232,6 +1232,7 @@ reset based on the original query." +> (define-key map "t" 'notmuch-show-stash-to) +> (define-key map "l" 'notmuch-show-stash-mlarchive-link) +> (define-key map "L" 'notmuch-show-stash-mlarchive-link-and-go) +> + (define-key map "?" 'notmuch-subkeymap-help) +> map) +> "Submap for stash commands") +> (fset 'notmuch-show-stash-map notmuch-show-stash-map) +> @@ -1242,6 +1243,7 @@ reset based on the original query." +> (define-key map "v" 'notmuch-show-view-part) +> (define-key map "o" 'notmuch-show-interactively-view-part) +> (define-key map "|" 'notmuch-show-pipe-part) +> + (define-key map "?" 'notmuch-subkeymap-help) +> map) +> "Submap for part commands") +> (fset 'notmuch-show-part-map notmuch-show-part-map) +> diff --git a/emacs/notmuch.el b/emacs/notmuch.el +> index c9bc2f2..0471750 100644 +> --- a/emacs/notmuch.el +> +++ b/emacs/notmuch.el +> @@ -165,6 +165,7 @@ To enter a line break in customize, press \\[quoted-insert] C-j." +> (defvar notmuch-search-stash-map +> (let ((map (make-sparse-keymap))) +> (define-key map "i" 'notmuch-search-stash-thread-id) +> + (define-key map "?" 'notmuch-subkeymap-help) +> map) +> "Submap for stash commands") +> (fset 'notmuch-search-stash-map notmuch-search-stash-map) +> -- +> 1.7.9.1 +> +> _______________________________________________ +> notmuch mailing list +> notmuch@notmuchmail.org +> http://notmuchmail.org/mailman/listinfo/notmuch -- 2.26.2