unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [PATCH 1/2] add functions to toggle the nearest backwards button of a given type
@ 2009-11-25  9:13 Alexander Botero-Lowry
  2009-11-25  9:13 ` [PATCH 2/2] add some very rudimentary support for handling html parts Alexander Botero-Lowry
  2009-11-28  4:25 ` [PATCH 1/2] add functions to toggle the nearest backwards button of a given type Carl Worth
  0 siblings, 2 replies; 4+ messages in thread
From: Alexander Botero-Lowry @ 2009-11-25  9:13 UTC (permalink / raw)
  To: notmuch

It was noted that though local expansion was nice, it was also pretty
nice to have an easy way to just open the headers without moving to the
header button. So this exposes a number of symbols which search backwards
in the buffer for the nearest button of the desire type and push it
---
 notmuch.el |   33 +++++++++++++++++++++++++++++++++
 1 files changed, 33 insertions(+), 0 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 551048a..1853762 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -771,6 +771,39 @@ thread from that buffer can be show when done with this one)."
                   ))))
       )))
 
+(defun notmuch-toggle-hidden-section (section-button-type) 
+  (save-excursion
+    (let ((btn (forward-button -1)))
+      (while btn
+        (if (button-has-type-p btn section-button-type)
+            (progn (push-button)
+                   (setq btn nil))
+          (condition-case err
+              (setq btn (forward-button -1))
+            (error (setq btn nil))))))
+    )
+)
+
+(defun notmuch-toggle-hidden-headers ()
+  (interactive)
+  (notmuch-toggle-hidden-section 'notmuch-button-headers-toggle-type)
+)
+
+(defun notmuch-toggle-hidden-body ()
+  (interactive)
+  (notmuch-toggle-hidden-section 'notmuch-button-body-toggle-type)
+)
+
+(defun notmuch-toggle-hidden-citation ()
+  (interactive)
+  (notmuch-toggle-hidden-section 'notmuch-button-citation-toggle-type)
+)
+
+(defun notmuch-toggle-hidden-signature ()
+  (interactive)
+  (notmuch-toggle-hidden-section 'notmuch-button-signature-toggle-type)
+)
+
 (defvar notmuch-search-authors-width 40
   "Number of columns to use to display authors in a notmuch-search buffer.")
 
-- 
1.6.5.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] add some very rudimentary support for handling html parts
  2009-11-25  9:13 [PATCH 1/2] add functions to toggle the nearest backwards button of a given type Alexander Botero-Lowry
@ 2009-11-25  9:13 ` Alexander Botero-Lowry
  2009-11-28  4:49   ` Carl Worth
  2009-11-28  4:25 ` [PATCH 1/2] add functions to toggle the nearest backwards button of a given type Carl Worth
  1 sibling, 1 reply; 4+ messages in thread
From: Alexander Botero-Lowry @ 2009-11-25  9:13 UTC (permalink / raw)
  To: notmuch

I was planning to be committing super awesome mime-handling support
that would make notmuch rival every mail program ever for pure mime
awesomeness. It turns out, that mime is confusing and hard, and the
mm-* functions do awesome things like provide different forms based
on the number and composition of mime-parts in a document, so I set
my first-pass goal a bit lower. What this does, is if there is an
html mime-part in the message and it's the first part, it gets inlined
using `mm-display-part'. This should solve the biggest problem I was
facing, which is HTML only messages that I have to go into the awful
mime-mode to view.

This still even leaves in the Non-text part: message and all.
---
 notmuch.el |   41 ++++++++++++++++++++++++++++++++---------
 1 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 1853762..fa061c3 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -554,29 +554,52 @@ which this thread was originally shown."
                     (goto-char end))))))
       (forward-line))))
 
-(defun notmuch-show-markup-part (beg end depth)
+(defun notmuch-show-markup-part (beg end depth mime-message)
   (if (re-search-forward notmuch-show-part-begin-regexp nil t)
       (progn
+        (if (eq mime-message nil)
+            (let ((filename (notmuch-show-get-filename)))
+              (with-temp-buffer
+                (insert-file-contents filename nil nil nil t)
+                (setq mime-message (mm-dissect-buffer)))))
 	(forward-line)
-	(let ((beg (point-marker)))
+	(let ((part-beg (point-marker)))
 	  (re-search-forward notmuch-show-part-end-regexp)
-	  (let ((end (copy-marker (match-beginning 0))))
-	    (goto-char end)
+
+	  (let ((part-end (copy-marker (match-beginning 0))))
+	    (goto-char part-end)
 	    (if (not (bolp))
 		(insert "\n"))
-	    (indent-rigidly beg end depth)
-	    (notmuch-show-markup-citations-region beg end depth)
+	    (indent-rigidly part-beg part-end depth)
+            (save-excursion
+              (goto-char part-beg)
+              (forward-line -1)
+              (beginning-of-line)
+              (let ((handle-type (mm-handle-type mime-message))
+                    mime-type)
+                (if (sequencep (car handle-type))
+                    (setq mime-type (car handle-type))
+                  (setq mime-type (car (car (cdr handle-type))))
+                  )
+                (if (equal mime-type "text/html")
+                    (mm-display-part mime-message))))
+
+	    (notmuch-show-markup-citations-region part-beg part-end depth)
 	    ; Advance to the next part (if any) (so the outer loop can
 	    ; determine whether we've left the current message.
 	    (if (re-search-forward notmuch-show-part-begin-regexp nil t)
 		(beginning-of-line)))))
-    (goto-char end)))
+    (goto-char end))
+  mime-message)
 
 (defun notmuch-show-markup-parts-region (beg end depth)
   (save-excursion
     (goto-char beg)
-    (while (< (point) end)
-      (notmuch-show-markup-part beg end depth))))
+    (let (mime-message)
+      (while (< (point) end)
+        (setq mime-message
+              (notmuch-show-markup-part
+               beg end depth mime-message))))))
 
 (defun notmuch-show-markup-body (depth btn)
   (re-search-forward notmuch-show-body-begin-regexp)
-- 
1.6.5.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] add functions to toggle the nearest backwards button of a given type
  2009-11-25  9:13 [PATCH 1/2] add functions to toggle the nearest backwards button of a given type Alexander Botero-Lowry
  2009-11-25  9:13 ` [PATCH 2/2] add some very rudimentary support for handling html parts Alexander Botero-Lowry
@ 2009-11-28  4:25 ` Carl Worth
  1 sibling, 0 replies; 4+ messages in thread
From: Carl Worth @ 2009-11-28  4:25 UTC (permalink / raw)
  To: Alexander Botero-Lowry, notmuch

[-- Attachment #1: Type: text/plain, Size: 720 bytes --]

On Wed, 25 Nov 2009 01:13:32 -0800, Alexander Botero-Lowry <alex.boterolowry@gmail.com> wrote:
> It was noted that though local expansion was nice, it was also pretty
> nice to have an easy way to just open the headers without moving to the
> header button. So this exposes a number of symbols which search backwards
> in the buffer for the nearest button of the desire type and push it

Why does this search backwards?

The binding I'm missing the most since we switched from global to local
toggling is 'h' for showing more of the current message's header.

I'd like that to work reliably for the current message regardless of
where point is, (whether before or after the header button in the
current message).

-Carl

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] add some very rudimentary support for handling html parts
  2009-11-25  9:13 ` [PATCH 2/2] add some very rudimentary support for handling html parts Alexander Botero-Lowry
@ 2009-11-28  4:49   ` Carl Worth
  0 siblings, 0 replies; 4+ messages in thread
From: Carl Worth @ 2009-11-28  4:49 UTC (permalink / raw)
  To: Alexander Botero-Lowry, notmuch

[-- Attachment #1: Type: text/plain, Size: 1479 bytes --]

On Wed, 25 Nov 2009 01:13:33 -0800, Alexander Botero-Lowry <alex.boterolowry@gmail.com> wrote:
> I was planning to be committing super awesome mime-handling support
> that would make notmuch rival every mail program ever for pure mime
> awesomeness. It turns out, that mime is confusing and hard, and the
> mm-* functions do awesome things like provide different forms based
> on the number and composition of mime-parts in a document, so I set
> my first-pass goal a bit lower. What this does, is if there is an
> html mime-part in the message and it's the first part, it gets inlined
> using `mm-display-part'. This should solve the biggest problem I was
> facing, which is HTML only messages that I have to go into the awful
> mime-mode to view.
> 
> This still even leaves in the Non-text part: message and all.

A very nice first step for support for HTML mail. Thanks, Alex!

This is definitely easier than viewing the raw mail message and trying
to read past all the tags. I did exercise some editorial license and
change the commit message, (removing references to future ideas,
etc.). Here's what I ended up with before pushing:

    Add some very rudimentary support for handling html parts
    
    If there is an html mime-part in the message and it's the first part,
    it gets inlined using `mm-display-part' to convert it to plain text.
    
    The HTML content is still available as a non-text part as well.

Thanks again,

-Carl

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-11-28  4:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-25  9:13 [PATCH 1/2] add functions to toggle the nearest backwards button of a given type Alexander Botero-Lowry
2009-11-25  9:13 ` [PATCH 2/2] add some very rudimentary support for handling html parts Alexander Botero-Lowry
2009-11-28  4:49   ` Carl Worth
2009-11-28  4:25 ` [PATCH 1/2] add functions to toggle the nearest backwards button of a given type 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).