X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=emacs%2Fnotmuch.el;h=f851c6f70476fcf91dff581ca94034bdc0f7997b;hp=0ffdf9cb460e4cfed6221b1dcf8bba819cd07747;hb=90f310b4fb8903898ead674059584737e448eb8a;hpb=9d8fa2acac9185a5c62fad1db49a1f5920143f9d diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 0ffdf9cb..f851c6f7 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -249,10 +249,17 @@ For a mouse binding, return nil." (set-buffer-modified-p nil) (view-buffer (current-buffer) 'kill-buffer-if-not-modified)))) -(defcustom notmuch-search-hook '(hl-line-mode) +(require 'hl-line) + +(defun notmuch-hl-line-mode () + (prog1 (hl-line-mode) + (when hl-line-overlay + (overlay-put hl-line-overlay 'priority 1)))) + +(defcustom notmuch-search-hook '(notmuch-hl-line-mode) "List of functions to call when notmuch displays the search results." :type 'hook - :options '(hl-line-mode) + :options '(notmuch-hl-line-mode) :group 'notmuch-search :group 'notmuch-hooks) @@ -494,9 +501,9 @@ Complete list of currently available key bindings: "Return a list of authors for the current region" (notmuch-search-properties-in-region 'notmuch-search-subject beg end)) -(defun notmuch-search-show-thread (&optional crypto-switch) +(defun notmuch-search-show-thread () "Display the currently selected thread." - (interactive "P") + (interactive) (let ((thread-id (notmuch-search-find-thread-id)) (subject (notmuch-prettify-subject (notmuch-search-find-subject)))) (if (> (length thread-id) 0) @@ -504,8 +511,7 @@ Complete list of currently available key bindings: (current-buffer) notmuch-search-query-string ;; Name the buffer based on the subject. - (concat "*" (truncate-string-to-width subject 30 nil nil t) "*") - crypto-switch) + (concat "*" (truncate-string-to-width subject 30 nil nil t) "*")) (message "End of search results.")))) (defun notmuch-search-reply-to-thread (&optional prompt-for-sender) @@ -537,25 +543,26 @@ and will also appear in a buffer named \"*Notmuch errors*\"." (error (buffer-substring beg end)) )))))) -(defun notmuch-tag (query &rest tags) - "Add/remove tags in TAGS to messages matching QUERY. +(defun notmuch-tag (query &rest tag-changes) + "Add/remove tags in TAG-CHANGES to messages matching QUERY. -TAGS should be a list of strings of the form \"+TAG\" or \"-TAG\" and -QUERY should be a string containing the search-query. +TAG-CHANGES should be a list of strings of the form \"+tag\" or +\"-tag\" and QUERY should be a string containing the +search-query. Note: Other code should always use this function alter tags of messages instead of running (notmuch-call-notmuch-process \"tag\" ..) directly, so that hooks specified in notmuch-before-tag-hook and notmuch-after-tag-hook will be run." ;; Perform some validation - (mapc (lambda (tag) - (unless (string-match-p "^[-+]\\S-+$" tag) + (mapc (lambda (tag-change) + (unless (string-match-p "^[-+]\\S-+$" tag-change) (error "Tag must be of the form `+this_tag' or `-that_tag'"))) - tags) - (unless (null tags) + tag-changes) + (unless (null tag-changes) (run-hooks 'notmuch-before-tag-hook) (apply 'notmuch-call-notmuch-process "tag" - (append tags (list "--" query))) + (append tag-changes (list "--" query))) (run-hooks 'notmuch-after-tag-hook))) (defcustom notmuch-before-tag-hook nil @@ -567,7 +574,7 @@ a list of strings of the form \"+TAG\" or \"-TAG\". the messages that are about to be tagged" :type 'hook - :options '(hl-line-mode) + :options '(notmuch-hl-line-mode) :group 'notmuch-hooks) (defcustom notmuch-after-tag-hook nil @@ -578,7 +585,7 @@ a list of strings of the form \"+TAG\" or \"-TAG\". 'query' will be a string containing the search query that determines the messages that were tagged" :type 'hook - :options '(hl-line-mode) + :options '(notmuch-hl-line-mode) :group 'notmuch-hooks) (defun notmuch-search-set-tags (tags) @@ -615,26 +622,26 @@ the messages that were tagged" (forward-line 1)) output))) -(defun notmuch-search-tag-thread (&rest tags) +(defun notmuch-search-tag-thread (&rest tag-changes) "Change tags for the currently selected thread. See `notmuch-search-tag-region' for details." - (apply 'notmuch-search-tag-region (point) (point) tags)) + (apply 'notmuch-search-tag-region (point) (point) tag-changes)) -(defun notmuch-search-tag-region (beg end &rest tags) +(defun notmuch-search-tag-region (beg end &rest tag-changes) "Change tags for threads in the given region. TAGS is a list of tag operations for `notmuch-tag'. The tags are added or removed for all threads in the region from BEG to END." (let ((search-string (notmuch-search-find-thread-id-region-search beg end))) - (apply 'notmuch-tag search-string tags) + (apply 'notmuch-tag search-string tag-changes) (save-excursion (let ((last-line (line-number-at-pos end)) (max-line (- (line-number-at-pos (point-max)) 2))) (goto-char beg) (while (<= (line-number-at-pos) (min last-line max-line)) (notmuch-search-set-tags - (notmuch-update-tags (notmuch-search-get-tags) tags)) + (notmuch-update-tags (notmuch-search-get-tags) tag-changes)) (forward-line)))))) (defun notmuch-search-tag (&optional initial-input) @@ -698,7 +705,8 @@ This function advances the next thread when finished." (goto-char (point-min)) (forward-line (1- notmuch-search-target-line)))))))) -(defcustom notmuch-search-line-faces nil +(defcustom notmuch-search-line-faces '(("unread" :weight bold) + ("flagged" :foreground "blue")) "Tag/face mapping for line highlighting in notmuch-search. Here is an example of how to color search results based on tags. @@ -885,7 +893,7 @@ non-authors is found, assume that all of the authors match." (goto-char found-target))) (delete-process proc)))) -(defun notmuch-search-tag-all (&rest actions) +(defun notmuch-search-tag-all (&rest tag-changes) "Add/remove tags from all matching messages. This command adds or removes tags from all messages matching the @@ -897,7 +905,7 @@ Each character of the tag name may consist of alphanumeric characters as well as `_.+-'. " (interactive (notmuch-read-tag-changes)) - (apply 'notmuch-tag notmuch-search-query-string actions)) + (apply 'notmuch-tag notmuch-search-query-string tag-changes)) (defun notmuch-search-buffer-title (query) "Returns the title for a buffer with notmuch search results."