X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch.el;h=5ef38ce589f70aa93b42b13c2a426c635efbe4c8;hp=d180fa4e51ba04f7ed7d9ba4df2a81e0a021f125;hb=7a9bacac6786729d7f28495b0ef30f9b6ded7696;hpb=5e8ce15bfb4e836ca3ecd961903230b42830c06e diff --git a/notmuch.el b/notmuch.el index d180fa4e..5ef38ce5 100644 --- a/notmuch.el +++ b/notmuch.el @@ -67,6 +67,8 @@ (define-key map "w" 'notmuch-show-save-attachments) (define-key map "V" 'notmuch-show-view-raw-message) (define-key map "v" 'notmuch-show-view-all-mime-parts) + (define-key map "b" 'notmuch-show-toggle-current-body) + (define-key map "h" 'notmuch-show-toggle-current-header) (define-key map "-" 'notmuch-show-remove-tag) (define-key map "+" 'notmuch-show-add-tag) (define-key map "X" 'notmuch-show-mark-read-then-archive-then-exit) @@ -322,7 +324,9 @@ buffer." (lambda (p) (let ((disposition (mm-handle-disposition p))) (and (listp disposition) - (equal (car disposition) "attachment") + (or (equal (car disposition) "attachment") + (and (equal (car disposition) "inline") + (assq 'filename disposition))) (incf count)))) mm-handle) count)) @@ -332,7 +336,9 @@ buffer." (lambda (p) (let ((disposition (mm-handle-disposition p))) (and (listp disposition) - (equal (car disposition) "attachment") + (or (equal (car disposition) "attachment") + (and (equal (car disposition) "inline") + (assq 'filename disposition))) (or (not queryp) (y-or-n-p (concat "Save '" (cdr (assq 'filename disposition)) "' "))) @@ -558,12 +564,12 @@ which this thread was originally shown." (defun notmuch-show-next-button () "Advance point to the next button in the buffer." (interactive) - (goto-char (button-start (next-button (point))))) + (forward-button 1)) (defun notmuch-show-previous-button () "Move point back to the previous button in the buffer." (interactive) - (goto-char (button-start (previous-button (point))))) + (backward-button 1)) (defun notmuch-toggle-invisible-action (cite-button) (let ((invis-spec (button-get cite-button 'invisibility-spec))) @@ -574,6 +580,27 @@ which this thread was originally shown." (force-window-update) (redisplay t)) +(defun notmuch-show-toggle-current-body () + "Toggle the display of the current message body." + (interactive) + (save-excursion + (notmuch-show-move-to-current-message-summary-line) + (unless (button-at (point)) + (notmuch-show-next-button)) + (push-button)) + ) + +(defun notmuch-show-toggle-current-header () + "Toggle the display of the current message header." + (interactive) + (save-excursion + (notmuch-show-move-to-current-message-summary-line) + (forward-line) + (unless (button-at (point)) + (notmuch-show-next-button)) + (push-button)) + ) + (define-button-type 'notmuch-button-invisibility-toggle-type 'action 'notmuch-toggle-invisible-action 'follow-link t @@ -595,26 +622,27 @@ which this thread was originally shown." (while (< (point) end) (let ((beg-sub (point-marker)) (indent (make-string depth ? )) - (citation "[[:space:]]*>")) + (citation ">")) + (move-to-column depth) (if (looking-at citation) (progn (while (looking-at citation) - (forward-line)) + (forward-line) + (move-to-column depth)) (let ((overlay (make-overlay beg-sub (point))) (invis-spec (make-symbol "notmuch-citation-region"))) (add-to-invisibility-spec invis-spec) (overlay-put overlay 'invisible invis-spec) - (let ((p (point)) + (let ((p (point-marker)) (cite-button-text (concat "[" (number-to-string (count-lines beg-sub (point))) - "-line citation.]"))) + "-line citation. Click/Enter to show.]"))) (goto-char (- beg-sub 1)) (insert (concat "\n" indent)) (insert-button cite-button-text 'invisibility-spec invis-spec :type 'notmuch-button-citation-toggle-type) - (insert "\n") - (goto-char (+ (length cite-button-text) p)) + (forward-line) )))) (move-to-column depth) (if (looking-at notmuch-show-signature-regexp) @@ -629,7 +657,7 @@ which this thread was originally shown." (goto-char (- beg-sub 1)) (insert (concat "\n" indent)) (let ((sig-button-text (concat "[" (number-to-string sig-lines) - "-line signature.]"))) + "-line signature. Click/Enter to show.]"))) (insert-button sig-button-text 'invisibility-spec invis-spec :type 'notmuch-button-signature-toggle-type) ) @@ -950,7 +978,9 @@ matching this search term are shown if non-nil. " (save-excursion (let* ((basic-args (list notmuch-command nil t nil "show" "--entire-thread" thread-id)) (args (if query-context (append basic-args (list "and (" query-context ")")) basic-args))) - (apply 'call-process args)) + (apply 'call-process args) + (when (and (eq (buffer-size) 0) query-context) + (apply 'call-process basic-args))) (notmuch-show-markup-messages) ) (run-hooks 'notmuch-show-hook) @@ -1182,7 +1212,7 @@ The tag is added to messages in the currently selected thread which match the current search terms." (interactive (list (notmuch-select-tag-with-completion "Tag to add: "))) - (notmuch-call-notmuch-process "tag" (concat "+" tag) (notmuch-search-find-thread-id) " and " notmuch-search-query-string) + (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<)))) (defun notmuch-search-remove-tag (tag) @@ -1192,7 +1222,7 @@ The tag is removed from messages in the currently selected thread which match the current search terms." (interactive (list (notmuch-select-tag-with-completion "Tag to remove: " (notmuch-search-find-thread-id)))) - (notmuch-call-notmuch-process "tag" (concat "-" tag) (notmuch-search-find-thread-id) " and " notmuch-search-query-string) + (notmuch-call-notmuch-process "tag" (concat "-" tag) (notmuch-search-find-thread-id)) (notmuch-search-set-tags (delete tag (notmuch-search-get-tags)))) (defun notmuch-search-archive-thread ()