diff --git a/guile/examples/org2mu4e b/guile/examples/org2mu4e index 3556b9a28..e7f10ad36 100755 --- a/guile/examples/org2mu4e +++ b/guile/examples/org2mu4e @@ -43,7 +43,7 @@ exec guile -e main -s $0 $@ (org-mu4e-link msg) (if tag (string-concatenate `(":" ,tag "::")) "") (or (mu:from msg) "?") - (let ((body (mu:body-txt msg))) + (let ((body (mu:body msg))) (if (not body) ;; get a 'summary' of the body text "" (string-map diff --git a/guile/mu-guile.texi b/guile/mu-guile.texi index 9eae2feee..a5c24b9e8 100644 --- a/guile/mu-guile.texi +++ b/guile/mu-guile.texi @@ -391,8 +391,7 @@ properties, please refer to the @t{mu-find} man-page. @itemize @item @code{(mu:bcc msg)}: the @t{Bcc} field of the message, or @t{#f} if there is none -@item @code{(mu:body-html msg)}: : the html body of the message, or @t{#f} if there is none -@item @code{(mu:body-txt msg)}: the plain-text body of the message, or @t{#f} if there is none +@item @code{(mu:body msg)}: the body of the message, or @t{#f} if there is none @item @code{(mu:cc msg)}: the @t{Bcc} field of the message, or @t{#f} if there is none @item @code{(mu:date msg)}: the @t{Date} field of the message, or 0 if there is none @item @code{(mu:flags msg)}: list of message-flags for this message diff --git a/guile/mu.scm b/guile/mu.scm index 08eae1fa4..31eca41ae 100644 --- a/guile/mu.scm +++ b/guile/mu.scm @@ -38,8 +38,7 @@ mu:header ;; message accessors mu:field:bcc - mu:field:body-html - mu:field:body-txt + mu:field:body mu:field:cc mu:field:date mu:field:flags @@ -54,6 +53,9 @@ mu:field:tags mu:field:timestamp mu:field:to + ;; deprecated message accessors + mu:body-html + mu:body-txt ;; contact funcs mu:name mu:email @@ -125,8 +127,7 @@ (export method-name))))) (define-getter mu:bcc mu:field:bcc) -(define-getter mu:body-html mu:field:body-html) -(define-getter mu:body-txt mu:field:body-txt) +(define-getter mu:body mu:field:body) (define-getter mu:cc mu:field:cc) (define-getter mu:date mu:field:date) (define-getter mu:flags mu:field:flags) @@ -142,6 +143,16 @@ (define-getter mu:timestamp mu:field:timestamp) (define-getter mu:to mu:field:to) +(define-method (mu:body-html (msg )) + "The HTML body isn't stored separately anymore, so this method can't return +anything useful. We keep it for backwards compatibility." + #f) + +(define-method (mu:body-txt (msg )) + "The text body isn't stored separately anymore. This method is now a synonym +for mu:body." + (mu:body msg)) + (define-method (mu:header (msg ) (hdr )) "Get an arbitrary header HDR from message MSG; return #f if it does not exist." diff --git a/guile/tests/test-mu-guile.scm b/guile/tests/test-mu-guile.scm index afa4f48c6..ed00f1e3b 100755 --- a/guile/tests/test-mu-guile.scm +++ b/guile/tests/test-mu-guile.scm @@ -83,7 +83,23 @@ exec guile -e main -s $0 $@ (str-equal-or-exit (mu:subject msg) "atoms") (str-equal-or-exit (mu:to msg) "Democritus ") (str-equal-or-exit (mu:from msg) "Richard P. Feynman ") - ;;(str-equal-or-exit (mu:header msg "Content-transfer-encoding") "7BIT") + ;;(str-equal-or-exit (mu:header msg "Content-Transfer-Encoding") "8bit") + (str-equal-or-exit (mu:body msg) + (string-join + '("If, in some cataclysm, all scientific knowledge were to be destroyed," + "and only one sentence passed on to the next generation of creatures," + "what statement would contain the most information in the fewest words?" + "I believe it is the atomic hypothesis (or atomic fact, or whatever you" + "wish to call it) that all things are made of atoms — little particles" + "that move around in perpetual motion, attracting each other when they" + "are a little distance apart, but repelling upon being squeezed into" + "one another. In that one sentence you will see an enormous amount of" + "information about the world, if just a little imagination and thinking" + "are applied.\n") "\n")) + (str-equal-or-exit (mu:body-txt msg) (mu:body msg)) + (let ((got (mu:body-html msg))) + (if got + (error-exit "Expected #f, got ~a" got))) (if (not (equal? (mu:priority msg) mu:prio:high)) (error-exit "Expected ~a, got ~a" (mu:priority msg) mu:prio:high)))) @@ -97,7 +113,7 @@ exec guile -e main -s $0 $@ (define (test-stats) "Test statistical functions." ;; average - (num-equal-or-exit (mu:average mu:size) 82601/14) + (num-equal-or-exit (mu:average mu:size) 41299/7) (num-equal-or-exit (floor (mu:stddev mu:size)) 12637.0) (num-equal-or-exit (mu:max mu:size) 46308) (num-equal-or-exit (mu:min mu:size) 111)) diff --git a/mu4e/mu4e-message.el b/mu4e/mu4e-message.el index e42ed4557..80ab1ba6b 100644 --- a/mu4e/mu4e-message.el +++ b/mu4e/mu4e-message.el @@ -71,8 +71,8 @@ Some notes on the format: the MIME-part), :name (the file name, if any), :mime-type (the MIME-type, if any) and :size (the size in bytes, if any). - Messages in the Headers view come from the database and do not have - :attachments, :body-txt or :body-html fields. Message in the - Message view use the actual message file, and do include these fields." + :attachments or :body fields. Message in the Message view use the + actual message file, and do include these fields." ;; after all this documentation, the spectacular implementation (if msg (plist-get msg field) @@ -81,18 +81,17 @@ Some notes on the format: (defsubst mu4e-message-field (msg field) "Retrieve FIELD from message plist MSG. Like `mu4e-message-field-nil', but will sanitize nil values: -- all string field except body-txt/body-html: nil -> \"\" -- numeric fields + dates : nil -> 0 -- all others : return the value -Thus, function will return nil for empty lists, non-existing body-txt -or body-html." +- all string field except body: nil -> \"\" +- numeric fields + dates : nil -> 0 +- all others : return the value +Thus, function will return nil for empty lists, or non-existing body." (let ((val (mu4e-message-field-raw msg field))) (cond (val val) ;; non-nil -> just return it ((member field '(:subject :message-id :path :maildir :in-reply-to)) - "") ;; string fields except body-txt, body-html: nil -> "" - ((member field '(:body-html :body-txt)) + "") ;; string fields except body: nil -> "" + ((member field '(:body)) val) ((member field '(:docid :size)) 0) ;; numeric type: nil -> 0 diff --git a/mu4e/mu4e-server.el b/mu4e/mu4e-server.el index b62a4ab6e..31b2dcba0 100644 --- a/mu4e/mu4e-server.el +++ b/mu4e/mu4e-server.el @@ -323,7 +323,7 @@ The server output is as follows: 3. a view looks like: (:view ) => the (see 2.) will be passed to `mu4e-view-func'. - the also contains :body-txt and/or :body-html + the also contains :body 4. a database update looks like: (:update :move ) diff --git a/testdata/testdir2/wom_bat/cur/atomic b/testdata/testdir2/wom_bat/cur/atomic index c3c679200..44eac88da 100644 --- a/testdata/testdir2/wom_bat/cur/atomic +++ b/testdata/testdir2/wom_bat/cur/atomic @@ -4,8 +4,8 @@ Subject: atoms To: "Democritus" Message-id: <3BE9E6535E302944823E7A1A20D852173@msg.id> MIME-version: 1.0 -Content-type: text/plain; charset=us-ascii -Content-transfer-encoding: 7BIT +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit Precedence: high If, in some cataclysm, all scientific knowledge were to be destroyed,