mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 09:24:54 +01:00
notmuch.el: Enter now calls "notmuch show" on the current thread
It's remarkable how little code we need for a very functional GUI here. I think we're doing something right.
This commit is contained in:
parent
8c9cc63a2e
commit
1c75d622c9
1 changed files with 48 additions and 1 deletions
49
notmuch.el
49
notmuch.el
|
@ -31,17 +31,53 @@
|
|||
; Authors: Roland McGrath <roland@gnu.org>,
|
||||
; Daniel Pfeiffer <occitan@esperanto.org>
|
||||
|
||||
(defvar notmuch-show-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map "x" 'kill-this-buffer)
|
||||
map)
|
||||
"Keymap for \"notmuch show\" buffers.")
|
||||
(fset 'notmuch-show-mode-map notmuch-show-mode-map)
|
||||
|
||||
;;;###autoload
|
||||
(defun notmuch-show-mode ()
|
||||
"Major mode for handling the output of \"notmuch show\""
|
||||
(interactive)
|
||||
(kill-all-local-variables)
|
||||
(use-local-map notmuch-show-mode-map)
|
||||
(setq major-mode 'notmuch-show-mode
|
||||
mode-name "notmuch-show")
|
||||
(setq buffer-read-only t))
|
||||
|
||||
(defun notmuch-show (thread-id)
|
||||
"Run \"notmuch show\" with the given thread ID and display results."
|
||||
(interactive "sNotmuch show: ")
|
||||
(let ((buffer (get-buffer-create (concat "*notmuch-show-" thread-id))))
|
||||
(switch-to-buffer buffer)
|
||||
(notmuch-show-mode)
|
||||
(let ((proc (get-buffer-process (current-buffer)))
|
||||
(inhibit-read-only t))
|
||||
(if proc
|
||||
(error "notmuch search process already running for query `%s'" query)
|
||||
)
|
||||
(erase-buffer)
|
||||
(beginning-of-buffer)
|
||||
(save-excursion
|
||||
(call-process "notmuch" nil t nil "show" thread-id)
|
||||
)
|
||||
)))
|
||||
|
||||
(defvar notmuch-search-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map "n" 'next-line)
|
||||
(define-key map "p" 'previous-line)
|
||||
(define-key map "\r" 'notmuch-search-show-thread)
|
||||
map)
|
||||
"Keymap for \"notmuch search\" buffers.")
|
||||
(fset 'notmuch-search-mode-map notmuch-search-mode-map)
|
||||
|
||||
;;;###autoload
|
||||
(defun notmuch-search-mode ()
|
||||
"Major mode for handling the output of notmuch search"
|
||||
"Major mode for handling the output of \"notmuch search\""
|
||||
(interactive)
|
||||
(kill-all-local-variables)
|
||||
(use-local-map notmuch-search-mode-map)
|
||||
|
@ -49,6 +85,17 @@
|
|||
mode-name "notmuch-search")
|
||||
(setq buffer-read-only t))
|
||||
|
||||
(defun notmuch-search-find-thread-id ()
|
||||
(save-excursion
|
||||
(beginning-of-line)
|
||||
(let ((beg (point)))
|
||||
(re-search-forward "[a-fA-F0-9]*")
|
||||
(filter-buffer-substring beg (point)))))
|
||||
|
||||
(defun notmuch-search-show-thread ()
|
||||
(interactive)
|
||||
(notmuch-show (notmuch-search-find-thread-id)))
|
||||
|
||||
(defun notmuch-search (query)
|
||||
"Run \"notmuch search\" with the given query string and display results."
|
||||
(interactive "sNotmuch search: ")
|
||||
|
|
Loading…
Reference in a new issue