Re: [PATCH v2] emacs: Allow part preferences to depend on message content.

2016-04-03 Thread David Edmondson
On Thu, Mar 24 2016, David Bremner  wrote:
> David Edmondson  writes:
>
>> Currently the preference for which sub-part of a multipart/alternative
>> part is shown is global. Allow to the user to override the settings on a
>> per-message basis by providing the ability to call a function that has
>> access to the message to return the discouraged type list.
>
> This patch looks fine, but it needs a smarter monkey than me to rebase
> it.

Updated patch follows id:1459699478-21167-1-git-send-email-...@dme.org.
___
notmuch mailing list
notmuch@notmuchmail.org
https://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH v2] emacs: Allow part preferences to depend on message content.

2016-03-24 Thread David Bremner
David Edmondson  writes:

> Currently the preference for which sub-part of a multipart/alternative
> part is shown is global. Allow to the user to override the settings on a
> per-message basis by providing the ability to call a function that has
> access to the message to return the discouraged type list.

This patch looks fine, but it needs a smarter monkey than me to rebase
it.

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


[PATCH v2] emacs: Allow part preferences to depend on message content.

2016-01-29 Thread David Edmondson
Currently the preference for which sub-part of a multipart/alternative
part is shown is global. Allow to the user to override the settings on a
per-message basis by providing the ability to call a function that has
access to the message to return the discouraged type list.

The original approach is retained as the default.
---
 emacs/notmuch-lib.el  | 20 
 emacs/notmuch-mua.el  |  2 +-
 emacs/notmuch-show.el |  2 +-
 3 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index 89c01a5..6b815c2 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -520,11 +520,23 @@ This replaces spaces, percents, and double quotes in STR 
with
 "multipart/related"
 ))
 
-(defun notmuch-multipart/alternative-choose (types)
-  "Return a list of preferred types from the given list of types"
+(defun notmuch-multipart/alternative-determine-discouraged (msg)
+  "Return the discouraged alternatives for the specified message."
+  ;; If a function, return the result of calling it.
+  (if (functionp notmuch-multipart/alternative-discouraged)
+  (funcall notmuch-multipart/alternative-discouraged msg)
+;; Otherwise simply return the value of the variable, which is
+;; assumed to be a list of discouraged alternatives. This is the
+;; default behaviour.
+notmuch-multipart/alternative-discouraged))
+
+(defun notmuch-multipart/alternative-choose (msg types)
+  "Return a list of preferred types from the given list of types
+for this message, if present."
   ;; Based on `mm-preferred-alternative-precedence'.
-  (let ((seq types))
-(dolist (pref (reverse notmuch-multipart/alternative-discouraged))
+  (let ((discouraged (notmuch-multipart/alternative-determine-discouraged msg))
+   (seq types))
+(dolist (pref (reverse discouraged))
   (dolist (elem (copy-sequence seq))
(when (string-match pref elem)
  (setq seq (nconc (delete elem seq) (list elem))
diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
index 5462f54..8244258 100644
--- a/emacs/notmuch-mua.el
+++ b/emacs/notmuch-mua.el
@@ -147,7 +147,7 @@ Note that these functions use `mail-citation-hook' if that 
is non-nil."
if (notmuch-match-content-type (plist-get part :content-type) 
"multipart/alternative")
  collect (let* ((subparts (plist-get part :content))
(types (mapcar (lambda (part) (plist-get part 
:content-type)) subparts))
-   (chosen-type (car (notmuch-multipart/alternative-choose 
types
+   (chosen-type (car (notmuch-multipart/alternative-choose 
nil types
   (loop for part in (reverse subparts)
 if (notmuch-match-content-type (plist-get part 
:content-type) chosen-type)
 return part))
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 3345878..2ec30a8 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -612,7 +612,7 @@ will return nil if the CID is unknown or cannot be 
retrieved."
  (plist-get part :content)))
 
 (defun notmuch-show-insert-part-multipart/alternative (msg part content-type 
nth depth button)
-  (let ((chosen-type (car (notmuch-multipart/alternative-choose 
(notmuch-show-multipart/*-to-list part
+  (let ((chosen-type (car (notmuch-multipart/alternative-choose msg 
(notmuch-show-multipart/*-to-list part
(inner-parts (plist-get part :content))
(start (point)))
 ;; This inserts all parts of the chosen type rather than just one,
-- 
2.6.3

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