Mercurial > emacs
annotate lisp/mh-e/mh-mime.el @ 88306:7b65aade5e20
new file, based on Alexander Pohoyda's code.
author | Alex Schroeder <alex@gnu.org> |
---|---|
date | Tue, 31 Jan 2006 20:53:28 +0000 |
parents | d7ddb3e565de |
children |
rev | line source |
---|---|
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1 ;;; mh-mime.el --- MH-E support for composing MIME messages |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
2 |
88155 | 3 ;; Copyright (C) 1993, 1995, |
4 ;; 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
5 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
6 ;; Author: Bill Wohler <wohler@newt.com> |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
7 ;; Maintainer: Bill Wohler <wohler@newt.com> |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
8 ;; Keywords: mail |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
9 ;; See: mh-e.el |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
10 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
11 ;; This file is part of GNU Emacs. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
12 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
13 ;; GNU Emacs is free software; you can redistribute it and/or modify |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
14 ;; it under the terms of the GNU General Public License as published by |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
15 ;; the Free Software Foundation; either version 2, or (at your option) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
16 ;; any later version. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
17 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
18 ;; GNU Emacs is distributed in the hope that it will be useful, |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
21 ;; GNU General Public License for more details. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
22 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
23 ;; You should have received a copy of the GNU General Public License |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
88155 | 25 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
26 ;; Boston, MA 02110-1301, USA. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
27 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
28 ;;; Commentary: |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
29 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
30 ;; Internal support for MH-E package. |
88155 | 31 ;; Support for generating MH-style directives for mhn or mhbuild as well as |
32 ;; MML (MIME Meta Language) tags. MH-style directives are supported by MH 6.8 | |
33 ;; or later. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
34 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
35 ;;; Change Log: |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
36 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
37 ;;; Code: |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
38 |
88155 | 39 ;;(message "> mh-mime") |
40 (eval-when-compile (require 'mh-acros)) | |
41 (mh-require-cl) | |
42 | |
43 (require 'gnus-util) | |
44 (require 'mh-buffers) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
45 (require 'mh-comp) |
88155 | 46 (require 'mh-gnus) |
47 ;;(message "< mh-mime") | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
48 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
49 (autoload 'article-emphasize "gnus-art") |
88155 | 50 (autoload 'gnus-article-goto-header "gnus-art") |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
51 (autoload 'gnus-eval-format "gnus-spec") |
88155 | 52 (autoload 'gnus-get-buffer-create "gnus") |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
53 (autoload 'message-options-set-recipient "message") |
88155 | 54 (autoload 'mm-uu-dissect "mm-uu") |
55 (autoload 'mml-unsecure-message "mml-sec") | |
56 (autoload 'rfc2047-decode-region "rfc2047") | |
57 (autoload 'widget-convert-button "wid-edit") | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
58 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
59 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
60 (defun mh-compose-insertion (&optional inline) |
88155 | 61 "Add tag to include a file such as an image or sound. |
62 | |
63 You are prompted for the filename containing the object, the | |
64 media type if it cannot be determined automatically, and a | |
65 content description. If you're using MH-style directives, you | |
66 will also be prompted for additional attributes. | |
67 | |
68 The option `mh-compose-insertion' controls what type of tags are | |
69 inserted. Optional argument INLINE means make it an inline | |
70 attachment." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
71 (interactive "P") |
88155 | 72 (if (equal mh-compose-insertion 'mml) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
73 (if inline |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
74 (mh-mml-attach-file "inline") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
75 (mh-mml-attach-file)) |
88155 | 76 (call-interactively 'mh-mh-attach-file))) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
77 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
78 ;;;###mh-autoload |
88155 | 79 (defun mh-compose-forward (&optional description folder range) |
80 "Add tag to forward a message. | |
81 | |
82 You are prompted for a content DESCRIPTION, the name of the | |
83 FOLDER in which the messages to forward are located, and a RANGE | |
84 of messages, which defaults to the current message in that | |
85 folder. Check the documentation of `mh-interactive-range' to see | |
86 how RANGE is read in interactive use. | |
87 | |
88 The option `mh-compose-insertion' controls what type of tags are inserted." | |
89 (interactive | |
90 (let* ((description | |
91 (mml-minibuffer-read-description)) | |
92 (folder | |
93 (mh-prompt-for-folder "Message from" | |
94 mh-sent-from-folder nil)) | |
95 (default | |
96 (if (and (equal folder mh-sent-from-folder) | |
97 (numberp mh-sent-from-msg)) | |
98 mh-sent-from-msg | |
99 (nth 0 (mh-translate-range folder "cur")))) | |
100 (range | |
101 (mh-read-range "Forward" folder | |
102 (or (and default | |
103 (number-to-string default)) | |
104 t) | |
105 t t))) | |
106 (list description folder range))) | |
107 (let ((messages (mapconcat 'identity (mh-list-to-string range) " "))) | |
108 (dolist (message (mh-translate-range folder messages)) | |
109 (if (equal mh-compose-insertion 'mml) | |
110 (mh-mml-forward-message description folder (format "%s" message)) | |
111 (mh-mh-forward-message description folder (format "%s" message)))))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
112 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
113 ;; To do: |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
114 ;; paragraph code should not fill # lines if MIME enabled. |
88155 | 115 ;; implement mh-auto-mh-to-mime (if non-nil, \\[mh-send-letter] |
116 ;; invokes mh-mh-to-mime automatically before sending.) | |
117 ;; actually, instead of mh-auto-mh-to-mime, | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
118 ;; should read automhnproc from profile |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
119 ;; MIME option to mh-forward |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
120 ;; command to move to content-description insertion point |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
121 |
88155 | 122 (defvar mh-mh-to-mime-args nil |
123 "Extra arguments for \\[mh-mh-to-mime] to pass to the \"mhbuild\" command. | |
124 The arguments are passed to \"mhbuild\" if \\[mh-mh-to-mime] is | |
125 given a prefix argument. Normally default arguments to | |
126 \"mhbuild\" are specified in the MH profile.") | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
127 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
128 (defvar mh-media-type-regexp |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
129 (concat (regexp-opt '("text" "image" "audio" "video" "application" |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
130 "multipart" "message") t) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
131 "/[-.+a-zA-Z0-9]+") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
132 "Regexp matching valid media types used in MIME attachment compositions.") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
133 |
88155 | 134 (defvar mh-have-file-command 'undefined |
135 "Cached value of function `mh-have-file-command'. | |
136 Do not reference this variable directly as it might not have been | |
137 initialized. Always use the command `mh-have-file-command'.") | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
138 |
88155 | 139 ;;;###mh-autoload |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
140 (defun mh-have-file-command () |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
141 "Return t if 'file' command is on the system. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
142 'file -i' is used to get MIME type of composition insertion." |
88155 | 143 (when (eq mh-have-file-command 'undefined) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
144 (setq mh-have-file-command |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
145 (and (fboundp 'executable-find) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
146 (executable-find "file") ; file command exists |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
147 ; and accepts -i and -b args. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
148 (zerop (call-process "file" nil nil nil "-i" "-b" |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
149 (expand-file-name "inc" mh-progs)))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
150 mh-have-file-command) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
151 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
152 (defvar mh-file-mime-type-substitutions |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
153 '(("application/msword" "\.xls" "application/ms-excel") |
88155 | 154 ("application/msword" "\.ppt" "application/ms-powerpoint") |
155 ("text/plain" "\.vcf" "text/x-vcard")) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
156 "Substitutions to make for Content-Type returned from file command. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
157 The first element is the Content-Type returned by the file command. |
88155 | 158 The second element is a regexp matching the file name, usually the |
159 extension. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
160 The third element is the Content-Type to replace with.") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
161 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
162 (defun mh-file-mime-type-substitute (content-type filename) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
163 "Return possibly changed CONTENT-TYPE on the FILENAME. |
88155 | 164 Substitutions are made from the `mh-file-mime-type-substitutions' |
165 variable." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
166 (let ((subst mh-file-mime-type-substitutions) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
167 (type) (match) (answer content-type) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
168 (case-fold-search t)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
169 (while subst |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
170 (setq type (car (car subst)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
171 match (elt (car subst) 1)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
172 (if (and (string-equal content-type type) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
173 (string-match match filename)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
174 (setq answer (elt (car subst) 2) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
175 subst nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
176 (setq subst (cdr subst)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
177 answer)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
178 |
88155 | 179 ;;;###mh-autoload |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
180 (defun mh-file-mime-type (filename) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
181 "Return MIME type of FILENAME from file command. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
182 Returns nil if file command not on system." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
183 (cond |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
184 ((not (mh-have-file-command)) |
88155 | 185 nil) ;no file command, exit now |
186 ((not (and (file-exists-p filename) | |
187 (file-readable-p filename))) | |
188 nil) ;no file or not readable, ditto | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
189 (t |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
190 (save-excursion |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
191 (let ((tmp-buffer (get-buffer-create mh-temp-buffer))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
192 (set-buffer tmp-buffer) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
193 (unwind-protect |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
194 (progn |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
195 (call-process "file" nil '(t nil) nil "-b" "-i" |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
196 (expand-file-name filename)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
197 (goto-char (point-min)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
198 (if (not (re-search-forward mh-media-type-regexp nil t)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
199 nil |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
200 (mh-file-mime-type-substitute (match-string 0) filename))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
201 (kill-buffer tmp-buffer))))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
202 |
88155 | 203 (defun mh-minibuffer-read-type (filename &optional default) |
204 "Return the content type associated with the given FILENAME. | |
205 If the \"file\" command exists and recognizes the given file, | |
206 then its value is returned\; otherwise, the user is prompted for | |
207 a type (see `mailcap-mime-types' and for Emacs 20, | |
208 `mh-mime-content-types'). | |
209 Optional argument DEFAULT is returned if a type isn't entered." | |
210 (mailcap-parse-mimetypes) | |
211 (let* ((default (or default | |
212 (mm-default-file-encoding filename) | |
213 "application/octet-stream")) | |
214 (probed-type (mh-file-mime-type filename)) | |
215 (type (or (and (not (equal probed-type "application/octet-stream")) | |
216 probed-type) | |
217 (completing-read | |
218 (format "Content type (default %s): " default) | |
219 (mapcar 'list (mailcap-mime-types)))))) | |
220 (if (not (equal type "")) | |
221 type | |
222 default))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
223 |
88155 | 224 ;; RFC 2045 - Multipurpose Internet Mail Extensions (MIME) Part One: |
225 ;; Format of Internet Message Bodies. | |
226 ;; RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: | |
227 ;; Media Types. | |
228 ;; RFC 2049 - Multipurpose Internet Mail Extensions (MIME) Part Five: | |
229 ;; Conformance Criteria and Examples. | |
230 ;; RFC 2017 - Definition of the URL MIME External-Body Access-Type | |
231 ;; RFC 1738 - Uniform Resource Locators (URL) | |
232 (defvar mh-access-types | |
233 '(("anon-ftp") ; RFC2046 Anonymous File Transfer Protocol | |
234 ("file") ; RFC1738 Host-specific file names | |
235 ("ftp") ; RFC2046 File Transfer Protocol | |
236 ("gopher") ; RFC1738 The Gopher Protocol | |
237 ("http") ; RFC1738 Hypertext Transfer Protocol | |
238 ("local-file") ; RFC2046 Local file access | |
239 ("mail-server") ; RFC2046 mail-server Electronic mail address | |
240 ("mailto") ; RFC1738 Electronic mail address | |
241 ("news") ; RFC1738 Usenet news | |
242 ("nntp") ; RFC1738 Usenet news using NNTP access | |
243 ("propspero") ; RFC1738 Prospero Directory Service | |
244 ("telnet") ; RFC1738 Telnet | |
245 ("tftp") ; RFC2046 Trivial File Transfer Protocol | |
246 ("url") ; RFC2017 URL scheme MIME access-type Protocol | |
247 ("wais")) ; RFC1738 Wide Area Information Servers | |
248 "Valid MIME access-type values.") | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
249 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
250 ;;;###mh-autoload |
88155 | 251 (defun mh-mh-attach-file (filename type description attributes) |
252 "Add a tag to insert a MIME message part from a file. | |
253 You are prompted for the FILENAME containing the object, the | |
254 media TYPE if it cannot be determined automatically, and a | |
255 content DESCRIPTION. In addition, you are also prompted for | |
256 additional ATTRIBUTES. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
257 |
88155 | 258 See also \\[mh-mh-to-mime]." |
259 (interactive (let ((filename (mml-minibuffer-read-file "Attach file: "))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
260 (list |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
261 filename |
88155 | 262 (mh-minibuffer-read-type filename) |
263 (mml-minibuffer-read-description) | |
264 (read-string "Attributes: " | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
265 (concat "name=\"" |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
266 (file-name-nondirectory filename) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
267 "\""))))) |
88155 | 268 (mh-mh-compose-type filename type description attributes)) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
269 |
88155 | 270 (defun mh-mh-compose-type (filename type |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
271 &optional description attributes comment) |
88155 | 272 "Insert an MH-style directive to insert a file. |
273 The file specified by FILENAME is encoded as TYPE. An optional | |
274 DESCRIPTION is used as the Content-Description field, optional | |
275 set of ATTRIBUTES and an optional COMMENT can also be included." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
276 (beginning-of-line) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
277 (insert "#" type) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
278 (and attributes |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
279 (insert "; " attributes)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
280 (and comment |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
281 (insert " (" comment ")")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
282 (insert " [") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
283 (and description |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
284 (insert description)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
285 (insert "] " (expand-file-name filename)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
286 (insert "\n")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
287 |
88155 | 288 ;;;###mh-autoload |
289 (defun mh-mh-compose-anon-ftp (host filename type description) | |
290 "Add tag to include anonymous ftp reference to a file. | |
291 | |
292 You can have your message initiate an \"ftp\" transfer when the | |
293 recipient reads the message. You are prompted for the remote HOST | |
294 and FILENAME, the media TYPE, and the content DESCRIPTION. | |
295 | |
296 See also \\[mh-mh-to-mime]." | |
297 (interactive (list | |
298 (read-string "Remote host: ") | |
299 (read-string "Remote filename: ") | |
300 (mh-minibuffer-read-type "DUMMY-FILENAME") | |
301 (mml-minibuffer-read-description))) | |
302 (mh-mh-compose-external-type "anon-ftp" host filename | |
303 type description)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
304 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
305 ;;;###mh-autoload |
88155 | 306 (defun mh-mh-compose-external-compressed-tar (host filename description) |
307 "Add tag to include anonymous ftp reference to a compressed tar file. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
308 |
88155 | 309 In addition to retrieving the file via anonymous \"ftp\" as per |
310 the command \\[mh-mh-compose-anon-ftp], the file will also be | |
311 uncompressed and untarred. You are prompted for the remote HOST | |
312 and FILENAME and the content DESCRIPTION. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
313 |
88155 | 314 See also \\[mh-mh-to-mime]." |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
315 (interactive (list |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
316 (read-string "Remote host: ") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
317 (read-string "Remote filename: ") |
88155 | 318 (mml-minibuffer-read-description))) |
319 (mh-mh-compose-external-type "anon-ftp" host filename | |
320 "application/octet-stream" | |
321 description | |
322 "type=tar; conversions=x-compress" | |
323 "mode=image")) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
324 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
325 ;;;###mh-autoload |
88155 | 326 (defun mh-mh-compose-external-type (access-type host filename type |
327 &optional description | |
328 attributes parameters | |
329 comment) | |
330 "Add tag to refer to a remote file. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
331 |
88155 | 332 This command is a general utility for referencing external files. |
333 In fact, all of the other commands that insert directives to | |
334 access external files call this command. You are prompted for the | |
335 ACCESS-TYPE, remote HOST and FILENAME, and content TYPE. If you | |
336 provide a prefix argument, you are also prompted for a content | |
337 DESCRIPTION, ATTRIBUTES, PARAMETERS, and a COMMENT. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
338 |
88155 | 339 See also \\[mh-mh-to-mime]." |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
340 (interactive (list |
88155 | 341 (completing-read "Access type: " mh-access-types) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
342 (read-string "Remote host: ") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
343 (read-string "Remote filename: ") |
88155 | 344 (mh-minibuffer-read-type "DUMMY-FILENAME") |
345 (if current-prefix-arg (mml-minibuffer-read-description)) | |
346 (if current-prefix-arg (read-string "Attributes: ")) | |
347 (if current-prefix-arg (read-string "Parameters: ")) | |
348 (if current-prefix-arg (read-string "Comment: ")))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
349 (beginning-of-line) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
350 (insert "#@" type) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
351 (and attributes |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
352 (insert "; " attributes)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
353 (and comment |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
354 (insert " (" comment ") ")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
355 (insert " [") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
356 (and description |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
357 (insert description)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
358 (insert "] ") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
359 (insert "access-type=" access-type "; ") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
360 (insert "site=" host) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
361 (insert "; name=" (file-name-nondirectory filename)) |
88155 | 362 (let ((directory (file-name-directory filename))) |
363 (and directory | |
364 (insert "; directory=\"" directory "\""))) | |
365 (and parameters | |
366 (insert "; " parameters)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
367 (insert "\n")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
368 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
369 ;;;###mh-autoload |
88155 | 370 (defun mh-mh-forward-message (&optional description folder messages) |
371 "Add tag to forward a message. | |
372 You are prompted for a content DESCRIPTION, the name of the | |
373 FOLDER in which the messages to forward are located, and the | |
374 MESSAGES' numbers. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
375 |
88155 | 376 See also \\[mh-mh-to-mime]." |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
377 (interactive (list |
88155 | 378 (mml-minibuffer-read-description) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
379 (mh-prompt-for-folder "Message from" mh-sent-from-folder nil) |
88155 | 380 (read-string (concat "Messages" |
381 (if (numberp mh-sent-from-msg) | |
382 (format " (default %d): " | |
383 mh-sent-from-msg) | |
384 ": "))))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
385 (beginning-of-line) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
386 (insert "#forw [") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
387 (and description |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
388 (not (string= description "")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
389 (insert description)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
390 (insert "]") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
391 (and folder |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
392 (not (string= folder "")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
393 (insert " " folder)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
394 (if (and messages |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
395 (not (string= messages ""))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
396 (let ((start (point))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
397 (insert " " messages) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
398 (subst-char-in-region start (point) ?, ? )) |
88155 | 399 (if (numberp mh-sent-from-msg) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
400 (insert " " (int-to-string mh-sent-from-msg)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
401 (insert "\n")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
402 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
403 ;;;###mh-autoload |
88155 | 404 (defun mh-mh-to-mime (&optional extra-args) |
405 "Compose MIME message from MH-style directives. | |
406 | |
407 Typically, you send a message with attachments just like any other | |
408 message. However, you may take a sneak preview of the MIME encoding if | |
409 you wish by running this command. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
410 |
88155 | 411 If you wish to pass additional arguments to \"mhbuild\" (\"mhn\") |
412 to affect how it builds your message, use the option | |
413 `mh-mh-to-mime-args'. For example, you can build a consistency | |
414 check into the message by setting `mh-mh-to-mime-args' to | |
415 \"-check\". The recipient of your message can then run \"mhbuild | |
416 -check\" on the message--\"mhbuild\" (\"mhn\") will complain if | |
417 the message has been corrupted on the way. This command only | |
418 consults this option when given a prefix argument EXTRA-ARGS. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
419 |
88155 | 420 The hook `mh-mh-to-mime-hook' is called after the message has been |
421 formatted. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
422 |
88155 | 423 The effects of this command can be undone by running |
424 \\[mh-mh-to-mime-undo]." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
425 (interactive "*P") |
88155 | 426 (mh-mh-quote-unescaped-sharp) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
427 (save-buffer) |
88155 | 428 (message "Running %s..." (if (mh-variant-p 'nmh) "mhbuild" "mhn")) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
429 (cond |
88155 | 430 ((mh-variant-p 'nmh) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
431 (mh-exec-cmd-error nil |
88155 | 432 "mhbuild" |
433 (if extra-args mh-mh-to-mime-args) | |
434 buffer-file-name)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
435 (t |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
436 (mh-exec-cmd-error (format "mhdraft=%s" buffer-file-name) |
88155 | 437 "mhn" |
438 (if extra-args mh-mh-to-mime-args) | |
439 buffer-file-name))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
440 (revert-buffer t t) |
88155 | 441 (message "Running %s...done" (if (mh-variant-p 'nmh) "mhbuild" "mhn")) |
442 (run-hooks 'mh-mh-to-mime-hook)) | |
443 | |
444 (defun mh-mh-quote-unescaped-sharp () | |
445 "Quote \"#\" characters that haven't been quoted for \"mhbuild\". | |
446 If the \"#\" character is present in the first column, but it isn't | |
447 part of a MH-style directive then \"mhbuild\" gives an error. | |
448 This function will quote all such characters." | |
449 (save-excursion | |
450 (goto-char (point-min)) | |
451 (while (re-search-forward "^#" nil t) | |
452 (beginning-of-line) | |
453 (unless (mh-mh-directive-present-p (point) (line-end-position)) | |
454 (insert "#")) | |
455 (goto-char (line-end-position))))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
456 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
457 ;;;###mh-autoload |
88155 | 458 (defun mh-mh-to-mime-undo (noconfirm) |
459 "Undo effects of \\[mh-mh-to-mime]. | |
460 | |
461 It does this by reverting to a backup file. You are prompted to | |
462 confirm this action, but you can avoid the confirmation by adding | |
463 a prefix argument NOCONFIRM." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
464 (interactive "*P") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
465 (if (null buffer-file-name) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
466 (error "Buffer does not seem to be associated with any file")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
467 (let ((backup-strings '("," "#")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
468 backup-file) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
469 (while (and backup-strings |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
470 (not (file-exists-p |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
471 (setq backup-file |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
472 (concat (file-name-directory buffer-file-name) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
473 (car backup-strings) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
474 (file-name-nondirectory buffer-file-name) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
475 ".orig"))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
476 (setq backup-strings (cdr backup-strings))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
477 (or backup-strings |
88155 | 478 (error "Backup file for %s no longer exists" buffer-file-name)) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
479 (or noconfirm |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
480 (yes-or-no-p (format "Revert buffer from file %s? " |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
481 backup-file)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
482 (error "Revert not confirmed")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
483 (let ((buffer-read-only nil)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
484 (erase-buffer) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
485 (insert-file-contents backup-file)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
486 (after-find-file nil))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
487 |
88155 | 488 ;;;###mh-autoload |
489 (defun mh-mh-directive-present-p (&optional begin end) | |
490 "Check if the text between BEGIN and END might be a MH-style directive. | |
491 The optional argument BEGIN defaults to the beginning of the | |
492 buffer, while END defaults to the the end of the buffer." | |
493 (unless begin (setq begin (point-min))) | |
494 (unless end (setq end (point-max))) | |
495 (save-excursion | |
496 (block 'search-for-mh-directive | |
497 (goto-char begin) | |
498 (while (re-search-forward "^#" end t) | |
499 (let ((s (buffer-substring-no-properties (point) (line-end-position)))) | |
500 (cond ((equal s "")) | |
501 ((string-match "^forw[ \t\n]+" s) | |
502 (return-from 'search-for-mh-directive t)) | |
503 (t (let ((first-token (car (split-string s "[ \t;@]")))) | |
504 (when (and first-token | |
505 (string-match mh-media-type-regexp | |
506 first-token)) | |
507 (return-from 'search-for-mh-directive t))))))) | |
508 nil))) | |
509 | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
510 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
511 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
512 ;;; MIME composition functions |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
513 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
514 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
515 (defun mh-mml-to-mime () |
88155 | 516 "Compose MIME message from MML tags. |
517 | |
518 Typically, you send a message with attachments just like any | |
519 other message. However, you may take a sneak preview of the MIME | |
520 encoding if you wish by running this command. | |
521 | |
522 This action can be undone by running \\[undo]." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
523 (interactive) |
88155 | 524 (require 'message) |
525 (when mh-pgp-support-flag ;; This is only needed for PGP | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
526 (message-options-set-recipient)) |
88155 | 527 (let ((saved-text (buffer-string)) |
528 (buffer (current-buffer)) | |
529 (modified-flag (buffer-modified-p))) | |
530 (condition-case err (mml-to-mime) | |
531 (error | |
532 (with-current-buffer buffer | |
533 (delete-region (point-min) (point-max)) | |
534 (insert saved-text) | |
535 (set-buffer-modified-p modified-flag)) | |
536 (error (error-message-string err)))))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
537 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
538 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
539 (defun mh-mml-forward-message (description folder message) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
540 "Forward a message as attachment. |
88155 | 541 |
542 The function will prompt the user for a DESCRIPTION, a FOLDER and | |
543 MESSAGE number." | |
544 (let ((msg (if (and (equal message "") (numberp mh-sent-from-msg)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
545 mh-sent-from-msg |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
546 (car (read-from-string message))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
547 (cond ((integerp msg) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
548 (if (string= "" description) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
549 ;; Rationale: mml-attach-file constructs a malformed composition |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
550 ;; if the description string is empty. This fixes SF #625168. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
551 (mml-attach-file (format "%s%s/%d" |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
552 mh-user-path (substring folder 1) msg) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
553 "message/rfc822") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
554 (mml-attach-file (format "%s%s/%d" |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
555 mh-user-path (substring folder 1) msg) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
556 "message/rfc822" |
88155 | 557 description))) |
558 (t (error "The message number, %s, is not a integer" msg))))) | |
559 | |
560 (defvar mh-mml-cryptographic-method-history ()) | |
561 | |
562 ;;;###mh-autoload | |
563 (defun mh-mml-query-cryptographic-method () | |
564 "Read the cryptographic method to use." | |
565 (if current-prefix-arg | |
566 (let ((def (or (car mh-mml-cryptographic-method-history) | |
567 mh-mml-method-default))) | |
568 (completing-read (format "Method (default %s): " def) | |
569 '(("pgp") ("pgpmime") ("smime")) | |
570 nil t nil 'mh-mml-cryptographic-method-history def)) | |
571 mh-mml-method-default)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
572 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
573 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
574 (defun mh-mml-attach-file (&optional disposition) |
88155 | 575 "Add a tag to insert a MIME message part from a file. |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
576 |
88155 | 577 You are prompted for the filename containing the object, the |
578 media type if it cannot be determined automatically, a content | |
579 description and the DISPOSITION of the attachment. | |
580 | |
581 This is basically `mml-attach-file' from Gnus, modified such that a prefix | |
582 argument yields an \"inline\" disposition and Content-Type is determined | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
583 automatically." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
584 (let* ((file (mml-minibuffer-read-file "Attach file: ")) |
88155 | 585 (type (mh-minibuffer-read-type file)) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
586 (description (mml-minibuffer-read-description)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
587 (dispos (or disposition |
88155 | 588 (mml-minibuffer-read-disposition type)))) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
589 (mml-insert-empty-tag 'part 'type type 'filename file |
88155 | 590 'disposition dispos 'description description))) |
591 | |
592 ;; Shush compiler. | |
593 (eval-when-compile (defvar mh-identity-pgg-default-user-id)) | |
594 | |
595 (defun mh-secure-message (method mode &optional identity) | |
596 "Add tag to encrypt or sign message. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
597 |
88155 | 598 METHOD should be one of: \"pgpmime\", \"pgp\", \"smime\". |
599 MODE should be one of: \"sign\", \"encrypt\", \"signencrypt\", \"none\". | |
600 IDENTITY is optionally the default-user-id to use." | |
601 (if (not mh-pgp-support-flag) | |
602 (error "Your version of Gnus does not support PGP/GPG") | |
603 ;; Check the arguments | |
604 (let ((valid-methods (list "pgpmime" "pgp" "smime")) | |
605 (valid-modes (list "sign" "encrypt" "signencrypt" "none"))) | |
606 (if (not (member method valid-methods)) | |
607 (error "Method %s is invalid" method)) | |
608 (if (not (member mode valid-modes)) | |
609 (error "Mode %s is invalid" mode)) | |
610 (mml-unsecure-message) | |
611 (if (not (string= mode "none")) | |
612 (save-excursion | |
613 (goto-char (point-min)) | |
614 (mh-goto-header-end 1) | |
615 (if mh-identity-pgg-default-user-id | |
616 (mml-insert-tag 'secure 'method method 'mode mode | |
617 'sender mh-identity-pgg-default-user-id) | |
618 (mml-insert-tag 'secure 'method method 'mode mode))))))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
619 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
620 ;;;###mh-autoload |
88155 | 621 (defun mh-mml-unsecure-message () |
622 "Remove any secure message tags." | |
623 (interactive) | |
624 (if (not mh-pgp-support-flag) | |
625 (error "Your version of Gnus does not support PGP/GPG") | |
626 (mml-unsecure-message))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
627 |
88155 | 628 ;;;###mh-autoload |
629 (defun mh-mml-secure-message-sign (method) | |
630 "Add tag to sign the message. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
631 |
88155 | 632 A proper multipart message is created for you when you send the |
633 message. Use the command \\[mh-mml-unsecure-message] to remove | |
634 this tag. Use a prefix argument METHOD to be prompted for one of | |
635 the possible security methods (see `mh-mml-method-default')." | |
636 (interactive (list (mh-mml-query-cryptographic-method))) | |
637 (mh-secure-message method "sign" mh-identity-pgg-default-user-id)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
638 |
88155 | 639 ;;;###mh-autoload |
640 (defun mh-mml-secure-message-encrypt (method) | |
641 "Add tag to encrypt the message. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
642 |
88155 | 643 A proper multipart message is created for you when you send the |
644 message. Use the command \\[mh-mml-unsecure-message] to remove | |
645 this tag. Use a prefix argument METHOD to be prompted for one of | |
646 the possible security methods (see `mh-mml-method-default')." | |
647 (interactive (list (mh-mml-query-cryptographic-method))) | |
648 (mh-secure-message method "encrypt" mh-identity-pgg-default-user-id)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
649 |
88155 | 650 ;;;###mh-autoload |
651 (defun mh-mml-secure-message-signencrypt (method) | |
652 "Add tag to encrypt and sign the message. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
653 |
88155 | 654 A proper multipart message is created for you when you send the |
655 message. Use the command \\[mh-mml-unsecure-message] to remove | |
656 this tag. Use a prefix argument METHOD to be prompted for one of | |
657 the possible security methods (see `mh-mml-method-default')." | |
658 (interactive (list (mh-mml-query-cryptographic-method))) | |
659 (mh-secure-message method "signencrypt" mh-identity-pgg-default-user-id)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
660 |
88155 | 661 ;;;###mh-autoload |
662 (defun mh-mml-tag-present-p () | |
663 "Check if the current buffer has text which may be a MML tag." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
664 (save-excursion |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
665 (goto-char (point-min)) |
88155 | 666 (re-search-forward |
667 (concat | |
668 "\\(<#\\(mml\\|part\\)\\(.\\|\n\\)*>[ \n\t]*<#/\\(mml\\|part\\)>\\|" | |
669 "^<#secure.+>$\\)") | |
670 nil t))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
671 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
672 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
673 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
674 ;;; MIME cleanup |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
675 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
676 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
677 (defun mh-mime-cleanup () |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
678 "Free the decoded MIME parts." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
679 (let ((mime-data (gethash (current-buffer) mh-globals-hash))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
680 ;; This is for Emacs, what about XEmacs? |
88155 | 681 (mh-funcall-if-exists remove-images (point-min) (point-max)) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
682 (when mime-data |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
683 (mm-destroy-parts (mh-mime-handles mime-data)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
684 (remhash (current-buffer) mh-globals-hash)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
685 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
686 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
687 (defun mh-destroy-postponed-handles () |
88155 | 688 "Free MIME data for externally displayed MIME parts." |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
689 (let ((mime-data (mh-buffer-data))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
690 (when mime-data |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
691 (mm-destroy-parts (mh-mime-handles mime-data))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
692 (remhash (current-buffer) mh-globals-hash))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
693 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
694 (defun mh-handle-set-external-undisplayer (folder handle function) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
695 "Replacement for `mm-handle-set-external-undisplayer'. |
88155 | 696 |
697 This is only called in recent versions of Gnus. The MIME handles | |
698 are stored in data structures corresponding to MH-E folder buffer | |
699 FOLDER instead of in Gnus (as in the original). The MIME part, | |
700 HANDLE is associated with the undisplayer FUNCTION." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
701 (if (mm-keep-viewer-alive-p handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
702 (let ((new-handle (copy-sequence handle))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
703 (mm-handle-set-undisplayer new-handle function) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
704 (mm-handle-set-undisplayer handle nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
705 (save-excursion |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
706 (set-buffer folder) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
707 (push new-handle (mh-mime-handles (mh-buffer-data))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
708 (mm-handle-set-undisplayer handle function))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
709 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
710 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
711 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
712 ;;; MIME transformations |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
713 (eval-when-compile (require 'font-lock)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
714 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
715 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
716 (defun mh-add-missing-mime-version-header () |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
717 "Some mail programs don't put a MIME-Version header. |
88155 | 718 I have seen this only in spam, so maybe we shouldn't fix |
719 this ;-)" | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
720 (save-excursion |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
721 (goto-char (point-min)) |
88155 | 722 (re-search-forward "\n\n" nil t) |
723 (save-restriction | |
724 (narrow-to-region (point-min) (point)) | |
725 (when (and (message-fetch-field "content-type") | |
726 (not (message-fetch-field "mime-version"))) | |
727 (goto-char (point-min)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
728 (insert "MIME-Version: 1.0\n"))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
729 |
88155 | 730 (defun mh-small-show-buffer-p () |
731 "Check if show buffer is small. | |
732 This is used to decide if smileys and graphical emphasis will be | |
733 displayed." | |
734 (let ((max nil)) | |
735 (when (and (boundp 'font-lock-maximum-size) font-lock-maximum-size) | |
736 (cond ((numberp font-lock-maximum-size) | |
737 (setq max font-lock-maximum-size)) | |
738 ((listp font-lock-maximum-size) | |
739 (setq max (cdr (or (assoc 'mh-show-mode font-lock-maximum-size) | |
740 (assoc t font-lock-maximum-size))))))) | |
741 (or (not (numberp max)) (>= (/ max 8) (buffer-size))))) | |
742 | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
743 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
744 (defun mh-display-smileys () |
88155 | 745 "Display smileys." |
746 (when (and mh-graphical-smileys-flag (mh-small-show-buffer-p)) | |
747 (mh-funcall-if-exists smiley-region (point-min) (point-max)))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
748 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
749 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
750 (defun mh-display-emphasis () |
88155 | 751 "Display graphical emphasis." |
752 (when (and mh-graphical-emphasis-flag (mh-small-show-buffer-p)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
753 (flet ((article-goto-body ())) ; shadow this function to do nothing |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
754 (save-excursion |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
755 (goto-char (point-min)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
756 (article-emphasize))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
757 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
758 ;; Copied from gnus-art.el (should be checked for other cool things that can |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
759 ;; be added to the buttons) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
760 (defvar mh-mime-button-commands |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
761 '((mh-press-button "\r" "Toggle Display"))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
762 (defvar mh-mime-button-map |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
763 (let ((map (make-sparse-keymap))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
764 (unless (>= (string-to-number emacs-version) 21) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
765 ;; XEmacs doesn't care. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
766 (set-keymap-parent map mh-show-mode-map)) |
88155 | 767 (mh-do-in-gnu-emacs |
768 (define-key map [mouse-2] 'mh-push-button)) | |
769 (mh-do-in-xemacs | |
770 (define-key map '(button2) 'mh-push-button)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
771 (dolist (c mh-mime-button-commands) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
772 (define-key map (cadr c) (car c))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
773 map)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
774 (defvar mh-mime-button-line-format-alist |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
775 '((?T long-type ?s) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
776 (?d description ?s) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
777 (?p index ?s) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
778 (?e dots ?s))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
779 (defvar mh-mime-button-line-format "%{%([%p. %d%T]%)%}%e\n") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
780 (defvar mh-mime-security-button-pressed nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
781 (defvar mh-mime-security-button-line-format "%{%([[%t:%i]%D]%)%}\n") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
782 (defvar mh-mime-security-button-end-line-format "%{%([[End of %t]%D]%)%}\n") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
783 (defvar mh-mime-security-button-line-format-alist |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
784 '((?t type ?s) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
785 (?i info ?s) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
786 (?d details ?s) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
787 (?D pressed-details ?s))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
788 (defvar mh-mime-security-button-map |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
789 (let ((map (make-sparse-keymap))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
790 (unless (>= (string-to-number emacs-version) 21) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
791 (set-keymap-parent map mh-show-mode-map)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
792 (define-key map "\r" 'mh-press-button) |
88155 | 793 (mh-do-in-gnu-emacs |
794 (define-key map [mouse-2] 'mh-push-button)) | |
795 (mh-do-in-xemacs | |
796 (define-key map '(button2) 'mh-push-button)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
797 map)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
798 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
799 (defvar mh-mime-save-parts-directory nil |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
800 "Default to use for `mh-mime-save-parts-default-directory'. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
801 Set from last use.") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
802 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
803 ;;;###mh-autoload |
88155 | 804 (defun mh-mime-save-parts (prompt) |
805 "Save attachments. | |
806 | |
807 You can save all of the attachments at once with this command. | |
808 The attachments are saved in the directory specified by the | |
809 option `mh-mime-save-parts-default-directory' unless you use a | |
810 prefix argument PROMPT in which case you are prompted for the | |
811 directory. These directories may be superseded by MH profile | |
812 components, since this function calls on \"mhstore\" (\"mhn\") to | |
813 do the work." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
814 (interactive "P") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
815 (let ((msg (if (eq major-mode 'mh-show-mode) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
816 (mh-show-buffer-message-number) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
817 (mh-get-msg-num t))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
818 (folder (if (eq major-mode 'mh-show-mode) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
819 mh-show-folder-buffer |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
820 mh-current-folder)) |
88155 | 821 (command (if (mh-variant-p 'nmh) "mhstore" "mhn")) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
822 (directory |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
823 (cond |
88155 | 824 ((and (or prompt |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
825 (equal nil mh-mime-save-parts-default-directory) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
826 (equal t mh-mime-save-parts-default-directory)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
827 (not mh-mime-save-parts-directory)) |
88155 | 828 (read-file-name "Store in directory: " nil nil t nil)) |
829 ((and (or prompt | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
830 (equal t mh-mime-save-parts-default-directory)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
831 mh-mime-save-parts-directory) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
832 (read-file-name (format |
88155 | 833 "Store in directory (default %s): " |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
834 mh-mime-save-parts-directory) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
835 "" mh-mime-save-parts-directory t "")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
836 ((stringp mh-mime-save-parts-default-directory) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
837 mh-mime-save-parts-default-directory) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
838 (t |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
839 mh-mime-save-parts-directory)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
840 (if (and (equal directory "") mh-mime-save-parts-directory) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
841 (setq directory mh-mime-save-parts-directory)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
842 (if (not (file-directory-p directory)) |
88155 | 843 (message "No directory specified") |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
844 (if (equal nil mh-mime-save-parts-default-directory) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
845 (setq mh-mime-save-parts-directory directory)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
846 (save-excursion |
88155 | 847 (set-buffer (get-buffer-create mh-log-buffer)) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
848 (cd directory) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
849 (setq mh-mime-save-parts-directory directory) |
88155 | 850 (let ((initial-size (mh-truncate-log-buffer))) |
851 (apply 'call-process | |
852 (expand-file-name command mh-progs) nil t nil | |
853 (mh-list-to-string (list folder msg "-auto"))) | |
854 (if (> (buffer-size) initial-size) | |
855 (save-window-excursion | |
856 (switch-to-buffer-other-window mh-log-buffer) | |
857 (sit-for 3)))))))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
858 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
859 ;; Avoid errors if gnus-sum isn't loaded yet... |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
860 (defvar gnus-newsgroup-charset nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
861 (defvar gnus-newsgroup-name nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
862 |
88155 | 863 (defun mh-decode-message-body () |
864 "Decode message based on charset. | |
865 If message has been encoded for transfer take that into account." | |
866 (let (ct charset cte) | |
867 (goto-char (point-min)) | |
868 (re-search-forward "\n\n" nil t) | |
869 (save-restriction | |
870 (narrow-to-region (point-min) (point)) | |
871 (setq ct (ignore-errors (mail-header-parse-content-type | |
872 (message-fetch-field "Content-Type" t))) | |
873 charset (mail-content-type-get ct 'charset) | |
874 cte (message-fetch-field "Content-Transfer-Encoding"))) | |
875 (when (stringp cte) (setq cte (mail-header-strip cte))) | |
876 (when (or (not ct) (equal (car ct) "text/plain")) | |
877 (save-restriction | |
878 (narrow-to-region (min (1+ (mh-mail-header-end)) (point-max)) | |
879 (point-max)) | |
880 (mm-decode-body charset | |
881 (and cte (intern (downcase | |
882 (gnus-strip-whitespace cte)))) | |
883 (car ct)))))) | |
884 | |
885 ;;;###mh-autoload | |
886 (defun mh-toggle-mh-decode-mime-flag () | |
887 "Toggle the value of `mh-decode-mime-flag'." | |
888 (interactive) | |
889 (setq mh-decode-mime-flag (not mh-decode-mime-flag)) | |
890 (mh-show nil t) | |
891 (message "%s" (if mh-decode-mime-flag | |
892 "Processing attachments normally" | |
893 "Displaying raw message"))) | |
894 | |
895 ;;;###mh-autoload | |
896 (defun mh-decode-message-header () | |
897 "Decode RFC2047 encoded message header fields." | |
898 (when mh-decode-mime-flag | |
899 (let ((buffer-read-only nil)) | |
900 (rfc2047-decode-region (point-min) (mh-mail-header-end))))) | |
901 | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
902 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
903 (defun mh-mime-display (&optional pre-dissected-handles) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
904 "Display (and possibly decode) MIME handles. |
88155 | 905 Optional argument, PRE-DISSECTED-HANDLES is a list of MIME |
906 handles. If present they are displayed otherwise the buffer is | |
907 parsed and then displayed." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
908 (let ((handles ()) |
88155 | 909 (folder mh-show-folder-buffer) |
910 (raw-message-data (buffer-string))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
911 (flet ((mm-handle-set-external-undisplayer |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
912 (handle function) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
913 (mh-handle-set-external-undisplayer folder handle function))) |
88155 | 914 (goto-char (point-min)) |
915 (unless (search-forward "\n\n" nil t) | |
916 (goto-char (point-max)) | |
917 (insert "\n\n")) | |
918 | |
919 (condition-case err | |
920 (progn | |
921 ;; If needed dissect the current buffer | |
922 (if pre-dissected-handles | |
923 (setq handles pre-dissected-handles) | |
924 (setq handles (or (mm-dissect-buffer nil) (mm-uu-dissect))) | |
925 (setf (mh-mime-handles (mh-buffer-data)) | |
926 (mm-merge-handles handles | |
927 (mh-mime-handles (mh-buffer-data)))) | |
928 (unless handles (mh-decode-message-body))) | |
49578
b35587af8747
Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents:
49459
diff
changeset
|
929 |
88155 | 930 (cond ((and handles |
931 (or (not (stringp (car handles))) (cdr handles))) | |
932 ;; Goto start of message body | |
933 (goto-char (point-min)) | |
934 (or (search-forward "\n\n" nil t) (goto-char (point-max))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
935 |
88155 | 936 ;; Delete the body |
937 (delete-region (point) (point-max)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
938 |
88155 | 939 ;; Display the MIME handles |
940 (mh-mime-display-part handles)) | |
941 (t (mh-signature-highlight)))) | |
942 (error | |
943 (message "Could not display body: %s" (error-message-string err)) | |
944 (delete-region (point-min) (point-max)) | |
945 (insert raw-message-data)))))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
946 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
947 (defun mh-mime-display-part (handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
948 "Decides the viewer to call based on the type of HANDLE." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
949 (cond ((null handle) nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
950 ((not (stringp (car handle))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
951 (mh-mime-display-single handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
952 ((equal (car handle) "multipart/alternative") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
953 (mh-mime-display-alternative (cdr handle))) |
88155 | 954 ((and mh-pgp-support-flag |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
955 (or (equal (car handle) "multipart/signed") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
956 (equal (car handle) "multipart/encrypted"))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
957 (mh-mime-display-security handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
958 (t (mh-mime-display-mixed (cdr handle))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
959 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
960 (defun mh-mime-display-alternative (handles) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
961 "Choose among the alternatives, HANDLES the part that will be displayed. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
962 If no part is preferred then all the parts are displayed." |
88155 | 963 (let* ((preferred (mm-preferred-alternative handles)) |
964 (others (loop for x in handles unless (eq x preferred) collect x))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
965 (cond ((and preferred (stringp (car preferred))) |
88155 | 966 (mh-mime-display-part preferred) |
967 (mh-mime-maybe-display-alternatives others)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
968 (preferred |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
969 (save-restriction |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
970 (narrow-to-region (point) (if (eobp) (point) (1+ (point)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
971 (mh-mime-display-single preferred) |
88155 | 972 (mh-mime-maybe-display-alternatives others) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
973 (goto-char (point-max)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
974 (t (mh-mime-display-mixed handles))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
975 |
88155 | 976 (defun mh-mime-maybe-display-alternatives (alternatives) |
977 "Show buttons for ALTERNATIVES. | |
978 If `mh-mime-display-alternatives-flag' is non-nil then display | |
979 buttons for alternative parts that are usually suppressed." | |
980 (when (and mh-display-buttons-for-alternatives-flag alternatives) | |
981 (insert "\n----------------------------------------------------\n") | |
982 (insert "Alternatives:\n") | |
983 (dolist (x alternatives) | |
984 (insert "\n") | |
985 (mh-insert-mime-button x (mh-mime-part-index x) nil)) | |
986 (insert "\n----------------------------------------------------\n"))) | |
987 | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
988 (defun mh-mime-display-mixed (handles) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
989 "Display the list of MIME parts, HANDLES recursively." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
990 (mapcar #'mh-mime-display-part handles)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
991 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
992 (defun mh-mime-part-index (handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
993 "Generate the button number for MIME part, HANDLE. |
88155 | 994 Notice that a hash table is used to display the same number when |
995 buttons need to be displayed multiple times (for instance when | |
996 nested messages are opened)." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
997 (or (gethash handle (mh-mime-part-index-hash (mh-buffer-data))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
998 (setf (gethash handle (mh-mime-part-index-hash (mh-buffer-data))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
999 (incf (mh-mime-parts-count (mh-buffer-data)))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1000 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1001 (defun mh-small-image-p (handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1002 "Decide whether HANDLE is a \"small\" image that can be displayed inline. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1003 This is only useful if a Content-Disposition header is not present." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1004 (let ((media-test (caddr (assoc (car (mm-handle-type handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1005 mh-mm-inline-media-tests))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1006 (mm-inline-large-images t)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1007 (and media-test |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1008 (equal (mm-handle-media-supertype handle) "image") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1009 (funcall media-test handle) ; Since mm-inline-large-images is T, |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1010 ; this only tells us if the image is |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1011 ; something that emacs can display |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1012 (let* ((image (mm-get-image handle))) |
88155 | 1013 (or (mh-do-in-xemacs |
1014 (and (mh-funcall-if-exists glyphp image) | |
1015 (< (glyph-width image) | |
1016 (or mh-max-inline-image-width (window-pixel-width))) | |
1017 (< (glyph-height image) | |
1018 (or mh-max-inline-image-height | |
1019 (window-pixel-height))))) | |
1020 (mh-do-in-gnu-emacs | |
1021 (let ((size (mh-funcall-if-exists image-size image))) | |
1022 (and size | |
1023 (< (cdr size) (or mh-max-inline-image-height | |
1024 (1- (window-height)))) | |
1025 (< (car size) (or mh-max-inline-image-width | |
1026 (window-width))))))))))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1027 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1028 (defun mh-inline-vcard-p (handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1029 "Decide if HANDLE is a vcard that must be displayed inline." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1030 (let ((type (mm-handle-type handle))) |
88155 | 1031 (and (or (featurep 'vcard) (fboundp 'vcard-pretty-print)) |
1032 (consp type) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1033 (equal (car type) "text/x-vcard") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1034 (save-excursion |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1035 (save-restriction |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1036 (widen) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1037 (goto-char (point-min)) |
88155 | 1038 (not (mh-signature-separator-p))))))) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1039 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1040 (defun mh-mime-display-single (handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1041 "Display a leaf node, HANDLE in the MIME tree." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1042 (let* ((type (mm-handle-media-type handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1043 (small-image-flag (mh-small-image-p handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1044 (attachmentp (equal (car (mm-handle-disposition handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1045 "attachment")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1046 (inlinep (and (equal (car (mm-handle-disposition handle)) "inline") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1047 (mm-inlinable-p handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1048 (mm-inlined-p handle))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1049 (displayp (or inlinep ; show if inline OR |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1050 (mh-inline-vcard-p handle); inline vcard OR |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1051 (and (not attachmentp) ; if not an attachment |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1052 (or small-image-flag ; and small image |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1053 ; and user wants inline |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1054 (and (not (equal |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1055 (mm-handle-media-supertype handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1056 "image")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1057 (mm-inlinable-p handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1058 (mm-inlined-p handle))))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1059 (save-restriction |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1060 (narrow-to-region (point) (if (eobp) (point) (1+ (point)))) |
88155 | 1061 (cond ((and mh-pgp-support-flag |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1062 (equal type "application/pgp-signature")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1063 nil) ; skip signatures as they are already handled... |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1064 ((not displayp) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1065 (insert "\n") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1066 (mh-insert-mime-button handle (mh-mime-part-index handle) nil)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1067 ((and displayp (not mh-display-buttons-for-inline-parts-flag)) |
88155 | 1068 (or (mm-display-part handle) (mm-display-part handle)) |
1069 (mh-signature-highlight handle)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1070 ((and displayp mh-display-buttons-for-inline-parts-flag) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1071 (insert "\n") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1072 (mh-insert-mime-button handle (mh-mime-part-index handle) nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1073 (forward-line -1) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1074 (mh-mm-display-part handle))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1075 (goto-char (point-max))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1076 |
88155 | 1077 (defun mh-signature-highlight (&optional handle) |
1078 "Highlight message signature in HANDLE. | |
1079 The optional argument, HANDLE is a MIME handle if the function is | |
1080 being used to highlight the signature in a MIME part." | |
1081 (let ((regexp | |
1082 (cond ((not handle) "^-- $") | |
1083 ((not (and (equal (mm-handle-media-supertype handle) "text") | |
1084 (equal (mm-handle-media-subtype handle) "html"))) | |
1085 "^-- $") | |
1086 ((eq (mh-mm-text-html-renderer) 'lynx) "^ --$") | |
1087 (t "^--$")))) | |
1088 (save-excursion | |
1089 (goto-char (point-max)) | |
1090 (when (re-search-backward regexp nil t) | |
1091 (mh-do-in-gnu-emacs | |
1092 (let ((ov (make-overlay (point) (point-max)))) | |
1093 (overlay-put ov 'face 'mh-show-signature) | |
1094 (overlay-put ov 'evaporate t))) | |
1095 (mh-do-in-xemacs | |
1096 (set-extent-property (make-extent (point) (point-max)) | |
1097 'face 'mh-show-signature)))))) | |
1098 | |
1099 (mh-do-in-xemacs | |
1100 (defvar dots) | |
1101 (defvar type)) | |
1102 | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1103 (defun mh-insert-mime-button (handle index displayed) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1104 "Insert MIME button for HANDLE. |
88155 | 1105 INDEX is the part number that will be DISPLAYED. It is also used |
1106 by commands like \"K v\" which operate on individual MIME parts." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1107 ;; The button could be displayed by a previous decode. In that case |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1108 ;; undisplay it if we need a hidden button. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1109 (when (and (mm-handle-displayed-p handle) (not displayed)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1110 (mm-display-part handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1111 (let ((name (or (mail-content-type-get (mm-handle-type handle) 'name) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1112 (mail-content-type-get (mm-handle-disposition handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1113 'filename) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1114 (mail-content-type-get (mm-handle-type handle) 'url) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1115 "")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1116 (type (mm-handle-media-type handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1117 (description (mail-decode-encoded-word-string |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1118 (or (mm-handle-description handle) ""))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1119 (dots (if (or displayed (mm-handle-displayed-p handle)) " " "...")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1120 long-type begin end) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1121 (if (string-match ".*/" name) (setq name (substring name (match-end 0)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1122 (setq long-type (concat type (and (not (equal name "")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1123 (concat "; " name)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1124 (unless (equal description "") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1125 (setq long-type (concat " --- " long-type))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1126 (unless (bolp) (insert "\n")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1127 (setq begin (point)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1128 (gnus-eval-format |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1129 mh-mime-button-line-format mh-mime-button-line-format-alist |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1130 `(,@(gnus-local-map-property mh-mime-button-map) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1131 mh-callback mh-mm-display-part |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1132 mh-part ,index |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1133 mh-data ,handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1134 (setq end (point)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1135 (widget-convert-button |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1136 'link begin end |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1137 :mime-handle handle |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1138 :action 'mh-widget-press-button |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1139 :button-keymap mh-mime-button-map |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1140 :help-echo |
88155 | 1141 "Mouse-2 click or press RET (in show buffer) to toggle display") |
1142 (dolist (ov (mh-funcall-if-exists overlays-in begin end)) | |
1143 (mh-funcall-if-exists overlay-put ov 'evaporate t)))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1144 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1145 ;; There is a bug in Gnus inline image display due to which an extra line |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1146 ;; gets inserted every time it is viewed. To work around that problem we are |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1147 ;; using an extra property 'mh-region to remember the region that is added |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1148 ;; when the button is clicked. The region is then deleted to make sure that |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1149 ;; no extra lines get inserted. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1150 (defun mh-mm-display-part (handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1151 "Toggle display of button for MIME part, HANDLE." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1152 (beginning-of-line) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1153 (let ((id (get-text-property (point) 'mh-part)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1154 (point (point)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1155 (window (selected-window)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1156 (mail-parse-charset 'nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1157 (mail-parse-ignored-charsets nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1158 region buffer-read-only) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1159 (save-excursion |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1160 (unwind-protect |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1161 (let ((win (get-buffer-window (current-buffer) t))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1162 (when win |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1163 (select-window win)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1164 (goto-char point) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1165 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1166 (if (mm-handle-displayed-p handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1167 ;; This will remove the part. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1168 (progn |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1169 ;; Delete the button and displayed part (if any) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1170 (let ((region (get-text-property point 'mh-region))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1171 (when region |
88155 | 1172 (mh-funcall-if-exists |
1173 remove-images (car region) (cdr region))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1174 (mm-display-part handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1175 (when region |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1176 (delete-region (car region) (cdr region)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1177 ;; Delete button (if it still remains). This happens for |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1178 ;; externally displayed parts where the previous step does |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1179 ;; nothing. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1180 (unless (eolp) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1181 (delete-region (point) (progn (forward-line) (point))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1182 (save-restriction |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1183 (delete-region (point) (progn (forward-line 1) (point))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1184 (narrow-to-region (point) (point)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1185 ;; Maybe we need another unwind-protect here. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1186 (when (equal (mm-handle-media-supertype handle) "image") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1187 (insert "\n")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1188 (when (and (not (eq (ignore-errors (mm-display-part handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1189 'inline)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1190 (equal (mm-handle-media-supertype handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1191 "image")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1192 (goto-char (point-min)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1193 (delete-char 1)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1194 (when (equal (mm-handle-media-supertype handle) "text") |
88155 | 1195 (when (eq mh-highlight-citation-style 'gnus) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1196 (mh-gnus-article-highlight-citation)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1197 (mh-display-smileys) |
88155 | 1198 (mh-display-emphasis) |
1199 (mh-signature-highlight handle)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1200 (setq region (cons (progn (goto-char (point-min)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1201 (point-marker)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1202 (progn (goto-char (point-max)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1203 (point-marker))))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1204 (when (window-live-p window) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1205 (select-window window)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1206 (goto-char point) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1207 (beginning-of-line) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1208 (mh-insert-mime-button handle id (mm-handle-displayed-p handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1209 (goto-char point) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1210 (when region |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1211 (add-text-properties (line-beginning-position) (line-end-position) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1212 `(mh-region ,region))))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1213 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1214 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1215 (defun mh-press-button () |
88155 | 1216 "View contents of button. |
1217 | |
1218 This command is a toggle so if you use it again on the same | |
1219 attachment, the attachment is hidden." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1220 (interactive) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1221 (let ((mm-inline-media-tests mh-mm-inline-media-tests) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1222 (data (get-text-property (point) 'mh-data)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1223 (function (get-text-property (point) 'mh-callback)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1224 (buffer-read-only nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1225 (folder mh-show-folder-buffer)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1226 (flet ((mm-handle-set-external-undisplayer |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1227 (handle function) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1228 (mh-handle-set-external-undisplayer folder handle function))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1229 (when (and function (eolp)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1230 (backward-char)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1231 (unwind-protect (and function (funcall function data)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1232 (set-buffer-modified-p nil))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1233 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1234 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1235 (defun mh-push-button (event) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1236 "Click MIME button for EVENT. |
88155 | 1237 |
1238 If the MIME part is visible then it is removed. Otherwise the | |
1239 part is displayed. This function is called when the mouse is used | |
1240 to click the MIME button." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1241 (interactive "e") |
88155 | 1242 (mh-do-at-event-location event |
1243 (let ((folder mh-show-folder-buffer) | |
1244 (mm-inline-media-tests mh-mm-inline-media-tests) | |
1245 (data (get-text-property (point) 'mh-data)) | |
1246 (function (get-text-property (point) 'mh-callback))) | |
1247 (flet ((mm-handle-set-external-undisplayer (handle func) | |
1248 (mh-handle-set-external-undisplayer folder handle func))) | |
1249 (and function (funcall function data)))))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1250 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1251 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1252 (defun mh-mime-save-part () |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1253 "Save MIME part at point." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1254 (interactive) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1255 (let ((data (get-text-property (point) 'mh-data))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1256 (when data |
88155 | 1257 (let ((mm-default-directory |
1258 (file-name-as-directory (or mh-mime-save-parts-directory | |
1259 default-directory)))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1260 (mh-mm-save-part data) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1261 (setq mh-mime-save-parts-directory mm-default-directory))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1262 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1263 ;;;###mh-autoload |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1264 (defun mh-mime-inline-part () |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1265 "Toggle display of the raw MIME part." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1266 (interactive) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1267 (let* ((buffer-read-only nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1268 (data (get-text-property (point) 'mh-data)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1269 (inserted-flag (get-text-property (point) 'mh-mime-inserted)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1270 (displayed-flag (mm-handle-displayed-p data)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1271 (point (point)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1272 start end) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1273 (cond ((and data (not inserted-flag) (not displayed-flag)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1274 (let ((contents (mm-get-part data))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1275 (add-text-properties (line-beginning-position) (line-end-position) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1276 '(mh-mime-inserted t)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1277 (setq start (point-marker)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1278 (forward-line 1) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1279 (mm-insert-inline data contents) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1280 (setq end (point-marker)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1281 (add-text-properties |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1282 start (progn (goto-char start) (line-end-position)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1283 `(mh-region (,start . ,end))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1284 ((and data (or inserted-flag displayed-flag)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1285 (mh-press-button) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1286 (message "MIME part already inserted"))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1287 (goto-char point) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1288 (set-buffer-modified-p nil))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1289 |
88155 | 1290 ;;;###mh-autoload |
1291 (defun mh-display-with-external-viewer (part-index) | |
1292 "View attachment externally. | |
1293 | |
1294 If Emacs does not know how to view an attachment, you could save | |
1295 it into a file and then run some program to open it. It is | |
1296 easier, however, to launch the program directly from MH-E with | |
1297 this command. While you'll most likely use this to view | |
1298 spreadsheets and documents, it is also useful to use your browser | |
1299 to view HTML attachments with higher fidelity than what Emacs can | |
1300 provide. | |
1301 | |
1302 This command displays the attachment associated with the button | |
1303 under the cursor. If the cursor is not located over a button, | |
1304 then the cursor first moves to the next button, wrapping to the | |
1305 beginning of the message if necessary. You can provide a numeric | |
1306 prefix argument PART-INDEX to view the attachment labeled with | |
1307 that number. | |
1308 | |
1309 This command tries to provide a reasonable default for the viewer | |
1310 by calling the Emacs function `mailcap-mime-info'. This function | |
1311 usually reads the file \"/etc/mailcap\"." | |
1312 (interactive "P") | |
1313 (when (consp part-index) (setq part-index (car part-index))) | |
1314 (mh-folder-mime-action | |
1315 part-index | |
1316 #'(lambda () | |
1317 (let* ((part (get-text-property (point) 'mh-data)) | |
1318 (type (mm-handle-media-type part)) | |
1319 (methods (mapcar (lambda (x) (list (cdr (assoc 'viewer x)))) | |
1320 (mailcap-mime-info type 'all))) | |
1321 (def (caar methods)) | |
1322 (prompt (format "Viewer%s: " (if def | |
1323 (format " (default %s)" def) | |
1324 ""))) | |
1325 (method (completing-read prompt methods nil nil nil nil def)) | |
1326 (folder mh-show-folder-buffer) | |
1327 (buffer-read-only nil)) | |
1328 (when (string-match "^[^% \t]+$" method) | |
1329 (setq method (concat method " %s"))) | |
1330 (flet ((mm-handle-set-external-undisplayer (handle function) | |
1331 (mh-handle-set-external-undisplayer folder handle function))) | |
1332 (unwind-protect (mm-display-external part method) | |
1333 (set-buffer-modified-p nil))))) | |
1334 nil)) | |
1335 | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1336 (defun mh-widget-press-button (widget el) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1337 "Callback for widget, WIDGET. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1338 Parameter EL is unused." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1339 (goto-char (widget-get widget :from)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1340 (mh-press-button)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1341 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1342 (defun mh-mime-display-security (handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1343 "Display PGP encrypted/signed message, HANDLE." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1344 (save-restriction |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1345 (narrow-to-region (point) (point)) |
88155 | 1346 (insert "\n") |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1347 (mh-insert-mime-security-button handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1348 (mh-mime-display-mixed (cdr handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1349 (insert "\n") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1350 (let ((mh-mime-security-button-line-format |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1351 mh-mime-security-button-end-line-format)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1352 (mh-insert-mime-security-button handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1353 (mm-set-handle-multipart-parameter |
88155 | 1354 handle 'mh-region (cons (point-min-marker) (point-max-marker))))) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1355 |
88155 | 1356 ;; I rewrote the security part because Gnus doesn't seem to ever minimize |
1357 ;; the button. That is once the mime-security button is pressed there seems | |
1358 ;; to be no way of getting rid of the inserted text. | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1359 (defun mh-mime-security-show-details (handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1360 "Toggle display of detailed security info for HANDLE." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1361 (let ((details (mm-handle-multipart-ctl-parameter handle 'gnus-details))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1362 (when details |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1363 (let ((mh-mime-security-button-pressed |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1364 (not (get-text-property (point) 'mh-button-pressed))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1365 (mh-mime-security-button-line-format |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1366 (get-text-property (point) 'mh-line-format))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1367 (forward-char -1) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1368 (while (eq (get-text-property (point) 'mh-line-format) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1369 mh-mime-security-button-line-format) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1370 (forward-char -1)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1371 (forward-char) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1372 (save-restriction |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1373 (narrow-to-region (point) (point)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1374 (mh-insert-mime-security-button handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1375 (delete-region |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1376 (point) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1377 (or (text-property-not-all |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1378 (point) (point-max) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1379 'mh-line-format mh-mime-security-button-line-format) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1380 (point-max))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1381 (forward-line -1))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1382 |
88155 | 1383 (defun mh-mime-security-button-face (info) |
1384 "Return the button face to use for encrypted/signed mail based on INFO." | |
1385 (cond ((string-match "OK" info) ;Decrypted mail | |
1386 'mh-show-pgg-good) | |
1387 ((string-match "Failed" info) ;Decryption failed or signature invalid | |
1388 'mh-show-pgg-bad) | |
1389 ((string-match "Undecided" info);Unprocessed mail | |
1390 'mh-show-pgg-unknown) | |
1391 ((string-match "Untrusted" info);Key not trusted | |
1392 'mh-show-pgg-unknown) | |
1393 (t | |
1394 'mh-show-pgg-good))) | |
1395 | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1396 (defun mh-mime-security-press-button (handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1397 "Callback from security button for part HANDLE." |
88155 | 1398 (if (mm-handle-multipart-ctl-parameter handle 'gnus-info) |
1399 (mh-mime-security-show-details handle) | |
1400 (let ((region (mm-handle-multipart-ctl-parameter handle 'mh-region)) | |
1401 point) | |
1402 (setq point (point)) | |
1403 (goto-char (car region)) | |
1404 (delete-region (car region) (cdr region)) | |
1405 (with-current-buffer (mm-handle-multipart-ctl-parameter handle 'buffer) | |
1406 (let* ((mm-verify-option 'known) | |
1407 (mm-decrypt-option 'known) | |
1408 (new (mm-possibly-verify-or-decrypt (cdr handle) handle))) | |
1409 (unless (eq new (cdr handle)) | |
1410 (mm-destroy-parts (cdr handle)) | |
1411 (setcdr handle new)))) | |
1412 (mh-mime-display-security handle) | |
1413 (goto-char point)))) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1414 |
88155 | 1415 ;; Shush compiler. |
1416 (eval-when-compile | |
1417 (defvar mm-verify-function-alist nil) | |
1418 (defvar mm-decrypt-function-alist nil)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1419 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1420 (defvar pressed-details) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1421 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1422 (defun mh-insert-mime-security-button (handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1423 "Display buttons for PGP message, HANDLE." |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1424 (let* ((protocol (mm-handle-multipart-ctl-parameter handle 'protocol)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1425 (crypto-type (or (nth 2 (assoc protocol mm-verify-function-alist)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1426 (nth 2 (assoc protocol mm-decrypt-function-alist)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1427 "Unknown")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1428 (type (concat crypto-type |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1429 (if (equal (car handle) "multipart/signed") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1430 " Signed" " Encrypted") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1431 " Part")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1432 (info (or (mm-handle-multipart-ctl-parameter handle 'gnus-info) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1433 "Undecided")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1434 (details (mm-handle-multipart-ctl-parameter handle 'gnus-details)) |
88155 | 1435 pressed-details begin end face) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1436 (setq details (if details (concat "\n" details) "")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1437 (setq pressed-details (if mh-mime-security-button-pressed details "")) |
88155 | 1438 (setq face (mh-mime-security-button-face info)) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1439 (unless (bolp) (insert "\n")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1440 (setq begin (point)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1441 (gnus-eval-format |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1442 mh-mime-security-button-line-format |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1443 mh-mime-security-button-line-format-alist |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1444 `(,@(gnus-local-map-property mh-mime-security-button-map) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1445 mh-button-pressed ,mh-mime-security-button-pressed |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1446 mh-callback mh-mime-security-press-button |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1447 mh-line-format ,mh-mime-security-button-line-format |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1448 mh-data ,handle)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1449 (setq end (point)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1450 (widget-convert-button 'link begin end |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1451 :mime-handle handle |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1452 :action 'mh-widget-press-button |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1453 :button-keymap mh-mime-security-button-map |
88155 | 1454 :button-face face |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1455 :help-echo "Mouse-2 click or press RET (in show buffer) to see security details.") |
88155 | 1456 (dolist (ov (mh-funcall-if-exists overlays-in begin end)) |
1457 (mh-funcall-if-exists overlay-put ov 'evaporate t)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1458 (when (equal info "Failed") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1459 (let* ((type (if (equal (car handle) "multipart/signed") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1460 "verification" "decryption")) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1461 (warning (if (equal type "decryption") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1462 "(passphrase may be incorrect)" ""))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1463 (message "%s %s failed %s" crypto-type type warning))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1464 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1465 (defun mh-mm-inline-message (handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1466 "Display message, HANDLE. |
88155 | 1467 The function decodes the message and displays it. It avoids |
1468 decoding the same message multiple times." | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1469 (let ((b (point)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1470 (clean-message-header mh-clean-message-header-flag) |
88155 | 1471 (invisible-headers mh-invisible-header-fields-compiled) |
1472 (visible-headers nil)) | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1473 (save-excursion |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1474 (save-restriction |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1475 (narrow-to-region b b) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1476 (mm-insert-part handle) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1477 (mh-mime-display |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1478 (or (gethash handle (mh-mime-handles-cache (mh-buffer-data))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1479 (setf (gethash handle (mh-mime-handles-cache (mh-buffer-data))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1480 (let ((handles (or (mm-dissect-buffer nil) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1481 (mm-uu-dissect)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1482 (setf (mh-mime-handles (mh-buffer-data)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1483 (mm-merge-handles |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1484 handles (mh-mime-handles (mh-buffer-data)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1485 handles)))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1486 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1487 (goto-char (point-min)) |
88155 | 1488 (mh-show-xface) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1489 (cond (clean-message-header |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1490 (mh-clean-msg-header (point-min) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1491 invisible-headers |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1492 visible-headers) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1493 (goto-char (point-min))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1494 (t |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1495 (mh-start-of-uncleaned-message))) |
88155 | 1496 (mh-decode-message-header) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1497 (mh-show-addr) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1498 ;; The other highlighting types don't need anything special |
88155 | 1499 (when (eq mh-highlight-citation-style 'gnus) |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1500 (mh-gnus-article-highlight-citation)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1501 (goto-char (point-min)) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1502 (insert "\n------- Forwarded Message\n\n") |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1503 (mh-display-smileys) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1504 (mh-display-emphasis) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1505 (mm-handle-set-undisplayer |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1506 handle |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1507 `(lambda () |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1508 (let (buffer-read-only) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1509 (if (fboundp 'remove-specifier) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1510 ;; This is only valid on XEmacs. |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1511 (mapcar (lambda (prop) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1512 (remove-specifier |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1513 (face-property 'default prop) (current-buffer))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1514 '(background background-pixmap foreground))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1515 (delete-region ,(point-min-marker) ,(point-max-marker))))))))) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1516 |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1517 (provide 'mh-mime) |
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1518 |
88155 | 1519 ;; Local Variables: |
1520 ;; indent-tabs-mode: nil | |
1521 ;; sentence-end-double-space: nil | |
1522 ;; End: | |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1523 |
88155 | 1524 ;; arch-tag: 0dd36518-1b64-4a84-8f4e-59f422d3f002 |
49459
06b77df47802
* mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff
changeset
|
1525 ;;; mh-mime.el ends here |