annotate lisp/mail/metamail.el @ 58175:eeb5474ef89f

(window_scroll_pixel_based, Frecenter): Use move_it_vertically_backward directly. (Frecenter): Fix calculation of new start pos for negative arg. Before, the new start pos was sometimes chosen too far back, so the last line became only partially visible, and thus would be either only semi-visible or automatically scrolled to the middle of the window by redisplay.
author Kim F. Storm <storm@cua.dk>
date Fri, 12 Nov 2004 14:26:53 +0000
parents e8824c4f5f7e
children 18a818a2ee7c 8e5779acd195
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; metamail.el --- Metamail interface for GNU Emacs
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
22154
86791cda515c Update copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 18964
diff changeset
3 ;; Copyright (C) 1993, 1996 Free Software Foundation, Inc.
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Author: Masanobu UMEDA <umerin@mse.kyutech.ac.jp>
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Keywords: mail, news, mime, multimedia
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; any later version.
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14018
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14018
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14018
diff changeset
23 ;; Boston, MA 02111-1307, USA.
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
33414
9c3a204531a0 comment fixes
Dave Love <fx@gnu.org>
parents: 26039
diff changeset
27 ;; Note: Metamail does not have all the options which are compatible with
9c3a204531a0 comment fixes
Dave Love <fx@gnu.org>
parents: 26039
diff changeset
28 ;; the environment variables. For that reason, metamail.el has to
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; hack the environment variables. In addition, there is no way to
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; display all header fields without extra informative body messages
33414
9c3a204531a0 comment fixes
Dave Love <fx@gnu.org>
parents: 26039
diff changeset
31 ;; which are suppressed by the "-q" option.
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; The idea of using metamail to process MIME messages is from
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; gnus-mime.el by Spike <Spike@world.std.com>.
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;;; Code:
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
38 (defgroup metamail nil
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
39 "Metamail interface for Emacs."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
40 :group 'mail
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
41 :group 'hypermedia
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
42 :group 'processes)
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
44 (defcustom metamail-program-name "metamail"
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
45 "*Metamail program name."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
46 :type 'string
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
47 :group 'metamail)
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
48
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
49 (defcustom metamail-mailer-name "emacs"
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
50 "*Mailer name set to MM_MAILER environment variable."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
51 :type 'string
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
52 :group 'metamail)
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
53
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
54 (defvar metamail-environment '("KEYHEADS=*" "MM_QUIET=1")
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 "*Environment variables passed to `metamail'.
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
56 It must be a list of strings that have the format ENVVARNAME=VALUE.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
57 It is not expected to be altered globally by `set' or `setq'.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
58 Instead, change its value temporary using `let' or `let*' form.")
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
60 (defcustom metamail-switches '("-x" "-d" "-z")
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 "*Switches for `metamail' program.
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
62 `-z' is required to remove zap file.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
63 It is not expected to be altered globally by `set' or `setq'.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
64 Instead, change its value temporary using `let' or `let*' form.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
65 `-m MAILER' argument is automatically generated from the
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
66 `metamail-mailer-name' variable."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
67 :type '(repeat (string :tag "Switch"))
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17661
diff changeset
68 :group 'metamail)
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
69
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
70 ;;;###autoload
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
71 (defun metamail-interpret-header ()
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
72 "Interpret a header part of a MIME message in current buffer.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
73 Its body part is not interpreted at all."
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
74 (interactive)
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
75 (save-excursion
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
76 (let* ((buffer-read-only nil)
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
77 (metamail-switches ;Inhibit processing an empty body.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
78 (append metamail-switches '("-c" "text/plain" "-E" "7bit")))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
79 (end (progn
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
80 (goto-char (point-min))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
81 (search-forward "\n\n" nil 'move)
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
82 ;; An extra newline is inserted by metamail if there
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
83 ;; is no body part. So, insert a dummy body by
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
84 ;; itself.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
85 (insert "\n")
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
86 (point))))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
87 (metamail-region (point-min) end nil nil 'nodisplay)
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
88 ;; Remove an extra newline inserted by myself.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
89 (goto-char (point-min))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
90 (if (search-forward "\n\n\n" nil t)
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
91 (delete-char -1))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
92 )))
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
94 ;;;###autoload
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
95 (defun metamail-interpret-body (&optional viewmode nodisplay)
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
96 "Interpret a body part of a MIME message in current buffer.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
97 Optional argument VIEWMODE specifies the value of the
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
98 EMACS_VIEW_MODE environment variable (defaulted to 1).
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
99 Optional argument NODISPLAY non-nil means buffer is not
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
100 redisplayed as output is inserted.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
101 Its header part is not interpreted at all."
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
102 (interactive "p")
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
103 (save-excursion
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
104 (let ((contype nil)
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
105 (encoding nil)
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
106 (end (progn
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
107 (goto-char (point-min))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
108 (search-forward "\n\n" nil t)
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
109 (point))))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
110 ;; Find Content-Type and Content-Transfer-Encoding from the header.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
111 (save-restriction
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
112 (narrow-to-region (point-min) end)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 33414
diff changeset
113 (setq contype
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
114 (or (mail-fetch-field "Content-Type") "text/plain"))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 33414
diff changeset
115 (setq encoding
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
116 (or (mail-fetch-field "Content-Transfer-Encoding") "7bit")))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
117 ;; Interpret the body part only.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
118 (let ((metamail-switches ;Process body part only.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
119 (append metamail-switches
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
120 (list "-b" "-c" contype "-E" encoding))))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
121 (metamail-region end (point-max) viewmode nil nodisplay))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
122 ;; Mode specific hack.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
123 (cond ((eq major-mode 'rmail-mode)
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
124 ;; Adjust the marker of this message if in Rmail mode buffer.
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
125 (set-marker (aref rmail-message-vector (1+ rmail-current-message))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
126 (point-max))))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
127 )))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
128
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
129 ;;;###autoload
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
130 (defun metamail-buffer (&optional viewmode buffer nodisplay)
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 "Process current buffer through `metamail'.
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
132 Optional argument VIEWMODE specifies the value of the
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
133 EMACS_VIEW_MODE environment variable (defaulted to 1).
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
134 Optional argument BUFFER specifies a buffer to be filled (nil
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 means current).
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
136 Optional argument NODISPLAY non-nil means buffer is not
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 redisplayed as output is inserted."
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
138 (interactive "p")
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
139 (metamail-region (point-min) (point-max) viewmode buffer nodisplay))
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
141 ;;;###autoload
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
142 (defun metamail-region (beg end &optional viewmode buffer nodisplay)
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 "Process current region through 'metamail'.
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
144 Optional argument VIEWMODE specifies the value of the
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
145 EMACS_VIEW_MODE environment variable (defaulted to 1).
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
146 Optional argument BUFFER specifies a buffer to be filled (nil
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 means current).
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
148 Optional argument NODISPLAY non-nil means buffer is not
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 redisplayed as output is inserted."
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
150 (interactive "r\np")
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 (let ((curbuf (current-buffer))
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 (buffer-read-only nil)
26039
fb6b9c37cdc4 Use make-temp-file.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25419
diff changeset
153 (metafile (make-temp-file "metamail"))
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
154 (option-environment
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 33414
diff changeset
155 (list (format "EMACS_VIEW_MODE=%d"
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
156 (if (numberp viewmode) viewmode 1)))))
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 (save-excursion
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
158 ;; Gee! Metamail does not ouput to stdout if input comes from
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 ;; stdin.
18964
10af35406220 (metamail-region): Don't bind kanji-fileio-code
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
160 (let ((selective-display nil)) ;Disable ^M to nl translation.
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
161 (write-region beg end metafile nil 'nomessage))
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 (if buffer
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 (set-buffer buffer))
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 (setq buffer-read-only nil)
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 ;; Clear destination buffer.
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 (if (eq curbuf (current-buffer))
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 (delete-region beg end)
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 (delete-region (point-min) (point-max)))
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 ;; We have to pass the environment variable KEYHEADS to display
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 ;; all header fields. Metamail should have an optional argument
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 ;; to pass such information directly.
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 (let ((process-environment
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
173 (append process-environment
18964
10af35406220 (metamail-region): Don't bind kanji-fileio-code
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
174 metamail-environment option-environment))
10af35406220 (metamail-region): Don't bind kanji-fileio-code
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
175 (coding-system-for-read 'undecided))
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 (apply (function call-process)
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 metamail-program-name
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 nil
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 t ;Output to current buffer
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 (not nodisplay) ;Force redisplay
15051
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
181 (append metamail-switches
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
182 (list "-m" (or metamail-mailer-name "emacs"))
4dbe0f673671 (metamail-mailer-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14994
diff changeset
183 (list metafile))))
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 ;; `metamail' may not delete the temporary file!
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 (condition-case error
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 (delete-file metafile)
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 (error nil))
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 )))
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 (provide 'metamail)
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49598
diff changeset
192 ;;; arch-tag: 52c0cb6f-d800-4776-9789-f0275cb5490e
4171
341cd3b063ae entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 ;;; metamail.el ends here