notmuch.el: Add '<' and '>' bindings to goto first/last thread.

Also, take care to remove a final blank line to avoid the point
going beyond the last thread in the buffer.
This commit is contained in:
Carl Worth 2009-11-02 18:23:06 -08:00
parent e5faf380d1
commit 07b2ef26de

View file

@ -61,7 +61,7 @@
(error "notmuch search process already running for query `%s'" query) (error "notmuch search process already running for query `%s'" query)
) )
(erase-buffer) (erase-buffer)
(beginning-of-buffer) (goto-char (point-min))
(save-excursion (save-excursion
(call-process "notmuch" nil t nil "show" thread-id) (call-process "notmuch" nil t nil "show" thread-id)
) )
@ -79,10 +79,19 @@
(define-key map "\r" 'notmuch-search-show-thread) (define-key map "\r" 'notmuch-search-show-thread)
(define-key map "+" 'notmuch-search-add-tag) (define-key map "+" 'notmuch-search-add-tag)
(define-key map "-" 'notmuch-search-remove-tag) (define-key map "-" 'notmuch-search-remove-tag)
(define-key map "<" 'beginning-of-buffer)
(define-key map ">" 'notmuch-search-goto-last-thread)
(define-key map "\M->" 'notmuch-search-goto-last-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)
(defun notmuch-search-goto-last-thread (&optional arg)
"Move point to the last thread in the buffer."
(interactive "^P")
(end-of-buffer arg)
(beginning-of-line))
;;;###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\""
@ -110,7 +119,7 @@
(defun notmuch-search-markup-thread-ids () (defun notmuch-search-markup-thread-ids ()
(save-excursion (save-excursion
(beginning-of-buffer) (goto-char (point-min))
(while (not (eobp)) (while (not (eobp))
(notmuch-search-markup-this-thread-id) (notmuch-search-markup-this-thread-id)
(next-line)))) (next-line))))
@ -189,12 +198,17 @@
(error "notmuch search process already running for query `%s'" query) (error "notmuch search process already running for query `%s'" query)
) )
(erase-buffer) (erase-buffer)
(beginning-of-buffer) (goto-char (point-min))
(save-excursion (save-excursion
(call-process "notmuch" nil t nil "search" query) (call-process "notmuch" nil t nil "search" query)
)
(notmuch-search-markup-thread-ids) (notmuch-search-markup-thread-ids)
))) ; A well-behaved program ends its output with a newline, but we
; don't actually want the blank line at the end of the file.
(goto-char (point-max))
(if (looking-at "^$")
(delete-backward-char 1)
)
))))
(defun notmuch-search-filter (query) (defun notmuch-search-filter (query)
"Run \"notmuch search\" to refine the current search results. "Run \"notmuch search\" to refine the current search results.