From: Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
To: notmuch@notmuchmail.org
Subject: [PATCH 2/2] emacs: fix `notmuch-wash-region-to-button' to work at beginning of buffer
Date: Mon, 30 Jan 2012 16:24:46 +0400 [thread overview]
Message-ID: <1327926286-16680-3-git-send-email-dmitry.kurochkin@gmail.com> (raw)
In-Reply-To: <1327926286-16680-1-git-send-email-dmitry.kurochkin@gmail.com>
`Notmuch-wash-region-to-button' is the function that creates hidden
regions with buttons for signatures, citations and original messages.
Before the change, it did not work correctly if the to-be-hidden
region started at the beginning of a message: the visibility toggle
button was hidden as well. The patch fixes this. There are two parts
in the fix:
* Use `insert-before-markers' instead of `insert' for creating the
button, so that it does not get added to the hidden overlay.
* Stop using PREFIX argument for adding a newline before the button.
The newline should not be added before a button at the beginning of
buffer.
The corresponding test is fixed now.
---
emacs/notmuch-wash.el | 24 ++++++++++++++----------
test/emacs-show | 1 -
2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/emacs/notmuch-wash.el b/emacs/notmuch-wash.el
index 5c1e830..9d3d13f 100644
--- a/emacs/notmuch-wash.el
+++ b/emacs/notmuch-wash.el
@@ -136,12 +136,13 @@ 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 (msg beg end type prefix)
+(defun notmuch-wash-region-to-button (msg beg end type &optional prefix)
"Auxiliary function to do the actual making of overlays and buttons
BEG and END are buffer locations. TYPE should a string, either
-\"citation\" or \"signature\". PREFIX is some arbitrary text to
-insert before the button, probably for indentation."
+\"citation\" or \"signature\". Optional PREFIX is some arbitrary
+text to insert before the button, probably for indentation. Note
+that PREFIX should not include a newline."
;; This uses some slightly tricky conversions between strings and
;; symbols because of the way the button code works. Note that
@@ -160,12 +161,15 @@ insert before the button, probably for indentation."
(overlay-put overlay 'type type)
(goto-char (1+ end))
(save-excursion
- (goto-char (1- beg))
- (insert prefix)
- (insert-button (notmuch-wash-button-label overlay)
+ (goto-char beg)
+ (if prefix
+ (insert-before-markers prefix))
+ (let ((button-beg (point)))
+ (insert-before-markers (notmuch-wash-button-label overlay) "\n")
+ (make-button button-beg (1- (point))
'invisibility-spec invis-spec
'overlay overlay
- :type button-type))))
+ :type button-type)))))
(defun notmuch-wash-excerpt-citations (msg depth)
"Excerpt citations and up to one signature."
@@ -177,7 +181,7 @@ insert before the button, probably for indentation."
(msg-end (point-max))
(msg-lines (count-lines msg-start msg-end)))
(notmuch-wash-region-to-button
- msg msg-start msg-end "original" "\n")))
+ msg msg-start msg-end "original")))
(while (and (< (point) (point-max))
(re-search-forward notmuch-wash-citation-regexp nil t))
(let* ((cite-start (match-beginning 0))
@@ -194,7 +198,7 @@ insert before the button, probably for indentation."
(forward-line (- notmuch-wash-citation-lines-suffix))
(notmuch-wash-region-to-button
msg hidden-start (point-marker)
- "citation" "\n")))))
+ "citation")))))
(if (and (not (eobp))
(re-search-forward notmuch-wash-signature-regexp nil t))
(let* ((sig-start (match-beginning 0))
@@ -208,7 +212,7 @@ insert before the button, probably for indentation."
(overlay-put (make-overlay sig-start-marker sig-end-marker) 'face 'message-cited-text)
(notmuch-wash-region-to-button
msg sig-start-marker sig-end-marker
- "signature" "\n"))))))
+ "signature"))))))
;;
diff --git a/test/emacs-show b/test/emacs-show
index 9800575..5700d2e 100755
--- a/test/emacs-show
+++ b/test/emacs-show
@@ -4,7 +4,6 @@ test_description="Testing emacs notmuch-show view"
. test-lib.sh
test_begin_subtest "Hiding Original Message region at beginning of a message"
-test_subtest_known_broken
message_id='OriginalMessageHiding.1@notmuchmail.org'
add_message \
[id]="$message_id" \
--
1.7.8.3
next prev parent reply other threads:[~2012-01-30 12:26 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-30 12:24 [PATCH 0/2] emacs: fix `notmuch-wash-region-to-button' to work at beginning of buffer Dmitry Kurochkin
2012-01-30 12:24 ` [PATCH 1/2] test: add test for hiding Original Message region at beginning of a message Dmitry Kurochkin
2012-02-04 1:22 ` David Bremner
2012-01-30 12:24 ` Dmitry Kurochkin [this message]
2012-01-30 12:54 ` [PATCH 2/2] emacs: fix `notmuch-wash-region-to-button' to work at beginning of buffer David Edmondson
2012-01-30 14:11 ` Tomi Ollila
2012-02-04 7:36 ` [PATCH v2 0/2] " Dmitry Kurochkin
2012-02-04 7:36 ` [PATCH v2 1/2] test: add test for hiding Original Message region at beginning of a message Dmitry Kurochkin
2012-02-04 7:36 ` [PATCH v2 2/2] emacs: fix `notmuch-wash-region-to-button' to work at beginning of buffer Dmitry Kurochkin
2012-02-04 12:36 ` [PATCH v2 0/2] " David Bremner
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=1327926286-16680-3-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).