[notmuch] [PATCH] Reintroduce HTML inlining, with a much needed optimization

2010-02-12 Thread Michal Sojka
On Tue, 09 Feb 2010 18:18:38 -0800, Carl Worth  wrote:
> On Tue,  9 Feb 2010 17:55:21 -0800, Alexander Botero-Lowry  at gmail.com> wrote:
> > Now instead of requiring every single message be parsed, we now check
> > the Content-type in the parsed headers and only do HTML inlining if it's
> > text/html
> 
> Excellent! I've pushed this out now. Greatly appreciated.

Hi,

I have the following problem when viewing HTML inline. With certain HTML
messages containing non-ASCII characters, these non-ASCII characters are
not displayed. Since we use many non-ASCII characters in czech language,
this is quite a problem. It is interesting that this doesn't happen with
all messages. Does anybody know what might cause this behaviour?

Thanks
Michal


Re: [notmuch] [PATCH] Reintroduce HTML inlining, with a much needed optimization

2010-02-12 Thread Michal Sojka
On Tue, 09 Feb 2010 18:18:38 -0800, Carl Worth  wrote:
> On Tue,  9 Feb 2010 17:55:21 -0800, Alexander Botero-Lowry 
>  wrote:
> > Now instead of requiring every single message be parsed, we now check
> > the Content-type in the parsed headers and only do HTML inlining if it's
> > text/html
> 
> Excellent! I've pushed this out now. Greatly appreciated.

Hi,

I have the following problem when viewing HTML inline. With certain HTML
messages containing non-ASCII characters, these non-ASCII characters are
not displayed. Since we use many non-ASCII characters in czech language,
this is quite a problem. It is interesting that this doesn't happen with
all messages. Does anybody know what might cause this behaviour?

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


Re: [notmuch] [PATCH] Reintroduce HTML inlining, with a much needed optimization

2010-02-09 Thread Carl Worth
On Tue,  9 Feb 2010 17:55:21 -0800, Alexander Botero-Lowry 
 wrote:
> Now instead of requiring every single message be parsed, we now check
> the Content-type in the parsed headers and only do HTML inlining if it's
> text/html

Excellent! I've pushed this out now. Greatly appreciated.

-Carl


pgp6MMH3JYvHk.pgp
Description: PGP signature
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[notmuch] [PATCH] Reintroduce HTML inlining, with a much needed optimization

2010-02-09 Thread Carl Worth
On Tue,  9 Feb 2010 17:55:21 -0800, Alexander Botero-Lowry  wrote:
> Now instead of requiring every single message be parsed, we now check
> the Content-type in the parsed headers and only do HTML inlining if it's
> text/html

Excellent! I've pushed this out now. Greatly appreciated.

-Carl
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 



[notmuch] [PATCH] Reintroduce HTML inlining, with a much needed optimization

2010-02-09 Thread Alexander Botero-Lowry
Now instead of requiring every single message be parsed, we now check
the Content-type in the parsed headers and only do HTML inlining if it's
text/html
---
 notmuch.el |   54 --
 1 files changed, 40 insertions(+), 14 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 6f69001..b49d4d1 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -133,6 +133,8 @@ remaining lines into a button.")
 (defvar notmuch-show-id-regexp "\\(id:[^ ]*\\)")
 (defvar notmuch-show-depth-match-regexp " depth:\\([0-9]*\\).*match:\\([01]\\) 
")
 (defvar notmuch-show-filename-regexp "filename:\\(.*\\)$")
+(defvar notmuch-show-contentype-regexp "Content-type: \\(.*\\)")
+
 (defvar notmuch-show-tags-regexp "(\\([^)]*\\))$")

 (defvar notmuch-show-parent-buffer nil)
@@ -713,20 +715,44 @@ is what to put on the button."
 (defun notmuch-show-markup-part (beg end depth)
   (if (re-search-forward notmuch-show-part-begin-regexp nil t)
   (progn
-   (forward-line)
-   (let ((beg (point-marker)))
- (re-search-forward notmuch-show-part-end-regexp)
- (let ((end (copy-marker (match-beginning 0
-   (goto-char end)
-   (if (not (bolp))
-   (insert "\n"))
-   (indent-rigidly beg end depth)
-   (notmuch-show-markup-citations-region beg 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)))
+(let (mime-message mime-type)
+  (save-excursion
+(re-search-forward notmuch-show-contentype-regexp end t)
+(setq mime-type (car (split-string (buffer-substring 
+(match-beginning 1) (match-end 
1))
+
+  (if (equal mime-type "text/html")
+  (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)))
+(re-search-forward notmuch-show-part-end-regexp)
+(let ((end (copy-marker (match-beginning 0
+  (goto-char end)
+  (if (not (bolp))
+  (insert "\n"))
+  (indent-rigidly beg end depth)
+  (if (not (eq mime-message nil))
+  (save-excursion
+(goto-char beg)
+(forward-line -1)
+(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 beg 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

 (defun notmuch-show-markup-parts-region (beg end depth)
   (save-excursion
-- 
1.6.5.2



[notmuch] [PATCH] Reintroduce HTML inlining, with a much needed optimization

2010-02-09 Thread Alexander Botero-Lowry
Now instead of requiring every single message be parsed, we now check
the Content-type in the parsed headers and only do HTML inlining if it's
text/html
---
 notmuch.el |   54 --
 1 files changed, 40 insertions(+), 14 deletions(-)

diff --git a/notmuch.el b/notmuch.el
index 6f69001..b49d4d1 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -133,6 +133,8 @@ remaining lines into a button.")
 (defvar notmuch-show-id-regexp "\\(id:[^ ]*\\)")
 (defvar notmuch-show-depth-match-regexp " depth:\\([0-9]*\\).*match:\\([01]\\) 
")
 (defvar notmuch-show-filename-regexp "filename:\\(.*\\)$")
+(defvar notmuch-show-contentype-regexp "Content-type: \\(.*\\)")
+
 (defvar notmuch-show-tags-regexp "(\\([^)]*\\))$")
 
 (defvar notmuch-show-parent-buffer nil)
@@ -713,20 +715,44 @@ is what to put on the button."
 (defun notmuch-show-markup-part (beg end depth)
   (if (re-search-forward notmuch-show-part-begin-regexp nil t)
   (progn
-   (forward-line)
-   (let ((beg (point-marker)))
- (re-search-forward notmuch-show-part-end-regexp)
- (let ((end (copy-marker (match-beginning 0
-   (goto-char end)
-   (if (not (bolp))
-   (insert "\n"))
-   (indent-rigidly beg end depth)
-   (notmuch-show-markup-citations-region beg 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)))
+(let (mime-message mime-type)
+  (save-excursion
+(re-search-forward notmuch-show-contentype-regexp end t)
+(setq mime-type (car (split-string (buffer-substring 
+(match-beginning 1) (match-end 
1))
+
+  (if (equal mime-type "text/html")
+  (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)))
+(re-search-forward notmuch-show-part-end-regexp)
+(let ((end (copy-marker (match-beginning 0
+  (goto-char end)
+  (if (not (bolp))
+  (insert "\n"))
+  (indent-rigidly beg end depth)
+  (if (not (eq mime-message nil))
+  (save-excursion
+(goto-char beg)
+(forward-line -1)
+(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 beg 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
 
 (defun notmuch-show-markup-parts-region (beg end depth)
   (save-excursion
-- 
1.6.5.2

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