]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch.el
Revert "notmuch.el: 'F' in search mode takes us to a list of folders."
[notmuch] / emacs / notmuch.el
index 64f3e3da8edcf0d8222d8466472905aa22d6fbb9..0adaf8b49fd0f2ac08664bc64b73e094bdaf1458 100644 (file)
@@ -268,7 +268,6 @@ For a mouse binding, return nil."
     (define-key map "-" 'notmuch-search-remove-tag)
     (define-key map "+" 'notmuch-search-add-tag)
     (define-key map (kbd "RET") 'notmuch-search-show-thread)
-    (define-key map "F" 'notmuch-folder)
     map)
   "Keymap for \"notmuch search\" buffers.")
 (fset 'notmuch-search-mode-map notmuch-search-mode-map)
@@ -399,10 +398,11 @@ Complete list of currently available key bindings:
 (defun notmuch-search-properties-in-region (property beg end)
   (save-excursion
     (let ((output nil)
-         (last-line (line-number-at-pos end)))
+         (last-line (line-number-at-pos end))
+         (max-line (- (line-number-at-pos (point-max)) 2)))
       (goto-char beg)
       (beginning-of-line)
-      (while (<= (line-number-at-pos) last-line)
+      (while (<= (line-number-at-pos) (min last-line max-line))
        (setq output (cons (get-text-property (point) property) output))
        (forward-line 1))
       output)))
@@ -497,47 +497,47 @@ and will also appear in a buffer named \"*Notmuch errors*\"."
 (defun notmuch-search-get-tags-region (beg end)
   (save-excursion
     (let ((output nil)
-         (last-line (line-number-at-pos end)))
+         (last-line (line-number-at-pos end))
+         (max-line (- (line-number-at-pos (point-max)) 2)))
       (goto-char beg)
-      (while (<= (line-number-at-pos) last-line)
+      (while (<= (line-number-at-pos) (min last-line max-line))
        (setq output (append output (notmuch-search-get-tags)))
        (forward-line 1))
       output)))
 
 (defun notmuch-search-add-tag-thread (tag)
-  (notmuch-call-notmuch-process "tag" (concat "+" tag) (notmuch-search-find-thread-id))
-  (notmuch-search-set-tags (delete-dups (sort (cons tag (notmuch-search-get-tags)) 'string<))))
+  (notmuch-search-add-tag-region tag (point) (point)))
 
 (defun notmuch-search-add-tag-region (tag beg end)
   (let ((search-id-string (mapconcat 'identity (notmuch-search-find-thread-id-region beg end) " or ")))
     (notmuch-call-notmuch-process "tag" (concat "+" tag) search-id-string)
     (save-excursion
-      (let ((last-line (line-number-at-pos end)))
+      (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) last-line)
+       (while (<= (line-number-at-pos) (min last-line max-line))
          (notmuch-search-set-tags (delete-dups (sort (cons tag (notmuch-search-get-tags)) 'string<)))
          (forward-line))))))
 
 (defun notmuch-search-remove-tag-thread (tag)
-  (notmuch-call-notmuch-process "tag" (concat "-" tag) (notmuch-search-find-thread-id))
-  (notmuch-search-set-tags (delete tag (notmuch-search-get-tags))))
+  (notmuch-search-remove-tag-region tag (point) (point)))
 
 (defun notmuch-search-remove-tag-region (tag beg end)
   (let ((search-id-string (mapconcat 'identity (notmuch-search-find-thread-id-region beg end) " or ")))
     (notmuch-call-notmuch-process "tag" (concat "-" tag) search-id-string)
     (save-excursion
-      (let ((last-line (line-number-at-pos end)))
+      (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) last-line)
+       (while (<= (line-number-at-pos) (min last-line max-line))
          (notmuch-search-set-tags (delete tag (notmuch-search-get-tags)))
          (forward-line))))))
 
-
 (defun notmuch-search-add-tag (tag)
   "Add a tag to the currently selected thread or region.
 
-The tag is added to messages in the currently selected thread or
-region which match the current search terms."
+The tag is added to all messages in the currently selected thread
+or threads in the current region."
   (interactive
    (list (notmuch-select-tag-with-completion "Tag to add: ")))
   (save-excursion
@@ -550,8 +550,8 @@ region which match the current search terms."
 (defun notmuch-search-remove-tag (tag)
   "Remove a tag from the currently selected thread or region.
 
-The tag is removed from all messages in the currently selected thread
-or region which match the current search terms."
+The tag is removed from all messages in the currently selected
+thread or threads in the current region."
   (interactive
    (list (notmuch-select-tag-with-completion
          "Tag to remove: "
@@ -772,8 +772,12 @@ search."
 Runs a new search matching only messages that match both the
 current search results AND the additional query string provided."
   (interactive "sFilter search: ")
-  (let ((grouped-query (if (string-match-p notmuch-search-disjunctive-regexp query) (concat "( " query " )") query)))
-    (notmuch-search (concat notmuch-search-query-string " and " grouped-query) notmuch-search-oldest-first)))
+  (let ((grouped-query (if (string-match-p notmuch-search-disjunctive-regexp query)
+                          (concat "( " query " )")
+                        query)))
+    (notmuch-search (if (string= notmuch-search-query-string "*")
+                       grouped-query
+                     (concat notmuch-search-query-string " and " grouped-query)) notmuch-search-oldest-first)))
 
 (defun notmuch-search-filter-by-tag (tag)
   "Filter the current search results based on a single tag.