mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 04:18:08 +01:00
Merge buttons-for-body-and-headers branch.
Thanks, Alexander!
This commit is contained in:
commit
c1e16435cf
1 changed files with 58 additions and 91 deletions
143
notmuch.el
143
notmuch.el
|
@ -61,9 +61,6 @@
|
|||
; overlays-at to query and manipulate the current overlay.
|
||||
(define-key map "a" 'notmuch-show-archive-thread)
|
||||
(define-key map "A" 'notmuch-show-mark-read-then-archive-thread)
|
||||
(define-key map "b" 'notmuch-show-toggle-body-read-visible)
|
||||
(define-key map "c" 'notmuch-show-toggle-citations-visible)
|
||||
(define-key map "h" 'notmuch-show-toggle-headers-visible)
|
||||
(define-key map "m" 'message-mail)
|
||||
(define-key map "n" 'notmuch-show-next-message)
|
||||
(define-key map "N" 'notmuch-show-mark-read-then-next-open-message)
|
||||
|
@ -72,7 +69,6 @@
|
|||
(define-key map (kbd "C-p") 'notmuch-show-previous-line)
|
||||
(define-key map "q" 'kill-this-buffer)
|
||||
(define-key map "r" 'notmuch-show-reply)
|
||||
(define-key map "s" 'notmuch-show-toggle-signatures-visible)
|
||||
(define-key map "v" 'notmuch-show-view-all-mime-parts)
|
||||
(define-key map "w" 'notmuch-show-view-raw-message)
|
||||
(define-key map "x" 'kill-this-buffer)
|
||||
|
@ -500,6 +496,16 @@ which this thread was originally shown."
|
|||
(force-window-update)
|
||||
(redisplay t))
|
||||
|
||||
(define-button-type 'notmuch-button-invisibility-toggle-type 'action 'notmuch-toggle-invisible-action 'follow-link t)
|
||||
(define-button-type 'notmuch-button-citation-toggle-type 'help-echo "mouse-1, RET: Show citation"
|
||||
:supertype 'notmuch-button-invisibility-toggle-type)
|
||||
(define-button-type 'notmuch-button-signature-toggle-type 'help-echo "mouse-1, RET: Show signature"
|
||||
:supertype 'notmuch-button-invisibility-toggle-type)
|
||||
(define-button-type 'notmuch-button-headers-toggle-type 'help-echo "mouse-1, RET: Show headers"
|
||||
:supertype 'notmuch-button-invisibility-toggle-type)
|
||||
(define-button-type 'notmuch-button-body-toggle-type 'help-echo "mouse-1, RET: Show message"
|
||||
:supertype 'notmuch-button-invisibility-toggle-type)
|
||||
|
||||
(defun notmuch-show-markup-citations-region (beg end depth)
|
||||
(goto-char beg)
|
||||
(beginning-of-line)
|
||||
|
@ -515,22 +521,15 @@ which this thread was originally shown."
|
|||
(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))
|
||||
(cite-button-text
|
||||
(concat "[" (number-to-string (count-lines beg-sub (point)))
|
||||
"-line citation.]"))
|
||||
)
|
||||
"-line citation.]")))
|
||||
(goto-char (- beg-sub 1))
|
||||
(insert (concat "\n" indent))
|
||||
(let ((cite-button (insert-button cite-button-text)))
|
||||
(button-put cite-button 'invisibility-spec invis-spec)
|
||||
(button-put cite-button 'action 'notmuch-toggle-invisible-action)
|
||||
(button-put cite-button 'follow-link t)
|
||||
(button-put cite-button 'help-echo
|
||||
"mouse-1, RET: Show citation")
|
||||
|
||||
)
|
||||
(insert-button cite-button-text
|
||||
'invisibility-spec invis-spec
|
||||
:type 'notmuch-button-citation-toggle-type)
|
||||
(insert "\n")
|
||||
(goto-char (+ (length cite-button-text) p))
|
||||
))))
|
||||
|
@ -546,15 +545,10 @@ which this thread was originally shown."
|
|||
|
||||
(goto-char (- beg-sub 1))
|
||||
(insert (concat "\n" indent))
|
||||
(let ((sig-button (insert-button
|
||||
(concat "[" (number-to-string sig-lines)
|
||||
"-line signature.]"))))
|
||||
(button-put sig-button 'invisibility-spec invis-spec)
|
||||
(button-put sig-button 'action
|
||||
'notmuch-toggle-invisible-action)
|
||||
(button-put sig-button 'follow-link t)
|
||||
(button-put sig-button 'help-echo
|
||||
"mouse-1, RET: Show signature")
|
||||
(let ((sig-button-text (concat "[" (number-to-string sig-lines)
|
||||
"-line signature.]")))
|
||||
(insert-button sig-button-text 'invisibility-spec invis-spec
|
||||
:type 'notmuch-button-signature-toggle-type)
|
||||
)
|
||||
(insert "\n")
|
||||
(goto-char end))))))
|
||||
|
@ -584,16 +578,19 @@ which this thread was originally shown."
|
|||
(while (< (point) end)
|
||||
(notmuch-show-markup-part beg end depth))))
|
||||
|
||||
(defun notmuch-show-markup-body (depth)
|
||||
(defun notmuch-show-markup-body (depth btn)
|
||||
(re-search-forward notmuch-show-body-begin-regexp)
|
||||
(forward-line)
|
||||
(let ((beg (point-marker)))
|
||||
(re-search-forward notmuch-show-body-end-regexp)
|
||||
(let ((end (copy-marker (match-beginning 0))))
|
||||
(notmuch-show-markup-parts-region beg end depth)
|
||||
(if (not (notmuch-show-message-unread-p))
|
||||
(let ((invis-spec (make-symbol "notmuch-show-body-read")))
|
||||
(overlay-put (make-overlay beg end)
|
||||
'invisible 'notmuch-show-body-read))
|
||||
'invisible invis-spec)
|
||||
(button-put btn 'invisibility-spec invis-spec)
|
||||
(if (not (notmuch-show-message-unread-p))
|
||||
(add-to-invisibility-spec invis-spec)))
|
||||
(set-marker beg nil)
|
||||
(set-marker end nil)
|
||||
)))
|
||||
|
@ -601,11 +598,14 @@ which this thread was originally shown."
|
|||
(defun notmuch-show-markup-header (depth)
|
||||
(re-search-forward notmuch-show-header-begin-regexp)
|
||||
(forward-line)
|
||||
(let ((beg (point-marker)))
|
||||
(let ((beg (point-marker))
|
||||
(btn nil))
|
||||
(end-of-line)
|
||||
; Inverse video for subject
|
||||
(overlay-put (make-overlay beg (point)) 'face '(:inverse-video t))
|
||||
(forward-line 2)
|
||||
(setq btn (make-button beg (point) :type 'notmuch-button-body-toggle-type))
|
||||
(forward-line 1)
|
||||
(end-of-line)
|
||||
(let ((beg-hidden (point-marker)))
|
||||
(re-search-forward notmuch-show-header-end-regexp)
|
||||
(beginning-of-line)
|
||||
|
@ -619,22 +619,31 @@ which this thread was originally shown."
|
|||
(forward-line)
|
||||
)
|
||||
(indent-rigidly beg end depth)
|
||||
(let ((invis-spec (make-symbol "notmuch-show-header")))
|
||||
(add-to-invisibility-spec (cons invis-spec t))
|
||||
(overlay-put (make-overlay beg-hidden end)
|
||||
'invisible 'notmuch-show-header)
|
||||
'invisible invis-spec)
|
||||
(goto-char beg)
|
||||
(forward-line)
|
||||
(make-button (line-beginning-position) (line-end-position)
|
||||
'invisibility-spec (cons invis-spec t)
|
||||
:type 'notmuch-button-headers-toggle-type))
|
||||
(goto-char end)
|
||||
(insert "\n")
|
||||
(set-marker beg nil)
|
||||
(set-marker beg-hidden nil)
|
||||
(set-marker end nil)
|
||||
))))
|
||||
))
|
||||
btn))
|
||||
|
||||
(defun notmuch-show-markup-message ()
|
||||
(if (re-search-forward notmuch-show-message-begin-regexp nil t)
|
||||
(progn
|
||||
(re-search-forward notmuch-show-depth-regexp)
|
||||
(let ((depth (string-to-number (buffer-substring (match-beginning 1) (match-end 1)))))
|
||||
(notmuch-show-markup-header depth)
|
||||
(notmuch-show-markup-body depth)))
|
||||
(let ((depth (string-to-number (buffer-substring (match-beginning 1) (match-end 1))))
|
||||
(btn nil))
|
||||
(setq btn (notmuch-show-markup-header depth))
|
||||
(notmuch-show-markup-body depth btn)))
|
||||
(goto-char (point-max))))
|
||||
|
||||
(defun notmuch-show-hide-markers ()
|
||||
|
@ -654,50 +663,6 @@ which this thread was originally shown."
|
|||
(notmuch-show-markup-message)))
|
||||
(notmuch-show-hide-markers))
|
||||
|
||||
(defun notmuch-show-toggle-citations-visible ()
|
||||
"Toggle visibility of citations"
|
||||
(interactive)
|
||||
(if notmuch-show-citations-visible
|
||||
(add-to-invisibility-spec 'notmuch-show-citation)
|
||||
(remove-from-invisibility-spec 'notmuch-show-citation))
|
||||
(set 'notmuch-show-citations-visible (not notmuch-show-citations-visible))
|
||||
; Need to force the redisplay for some reason
|
||||
(force-window-update)
|
||||
(redisplay t))
|
||||
|
||||
(defun notmuch-show-toggle-signatures-visible ()
|
||||
"Toggle visibility of signatures"
|
||||
(interactive)
|
||||
(if notmuch-show-signatures-visible
|
||||
(add-to-invisibility-spec 'notmuch-show-signature)
|
||||
(remove-from-invisibility-spec 'notmuch-show-signature))
|
||||
(set 'notmuch-show-signatures-visible (not notmuch-show-signatures-visible))
|
||||
; Need to force the redisplay for some reason
|
||||
(force-window-update)
|
||||
(redisplay t))
|
||||
|
||||
(defun notmuch-show-toggle-headers-visible ()
|
||||
"Toggle visibility of header fields"
|
||||
(interactive)
|
||||
(if notmuch-show-headers-visible
|
||||
(add-to-invisibility-spec 'notmuch-show-header)
|
||||
(remove-from-invisibility-spec 'notmuch-show-header))
|
||||
(set 'notmuch-show-headers-visible (not notmuch-show-headers-visible))
|
||||
; Need to force the redisplay for some reason
|
||||
(force-window-update)
|
||||
(redisplay t))
|
||||
|
||||
(defun notmuch-show-toggle-body-read-visible ()
|
||||
"Toggle visibility of message bodies of read messages"
|
||||
(interactive)
|
||||
(if notmuch-show-body-read-visible
|
||||
(add-to-invisibility-spec 'notmuch-show-body-read)
|
||||
(remove-from-invisibility-spec 'notmuch-show-body-read))
|
||||
(set 'notmuch-show-body-read-visible (not notmuch-show-body-read-visible))
|
||||
; Need to force the redisplay for some reason
|
||||
(force-window-update)
|
||||
(redisplay t))
|
||||
|
||||
;;;###autoload
|
||||
(defun notmuch-show-mode ()
|
||||
"Major mode for viewing a thread with notmuch.
|
||||
|
@ -726,14 +691,6 @@ view, (remove the \"inbox\" tag from each), with
|
|||
\\{notmuch-show-mode-map}"
|
||||
(interactive)
|
||||
(kill-all-local-variables)
|
||||
(set (make-local-variable 'notmuch-show-headers-visible) t)
|
||||
(notmuch-show-toggle-headers-visible)
|
||||
(set (make-local-variable 'notmuch-show-body-read-visible) t)
|
||||
(notmuch-show-toggle-body-read-visible)
|
||||
(set (make-local-variable 'notmuch-show-citations-visible) t)
|
||||
(notmuch-show-toggle-citations-visible)
|
||||
(set (make-local-variable 'notmuch-show-signatures-visible) t)
|
||||
(notmuch-show-toggle-signatures-visible)
|
||||
(add-to-invisibility-spec 'notmuch-show-marker)
|
||||
(use-local-map notmuch-show-mode-map)
|
||||
(setq major-mode 'notmuch-show-mode
|
||||
|
@ -802,7 +759,16 @@ thread from that buffer can be show when done with this one)."
|
|||
(if (not (notmuch-show-message-unread-p))
|
||||
(progn
|
||||
(goto-char (point-min))
|
||||
(notmuch-show-toggle-body-read-visible)))))
|
||||
(let ((btn (forward-button 1)))
|
||||
(while btn
|
||||
(if (button-has-type-p btn 'notmuch-button-body-toggle-type)
|
||||
(push-button))
|
||||
(condition-case err
|
||||
(setq btn (forward-button 1))
|
||||
(error (setq btn nil)))
|
||||
))
|
||||
(beginning-of-buffer)
|
||||
))))
|
||||
)))
|
||||
|
||||
(defvar notmuch-search-authors-width 40
|
||||
|
@ -840,6 +806,7 @@ thread from that buffer can be show when done with this one)."
|
|||
(defvar notmuch-search-query-string)
|
||||
(defvar notmuch-search-oldest-first)
|
||||
|
||||
|
||||
(defun notmuch-search-scroll-up ()
|
||||
"Scroll up, moving point to last message in thread if at end."
|
||||
(interactive)
|
||||
|
|
Loading…
Reference in a new issue