notmuch.el: Allow citation suffixes to be shown as well as prefixes.

In many conversations the last few lines of a citation are more
interesting than the first few lines, hence allow those to be shown if
desired.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
David Edmondson 2010-02-17 10:51:51 +00:00 committed by Carl Worth
parent e95dac86f5
commit c44ce805de

View file

@ -111,10 +111,20 @@ Can use up to one integer format parameter, i.e. %d")
"Maximum length of signature that will be hidden by default.") "Maximum length of signature that will be hidden by default.")
(defvar notmuch-show-citation-lines-prefix 4 (defvar notmuch-show-citation-lines-prefix 4
"Always show at least this many lines of a citation. "Always show at least this many lines at the start of a citation.
If there is one more line, show that, otherwise collapse If there is one more line than the sum of
remaining lines into a button.") `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 0
"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-begin-regexp "\fmessage{")
(defvar notmuch-show-message-end-regexp "\fmessage}") (defvar notmuch-show-message-end-regexp "\fmessage}")
@ -680,16 +690,19 @@ is what to put on the button."
(cite-end (match-end 0)) (cite-end (match-end 0))
(cite-lines (count-lines cite-start cite-end))) (cite-lines (count-lines cite-start cite-end)))
(overlay-put (make-overlay cite-start cite-end) 'face 'message-cited-text-face) (overlay-put (make-overlay cite-start cite-end) 'face 'message-cited-text-face)
(when (> cite-lines (1+ notmuch-show-citation-lines-prefix)) (when (> cite-lines (1+ (+ notmuch-show-citation-lines-prefix notmuch-show-citation-lines-suffix)))
(goto-char cite-start) (goto-char cite-start)
(forward-line notmuch-show-citation-lines-prefix) (forward-line 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 (notmuch-show-region-to-button
(point) cite-end hidden-start (point)
"citation" "citation"
indent indent
(format notmuch-show-citation-button-format (format notmuch-show-citation-button-format
(- cite-lines notmuch-show-citation-lines-prefix)) (- cite-lines notmuch-show-citation-lines-prefix notmuch-show-citation-lines-suffix))
)))) )))))
(if (and (< (point) end) (if (and (< (point) end)
(re-search-forward signature-regexp end t)) (re-search-forward signature-regexp end t))
(let* ((sig-start (match-beginning 0)) (let* ((sig-start (match-beginning 0))