unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
To: notmuch@notmuchmail.org
Subject: [PATCH 3/5] Fix hiding a message while some citations are shown in notmuch-show view.
Date: Thu, 26 May 2011 02:10:14 +0400	[thread overview]
Message-ID: <1306361416-5019-4-git-send-email-dmitry.kurochkin@gmail.com> (raw)
In-Reply-To: <1306361416-5019-1-git-send-email-dmitry.kurochkin@gmail.com>

Before the change, message and citation invisibility overlays
conflicted: if some citation is made visible and then the whole
message is hidden, that citation remained visible.  This happened
because the citation's overlay has an invisible property which
takes priority over the message overlay.  The message
invisibility spec does not affect citation visibility, it is
determined solely by the citation overlay invisibility spec.
Hence, if citation is made visible, it is not hidden by message
invisibility spec.

The patch changes citation overlay invisibility property to be a
list which contains both the citation and the message
invisibility specs.  This makes the citation invisible if either
of them is added to the `buffer-invisibility-spec'.  Note that
all citation visibility states are "restored" when the message
hidden and shown again.
---
 emacs/notmuch-wash.el |   12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/emacs/notmuch-wash.el b/emacs/notmuch-wash.el
index 7d87e85..bd521ba 100644
--- a/emacs/notmuch-wash.el
+++ b/emacs/notmuch-wash.el
@@ -107,7 +107,8 @@ collapse the remaining lines into a button.")
   :supertype 'notmuch-wash-button-invisibility-toggle-type)
 
 (defun notmuch-wash-region-isearch-show (overlay)
-  (remove-from-invisibility-spec (overlay-get overlay 'invisible)))
+  (dolist (invis-spec (overlay-get overlay 'invisible))
+    (remove-from-invisibility-spec invis-spec)))
 
 (defun notmuch-wash-button-label (overlay)
   (let* ((type (overlay-get overlay 'type))
@@ -118,7 +119,7 @@ collapse the remaining lines into a button.")
 	 (lines-count (count-lines (overlay-start overlay) (overlay-end overlay))))
     (format label-format lines-count)))
 
-(defun notmuch-wash-region-to-button (beg end type prefix)
+(defun notmuch-wash-region-to-button (msg beg end type prefix)
   "Auxilary function to do the actual making of overlays and buttons
 
 BEG and END are buffer locations. TYPE should a string, either
@@ -131,11 +132,12 @@ insert before the button, probably for indentation."
   ;; since the newly created symbol has no plist.
 
   (let ((overlay (make-overlay beg end))
+	(message-invis-spec (plist-get msg :message-invis-spec))
 	(invis-spec (make-symbol (concat "notmuch-" type "-region")))
 	(button-type (intern-soft (concat "notmuch-wash-button-"
 					  type "-toggle-type"))))
     (add-to-invisibility-spec invis-spec)
-    (overlay-put overlay 'invisible invis-spec)
+    (overlay-put overlay 'invisible (list invis-spec message-invis-spec))
     (overlay-put overlay 'isearch-open-invisible #'notmuch-wash-region-isearch-show)
     (overlay-put overlay 'type type)
     (goto-char (1+ end))
@@ -166,7 +168,7 @@ insert before the button, probably for indentation."
 	  (goto-char cite-end)
 	  (forward-line (- notmuch-wash-citation-lines-suffix))
 	  (notmuch-wash-region-to-button
-	   hidden-start (point-marker)
+	   msg hidden-start (point-marker)
 	   "citation" "\n")))))
   (if (and (not (eobp))
 	   (re-search-forward notmuch-wash-signature-regexp nil t))
@@ -180,7 +182,7 @@ insert before the button, probably for indentation."
 	      (set-marker sig-end-marker (point-max))
 	      (overlay-put (make-overlay sig-start-marker sig-end-marker) 'face 'message-cited-text)
 	      (notmuch-wash-region-to-button
-	       sig-start-marker sig-end-marker
+	       msg sig-start-marker sig-end-marker
 	       "signature" "\n"))))))
 
 ;;
-- 
1.7.5.1

  parent reply	other threads:[~2011-05-25 22:10 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-25 22:10 [PATCH] Fix hiding a message while some citations are visible Dmitry Kurochkin
2011-05-25 22:10 ` [PATCH 1/5] Pass message to the `notmuch-show-insert-text/plain-hook' hook Dmitry Kurochkin
2011-05-25 22:10 ` [PATCH 2/5] Set message invisibility spec properties before inserting the body Dmitry Kurochkin
2011-05-25 22:10 ` Dmitry Kurochkin [this message]
2011-05-25 22:23   ` [PATCH 3/5] Fix hiding a message while some citations are shown in notmuch-show view Carl Worth
2011-05-25 22:34     ` Dmitry Kurochkin
2011-05-25 22:46       ` Carl Worth
2011-05-25 23:10         ` Dmitry Kurochkin
2011-05-26  1:02           ` Carl Worth
2011-05-26 10:26             ` Dmitry Kurochkin
2011-05-26 21:31               ` Carl Worth
2011-05-26 21:42                 ` Dmitry Kurochkin
2011-06-15 14:06                   ` Carl Worth
2011-06-15 14:25                     ` Dmitry Kurochkin
2011-06-15 16:16                       ` Jameson Graef Rollins
2011-06-15 17:00                       ` Carl Worth
2011-06-15 17:10                         ` Dmitry Kurochkin
2011-05-25 22:10 ` [PATCH 4/5] Set higher priority for headers and hidden citation overlays Dmitry Kurochkin
2011-05-25 22:10 ` [PATCH 5/5] Simplify message and headers visibility code in notmuch-show view Dmitry Kurochkin
2011-05-26 21:38 ` [PATCH 1/2] test: add tests for hiding messages " Dmitry Kurochkin
2011-05-26 21:38   ` [PATCH 2/2] Workaround for Emacs bug #8721 Dmitry Kurochkin
2011-05-26 21:48     ` Dmitry Kurochkin
2011-05-28  1:29       ` Dmitry Kurochkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1306361416-5019-4-git-send-email-dmitry.kurochkin@gmail.com \
    --to=dmitry.kurochkin@gmail.com \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).