X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=emacs%2Fnotmuch-show.el;h=81276d90f32eb2104939afd73c8f6bd5b1ed991c;hp=cc1f9053c4266f4fb6f0943f1bfcaa8999162eff;hb=9193455fa1476ea3957475e77379b75efa6dd90b;hpb=e2dd4ac00b9979de34bd517fa57de56260d38755 diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index cc1f9053..81276d90 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -110,11 +110,21 @@ Can use up to one integer format parameter, i.e. %d") (defvar notmuch-show-signature-lines-max 12 "Maximum length of signature that will be hidden by default.") -(defvar notmuch-show-citation-lines-prefix 4 - "Always show at least this many lines of a citation. +(defvar notmuch-show-citation-lines-prefix 3 + "Always show at least this many lines at the start of a citation. -If there is one more line, show that, otherwise collapse -remaining lines into a button.") +If there is one more line than the sum of +`notmuch-show-citation-lines-prefix' and +`notmuch-show-citation-lines-suffix', show that, otherwise +collapse remaining lines into a button.") + +(defvar notmuch-show-citation-lines-suffix 3 + "Always show at least this many lines at the end of a citation. + +If there is one more line than the sum of +`notmuch-show-citation-lines-prefix' and +`notmuch-show-citation-lines-suffix', show that, otherwise +collapse remaining lines into a button.") (defvar notmuch-show-message-begin-regexp "\fmessage{") (defvar notmuch-show-message-end-regexp "\fmessage}") @@ -679,29 +689,35 @@ is what to put on the button." (let* ((cite-start (match-beginning 0)) (cite-end (match-end 0)) (cite-lines (count-lines cite-start cite-end))) - (when (> cite-lines (1+ notmuch-show-citation-lines-prefix)) + (overlay-put (make-overlay cite-start cite-end) 'face 'message-cited-text-face) + (when (> cite-lines (1+ (+ notmuch-show-citation-lines-prefix notmuch-show-citation-lines-suffix))) (goto-char cite-start) (forward-line notmuch-show-citation-lines-prefix) - (notmuch-show-region-to-button - (point) cite-end - "citation" - indent - (format notmuch-show-citation-button-format - (- cite-lines notmuch-show-citation-lines-prefix)) - )))) + (let ((hidden-start (point))) + (goto-char cite-end) + (forward-line (- notmuch-show-citation-lines-suffix)) + (notmuch-show-region-to-button + hidden-start (point) + "citation" + indent + (format notmuch-show-citation-button-format + (- cite-lines notmuch-show-citation-lines-prefix notmuch-show-citation-lines-suffix)) + ))))) (if (and (< (point) end) (re-search-forward signature-regexp end t)) (let* ((sig-start (match-beginning 0)) (sig-end (match-end 0)) (sig-lines (1- (count-lines sig-start end)))) (if (<= sig-lines notmuch-show-signature-lines-max) - (notmuch-show-region-to-button - sig-start - end - "signature" - indent - (format notmuch-show-signature-button-format sig-lines) - )))))) + (progn + (overlay-put (make-overlay sig-start end) 'face 'message-cited-text-face) + (notmuch-show-region-to-button + sig-start + end + "signature" + indent + (format notmuch-show-signature-button-format sig-lines) + ))))))) (defun notmuch-show-markup-part (beg end depth) (if (re-search-forward notmuch-show-part-begin-regexp nil t) @@ -959,17 +975,26 @@ All currently available key bindings: (lambda() (hl-line-mode 1) )) -(defun notmuch-show (thread-id &optional parent-buffer query-context) +(defun notmuch-show (thread-id &optional parent-buffer query-context buffer-name) "Run \"notmuch show\" with the given thread ID and display results. The optional PARENT-BUFFER is the notmuch-search buffer from which this notmuch-show command was executed, (so that the next thread from that buffer can be show when done with this one). -The optional QUERY-CONTEXT is a notmuch search term. Only messages from the thread -matching this search term are shown if non-nil. " +The optional QUERY-CONTEXT is a notmuch search term. Only +messages from the thread matching this search term are shown if +non-nil. + +The optional BUFFER-NAME provides the name of the buffer in which +the message thread is shown. If it is nil (which occurs when the +command is called interactively) the argument to the function is +used." (interactive "sNotmuch show: ") - (let ((buffer (get-buffer-create (concat "*notmuch-show-" thread-id "*")))) + (when (null buffer-name) + (setq buffer-name (concat "*notmuch-" thread-id "*"))) + (let* ((thread-buffer-name (generate-new-buffer-name buffer-name)) + (buffer (get-buffer-create thread-buffer-name))) (switch-to-buffer buffer) (notmuch-show-mode) (set (make-local-variable 'notmuch-show-parent-buffer) parent-buffer) @@ -981,8 +1006,10 @@ matching this search term are shown if non-nil. " (erase-buffer) (goto-char (point-min)) (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))) + (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 ")\'")) + (append basic-args (list "\'"))))) (apply 'call-process args) (when (and (eq (buffer-size) 0) query-context) (apply 'call-process basic-args)))