mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
notmuch.el: Add commands to add tag, remove tag, and archive (== remove inbox tag)
These have keybindings of '+', '-', and 'a'. The bug they have so far is lack of visual feedback for their effect, and lack of undo. (Also the fact that adding or removing a single tag for a thread takes way too long--but that's as a Xapian issue as discussed here: replace_document should make minimal changes to database file http://trac.xapian.org/ticket/250 )
This commit is contained in:
parent
c37b1bdf2d
commit
c33eed84f2
1 changed files with 25 additions and 3 deletions
28
notmuch.el
28
notmuch.el
|
@ -68,9 +68,12 @@
|
||||||
|
|
||||||
(defvar notmuch-search-mode-map
|
(defvar notmuch-search-mode-map
|
||||||
(let ((map (make-sparse-keymap)))
|
(let ((map (make-sparse-keymap)))
|
||||||
|
(define-key map "a" 'notmuch-search-archive-thread)
|
||||||
(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)
|
(define-key map "\r" 'notmuch-search-show-thread)
|
||||||
|
(define-key map "+" 'notmuch-search-add-tag)
|
||||||
|
(define-key map "-" 'notmuch-search-remove-tag)
|
||||||
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)
|
||||||
|
@ -96,11 +99,30 @@
|
||||||
(interactive)
|
(interactive)
|
||||||
(notmuch-show (notmuch-search-find-thread-id)))
|
(notmuch-show (notmuch-search-find-thread-id)))
|
||||||
|
|
||||||
|
(defun notmuch-search-call-notmuch-process (&rest args)
|
||||||
|
(let ((error-buffer (get-buffer-create "*Notmuch errors*")))
|
||||||
|
(with-current-buffer error-buffer
|
||||||
|
(erase-buffer))
|
||||||
|
(if (eq (apply 'call-process "notmuch" nil error-buffer nil args) 0)
|
||||||
|
(point)
|
||||||
|
(progn
|
||||||
|
(with-current-buffer error-buffer
|
||||||
|
(let ((beg (point-min))
|
||||||
|
(end (- (point-max) 1)))
|
||||||
|
(error (buffer-substring beg end))
|
||||||
|
))))))
|
||||||
|
|
||||||
|
(defun notmuch-search-add-tag (tag)
|
||||||
|
(interactive "sTag to add: ")
|
||||||
|
(notmuch-search-call-notmuch-process "tag" (concat "+" tag) (concat "thread:" (notmuch-search-find-thread-id))))
|
||||||
|
|
||||||
|
(defun notmuch-search-remove-tag (tag)
|
||||||
|
(interactive "sTag to remove: ")
|
||||||
|
(notmuch-search-call-notmuch-process "tag" (concat "-" tag) (concat "thread:" (notmuch-search-find-thread-id))))
|
||||||
|
|
||||||
(defun notmuch-search-archive-thread ()
|
(defun notmuch-search-archive-thread ()
|
||||||
(interactive)
|
(interactive)
|
||||||
(if (eq (call-process "notmuch" nil (get-buffer-create "*Messages*") nil "tag" "-inbox" (concat "thread:" (notmuch-search-find-thread-id))) 0)
|
(notmuch-search-remove-tag "inbox"))
|
||||||
(let ((inhibit-read-only t))
|
|
||||||
(kill-whole-line))))
|
|
||||||
|
|
||||||
(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."
|
||||||
|
|
Loading…
Reference in a new issue