aboutsummaryrefslogtreecommitdiffhomepage
path: root/emacs
diff options
context:
space:
mode:
authorGravatar Sebastian Spaeth <Sebastian@SSpaeth.de>2010-05-03 12:29:32 +0200
committerGravatar Carl Worth <cworth@cworth.org>2010-06-03 18:17:03 -0700
commita56010ac8b89a2489eee5c78469f05cee85ec858 (patch)
tree2f797915884c2df067024c5c44592246a803564a /emacs
parent5bc4ff4e1d31ddd45ac7e2638109c5e502c71836 (diff)
Make notmuch-hello a mode.
This enables the nifty '?' key binding to work in notmuch-hello (although for some strange reasons I don't see any descriptions for specific key bindings yet. Not sure how that is supposed to work though. But this starts, runs and behaves identical to the existing code. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Diffstat (limited to 'emacs')
-rw-r--r--emacs/notmuch-hello.el43
1 files changed, 33 insertions, 10 deletions
diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index 5072669b..f95a8687 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -259,6 +259,36 @@ should be. Returns a cons cell `(tags-per-line width)'."
(notmuch-poll)
(notmuch-hello-update))
+
+(defvar notmuch-hello-mode-map
+ (let ((map (copy-keymap widget-keymap)))
+ (define-key map "v" '(lambda () "Display the notmuch version" (interactive)
+ (message "notmuch version %s" (notmuch-version))))
+ (define-key map "?" 'notmuch-help)
+ (define-key map "q" 'kill-this-buffer)
+ (define-key map "=" 'notmuch-hello-update)
+ (define-key map "G" 'notmuch-hello-poll-and-update)
+ (define-key map (kbd "<C-tab>") 'widget-backward)
+ (define-key map "m" 'notmuch-mua-mail)
+ (define-key map "s" 'notmuch-hello-goto-search)
+ map)
+ "Keymap for \"notmuch hello\" buffers.")
+(fset 'notmuch-hello-mode-map notmuch-hello-mode-map)
+
+(defun notmuch-hello-mode ()
+ "Major mode for convenient notmuch navigation. This is your entry portal into notmuch.
+
+Complete list of currently available key bindings:
+
+\\{notmuch-hello-mode-map}"
+ (interactive)
+ (kill-all-local-variables)
+ (use-local-map notmuch-hello-mode-map)
+ (setq major-mode 'notmuch-hello-mode
+ mode-name "notmuch-hello")
+ ;;(setq buffer-read-only t)
+)
+
(defun notmuch-hello (&optional no-display)
(interactive)
@@ -283,6 +313,9 @@ should be. Returns a cons cell `(tags-per-line width)'."
(let ((inhibit-read-only t))
(erase-buffer))
+ (unless (eq major-mode 'notmuch-hello-mode)
+ (notmuch-hello-mode))
+
(let ((all (overlay-lists)))
;; Delete all the overlays.
(mapc 'delete-overlay (car all))
@@ -441,16 +474,6 @@ should be. Returns a cons cell `(tags-per-line width)'."
(let ((fill-column (- (window-width) notmuch-hello-indent)))
(center-region start (point))))
- (use-local-map widget-keymap)
- (local-set-key "=" 'notmuch-hello-update)
- (local-set-key (kbd "<C-tab>") 'widget-backward)
- (local-set-key "G" 'notmuch-hello-poll-and-update)
- (local-set-key "m" 'notmuch-mua-mail)
- (local-set-key "q" '(lambda () (interactive) (kill-buffer (current-buffer))))
- (local-set-key "s" 'notmuch-hello-goto-search)
- (local-set-key "v" '(lambda () (interactive)
- (message "notmuch version %s" (notmuch-version))))
-
(widget-setup)
(when final-target-pos