* [PATCH 1/5] make headers locally expandable/collapsable @ 2009-11-24 7:45 Alexander Botero-Lowry 2009-11-24 7:45 ` [PATCH 2/5] cleanup a lot of left-overs from the global invis Alexander Botero-Lowry 2009-11-24 19:40 ` [PATCH 1/5] make headers locally expandable/collapsable Carl Worth 0 siblings, 2 replies; 8+ messages in thread From: Alexander Botero-Lowry @ 2009-11-24 7:45 UTC (permalink / raw) To: notmuch --- notmuch.el | 18 +++++++++++++++--- 1 files changed, 15 insertions(+), 3 deletions(-) diff --git a/notmuch.el b/notmuch.el index fa6e7de..8aee286 100644 --- a/notmuch.el +++ b/notmuch.el @@ -605,7 +605,8 @@ which this thread was originally shown." (end-of-line) ; Inverse video for subject (overlay-put (make-overlay beg (point)) 'face '(:inverse-video t)) - (forward-line 2) + (forward-line 1) + (end-of-line) (let ((beg-hidden (point-marker))) (re-search-forward notmuch-show-header-end-regexp) (beginning-of-line) @@ -619,8 +620,19 @@ which this thread was originally shown." (forward-line) ) (indent-rigidly beg end depth) - (overlay-put (make-overlay beg-hidden end) - 'invisible 'notmuch-show-header) + (let ((invis-spec (make-symbol "notmuch-show-header"))) + (add-to-invisibility-spec (cons invis-spec t)) + (overlay-put (make-overlay beg-hidden end) + 'invisible invis-spec) + (goto-char beg) + (forward-line) + (let ((header-button (make-button (line-beginning-position) (line-end-position)))) + (button-put header-button 'invisibility-spec (cons invis-spec t)) + (button-put header-button 'action 'notmuch-toggle-invisible-action) + (button-put header-button 'follow-link t) + (button-put header-button 'help-echo + "mouse-1, RET: Show headers") + )) (goto-char end) (insert "\n") (set-marker beg nil) -- 1.6.5.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/5] cleanup a lot of left-overs from the global invis 2009-11-24 7:45 [PATCH 1/5] make headers locally expandable/collapsable Alexander Botero-Lowry @ 2009-11-24 7:45 ` Alexander Botero-Lowry 2009-11-24 7:45 ` [PATCH 3/5] make a nice function for generating invisibility toggle buttons Alexander Botero-Lowry 2009-11-24 19:40 ` [PATCH 1/5] make headers locally expandable/collapsable Carl Worth 1 sibling, 1 reply; 8+ messages in thread From: Alexander Botero-Lowry @ 2009-11-24 7:45 UTC (permalink / raw) To: notmuch --- notmuch.el | 36 ------------------------------------ 1 files changed, 0 insertions(+), 36 deletions(-) diff --git a/notmuch.el b/notmuch.el index 8aee286..ed1f7cb 100644 --- a/notmuch.el +++ b/notmuch.el @@ -62,8 +62,6 @@ (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 +70,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) @@ -666,39 +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) -- 1.6.5.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/5] make a nice function for generating invisibility toggle buttons 2009-11-24 7:45 ` [PATCH 2/5] cleanup a lot of left-overs from the global invis Alexander Botero-Lowry @ 2009-11-24 7:45 ` Alexander Botero-Lowry 2009-11-24 7:45 ` [PATCH 4/5] Make bodies locally toggleable Alexander Botero-Lowry 0 siblings, 1 reply; 8+ messages in thread From: Alexander Botero-Lowry @ 2009-11-24 7:45 UTC (permalink / raw) To: notmuch I realized I was replicating this code over and over again, so this way if I change my mind about something I only have to do it on one place. --- notmuch.el | 45 ++++++++++++++++----------------------------- 1 files changed, 16 insertions(+), 29 deletions(-) diff --git a/notmuch.el b/notmuch.el index ed1f7cb..23a07cc 100644 --- a/notmuch.el +++ b/notmuch.el @@ -497,6 +497,13 @@ which this thread was originally shown." (force-window-update) (redisplay t)) +(defun notmuch-configure-invisibility-button (btn invis-spec help-msg) + (button-put btn 'invisibility-spec invis-spec) + (button-put btn 'action 'notmuch-toggle-invisible-action) + (button-put btn 'follow-link t) + (button-put btn 'help-echo (concat "mouse-1, RET: " help-msg)) +) + (defun notmuch-show-markup-citations-region (beg end depth) (goto-char beg) (beginning-of-line) @@ -512,22 +519,13 @@ 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") - - ) + (notmuch-configure-invisibility-button (insert-button cite-button-text) invis-spec "Show citation") (insert "\n") (goto-char (+ (length cite-button-text) p)) )))) @@ -543,16 +541,9 @@ 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") - ) + (notmuch-configure-invisibility-button + (insert-button (concat "[" (number-to-string sig-lines) + "-line signature.]")) invis-spec "Show signature") (insert "\n") (goto-char end)))))) (forward-line)))) @@ -623,13 +614,9 @@ which this thread was originally shown." 'invisible invis-spec) (goto-char beg) (forward-line) - (let ((header-button (make-button (line-beginning-position) (line-end-position)))) - (button-put header-button 'invisibility-spec (cons invis-spec t)) - (button-put header-button 'action 'notmuch-toggle-invisible-action) - (button-put header-button 'follow-link t) - (button-put header-button 'help-echo - "mouse-1, RET: Show headers") - )) + (notmuch-configure-invisibility-button + (make-button (line-beginning-position) (line-end-position)) + (cons invis-spec t) "Show headers")) (goto-char end) (insert "\n") (set-marker beg nil) -- 1.6.5.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/5] Make bodies locally toggleable 2009-11-24 7:45 ` [PATCH 3/5] make a nice function for generating invisibility toggle buttons Alexander Botero-Lowry @ 2009-11-24 7:45 ` Alexander Botero-Lowry 2009-11-24 7:45 ` [PATCH 5/5] Remove the global expand body keymapping Alexander Botero-Lowry 0 siblings, 1 reply; 8+ messages in thread From: Alexander Botero-Lowry @ 2009-11-24 7:45 UTC (permalink / raw) To: notmuch Having actually implemented this, I realized that my initial approach of providing a function to configure a button was wrong. Instead I've replaced that with button types. This then makes it possible to provide the fully expanded view when all threads in a message are unread. It also has the potential to allow global-expansion functions if that is desireable --- notmuch.el | 89 +++++++++++++++++++++++++++++++---------------------------- 1 files changed, 47 insertions(+), 42 deletions(-) diff --git a/notmuch.el b/notmuch.el index 23a07cc..af0c487 100644 --- a/notmuch.el +++ b/notmuch.el @@ -497,12 +497,15 @@ which this thread was originally shown." (force-window-update) (redisplay t)) -(defun notmuch-configure-invisibility-button (btn invis-spec help-msg) - (button-put btn 'invisibility-spec invis-spec) - (button-put btn 'action 'notmuch-toggle-invisible-action) - (button-put btn 'follow-link t) - (button-put btn 'help-echo (concat "mouse-1, RET: " help-msg)) -) +(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) @@ -525,7 +528,9 @@ which this thread was originally shown." "-line citation.]"))) (goto-char (- beg-sub 1)) (insert (concat "\n" indent)) - (notmuch-configure-invisibility-button (insert-button cite-button-text) invis-spec "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)) )))) @@ -541,9 +546,11 @@ which this thread was originally shown." (goto-char (- beg-sub 1)) (insert (concat "\n" indent)) - (notmuch-configure-invisibility-button - (insert-button (concat "[" (number-to-string sig-lines) - "-line signature.]")) invis-spec "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)))))) (forward-line)))) @@ -572,16 +579,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)) - (overlay-put (make-overlay beg end) - 'invisible 'notmuch-show-body-read)) + (let ((invis-spec (make-symbol "notmuch-show-body-read"))) + (overlay-put (make-overlay beg end) + '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) ))) @@ -589,10 +599,12 @@ 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)) + (setq btn (make-button beg (point) :type 'notmuch-button-body-toggle-type)) (forward-line 1) (end-of-line) (let ((beg-hidden (point-marker))) @@ -614,23 +626,25 @@ which this thread was originally shown." 'invisible invis-spec) (goto-char beg) (forward-line) - (notmuch-configure-invisibility-button - (make-button (line-beginning-position) (line-end-position)) - (cons invis-spec t) "Show headers")) + (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 () @@ -650,17 +664,6 @@ which this thread was originally shown." (notmuch-show-markup-message))) (notmuch-show-hide-markers)) -(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. @@ -689,14 +692,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 @@ -765,7 +760,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 @@ -803,6 +807,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) -- 1.6.5.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 5/5] Remove the global expand body keymapping 2009-11-24 7:45 ` [PATCH 4/5] Make bodies locally toggleable Alexander Botero-Lowry @ 2009-11-24 7:45 ` Alexander Botero-Lowry 0 siblings, 0 replies; 8+ messages in thread From: Alexander Botero-Lowry @ 2009-11-24 7:45 UTC (permalink / raw) To: notmuch --- notmuch.el | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/notmuch.el b/notmuch.el index af0c487..907df2c 100644 --- a/notmuch.el +++ b/notmuch.el @@ -61,7 +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 "m" 'message-mail) (define-key map "n" 'notmuch-show-next-message) (define-key map "N" 'notmuch-show-mark-read-then-next-open-message) -- 1.6.5.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/5] make headers locally expandable/collapsable 2009-11-24 7:45 [PATCH 1/5] make headers locally expandable/collapsable Alexander Botero-Lowry 2009-11-24 7:45 ` [PATCH 2/5] cleanup a lot of left-overs from the global invis Alexander Botero-Lowry @ 2009-11-24 19:40 ` Carl Worth 2009-11-24 19:49 ` Alexander Botero-Lowry 1 sibling, 1 reply; 8+ messages in thread From: Carl Worth @ 2009-11-24 19:40 UTC (permalink / raw) To: Alexander Botero-Lowry, notmuch On Mon, 23 Nov 2009 23:45:03 -0800, Alexander Botero-Lowry <alex.boterolowry@gmail.com> wrote: > --- > notmuch.el | 18 +++++++++++++++--- > 1 files changed, 15 insertions(+), 3 deletions(-) Hmm... no real content for me to reply to here... :-) Anyway, this is really great stuff, Alexander. Thanks for coding it up! I've pushed it out now, (with a little bit more in the way of commit messages---thanks for humoring me). I noticed that I could open and re-collapse a message that notmuch initially presents as hidden, but I didn't seem to be able to collapse an initially-open message. Now, I'm sure that's due to broken-ness in code I wrote myself originally. But as a future-feature request, that might be some consistency that would be nice to have. -Carl ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/5] make headers locally expandable/collapsable 2009-11-24 19:40 ` [PATCH 1/5] make headers locally expandable/collapsable Carl Worth @ 2009-11-24 19:49 ` Alexander Botero-Lowry 2009-11-27 13:43 ` Carl Worth 0 siblings, 1 reply; 8+ messages in thread From: Alexander Botero-Lowry @ 2009-11-24 19:49 UTC (permalink / raw) To: Carl Worth, notmuch On Tue, 24 Nov 2009 11:40:24 -0800, Carl Worth <cworth@cworth.org> wrote: [snip] > Anyway, this is really great stuff, Alexander. Thanks for coding it up! > Awesome thanks. Makes things much more useable anyway. :) > I've pushed it out now, (with a little bit more in the way of commit > messages---thanks for humoring me). > Ahh, come on, Lorem Ipsum was such a clear and detailed commit message. :D > I noticed that I could open and re-collapse a message that notmuch > initially presents as hidden, but I didn't seem to be able to collapse > an initially-open message. Now, I'm sure that's due to broken-ness in > code I wrote myself originally. But as a future-feature request, that > might be some consistency that would be nice to have. > Odd. I wouldn't be suprised were that behavior the case, but I can not reproduce it locally. I totally agree it should be the case, but I seem to be able to expand collapse already open messages without a problem.. alex ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/5] make headers locally expandable/collapsable 2009-11-24 19:49 ` Alexander Botero-Lowry @ 2009-11-27 13:43 ` Carl Worth 0 siblings, 0 replies; 8+ messages in thread From: Carl Worth @ 2009-11-27 13:43 UTC (permalink / raw) To: Alexander Botero-Lowry, notmuch On Tue, 24 Nov 2009 11:49:40 -0800, Alexander Botero-Lowry <alex.boterolowry@gmail.com> wrote: > On Tue, 24 Nov 2009 11:40:24 -0800, Carl Worth <cworth@cworth.org> wrote: > > Odd. I wouldn't be suprised were that behavior the case, but I can not > reproduce it locally. I totally agree it should be the case, but I seem > to be able to expand collapse already open messages without a problem.. OK. I can't reproduce this now either. So feel free to ignore me. -Carl ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-11-27 13:43 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-11-24 7:45 [PATCH 1/5] make headers locally expandable/collapsable Alexander Botero-Lowry 2009-11-24 7:45 ` [PATCH 2/5] cleanup a lot of left-overs from the global invis Alexander Botero-Lowry 2009-11-24 7:45 ` [PATCH 3/5] make a nice function for generating invisibility toggle buttons Alexander Botero-Lowry 2009-11-24 7:45 ` [PATCH 4/5] Make bodies locally toggleable Alexander Botero-Lowry 2009-11-24 7:45 ` [PATCH 5/5] Remove the global expand body keymapping Alexander Botero-Lowry 2009-11-24 19:40 ` [PATCH 1/5] make headers locally expandable/collapsable Carl Worth 2009-11-24 19:49 ` Alexander Botero-Lowry 2009-11-27 13:43 ` Carl Worth
Code repositories for project(s) associated with this public inbox https://yhetil.org/notmuch.git/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).