]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch.el
emacs: do not modify subject in search or show
[notmuch] / emacs / notmuch.el
index 5b4f1c5a078da490a9a7a89b053481a49022191d..a6724fabc032263df85a05665a034a3ad2053763 100644 (file)
@@ -85,11 +85,13 @@ For example:
 `notmuch-read-tag-changes' function.")
 
 (defun notmuch-tag-completions (&optional search-terms)
+  (if (null search-terms)
+      (setq search-terms (list "*")))
   (split-string
    (with-output-to-string
      (with-current-buffer standard-output
        (apply 'call-process notmuch-command nil t
-             nil "search-tags" search-terms)))
+             nil "search" "--output=tags" "--exclude=false" search-terms)))
    "\n+" t))
 
 (defun notmuch-select-tag-with-completion (prompt &rest search-terms)
@@ -249,10 +251,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)
 
@@ -498,7 +507,7 @@ Complete list of currently available key bindings:
   "Display the currently selected thread."
   (interactive)
   (let ((thread-id (notmuch-search-find-thread-id))
-       (subject (notmuch-prettify-subject (notmuch-search-find-subject))))
+       (subject (notmuch-search-find-subject)))
     (if (> (length thread-id) 0)
        (notmuch-show thread-id
                      (current-buffer)
@@ -567,7 +576,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 +587,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)
@@ -705,12 +714,12 @@ This function advances the next thread when finished."
 Here is an example of how to color search results based on tags.
  (the following text would be placed in your ~/.emacs file):
 
- (setq notmuch-search-line-faces '((\"delete\" . (:foreground \"red\"
+ (setq notmuch-search-line-faces '((\"deleted\" . (:foreground \"red\"
                                                  :background \"blue\"))
                                    (\"unread\" . (:foreground \"green\"))))
 
 The attributes defined for matching tags are merged, with later
-attributes overriding earlier. A message having both \"delete\"
+attributes overriding earlier. A message having both \"deleted\"
 and \"unread\" tags with the above settings would have a green
 foreground and blue background."
   :type '(alist :key-type (string) :value-type (custom-face-edit))
@@ -865,16 +874,17 @@ non-authors is found, assume that all of the authors match."
                      (goto-char (point-max))
                      (if (/= (match-beginning 1) line)
                          (insert (concat "Error: Unexpected output from notmuch search:\n" (substring string line (match-beginning 1)) "\n")))
-                     (let ((beg (point)))
-                       (notmuch-search-show-result date count authors
-                                                   (notmuch-prettify-subject subject) tags)
-                       (notmuch-search-color-line beg (point) tag-list)
-                       (put-text-property beg (point) 'notmuch-search-thread-id thread-id)
-                       (put-text-property beg (point) 'notmuch-search-authors authors)
-                       (put-text-property beg (point) 'notmuch-search-subject subject)
-                       (when (string= thread-id notmuch-search-target-thread)
-                         (set 'found-target beg)
-                         (set 'notmuch-search-target-thread "found")))
+                     ;; We currently just throw away excluded matches.
+                     (unless (eq (aref count 1) ?0)
+                       (let ((beg (point)))
+                         (notmuch-search-show-result date count authors subject tags)
+                         (notmuch-search-color-line beg (point) tag-list)
+                         (put-text-property beg (point) 'notmuch-search-thread-id thread-id)
+                         (put-text-property beg (point) 'notmuch-search-authors authors)
+                         (put-text-property beg (point) 'notmuch-search-subject subject)
+                         (when (string= thread-id notmuch-search-target-thread)
+                           (set 'found-target beg)
+                           (set 'notmuch-search-target-thread "found"))))
                      (set 'line (match-end 0)))
                  (set 'more nil)
                  (while (and (< line (length string)) (= (elt string line) ?\n))
@@ -953,7 +963,7 @@ PROMPT is the string to prompt with."
                                         completions)))
               (t (list string)))))))
       ;; this was simpler than convincing completing-read to accept spaces:
-      (define-key keymap (kbd "<tab>") 'minibuffer-complete)
+      (define-key keymap (kbd "TAB") 'minibuffer-complete)
       (let ((history-delete-duplicates t))
        (read-from-minibuffer prompt nil keymap nil
                              'notmuch-search-history nil nil)))))