From c52fee6bcb3565ce19801b86d83d5783e48df320 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Tue, 3 Sep 2013 17:45:24 -0400 Subject: [PATCH] emacs: Define a common shared keymap for all of notmuch This defines a single, currently empty keymap that all other notmuch mode maps inherit from. --- emacs/notmuch-hello.el | 10 ++++++++-- emacs/notmuch-lib.el | 5 +++++ emacs/notmuch-show.el | 1 + emacs/notmuch.el | 1 + 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el index 6a7b884c..46baf559 100644 --- a/emacs/notmuch-hello.el +++ b/emacs/notmuch-hello.el @@ -515,8 +515,14 @@ Such a list can be computed with `notmuch-hello-query-counts'." (defvar notmuch-hello-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map widget-keymap) + (let ((map (if (fboundp 'make-composed-keymap) + ;; Inherit both widget-keymap and notmuch-common-keymap + (make-composed-keymap widget-keymap) + ;; Before Emacs 24, keymaps didn't support multiple + ;; inheritance,, so just copy the widget keymap since + ;; it's unlikely to change. + (copy-keymap widget-keymap)))) + (set-keymap-parent map notmuch-common-keymap) (define-key map "v" (lambda () "Display the notmuch version" (interactive) (message "notmuch version %s" (notmuch-version)))) (define-key map "?" 'notmuch-help) diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el index 782badb0..2bf1d2f6 100644 --- a/emacs/notmuch-lib.el +++ b/emacs/notmuch-lib.el @@ -128,6 +128,11 @@ For example, if you wanted to remove an \"inbox\" tag and add an :group 'notmuch-search :group 'notmuch-show) +(defvar notmuch-common-keymap + (let ((map (make-sparse-keymap))) + map) + "Keymap shared by all notmuch modes.") + ;; By default clicking on a button does not select the window ;; containing the button (as opposed to clicking on a widget which ;; does). This means that the button action is then executed in the diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index cb586e92..53ccc39d 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1243,6 +1243,7 @@ reset based on the original query." (defvar notmuch-show-mode-map (let ((map (make-sparse-keymap))) + (set-keymap-parent map notmuch-common-keymap) (define-key map "?" 'notmuch-help) (define-key map "q" 'notmuch-kill-this-buffer) (define-key map (kbd "") 'widget-backward) diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 03040964..e098bd7b 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -198,6 +198,7 @@ first line of documentation for the bound function." (defvar notmuch-search-mode-map (let ((map (make-sparse-keymap))) + (set-keymap-parent map notmuch-common-keymap) (define-key map "?" 'notmuch-help) (define-key map "q" 'notmuch-kill-this-buffer) (define-key map "x" 'notmuch-kill-this-buffer) -- 2.26.2