X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=emacs%2Fnotmuch-show.el;h=e0dce21070f6a8714484d3a7b40214b42bcbe9ea;hp=0cd7d82676723bcff3feaa52afd3678bc7c51465;hb=af59d61a4c295a42038889a333fb39a8c05b6a91;hpb=2ee1d8e1c70ce20728bc3faada389a4802636352 diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 0cd7d826..e0dce210 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -613,7 +613,7 @@ current buffer, if possible." ;; times (hundreds!), which results in many calls to ;; `notmuch part'. (unless content - (setq content (notmuch-get-bodypart-internal (concat "id:" message-id) + (setq content (notmuch-get-bodypart-internal (notmuch-id-to-query message-id) part-number notmuch-show-process-crypto)) (with-current-buffer w3m-current-buffer (notmuch-show-w3m-cid-store-internal url @@ -1060,20 +1060,22 @@ function is used." (append (list "\'") basic-args (list "and (" notmuch-show-query-context ")\'")) (append (list "\'") basic-args (list "\'"))))) - (notmuch-show-insert-forest (notmuch-query-get-threads args)) + (notmuch-show-insert-forest (notmuch-query-get-threads + (cons "--exclude=false" args))) ;; If the query context reduced the results to nothing, run ;; the basic query. (when (and (eq (buffer-size) 0) notmuch-show-query-context) (notmuch-show-insert-forest - (notmuch-query-get-threads basic-args)))) + (notmuch-query-get-threads + (cons "--exclude=false" basic-args))))) (jit-lock-register #'notmuch-show-buttonise-links) (run-hooks 'notmuch-show-hook)) ;; Set the header line to the subject of the first message. - (setq header-line-format (notmuch-show-strip-re (notmuch-show-get-pretty-subject))))) + (setq header-line-format (notmuch-show-strip-re (notmuch-show-get-subject))))) (defun notmuch-show-capture-state () "Capture the state of the current buffer. @@ -1325,16 +1327,16 @@ Some useful entries are: (plist-get props prop))) (defun notmuch-show-get-message-id (&optional bare) - "Return the Message-Id of the current message. + "Return an id: query for the Message-Id of the current message. If optional argument BARE is non-nil, return -the Message-Id without prefix and quotes." +the Message-Id without id: prefix and escaping." (if bare (notmuch-show-get-prop :id) - (concat "id:\"" (notmuch-show-get-prop :id) "\""))) + (notmuch-id-to-query (notmuch-show-get-prop :id)))) (defun notmuch-show-get-messages-ids () - "Return all message ids of messages in the current thread." + "Return all id: queries of messages in the current thread." (let ((message-ids)) (notmuch-show-mapc (lambda () (push (notmuch-show-get-message-id) message-ids))) @@ -1373,9 +1375,6 @@ current thread." (defun notmuch-show-get-depth () (notmuch-show-get-prop :depth)) -(defun notmuch-show-get-pretty-subject () - (notmuch-prettify-subject (notmuch-show-get-subject))) - (defun notmuch-show-set-tags (tags) "Set the tags of the current message." (notmuch-show-set-prop :tags tags) @@ -1401,7 +1400,7 @@ current thread." ;; thread. (defun notmuch-show-get-message-ids-for-open-messages () - "Return a list of all message IDs for open messages in the current thread." + "Return a list of all id: queries for open messages in the current thread." (save-excursion (let (message-ids done) (goto-char (point-min)) @@ -1445,6 +1444,11 @@ current window), advance to the next open message." ;; This is not the last message - move to the next visible one. (notmuch-show-next-open-message)) + ((not (= (point) (point-max))) + ;; This is the last message, but the cursor is not at the end of + ;; the buffer. Move it there. + (goto-char (point-max))) + (t ;; This is the last message - change the return value (setq ret t))) @@ -1569,6 +1573,11 @@ to show, nil otherwise." (notmuch-show-message-adjust)) (goto-char (point-max))))) +(defun notmuch-show-open-if-matched () + "Open a message if it is matched (whether or not excluded)." + (let ((props (notmuch-show-get-message-properties))) + (notmuch-show-message-visible props (plist-get props :match)))) + (defun notmuch-show-goto-first-wanted-message () "Move to the first open message and mark it read" (goto-char (point-min)) @@ -1576,9 +1585,14 @@ to show, nil otherwise." (notmuch-show-mark-read) (notmuch-show-next-open-message)) (when (eobp) + ;; There are no matched non-excluded messages so open all matched + ;; (necessarily excluded) messages and go to the first. + (notmuch-show-mapc 'notmuch-show-open-if-matched) + (force-window-update) (goto-char (point-min)) - (unless (notmuch-show-get-prop :match) - (notmuch-show-next-matching-message)))) + (if (notmuch-show-message-visible-p) + (notmuch-show-mark-read) + (notmuch-show-next-open-message)))) (defun notmuch-show-previous-open-message () "Show the previous open message." @@ -1805,7 +1819,7 @@ thread from search." (notmuch-common-do-stash (notmuch-show-get-from))) (defun notmuch-show-stash-message-id () - "Copy message ID of current message to kill-ring." + "Copy id: query matching the current message to kill-ring." (interactive) (notmuch-common-do-stash (notmuch-show-get-message-id)))