mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 04:18:08 +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>,
|
; Authors: Roland McGrath <roland@gnu.org>,
|
||||||
; Daniel Pfeiffer <occitan@esperanto.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
|
(defvar notmuch-search-mode-map
|
||||||
(let ((map (make-sparse-keymap)))
|
(let ((map (make-sparse-keymap)))
|
||||||
(define-key map "n" 'next-line)
|
(define-key map "n" 'next-line)
|
||||||
(define-key map "p" 'previous-line)
|
(define-key map "p" 'previous-line)
|
||||||
|
(define-key map "\r" 'notmuch-search-show-thread)
|
||||||
map)
|
map)
|
||||||
"Keymap for \"notmuch search\" buffers.")
|
"Keymap for \"notmuch search\" buffers.")
|
||||||
(fset 'notmuch-search-mode-map notmuch-search-mode-map)
|
(fset 'notmuch-search-mode-map notmuch-search-mode-map)
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun notmuch-search-mode ()
|
(defun notmuch-search-mode ()
|
||||||
"Major mode for handling the output of notmuch search"
|
"Major mode for handling the output of \"notmuch search\""
|
||||||
(interactive)
|
(interactive)
|
||||||
(kill-all-local-variables)
|
(kill-all-local-variables)
|
||||||
(use-local-map notmuch-search-mode-map)
|
(use-local-map notmuch-search-mode-map)
|
||||||
|
@ -49,6 +85,17 @@
|
||||||
mode-name "notmuch-search")
|
mode-name "notmuch-search")
|
||||||
(setq buffer-read-only t))
|
(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)
|
(defun notmuch-search (query)
|
||||||
"Run \"notmuch search\" with the given query string and display results."
|
"Run \"notmuch search\" with the given query string and display results."
|
||||||
(interactive "sNotmuch search: ")
|
(interactive "sNotmuch search: ")
|
||||||
|
|
Loading…
Reference in a new issue