aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Mark Walters <markwalters1009@gmail.com>2013-01-13 12:43:52 +0000
committerGravatar David Bremner <bremner@debian.org>2013-01-14 19:46:13 -0400
commitf1a355febf27de6c2bf5fec1b038af2e96f93263 (patch)
tree8a3394e1dae29949c08833be3e4533c3c01fe267
parente43e0af920ead3beb17a4a9c821042cfe56a7ab7 (diff)
emacs: show: w3m/invisibility workaround
There is a bug in the current notmuch code with w3m and invisible parts. w3m sets a keymap, and if we have a hidden [text/html] point at the start of the following line still gets this w3m keymap which causes some strange effects. For example, RET gives an error "No URL at Point" rather than hiding the message, <down> goes to the next link rather than just down a line. These keybinding are also inconvenient when the text/html part is displayed so we ask w3m not to install a keymap. This is only likely to be a problem for emacs 23 as shr is preferred as html renderer on emacs 24 (although the user can set the renderer to w3m even on emacs 24). This solution was suggested by Tomi Ollila <tomi.ollila@iki.fi>
-rw-r--r--emacs/notmuch-show.el10
1 files changed, 10 insertions, 0 deletions
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 5751d984..1864dd15 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -818,6 +818,16 @@ message at DEPTH in the current thread."
(defun notmuch-show-insert-part-inline-patch-fake-part (msg part content-type nth depth declared-type)
(notmuch-show-insert-part-*/* msg part "text/x-diff" nth depth "inline patch"))
+(defun notmuch-show-insert-part-text/html (msg part content-type nth depth declared-type)
+ ;; text/html handler to work around bugs in renderers and our
+ ;; invisibile parts code. In particular w3m sets up a keymap which
+ ;; "leaks" outside the invisible region and causes strange effects
+ ;; in notmuch. We set mm-inline-text-html-with-w3m-keymap to nil to
+ ;; tell w3m not to set a keymap (so the normal notmuch-show-mode-map
+ ;; remains).
+ (let ((mm-inline-text-html-with-w3m-keymap nil))
+ (notmuch-show-insert-part-*/* msg part content-type nth depth declared-type)))
+
(defun notmuch-show-insert-part-*/* (msg part content-type nth depth declared-type)
;; This handler _must_ succeed - it is the handler of last resort.
(notmuch-show-insert-part-header nth content-type declared-type (plist-get part :filename))