comparison lisp/gnus/message.el @ 41511:19496cafe865

2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu> * mail/rmail.el (rmail-enable-mime-composing): New. A lightweight version of rmail-enable-mime. (rmail-forward): Use it. * message.el (message-forward-rmail-make-body): save-window-excursion. (message-encode-message-body): no error. (message-setup-1): compose-mail send-actions are different from message-send-actions. * message.el (message-forward-subject-author-subject): Don't use message-news-p, which widens the buffer. (message-forward-make-body): New function. (message-forward): Use it. (message-insinuate-rmail): New. (message-forward-rmail-make-body): New.
author ShengHuo ZHU <zsh@cs.rochester.edu>
date Sun, 25 Nov 2001 20:45:37 +0000
parents 933ab100fb4a
children a96c3ddfa03e
comparison
equal deleted inserted replaced
41510:69925dd4cdc7 41511:19496cafe865
3633 (when (and (boundp 'mc-modes-alist) 3633 (when (and (boundp 'mc-modes-alist)
3634 (not (assq 'message-mode mc-modes-alist))) 3634 (not (assq 'message-mode mc-modes-alist)))
3635 (push '(message-mode (encrypt . mc-encrypt-message) 3635 (push '(message-mode (encrypt . mc-encrypt-message)
3636 (sign . mc-sign-message)) 3636 (sign . mc-sign-message))
3637 mc-modes-alist)) 3637 mc-modes-alist))
3638 (when actions 3638 (dolist (action actions)
3639 (setq message-send-actions actions)) 3639 (condition-case nil
3640 (add-to-list 'message-send-actions
3641 `(apply ',(car action) ',(cdr action)))))
3640 (setq message-reply-buffer replybuffer) 3642 (setq message-reply-buffer replybuffer)
3641 (goto-char (point-min)) 3643 (goto-char (point-min))
3642 ;; Insert all the headers. 3644 ;; Insert all the headers.
3643 (mail-header-format 3645 (mail-header-format
3644 (let ((h headers) 3646 (let ((h headers)
4153 The form is: [Source] Subject, where if the original message was mail, 4155 The form is: [Source] Subject, where if the original message was mail,
4154 Source is the sender, and if the original message was news, Source is 4156 Source is the sender, and if the original message was news, Source is
4155 the list of newsgroups is was posted to." 4157 the list of newsgroups is was posted to."
4156 (concat "[" 4158 (concat "["
4157 (let ((prefix 4159 (let ((prefix
4158 (or (message-fetch-field 4160 (or (message-fetch-field "newsgroups")
4159 (if (message-news-p) "newsgroups" "from")) 4161 (message-fetch-field "from")
4160 "(nowhere)"))) 4162 "(nowhere)")))
4161 (if message-forward-decoded-p 4163 (if message-forward-decoded-p
4162 prefix 4164 prefix
4163 (mail-decode-encoded-word-string prefix))) 4165 (mail-decode-encoded-word-string prefix)))
4164 "] " subject)) 4166 "] " subject))
4197 subject)))) 4199 subject))))
4198 4200
4199 (eval-when-compile 4201 (eval-when-compile
4200 (defvar gnus-article-decoded-p)) 4202 (defvar gnus-article-decoded-p))
4201 4203
4204
4202 ;;;###autoload 4205 ;;;###autoload
4203 (defun message-forward (&optional news digest) 4206 (defun message-forward (&optional news digest)
4204 "Forward the current message via mail. 4207 "Forward the current message via mail.
4205 Optional NEWS will use news to forward instead of mail. 4208 Optional NEWS will use news to forward instead of mail.
4206 Optional DIGEST will use digest to forward." 4209 Optional DIGEST will use digest to forward."
4207 (interactive "P") 4210 (interactive "P")
4208 (let* ((cur (current-buffer)) 4211 (let* ((cur (current-buffer))
4209 (message-forward-decoded-p 4212 (message-forward-decoded-p
4210 (if (local-variable-p 'gnus-article-decoded-p (current-buffer)) 4213 (if (local-variable-p 'gnus-article-decoded-p (current-buffer))
4211 gnus-article-decoded-p ;; In an article buffer. 4214 gnus-article-decoded-p ;; In an article buffer.
4212 message-forward-decoded-p)) 4215 message-forward-decoded-p))
4213 (subject (message-make-forward-subject)) 4216 (subject (message-make-forward-subject)))
4214 art-beg)
4215 (if news 4217 (if news
4216 (message-news nil subject) 4218 (message-news nil subject)
4217 (message-mail nil subject)) 4219 (message-mail nil subject))
4218 ;; Put point where we want it before inserting the forwarded 4220 (message-forward-make-body cur digest)))
4219 ;; message. 4221
4220 (if message-forward-before-signature 4222 ;;;###autoload
4221 (message-goto-body) 4223 (defun message-forward-make-body (forward-buffer &optional digest)
4222 (goto-char (point-max))) 4224 ;; Put point where we want it before inserting the forwarded
4223 (if message-forward-as-mime 4225 ;; message.
4224 (if digest 4226 (if message-forward-before-signature
4225 (insert "\n<#multipart type=digest>\n") 4227 (message-goto-body)
4226 (if message-forward-show-mml 4228 (goto-char (point-max)))
4227 (insert "\n\n<#mml type=message/rfc822 disposition=inline>\n") 4229 (if message-forward-as-mime
4228 (insert "\n\n<#part type=message/rfc822 disposition=inline raw=t>\n")))
4229 (insert "\n-------------------- Start of forwarded message --------------------\n"))
4230 (let ((b (point)) e)
4231 (if digest 4230 (if digest
4232 (if message-forward-as-mime 4231 (insert "\n<#multipart type=digest>\n")
4233 (insert-buffer-substring cur) 4232 (if message-forward-show-mml
4234 (mml-insert-buffer cur)) 4233 (insert "\n\n<#mml type=message/rfc822 disposition=inline>\n")
4235 (if (and message-forward-show-mml 4234 (insert "\n\n<#part type=message/rfc822 disposition=inline raw=t>\n")))
4236 (not message-forward-decoded-p)) 4235 (insert "\n-------------------- Start of forwarded message --------------------\n"))
4237 (insert 4236 (let ((b (point)) e)
4238 (with-temp-buffer 4237 (if digest
4239 (mm-disable-multibyte-mule4) ;; Must copy buffer in unibyte mode 4238 (if message-forward-as-mime
4239 (insert-buffer-substring forward-buffer)
4240 (mml-insert-buffer forward-buffer))
4241 (if (and message-forward-show-mml
4242 (not message-forward-decoded-p))
4243 (insert
4244 (with-temp-buffer
4245 (mm-disable-multibyte-mule4) ;; Must copy buffer in unibyte mode
4240 (insert 4246 (insert
4241 (with-current-buffer cur 4247 (with-current-buffer forward-buffer
4242 (mm-string-as-unibyte (buffer-string)))) 4248 (mm-string-as-unibyte (buffer-string))))
4243 (mm-enable-multibyte-mule4) 4249 (mm-enable-multibyte-mule4)
4244 (mime-to-mml) 4250 (mime-to-mml)
4245 (goto-char (point-min)) 4251 (goto-char (point-min))
4246 (when (looking-at "From ") 4252 (when (looking-at "From ")
4247 (replace-match "X-From-Line: ")) 4253 (replace-match "X-From-Line: "))
4248 (buffer-string))) 4254 (buffer-string)))
4249 (save-restriction 4255 (save-restriction
4250 (narrow-to-region (point) (point)) 4256 (narrow-to-region (point) (point))
4251 (mml-insert-buffer cur) 4257 (mml-insert-buffer forward-buffer)
4252 (goto-char (point-min)) 4258 (goto-char (point-min))
4253 (when (looking-at "From ") 4259 (when (looking-at "From ")
4254 (replace-match "X-From-Line: ")) 4260 (replace-match "X-From-Line: "))
4255 (goto-char (point-max))))) 4261 (goto-char (point-max)))))
4256 (setq e (point)) 4262 (setq e (point))
4257 (if message-forward-as-mime 4263 (if message-forward-as-mime
4258 (if digest 4264 (if digest
4259 (insert "<#/multipart>\n") 4265 (insert "<#/multipart>\n")
4260 (if message-forward-show-mml 4266 (if message-forward-show-mml
4261 (insert "<#/mml>\n") 4267 (insert "<#/mml>\n")
4262 (insert "<#/part>\n"))) 4268 (insert "<#/part>\n")))
4263 (insert "\n-------------------- End of forwarded message --------------------\n")) 4269 (insert "\n-------------------- End of forwarded message --------------------\n"))
4264 (if (and digest message-forward-as-mime) 4270 (if (and digest message-forward-as-mime)
4265 (save-restriction 4271 (save-restriction
4266 (narrow-to-region b e) 4272 (narrow-to-region b e)
4267 (goto-char b) 4273 (goto-char b)
4268 (narrow-to-region (point) 4274 (narrow-to-region (point)
4269 (or (search-forward "\n\n" nil t) (point))) 4275 (or (search-forward "\n\n" nil t) (point)))
4270 (delete-region (point-min) (point-max))) 4276 (delete-region (point-min) (point-max)))
4271 (when (and (not current-prefix-arg) 4277 (when (and (not current-prefix-arg)
4272 message-forward-ignored-headers) 4278 message-forward-ignored-headers)
4273 (save-restriction 4279 (save-restriction
4274 (narrow-to-region b e) 4280 (narrow-to-region b e)
4275 (goto-char b) 4281 (goto-char b)
4276 (narrow-to-region (point) 4282 (narrow-to-region (point)
4277 (or (search-forward "\n\n" nil t) (point))) 4283 (or (search-forward "\n\n" nil t) (point)))
4278 (message-remove-header message-forward-ignored-headers t))))) 4284 (message-remove-header message-forward-ignored-headers t)))))
4279 (message-position-point))) 4285 (message-position-point))
4286
4287 ;;;###autoload
4288 (defun message-forward-rmail-make-body (forward-buffer)
4289 (save-window-excursion
4290 (set-buffer forward-buffer)
4291 (let (rmail-enable-mime)
4292 (rmail-toggle-header 0)))
4293 (message-forward-make-body forward-buffer))
4294
4295 ;;;###autoload
4296 (defun message-insinuate-rmail ()
4297 "Let RMAIL uses message to forward."
4298 (interactive)
4299 (setq rmail-enable-mime-composing t)
4300 (setq rmail-insert-mime-forwarded-message-function
4301 'message-forward-rmail-make-body))
4280 4302
4281 ;;;###autoload 4303 ;;;###autoload
4282 (defun message-resend (address) 4304 (defun message-resend (address)
4283 "Resend the current article to ADDRESS." 4305 "Resend the current article to ADDRESS."
4284 (interactive 4306 (interactive
4646 ;; when confronted with a message with a MIME-Version header and 4668 ;; when confronted with a message with a MIME-Version header and
4647 ;; without a Content-Type header. For instance, Solaris' 4669 ;; without a Content-Type header. For instance, Solaris'
4648 ;; /usr/bin/mail. 4670 ;; /usr/bin/mail.
4649 (unless content-type-p 4671 (unless content-type-p
4650 (goto-char (point-min)) 4672 (goto-char (point-min))
4651 (re-search-forward "^MIME-Version:") 4673 ;; For unknown reason, MIME-Version doesn't exist.
4652 (forward-line 1) 4674 (when (re-search-forward "^MIME-Version:" nil t)
4653 (insert "Content-Type: text/plain; charset=us-ascii\n"))))) 4675 (forward-line 1)
4676 (insert "Content-Type: text/plain; charset=us-ascii\n"))))))
4654 4677
4655 (defun message-read-from-minibuffer (prompt) 4678 (defun message-read-from-minibuffer (prompt)
4656 "Read from the minibuffer while providing abbrev expansion." 4679 "Read from the minibuffer while providing abbrev expansion."
4657 (if (fboundp 'mail-abbrevs-setup) 4680 (if (fboundp 'mail-abbrevs-setup)
4658 (let ((mail-abbrev-mode-regexp "") 4681 (let ((mail-abbrev-mode-regexp "")