[PATCH 2/2] emacs: fix `notmuch-wash-region-to-button' to work at beginning of buffer

2012-01-30 Thread Dmitry Kurochkin
`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  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 at notmuchmail.org'
 add_message \
 [id]="$message_id" \
-- 
1.7.8.3



[PATCH 2/2] emacs: fix `notmuch-wash-region-to-button' to work at beginning of buffer

2012-01-30 Thread Tomi Ollila
On Mon, 30 Jan 2012 16:24:46 +0400, Dmitry Kurochkin  wrote:
> `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.
> ---

+1 -- for test and fix.


Tomi


[PATCH 2/2] emacs: fix `notmuch-wash-region-to-button' to work at beginning of buffer

2012-01-30 Thread David Edmondson
Good fix, +1 (and for the test).
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: 



[PATCH 2/2] emacs: fix `notmuch-wash-region-to-button' to work at beginning of buffer

2012-01-30 Thread Dmitry Kurochkin
`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='originalmessagehidin...@notmuchmail.org'
 add_message \
 [id]=$message_id \
-- 
1.7.8.3

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH 2/2] emacs: fix `notmuch-wash-region-to-button' to work at beginning of buffer

2012-01-30 Thread Tomi Ollila
On Mon, 30 Jan 2012 16:24:46 +0400, Dmitry Kurochkin 
dmitry.kuroch...@gmail.com wrote:
 `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.
 ---

+1 -- for test and fix.


Tomi
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch