From: Adam Wolfe Gordon <awg+notmuch@xvx.ca>
To: notmuch@notmuchmail.org
Subject: [PATCH v8 08/11] emacs: Factor out useful functions into notmuch-lib
Date: Sun, 18 Mar 2012 10:32:40 -0600 [thread overview]
Message-ID: <1332088363-22476-9-git-send-email-awg+notmuch@xvx.ca> (raw)
In-Reply-To: <1332088363-22476-1-git-send-email-awg+notmuch@xvx.ca>
Move a few functions related to handling multipart/alternative parts
into notmuch-lib.el, so they can be used by future reply code.
---
emacs/notmuch-lib.el | 33 +++++++++++++++++++++++++++++++++
emacs/notmuch-show.el | 24 ++----------------------
2 files changed, 35 insertions(+), 22 deletions(-)
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index d315f76..7e3f110 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -21,6 +21,8 @@
;; This is an part of an emacs-based interface to the notmuch mail system.
+(eval-when-compile (require 'cl))
+
(defvar notmuch-command "notmuch"
"Command to run the notmuch binary.")
@@ -173,6 +175,37 @@ the user hasn't set this variable with the old or new value."
(list 'when (< emacs-major-version 23)
form))
+(defun notmuch-split-content-type (content-type)
+ "Split content/type into 'content' and 'type'"
+ (split-string content-type "/"))
+
+(defun notmuch-match-content-type (t1 t2)
+ "Return t if t1 and t2 are matching content types, taking wildcards into account"
+ (let ((st1 (notmuch-split-content-type t1))
+ (st2 (notmuch-split-content-type t2)))
+ (if (or (string= (cadr st1) "*")
+ (string= (cadr st2) "*"))
+ (string= (car st1) (car st2))
+ (string= t1 t2))))
+
+(defvar notmuch-multipart/alternative-discouraged
+ '(
+ ;; Avoid HTML parts.
+ "text/html"
+ ;; multipart/related usually contain a text/html part and some associated graphics.
+ "multipart/related"
+ ))
+
+(defun notmuch-multipart/alternative-choose (types)
+ "Return a list of preferred types from the given list of types"
+ ;; Based on `mm-preferred-alternative-precedence'.
+ (let ((seq types))
+ (dolist (pref (reverse notmuch-multipart/alternative-discouraged))
+ (dolist (elem (copy-sequence seq))
+ (when (string-match pref elem)
+ (setq seq (nconc (delete elem seq) (list elem))))))
+ seq))
+
;; Compatibility functions for versions of emacs before emacs 23.
;;
;; Both functions here were copied from emacs 23 with the following copyright:
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 4a60631..ed938bf 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -542,30 +542,13 @@ current buffer, if possible."
(mm-display-part handle)
t))))))
-(defvar notmuch-show-multipart/alternative-discouraged
- '(
- ;; Avoid HTML parts.
- "text/html"
- ;; multipart/related usually contain a text/html part and some associated graphics.
- "multipart/related"
- ))
-
(defun notmuch-show-multipart/*-to-list (part)
(mapcar (lambda (inner-part) (plist-get inner-part :content-type))
(plist-get part :content)))
-(defun notmuch-show-multipart/alternative-choose (types)
- ;; Based on `mm-preferred-alternative-precedence'.
- (let ((seq types))
- (dolist (pref (reverse notmuch-show-multipart/alternative-discouraged))
- (dolist (elem (copy-sequence seq))
- (when (string-match pref elem)
- (setq seq (nconc (delete elem seq) (list elem))))))
- seq))
-
(defun notmuch-show-insert-part-multipart/alternative (msg part content-type nth depth declared-type)
(notmuch-show-insert-part-header nth declared-type content-type nil)
- (let ((chosen-type (car (notmuch-show-multipart/alternative-choose (notmuch-show-multipart/*-to-list part))))
+ (let ((chosen-type (car (notmuch-multipart/alternative-choose (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,
@@ -808,9 +791,6 @@ current buffer, if possible."
;; Functions for determining how to handle MIME parts.
-(defun notmuch-show-split-content-type (content-type)
- (split-string content-type "/"))
-
(defun notmuch-show-handlers-for (content-type)
"Return a list of content handlers for a part of type CONTENT-TYPE."
(let (result)
@@ -821,7 +801,7 @@ current buffer, if possible."
(list (intern (concat "notmuch-show-insert-part-*/*"))
(intern (concat
"notmuch-show-insert-part-"
- (car (notmuch-show-split-content-type content-type))
+ (car (notmuch-split-content-type content-type))
"/*"))
(intern (concat "notmuch-show-insert-part-" content-type))))
result))
--
1.7.5.4
next prev parent reply other threads:[~2012-03-18 16:33 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-12 4:05 [PATCH v7 00/10] Reply enhancements Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 01/10] test: Add broken test for the new JSON reply format Adam Wolfe Gordon
2012-03-13 16:49 ` Austin Clements
2012-03-13 16:51 ` Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 02/10] reply: Factor out reply creation Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 03/10] TODO: Add replying to multiple messages Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 04/10] reply: Add a JSON reply format Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 05/10] schemata: Add documentation for " Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 06/10] man: Update notmuch-reply man page for JSON format Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 07/10] man: Add --decrypt to reply flags Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 08/10] emacs: Factor out useful functions into notmuch-lib Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 09/10] test: Add broken tests for new emacs reply functionality Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 10/10] emacs: Use the new JSON reply format and message-cite-original Adam Wolfe Gordon
2012-03-13 17:02 ` Austin Clements
2012-03-13 17:47 ` Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 00/11] Reply enhancements, second attempt Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 01/11] test: Add broken test for the new JSON reply format Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 02/11] reply: Factor out reply creation Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 03/11] TODO: Add replying to multiple messages Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 04/11] reply: Add a JSON reply format Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 05/11] schemata: Add documentation for " Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 06/11] man: Update notmuch-reply man page for JSON format Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 07/11] man: Add --decrypt to reply flags Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 08/11] emacs: Factor out useful functions into notmuch-lib Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 09/11] test: Add broken tests for new emacs reply functionality Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 10/11] emacs: Use the new JSON reply format and message-cite-original Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 11/11] NEWS: news for reply enhancements Adam Wolfe Gordon
2012-03-18 13:22 ` David Bremner
2012-03-14 22:26 ` [PATCH v7.1 00/11] Reply enhancements, second attempt Austin Clements
2012-03-18 12:59 ` David Bremner
2012-03-18 16:32 ` [PATCH v8 00/11] Reply enhancements (rebased) Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 01/11] test: Add broken test for the new JSON reply format Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 02/11] reply: Factor out reply creation Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 03/11] TODO: Add replying to multiple messages Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 04/11] reply: Add a JSON reply format Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 05/11] schemata: Add documentation for " Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 06/11] man: Update notmuch-reply man page for JSON format Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 07/11] man: Add --decrypt to reply flags Adam Wolfe Gordon
2012-03-18 16:32 ` Adam Wolfe Gordon [this message]
2012-03-18 16:32 ` [PATCH v8 09/11] test: Add broken tests for new emacs reply functionality Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 10/11] emacs: Use the new JSON reply format and message-cite-original Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 11/11] NEWS: news for reply enhancements Adam Wolfe Gordon
2012-03-20 1:11 ` [PATCH v8 00/11] Reply enhancements (rebased) David Bremner
2012-03-17 19:13 ` [PATCH v7 00/10] Reply enhancements Jameson Graef Rollins
2012-03-17 19:33 ` Adam Wolfe Gordon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1332088363-22476-9-git-send-email-awg+notmuch@xvx.ca \
--to=awg+notmuch@xvx.ca \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).