Mercurial > emacs
annotate lisp/mail/rmail.el @ 91817:f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
;; Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004, 2005,
;; 2006, 2007, 2008 Free Software Foundation, Inc.
;; Author: Tomoji Kagatani <kagatani@rbc.ncl.omron.co.jp>
;; Maintainer: Simon Josefsson <simon@josefsson.org>
;; w32 Maintainer: Brian D. Carlstrom <bdc@ai.mit.edu>
;; ESMTP support: Simon Leinen <simon@switch.ch>
;; Hacked by Mike Taylor, 11th October 1999 to add support for
;; automatically appending a domain to RCPT TO: addresses.
;; AUTH=LOGIN support: Stephen Cranefield <scranefield@infoscience.otago.ac.nz>
;; Keywords: mail
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; Send Mail to smtp host from smtpmail temp buffer.
;; Please add these lines in your .emacs(_emacs) or use customize.
;;
;;(setq send-mail-function 'smtpmail-send-it) ; if you use `mail'
;;(setq message-send-mail-function 'smtpmail-send-it) ; if you use message/Gnus
;;(setq smtpmail-default-smtp-server "YOUR SMTP HOST")
;;(setq smtpmail-local-domain "YOUR DOMAIN NAME")
;;(setq smtpmail-sendto-domain "YOUR DOMAIN NAME")
;;(setq smtpmail-debug-info t) ; only to debug problems
;;(setq smtpmail-auth-credentials ; or use ~/.authinfo
;; '(("YOUR SMTP HOST" 25 "username" "password")))
;;(setq smtpmail-starttls-credentials
;; '(("YOUR SMTP HOST" 25 "~/.my_smtp_tls.key" "~/.my_smtp_tls.cert")))
;; Where the 25 equals the value of `smtpmail-smtp-service', it can be an
;; integer or a string, just as long as they match (eq).
;; To queue mail, set smtpmail-queue-mail to t and use
;; smtpmail-send-queued-mail to send.
;; Modified by Stephen Cranefield <scranefield@infoscience.otago.ac.nz>,
;; 22/6/99, to support SMTP Authentication by the AUTH=LOGIN mechanism.
;; See http://help.netscape.com/products/server/messaging/3x/info/smtpauth.html
;; Rewritten by Simon Josefsson to use same credential variable as AUTH
;; support below.
;; Modified by Simon Josefsson <jas@pdc.kth.se>, 22/2/99, to support SMTP
;; Authentication by the AUTH mechanism.
;; See http://www.ietf.org/rfc/rfc2554.txt
;; Modified by Simon Josefsson <simon@josefsson.org>, 2000-10-07, to support
;; STARTTLS. Requires external program
;; ftp://ftp.opaopa.org/pub/elisp/starttls-*.tar.gz.
;; See http://www.ietf.org/rfc/rfc2246.txt, http://www.ietf.org/rfc/rfc2487.txt
;;; Code:
(require 'sendmail)
(autoload 'starttls-open-stream "starttls")
(autoload 'starttls-negotiate "starttls")
(autoload 'mail-strip-quoted-names "mail-utils")
(autoload 'message-make-date "message")
(autoload 'message-make-message-id "message")
(autoload 'rfc2104-hash "rfc2104")
(autoload 'netrc-parse "netrc")
(autoload 'netrc-machine "netrc")
(autoload 'netrc-get "netrc")
;;;
(defgroup smtpmail nil
"SMTP protocol for sending mail."
:group 'mail)
(defcustom smtpmail-default-smtp-server nil
"*Specify default SMTP server.
This only has effect if you specify it before loading the smtpmail library."
:type '(choice (const nil) string)
:group 'smtpmail)
(defcustom smtpmail-smtp-server
(or (getenv "SMTPSERVER") smtpmail-default-smtp-server)
"*The name of the host running SMTP server."
:type '(choice (const nil) string)
:group 'smtpmail)
(defcustom smtpmail-smtp-service 25
"*SMTP service port number.
The default value would be \"smtp\" or 25."
:type '(choice (integer :tag "Port") (string :tag "Service"))
:group 'smtpmail)
(defcustom smtpmail-local-domain nil
"*Local domain name without a host name.
If the function `system-name' returns the full internet address,
don't define this value."
:type '(choice (const nil) string)
:group 'smtpmail)
(defcustom smtpmail-sendto-domain nil
"*Local domain name without a host name.
This is appended (with an @-sign) to any specified recipients which do
not include an @-sign, so that each RCPT TO address is fully qualified.
\(Some configurations of sendmail require this.)
Don't bother to set this unless you have get an error like:
Sending failed; SMTP protocol error
when sending mail, and the *trace of SMTP session to <somewhere>*
buffer includes an exchange like:
RCPT TO: <someone>
501 <someone>: recipient address must contain a domain
"
:type '(choice (const nil) string)
:group 'smtpmail)
(defcustom smtpmail-debug-info nil
"Whether to print info in buffer *trace of SMTP session to <somewhere>*.
See also `smtpmail-debug-verb' which determines if the SMTP protocol should
be verbose as well."
:type 'boolean
:group 'smtpmail)
(defcustom smtpmail-debug-verb nil
"Whether this library sends the SMTP VERB command or not.
The commands enables verbose information from the SMTP server."
:type 'boolean
:group 'smtpmail)
(defcustom smtpmail-code-conv-from nil ;; *junet*
"*smtpmail code convert from this code to *internal*..for tiny-mime.."
:type 'boolean
:group 'smtpmail)
(defcustom smtpmail-queue-mail nil
"*If set, mail is queued; otherwise it is sent immediately.
If queued, it is stored in the directory `smtpmail-queue-dir'
and sent with `smtpmail-send-queued-mail'."
:type 'boolean
:group 'smtpmail)
(defcustom smtpmail-queue-dir "~/Mail/queued-mail/"
"*Directory where `smtpmail.el' stores queued mail."
:type 'directory
:group 'smtpmail)
(defcustom smtpmail-auth-credentials "~/.authinfo"
"Specify username and password for servers, directly or via .netrc file.
This variable can either be a filename pointing to a file in netrc(5)
format, or list of four-element lists that contain, in order,
`servername' (a string), `port' (an integer), `user' (a string) and
`password' (a string, or nil to query the user when needed). If you
need to enter a `realm' too, add it to the user string, so that it
looks like `user@realm'."
:type '(choice file
(repeat (list (string :tag "Server")
(integer :tag "Port")
(string :tag "Username")
(choice (const :tag "Query when needed" nil)
(string :tag "Password")))))
:version "22.1"
:group 'smtpmail)
(defcustom smtpmail-starttls-credentials '(("" 25 "" ""))
"Specify STARTTLS keys and certificates for servers.
This is a list of four-element list with `servername' (a string),
`port' (an integer), `key' (a filename) and `certificate' (a
filename).
If you do not have a certificate/key pair, leave the `key' and
`certificate' fields as `nil'. A key/certificate pair is only
needed if you want to use X.509 client authenticated
connections."
:type '(repeat (list (string :tag "Server")
(integer :tag "Port")
(file :tag "Key")
(file :tag "Certificate")))
:version "21.1"
:group 'smtpmail)
(defcustom smtpmail-warn-about-unknown-extensions nil
"*If set, print warnings about unknown SMTP extensions.
This is mainly useful for development purposes, to learn about
new SMTP extensions that might be useful to support."
:type 'boolean
:version "21.1"
:group 'smtpmail)
(defvar smtpmail-queue-index-file "index"
"File name of queued mail index.
This is relative to `smtpmail-queue-dir'.")
(defvar smtpmail-address-buffer)
(defvar smtpmail-recipient-address-list)
(defvar smtpmail-queue-counter 0)
;; Buffer-local variable.
(defvar smtpmail-read-point)
(defvar smtpmail-queue-index (concat smtpmail-queue-dir
smtpmail-queue-index-file))
(defconst smtpmail-auth-supported '(cram-md5 plain login)
"List of supported SMTP AUTH mechanisms.")
;;;
;;;
;;;
(defvar smtpmail-mail-address nil
"Value to use for envelope-from address for mail from ambient buffer.")
;;;###autoload
(defun smtpmail-send-it ()
(let ((errbuf (if mail-interactive
(generate-new-buffer " smtpmail errors")
0))
(tembuf (generate-new-buffer " smtpmail temp"))
(case-fold-search nil)
delimline
(mailbuf (current-buffer))
;; Examine this variable now, so that
;; local binding in the mail buffer will take effect.
(smtpmail-mail-address
(or (and mail-specify-envelope-from (mail-envelope-from))
user-mail-address))
(smtpmail-code-conv-from
(if enable-multibyte-characters
(let ((sendmail-coding-system smtpmail-code-conv-from))
(select-message-coding-system)))))
(unwind-protect
(save-excursion
(set-buffer tembuf)
(erase-buffer)
;; Use the same buffer-file-coding-system as in the mail
;; buffer, otherwise any write-region invocations (e.g., in
;; mail-do-fcc below) will annoy with asking for a suitable
;; encoding.
(set-buffer-file-coding-system smtpmail-code-conv-from nil t)
(insert-buffer-substring mailbuf)
(goto-char (point-max))
;; require one newline at the end.
(or (= (preceding-char) ?\n)
(insert ?\n))
;; Change header-delimiter to be what sendmail expects.
(mail-sendmail-undelimit-header)
(setq delimline (point-marker))
;; (sendmail-synch-aliases)
(if mail-aliases
(expand-mail-aliases (point-min) delimline))
(goto-char (point-min))
;; ignore any blank lines in the header
(while (and (re-search-forward "\n\n\n*" delimline t)
(< (point) delimline))
(replace-match "\n"))
(let ((case-fold-search t))
;; We used to process Resent-... headers here,
;; but it was not done properly, and the job
;; is done correctly in smtpmail-deduce-address-list.
;; Don't send out a blank subject line
(goto-char (point-min))
(if (re-search-forward "^Subject:\\([ \t]*\n\\)+\\b" delimline t)
(replace-match "")
;; This one matches a Subject just before the header delimiter.
(if (and (re-search-forward "^Subject:\\([ \t]*\n\\)+" delimline t)
(= (match-end 0) delimline))
(replace-match "")))
;; Put the "From:" field in unless for some odd reason
;; they put one in themselves.
(goto-char (point-min))
(if (not (re-search-forward "^From:" delimline t))
(let* ((login smtpmail-mail-address)
(fullname (user-full-name)))
(cond ((eq mail-from-style 'angles)
(insert "From: " fullname)
(let ((fullname-start (+ (point-min) 6))
(fullname-end (point-marker)))
(goto-char fullname-start)
;; Look for a character that cannot appear unquoted
;; according to RFC 822.
(if (re-search-forward "[^- !#-'*+/-9=?A-Z^-~]"
fullname-end 1)
(progn
;; Quote fullname, escaping specials.
(goto-char fullname-start)
(insert "\"")
(while (re-search-forward "[\"\\]"
fullname-end 1)
(replace-match "\\\\\\&" t))
(insert "\""))))
(insert " <" login ">\n"))
((eq mail-from-style 'parens)
(insert "From: " login " (")
(let ((fullname-start (point)))
(insert fullname)
(let ((fullname-end (point-marker)))
(goto-char fullname-start)
;; RFC 822 says \ and nonmatching parentheses
;; must be escaped in comments.
;; Escape every instance of ()\ ...
(while (re-search-forward "[()\\]" fullname-end 1)
(replace-match "\\\\\\&" t))
;; ... then undo escaping of matching parentheses,
;; including matching nested parentheses.
(goto-char fullname-start)
(while (re-search-forward
"\\(\\=\\|[^\\]\\(\\\\\\\\\\)*\\)\\\\(\\(\\([^\\]\\|\\\\\\\\\\)*\\)\\\\)"
fullname-end 1)
(replace-match "\\1(\\3)" t)
(goto-char fullname-start))))
(insert ")\n"))
((null mail-from-style)
(insert "From: " login "\n")))))
;; Insert a `Message-Id:' field if there isn't one yet.
(goto-char (point-min))
(unless (re-search-forward "^Message-Id:" delimline t)
(insert "Message-Id: " (message-make-message-id) "\n"))
;; Insert a `Date:' field if there isn't one yet.
(goto-char (point-min))
(unless (re-search-forward "^Date:" delimline t)
(insert "Date: " (message-make-date) "\n"))
;; Possibly add a MIME header for the current coding system
(let (charset)
(goto-char (point-min))
(and (eq mail-send-nonascii 'mime)
(not (re-search-forward "^MIME-version:" delimline t))
(progn (skip-chars-forward "\0-\177")
(/= (point) (point-max)))
smtpmail-code-conv-from
(setq charset
(coding-system-get smtpmail-code-conv-from
'mime-charset))
(goto-char delimline)
(insert "MIME-version: 1.0\n"
"Content-type: text/plain; charset="
(symbol-name charset)
"\nContent-Transfer-Encoding: 8bit\n")))
;; Insert an extra newline if we need it to work around
;; Sun's bug that swallows newlines.
(goto-char (1+ delimline))
(if (eval mail-mailer-swallows-blank-line)
(newline))
;; Find and handle any FCC fields.
(goto-char (point-min))
(if (re-search-forward "^FCC:" delimline t)
;; Force mail-do-fcc to use the encoding of the mail
;; buffer to encode outgoing messages on FCC files.
(let ((coding-system-for-write smtpmail-code-conv-from))
(mail-do-fcc delimline)))
(if mail-interactive
(with-current-buffer errbuf
(erase-buffer))))
;;
;;
;;
(setq smtpmail-address-buffer (generate-new-buffer "*smtp-mail*"))
(setq smtpmail-recipient-address-list
(smtpmail-deduce-address-list tembuf (point-min) delimline))
(kill-buffer smtpmail-address-buffer)
(smtpmail-do-bcc delimline)
; Send or queue
(if (not smtpmail-queue-mail)
(if (not (null smtpmail-recipient-address-list))
(if (not (smtpmail-via-smtp
smtpmail-recipient-address-list tembuf))
(error "Sending failed; SMTP protocol error"))
(error "Sending failed; no recipients"))
(let* ((file-data
(expand-file-name
(format "%s_%i"
(format-time-string "%Y-%m-%d_%H:%M:%S")
(setq smtpmail-queue-counter
(1+ smtpmail-queue-counter)))
smtpmail-queue-dir))
(file-data (convert-standard-filename file-data))
(file-elisp (concat file-data ".el"))
(buffer-data (create-file-buffer file-data))
(buffer-elisp (create-file-buffer file-elisp))
(buffer-scratch "*queue-mail*"))
(unless (file-exists-p smtpmail-queue-dir)
(make-directory smtpmail-queue-dir t))
(with-current-buffer buffer-data
(erase-buffer)
(set-buffer-file-coding-system smtpmail-code-conv-from nil t)
(insert-buffer-substring tembuf)
(write-file file-data)
(set-buffer buffer-elisp)
(erase-buffer)
(insert (concat
"(setq smtpmail-recipient-address-list '"
(prin1-to-string smtpmail-recipient-address-list)
")\n"))
(write-file file-elisp)
(set-buffer (generate-new-buffer buffer-scratch))
(insert (concat file-data "\n"))
(append-to-file (point-min)
(point-max)
smtpmail-queue-index)
)
(kill-buffer buffer-scratch)
(kill-buffer buffer-data)
(kill-buffer buffer-elisp))))
(kill-buffer tembuf)
(if (bufferp errbuf)
(kill-buffer errbuf)))))
;;;###autoload
(defun smtpmail-send-queued-mail ()
"Send mail that was queued as a result of setting `smtpmail-queue-mail'."
(interactive)
(with-temp-buffer
;;; Get index, get first mail, send it, update index, get second
;;; mail, send it, etc...
(let ((file-msg ""))
(insert-file-contents smtpmail-queue-index)
(goto-char (point-min))
(while (not (eobp))
(setq file-msg (buffer-substring (point) (line-end-position)))
(load file-msg)
;; Insert the message literally: it is already encoded as per
;; the MIME headers, and code conversions might guess the
;; encoding wrongly.
(with-temp-buffer
(let ((coding-system-for-read 'no-conversion))
(insert-file-contents file-msg))
(let ((smtpmail-mail-address
(or (and mail-specify-envelope-from (mail-envelope-from))
user-mail-address)))
(if (not (null smtpmail-recipient-address-list))
(if (not (smtpmail-via-smtp smtpmail-recipient-address-list
(current-buffer)))
(error "Sending failed; SMTP protocol error"))
(error "Sending failed; no recipients"))))
(delete-file file-msg)
(delete-file (concat file-msg ".el"))
(delete-region (point-at-bol) (point-at-bol 2)))
(write-region (point-min) (point-max) smtpmail-queue-index))))
;(defun smtpmail-via-smtp (host,port,sender,destination,smtpmail-text-buffer)
(defun smtpmail-fqdn ()
(if smtpmail-local-domain
(concat (system-name) "." smtpmail-local-domain)
(system-name)))
(defsubst smtpmail-cred-server (cred)
(nth 0 cred))
(defsubst smtpmail-cred-port (cred)
(nth 1 cred))
(defsubst smtpmail-cred-key (cred)
(nth 2 cred))
(defsubst smtpmail-cred-user (cred)
(nth 2 cred))
(defsubst smtpmail-cred-cert (cred)
(nth 3 cred))
(defsubst smtpmail-cred-passwd (cred)
(nth 3 cred))
(defun smtpmail-find-credentials (cred server port)
(catch 'done
(let ((l cred) el)
(while (setq el (pop l))
(when (and (equal server (smtpmail-cred-server el))
(equal port (smtpmail-cred-port el)))
(throw 'done el))))))
(defun smtpmail-maybe-append-domain (recipient)
(if (or (not smtpmail-sendto-domain)
(string-match "@" recipient))
recipient
(concat recipient "@" smtpmail-sendto-domain)))
(defun smtpmail-intersection (list1 list2)
(let ((result nil))
(dolist (el2 list2)
(when (memq el2 list1)
(push el2 result)))
(nreverse result)))
(defvar starttls-extra-args)
(defvar starttls-extra-arguments)
(defun smtpmail-open-stream (process-buffer host port)
(let ((cred (smtpmail-find-credentials
smtpmail-starttls-credentials host port)))
(if (null (and cred (condition-case ()
(with-no-warnings
(require 'starttls)
(call-process (if starttls-use-gnutls
starttls-gnutls-program
starttls-program)))
(error nil))))
;; The normal case.
(open-network-stream "SMTP" process-buffer host port)
(let* ((cred-key (smtpmail-cred-key cred))
(cred-cert (smtpmail-cred-cert cred))
(starttls-extra-args
(append
starttls-extra-args
(when (and (stringp cred-key) (stringp cred-cert)
(file-regular-p
(setq cred-key (expand-file-name cred-key)))
(file-regular-p
(setq cred-cert (expand-file-name cred-cert))))
(list "--key-file" cred-key "--cert-file" cred-cert))))
(starttls-extra-arguments
(append
starttls-extra-arguments
(when (and (stringp cred-key) (stringp cred-cert)
(file-regular-p
(setq cred-key (expand-file-name cred-key)))
(file-regular-p
(setq cred-cert (expand-file-name cred-cert))))
(list "--x509keyfile" cred-key "--x509certfile" cred-cert)))))
(starttls-open-stream "SMTP" process-buffer host port)))))
(defun smtpmail-try-auth-methods (process supported-extensions host port)
(let* ((mechs (cdr-safe (assoc 'auth supported-extensions)))
(mech (car (smtpmail-intersection smtpmail-auth-supported mechs)))
(cred (if (stringp smtpmail-auth-credentials)
(let* ((netrc (netrc-parse smtpmail-auth-credentials))
(port-name (format "%s" (or port "smtp")))
(hostentry (netrc-machine netrc host port-name
port-name)))
(when hostentry
(list host port
(netrc-get hostentry "login")
(netrc-get hostentry "password"))))
(smtpmail-find-credentials
smtpmail-auth-credentials host port)))
(passwd (when cred
(or (smtpmail-cred-passwd cred)
(read-passwd
(format "SMTP password for %s:%s: "
(smtpmail-cred-server cred)
(smtpmail-cred-port cred))))))
ret)
(when (and cred mech)
(cond
((eq mech 'cram-md5)
(smtpmail-send-command process (upcase (format "AUTH %s" mech)))
(if (or (null (car (setq ret (smtpmail-read-response process))))
(not (integerp (car ret)))
(>= (car ret) 400))
(throw 'done nil))
(when (eq (car ret) 334)
(let* ((challenge (substring (cadr ret) 4))
(decoded (base64-decode-string challenge))
(hash (rfc2104-hash 'md5 64 16 passwd decoded))
(response (concat (smtpmail-cred-user cred) " " hash))
;; Osamu Yamane <yamane@green.ocn.ne.jp>:
;; SMTP auth fails because the SMTP server identifies
;; only the first part of the string (delimited by
;; new line characters) as a response from the
;; client, and the rest as distinct commands.
;; In my case, the response string is 80 characters
;; long. Without the no-line-break option for
;; base64-encode-sting, only the first 76 characters
;; are taken as a response to the server, and the
;; authentication fails.
(encoded (base64-encode-string response t)))
(smtpmail-send-command process (format "%s" encoded))
(if (or (null (car (setq ret (smtpmail-read-response process))))
(not (integerp (car ret)))
(>= (car ret) 400))
(throw 'done nil)))))
((eq mech 'login)
(smtpmail-send-command process "AUTH LOGIN")
(if (or (null (car (setq ret (smtpmail-read-response process))))
(not (integerp (car ret)))
(>= (car ret) 400))
(throw 'done nil))
(smtpmail-send-command
process (base64-encode-string (smtpmail-cred-user cred) t))
(if (or (null (car (setq ret (smtpmail-read-response process))))
(not (integerp (car ret)))
(>= (car ret) 400))
(throw 'done nil))
(smtpmail-send-command process (base64-encode-string passwd t))
(if (or (null (car (setq ret (smtpmail-read-response process))))
(not (integerp (car ret)))
(>= (car ret) 400))
(throw 'done nil)))
((eq mech 'plain)
;; We used to send an empty initial request, and wait for an
;; empty response, and then send the password, but this
;; violate a SHOULD in RFC 2222 paragraph 5.1. Note that this
;; is not sent if the server did not advertise AUTH PLAIN in
;; the EHLO response. See RFC 2554 for more info.
(smtpmail-send-command process
(concat "AUTH PLAIN "
(base64-encode-string
(concat "\0"
(smtpmail-cred-user cred)
"\0"
passwd) t)))
(if (or (null (car (setq ret (smtpmail-read-response process))))
(not (integerp (car ret)))
(not (equal (car ret) 235)))
(throw 'done nil)))
(t
(error "Mechanism %s not implemented" mech)))
;; Remember the password.
(when (and (not (stringp smtpmail-auth-credentials))
(null (smtpmail-cred-passwd cred)))
(setcar (cdr (cdr (cdr cred))) passwd)))))
(defun smtpmail-via-smtp (recipient smtpmail-text-buffer)
(let ((process nil)
(host (or smtpmail-smtp-server
(error "`smtpmail-smtp-server' not defined")))
(port smtpmail-smtp-service)
;; smtpmail-mail-address should be set to the appropriate
;; buffer-local value by the caller, but in case not:
(envelope-from (or smtpmail-mail-address
(and mail-specify-envelope-from
(mail-envelope-from))
user-mail-address))
response-code
greeting
process-buffer
(supported-extensions '()))
(unwind-protect
(catch 'done
;; get or create the trace buffer
(setq process-buffer
(get-buffer-create (format "*trace of SMTP session to %s*" host)))
;; clear the trace buffer of old output
(with-current-buffer process-buffer
(setq buffer-undo-list t)
(erase-buffer))
;; open the connection to the server
(setq process (smtpmail-open-stream process-buffer host port))
(and (null process) (throw 'done nil))
;; set the send-filter
(set-process-filter process 'smtpmail-process-filter)
(with-current-buffer process-buffer
(set-buffer-process-coding-system 'raw-text-unix 'raw-text-unix)
(make-local-variable 'smtpmail-read-point)
(setq smtpmail-read-point (point-min))
(if (or (null (car (setq greeting (smtpmail-read-response process))))
(not (integerp (car greeting)))
(>= (car greeting) 400))
(throw 'done nil)
)
(let ((do-ehlo t)
(do-starttls t))
(while do-ehlo
;; EHLO
(smtpmail-send-command process (format "EHLO %s" (smtpmail-fqdn)))
(if (or (null (car (setq response-code
(smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(progn
;; HELO
(smtpmail-send-command
process (format "HELO %s" (smtpmail-fqdn)))
(if (or (null (car (setq response-code
(smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil)))
(dolist (line (cdr (cdr response-code)))
(let ((name
(with-case-table ascii-case-table
(mapcar (lambda (s) (intern (downcase s)))
(split-string (substring line 4) "[ ]")))))
(and (eq (length name) 1)
(setq name (car name)))
(and name
(cond ((memq (if (consp name) (car name) name)
'(verb xvrb 8bitmime onex xone
expn size dsn etrn
enhancedstatuscodes
help xusr
auth=login auth starttls))
(setq supported-extensions
(cons name supported-extensions)))
(smtpmail-warn-about-unknown-extensions
(message "Unknown extension %s" name)))))))
(if (and do-starttls
(smtpmail-find-credentials smtpmail-starttls-credentials host port)
(member 'starttls supported-extensions)
(numberp (process-id process)))
(progn
(smtpmail-send-command process (format "STARTTLS"))
(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil))
(starttls-negotiate process)
(setq do-starttls nil))
(setq do-ehlo nil))))
(smtpmail-try-auth-methods process supported-extensions host port)
(if (or (member 'onex supported-extensions)
(member 'xone supported-extensions))
(progn
(smtpmail-send-command process (format "ONEX"))
(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil))))
(if (and smtpmail-debug-verb
(or (member 'verb supported-extensions)
(member 'xvrb supported-extensions)))
(progn
(smtpmail-send-command process (format "VERB"))
(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil))))
(if (member 'xusr supported-extensions)
(progn
(smtpmail-send-command process (format "XUSR"))
(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil))))
;; MAIL FROM:<sender>
(let ((size-part
(if (or (member 'size supported-extensions)
(assoc 'size supported-extensions))
(format " SIZE=%d"
(with-current-buffer smtpmail-text-buffer
;; size estimate:
(+ (- (point-max) (point-min))
;; Add one byte for each change-of-line
;; because of CR-LF representation:
(count-lines (point-min) (point-max)))))
""))
(body-part
(if (member '8bitmime supported-extensions)
;; FIXME:
;; Code should be added here that transforms
;; the contents of the message buffer into
;; something the receiving SMTP can handle.
;; For a receiver that supports 8BITMIME, this
;; may mean converting BINARY to BASE64, or
;; adding Content-Transfer-Encoding and the
;; other MIME headers. The code should also
;; return an indication of what encoding the
;; message buffer is now, i.e. ASCII or
;; 8BITMIME.
(if nil
" BODY=8BITMIME"
"")
"")))
; (smtpmail-send-command process (format "MAIL FROM:%s@%s" (user-login-name) (smtpmail-fqdn)))
(smtpmail-send-command process (format "MAIL FROM:<%s>%s%s"
envelope-from
size-part
body-part))
(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil)
))
;; RCPT TO:<recipient>
(let ((n 0))
(while (not (null (nth n recipient)))
(smtpmail-send-command process (format "RCPT TO:<%s>" (smtpmail-maybe-append-domain (nth n recipient))))
(setq n (1+ n))
(setq response-code (smtpmail-read-response process))
(if (or (null (car response-code))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil)
)
))
;; DATA
(smtpmail-send-command process "DATA")
(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil)
)
;; Mail contents
(smtpmail-send-data process smtpmail-text-buffer)
;;DATA end "."
(smtpmail-send-command process ".")
(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil)
)
;;QUIT
; (smtpmail-send-command process "QUIT")
; (and (null (car (smtpmail-read-response process)))
; (throw 'done nil))
t ))
(if process
(with-current-buffer (process-buffer process)
(smtpmail-send-command process "QUIT")
(smtpmail-read-response process)
; (if (or (null (car (setq response-code (smtpmail-read-response process))))
; (not (integerp (car response-code)))
; (>= (car response-code) 400))
; (throw 'done nil)
; )
(delete-process process)
(unless smtpmail-debug-info
(kill-buffer process-buffer)))))))
(defun smtpmail-process-filter (process output)
(with-current-buffer (process-buffer process)
(goto-char (point-max))
(insert output)))
(defun smtpmail-read-response (process)
(let ((case-fold-search nil)
(response-strings nil)
(response-continue t)
(return-value '(nil ()))
match-end)
(catch 'done
(while response-continue
(goto-char smtpmail-read-point)
(while (not (search-forward "\r\n" nil t))
(unless (memq (process-status process) '(open run))
(throw 'done nil))
(accept-process-output process)
(goto-char smtpmail-read-point))
(setq match-end (point))
(setq response-strings
(cons (buffer-substring smtpmail-read-point (- match-end 2))
response-strings))
(goto-char smtpmail-read-point)
(if (looking-at "[0-9]+ ")
(let ((begin (match-beginning 0))
(end (match-end 0)))
(if smtpmail-debug-info
(message "%s" (car response-strings)))
(setq smtpmail-read-point match-end)
;; ignore lines that start with "0"
(if (looking-at "0[0-9]+ ")
nil
(setq response-continue nil)
(setq return-value
(cons (string-to-number
(buffer-substring begin end))
(nreverse response-strings)))))
(if (looking-at "[0-9]+-")
(progn (if smtpmail-debug-info
(message "%s" (car response-strings)))
(setq smtpmail-read-point match-end)
(setq response-continue t))
(progn
(setq smtpmail-read-point match-end)
(setq response-continue nil)
(setq return-value
(cons nil (nreverse response-strings)))))))
(setq smtpmail-read-point match-end))
return-value))
(defun smtpmail-send-command (process command)
(goto-char (point-max))
(if (= (aref command 0) ?P)
(insert "PASS <omitted>\r\n")
(insert command "\r\n"))
(setq smtpmail-read-point (point))
(process-send-string process command)
(process-send-string process "\r\n"))
(defun smtpmail-send-data-1 (process data)
(goto-char (point-max))
(if (and (multibyte-string-p data)
smtpmail-code-conv-from)
(setq data (string-as-multibyte
(encode-coding-string data smtpmail-code-conv-from))))
(if smtpmail-debug-info
(insert data "\r\n"))
(setq smtpmail-read-point (point))
;; Escape "." at start of a line
(if (eq (string-to-char data) ?.)
(process-send-string process "."))
(process-send-string process data)
(process-send-string process "\r\n")
)
(defun smtpmail-send-data (process buffer)
(let ((data-continue t) sending-data)
(with-current-buffer buffer
(goto-char (point-min)))
(while data-continue
(with-current-buffer buffer
(setq sending-data (buffer-substring (point-at-bol) (point-at-eol)))
(end-of-line 2)
(setq data-continue (not (eobp))))
(smtpmail-send-data-1 process sending-data))))
(defun smtpmail-deduce-address-list (smtpmail-text-buffer header-start header-end)
"Get address list suitable for smtp RCPT TO: <address>."
(unwind-protect
(with-current-buffer smtpmail-address-buffer
(erase-buffer)
(let
((case-fold-search t)
(simple-address-list "")
this-line
this-line-end
addr-regexp)
(insert-buffer-substring smtpmail-text-buffer header-start header-end)
(goto-char (point-min))
;; RESENT-* fields should stop processing of regular fields.
(save-excursion
(setq addr-regexp
(if (re-search-forward "^Resent-\\(to\\|cc\\|bcc\\):"
header-end t)
"^Resent-\\(to\\|cc\\|bcc\\):"
"^\\(To:\\|Cc:\\|Bcc:\\)")))
(while (re-search-forward addr-regexp header-end t)
(replace-match "")
(setq this-line (match-beginning 0))
(forward-line 1)
;; get any continuation lines
(while (and (looking-at "^[ \t]+") (< (point) header-end))
(forward-line 1))
(setq this-line-end (point-marker))
(setq simple-address-list
(concat simple-address-list " "
(mail-strip-quoted-names (buffer-substring this-line this-line-end))))
)
(erase-buffer)
(insert " " simple-address-list "\n")
(subst-char-in-region (point-min) (point-max) 10 ? t);; newline --> blank
(subst-char-in-region (point-min) (point-max) ?, ? t);; comma --> blank
(subst-char-in-region (point-min) (point-max) 9 ? t);; tab --> blank
(goto-char (point-min))
;; tidyness in case hook is not robust when it looks at this
(while (re-search-forward "[ \t]+" header-end t) (replace-match " "))
(goto-char (point-min))
(let (recipient-address-list)
(while (re-search-forward " \\([^ ]+\\) " (point-max) t)
(backward-char 1)
(setq recipient-address-list (cons (buffer-substring (match-beginning 1) (match-end 1))
recipient-address-list))
)
(setq smtpmail-recipient-address-list recipient-address-list))
)
)
)
)
(defun smtpmail-do-bcc (header-end)
"Delete [Resent-]BCC: and their continuation lines from the header area.
There may be multiple BCC: lines, and each may have arbitrarily
many continuation lines."
(let ((case-fold-search t))
(save-excursion
(goto-char (point-min))
;; iterate over all BCC: lines
(while (re-search-forward "^\\(RESENT-\\)?BCC:" header-end t)
(delete-region (match-beginning 0)
(progn (forward-line 1) (point)))
;; get rid of any continuation lines
(while (and (looking-at "^[ \t].*\n") (< (point) header-end))
(replace-match ""))))))
(provide 'smtpmail)
;;; arch-tag: a76992df-6d71-43b7-9e72-4bacc6c05466
;;; smtpmail.el ends here
author | Bastien Guerry <bzg@altern.org> |
---|---|
date | Wed, 13 Feb 2008 20:58:26 +0000 |
parents | 132b386a2c8b |
children | 83fb82614615 |
rev | line source |
---|---|
38412
253f761ad37b
Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents:
38352
diff
changeset
|
1 ;;; rmail.el --- main code of "RMAIL" mail reader for Emacs |
658
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
2 |
64754
fafd692d1e40
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64177
diff
changeset
|
3 ;; Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998, |
87649 | 4 ;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 |
85186 | 5 ;; Free Software Foundation, Inc. |
846
20674ae6bf52
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
830
diff
changeset
|
6 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
658
diff
changeset
|
7 ;; Maintainer: FSF |
814
38b2499cb3e9
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
813
diff
changeset
|
8 ;; Keywords: mail |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
658
diff
changeset
|
9 |
270 | 10 ;; This file is part of GNU Emacs. |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
13 ;; it under the terms of the GNU General Public License as published by | |
78232
8e27d63c45eb
Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents:
77993
diff
changeset
|
14 ;; the Free Software Foundation; either version 3, or (at your option) |
270 | 15 ;; any later version. |
16 | |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
14169 | 23 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
64085 | 24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
25 ;; Boston, MA 02110-1301, USA. | |
270 | 26 |
38412
253f761ad37b
Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents:
38352
diff
changeset
|
27 ;;; Commentary: |
253f761ad37b
Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents:
38352
diff
changeset
|
28 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
658
diff
changeset
|
29 ;;; Code: |
270 | 30 |
31 ;; Souped up by shane@mit-ajax based on ideas of rlk@athena.mit.edu | |
32 ;; New features include attribute and keyword support, message | |
33 ;; selection by dispatch table, summary by attributes and keywords, | |
34 ;; expunging by dispatch table, sticky options for file commands. | |
35 | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
36 ;; Extended by Bob Weiner of Motorola |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
37 ;; New features include: rmail and rmail-summary buffers remain |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
38 ;; synchronized and key bindings basically operate the same way in both |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
39 ;; buffers, summary by topic or by regular expression, rmail-reply-prefix |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
40 ;; variable, and a bury rmail buffer (wipe) command. |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
41 ;; |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
42 |
270 | 43 (require 'mail-utils) |
39298
2b67bb3275f8
(top-level): Require mule-utils when compiling.
Eli Zaretskii <eliz@gnu.org>
parents:
38412
diff
changeset
|
44 (eval-when-compile (require 'mule-util)) ; for detect-coding-with-priority |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
45 |
65210
65cc9b3bbebd
(deleted-head, font-lock-fontified, mail-abbrev-syntax-table, mail-abbrevs,
Juanma Barranquero <lekktu@gmail.com>
parents:
64972
diff
changeset
|
46 (defvar deleted-head) |
65cc9b3bbebd
(deleted-head, font-lock-fontified, mail-abbrev-syntax-table, mail-abbrevs,
Juanma Barranquero <lekktu@gmail.com>
parents:
64972
diff
changeset
|
47 (defvar font-lock-fontified) |
65cc9b3bbebd
(deleted-head, font-lock-fontified, mail-abbrev-syntax-table, mail-abbrevs,
Juanma Barranquero <lekktu@gmail.com>
parents:
64972
diff
changeset
|
48 (defvar mail-abbrev-syntax-table) |
65cc9b3bbebd
(deleted-head, font-lock-fontified, mail-abbrev-syntax-table, mail-abbrevs,
Juanma Barranquero <lekktu@gmail.com>
parents:
64972
diff
changeset
|
49 (defvar mail-abbrevs) |
65cc9b3bbebd
(deleted-head, font-lock-fontified, mail-abbrev-syntax-table, mail-abbrevs,
Juanma Barranquero <lekktu@gmail.com>
parents:
64972
diff
changeset
|
50 (defvar messages-head) |
65cc9b3bbebd
(deleted-head, font-lock-fontified, mail-abbrev-syntax-table, mail-abbrevs,
Juanma Barranquero <lekktu@gmail.com>
parents:
64972
diff
changeset
|
51 (defvar rmail-use-spam-filter) |
65cc9b3bbebd
(deleted-head, font-lock-fontified, mail-abbrev-syntax-table, mail-abbrevs,
Juanma Barranquero <lekktu@gmail.com>
parents:
64972
diff
changeset
|
52 (defvar rsf-beep) |
65cc9b3bbebd
(deleted-head, font-lock-fontified, mail-abbrev-syntax-table, mail-abbrevs,
Juanma Barranquero <lekktu@gmail.com>
parents:
64972
diff
changeset
|
53 (defvar rsf-sleep-after-message) |
65cc9b3bbebd
(deleted-head, font-lock-fontified, mail-abbrev-syntax-table, mail-abbrevs,
Juanma Barranquero <lekktu@gmail.com>
parents:
64972
diff
changeset
|
54 (defvar total-messages) |
69676 | 55 (defvar tool-bar-map) |
65210
65cc9b3bbebd
(deleted-head, font-lock-fontified, mail-abbrev-syntax-table, mail-abbrevs,
Juanma Barranquero <lekktu@gmail.com>
parents:
64972
diff
changeset
|
56 |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
57 ; These variables now declared in paths.el. |
270 | 58 ;(defvar rmail-spool-directory "/usr/spool/mail/" |
59 ; "This is the name of the directory used by the system mailer for\n\ | |
16431
65d3768ccb05
(rmail): Run rmail-mail-hook last.
Richard M. Stallman <rms@gnu.org>
parents:
16349
diff
changeset
|
60 ;delivering new mail. Its name should end with a slash.") |
270 | 61 ;(defvar rmail-file-name |
62 ; (expand-file-name "~/RMAIL") | |
63 ; "") | |
64 | |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
65 (defgroup rmail nil |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
66 "Mail reader for Emacs." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
67 :group 'mail) |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
68 |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
69 (defgroup rmail-retrieve nil |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
70 "Rmail retrieval options." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
71 :prefix "rmail-" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
72 :group 'rmail) |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
73 |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
74 (defgroup rmail-files nil |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
75 "Rmail files." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
76 :prefix "rmail-" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
77 :group 'rmail) |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
78 |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
79 (defgroup rmail-headers nil |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
80 "Rmail header options." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
81 :prefix "rmail-" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
82 :group 'rmail) |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
83 |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
84 (defgroup rmail-reply nil |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
85 "Rmail reply options." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
86 :prefix "rmail-" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
87 :group 'rmail) |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
88 |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
89 (defgroup rmail-summary nil |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
90 "Rmail summary options." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
91 :prefix "rmail-" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
92 :prefix "rmail-summary-" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
93 :group 'rmail) |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
94 |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
95 (defgroup rmail-output nil |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
96 "Output message to a file." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
97 :prefix "rmail-output-" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
98 :prefix "rmail-" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
99 :group 'rmail) |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
100 |
37587
d9239fc54bce
(rmail-edit): New Custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
37517
diff
changeset
|
101 (defgroup rmail-edit nil |
d9239fc54bce
(rmail-edit): New Custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
37517
diff
changeset
|
102 "Rmail editing." |
d9239fc54bce
(rmail-edit): New Custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
37517
diff
changeset
|
103 :prefix "rmail-edit-" |
d9239fc54bce
(rmail-edit): New Custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
37517
diff
changeset
|
104 :group 'rmail) |
d9239fc54bce
(rmail-edit): New Custom group.
Gerd Moellmann <gerd@gnu.org>
parents:
37517
diff
changeset
|
105 |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
106 (defgroup rmail-obsolete nil |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
107 "Rmail obsolete customization variables." |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
108 :group 'rmail) |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
109 |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
110 (defcustom rmail-movemail-program nil |
60692
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
111 "If non-nil, the file name of the `movemail' program." |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
112 :group 'rmail-retrieve |
23266
ccedad9251db
(rmail-movemail-program): Fix customize type.
Andreas Schwab <schwab@suse.de>
parents:
23185
diff
changeset
|
113 :type '(choice (const nil) string)) |
8234
8eea81545089
(rmail-movemail-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8230
diff
changeset
|
114 |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
115 (defcustom rmail-pop-password nil |
60692
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
116 "*Password to use when reading mail from POP server. |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
117 Please use `rmail-remote-password' instead." |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
118 :type '(choice (string :tag "Password") |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
119 (const :tag "Not Required" nil)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
120 :group 'rmail-obsolete) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
121 |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
122 (defcustom rmail-pop-password-required nil |
64754
fafd692d1e40
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64177
diff
changeset
|
123 "*Non-nil if a password is required when reading mail from a POP server. |
60692
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
124 Please use rmail-remote-password-required instead." |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
125 :type 'boolean |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
126 :group 'rmail-obsolete) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
127 |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
128 (defcustom rmail-remote-password nil |
60692
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
129 "*Password to use when reading mail from a remote server. |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
130 This setting is ignored for mailboxes whose URL already contains a password." |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
131 :type '(choice (string :tag "Password") |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
132 (const :tag "Not Required" nil)) |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
133 :set-after '(rmail-pop-password) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
134 :set #'(lambda (symbol value) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59561
diff
changeset
|
135 (set-default symbol |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
136 (if (and (not value) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
137 (boundp 'rmail-pop-password) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
138 rmail-pop-password) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
139 rmail-pop-password |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
140 value)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
141 (setq rmail-pop-password nil)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
142 :group 'rmail-retrieve |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59561
diff
changeset
|
143 :version "22.1") |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
144 |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
145 (defcustom rmail-remote-password-required nil |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
146 "*Non-nil if a password is required when reading mail from a remote server." |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
147 :type 'boolean |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
148 :set-after '(rmail-pop-password-required) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
149 :set #'(lambda (symbol value) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59561
diff
changeset
|
150 (set-default symbol |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
151 (if (and (not value) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
152 (boundp 'rmail-pop-password-required) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
153 rmail-pop-password-required) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
154 rmail-pop-password-required |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
155 value)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
156 (setq rmail-pop-password-required nil)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
157 :group 'rmail-retrieve |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59561
diff
changeset
|
158 :version "22.1") |
15085
7048437bc690
(rmail-insert-inbox-text): When required, prompt for
Richard M. Stallman <rms@gnu.org>
parents:
14916
diff
changeset
|
159 |
21395
57c8bfa789b6
(rmail-movemail-flags): New customizable variable
Karl Heuer <kwzh@gnu.org>
parents:
21347
diff
changeset
|
160 (defcustom rmail-movemail-flags nil |
21398 | 161 "*List of flags to pass to movemail. |
162 Most commonly used to specify `-g' to enable GSS-API authentication | |
163 or `-k' to enable Kerberos authentication." | |
21512
cd1971673dfd
(rmail-movemail-flags): Fix customize type.
Andreas Schwab <schwab@suse.de>
parents:
21435
diff
changeset
|
164 :type '(repeat string) |
21669
9861518505cb
*** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents:
21640
diff
changeset
|
165 :group 'rmail-retrieve |
9861518505cb
*** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents:
21640
diff
changeset
|
166 :version "20.3") |
21395
57c8bfa789b6
(rmail-movemail-flags): New customizable variable
Karl Heuer <kwzh@gnu.org>
parents:
21347
diff
changeset
|
167 |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
168 (defvar rmail-remote-password-error "invalid usercode or password\\| |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
169 unknown user name or bad password\\|Authentication failed\\|MU_ERR_AUTH_FAILURE" |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
170 "Regular expression matching incorrect-password POP or IMAP server error |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
171 messages. |
18989
6253a99afd95
(rmail-pop-password-error): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18957
diff
changeset
|
172 If you get an incorrect-password error that this expression does not match, |
6253a99afd95
(rmail-pop-password-error): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18957
diff
changeset
|
173 please report it with \\[report-emacs-bug].") |
6253a99afd95
(rmail-pop-password-error): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18957
diff
changeset
|
174 |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
175 (defvar rmail-encoded-remote-password nil) |
22912
0f372fdeee3d
(rmail-encoded-pop-password): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
22840
diff
changeset
|
176 |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
177 (defcustom rmail-preserve-inbox nil |
60692
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
178 "*Non-nil means leave incoming mail in the user's inbox--don't delete it." |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
179 :type 'boolean |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
180 :group 'rmail-retrieve) |
16908
fd99785417a5
(rmail-preserve-inbox): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16772
diff
changeset
|
181 |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
182 (defcustom rmail-movemail-search-path nil |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
183 "*List of directories to search for movemail (in addition to `exec-path')." |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
184 :group 'rmail-retrieve |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
185 :type '(repeat (directory))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
186 |
86440
4aedd218aad1
* mail/mspools.el (rmail-get-new-mail):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86275
diff
changeset
|
187 (declare-function mail-position-on-field "sendmail" (field &optional soft)) |
4aedd218aad1
* mail/mspools.el (rmail-get-new-mail):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86275
diff
changeset
|
188 (declare-function mail-text-start "sendmail" ()) |
4aedd218aad1
* mail/mspools.el (rmail-get-new-mail):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86275
diff
changeset
|
189 (declare-function rmail-update-summary "rmailsum" (&rest ignore)) |
4aedd218aad1
* mail/mspools.el (rmail-get-new-mail):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86275
diff
changeset
|
190 |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
191 (defun rmail-probe (prog) |
60692
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
192 "Determine what flavor of movemail PROG is. |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
193 We do this by executing it with `--version' and analyzing its output." |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
194 (with-temp-buffer |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
195 (let ((tbuf (current-buffer))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
196 (buffer-disable-undo tbuf) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
197 (call-process prog nil tbuf nil "--version") |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
198 (if (not (buffer-modified-p tbuf)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
199 ;; Should not happen... |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
200 nil |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
201 (goto-char (point-min)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
202 (cond |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
203 ((looking-at ".*movemail: invalid option") |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
204 'emacs) ;; Possibly... |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
205 ((looking-at "movemail (GNU Mailutils .*)") |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
206 'mailutils) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
207 (t |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
208 ;; FIXME: |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
209 'emacs)))))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
210 |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
211 (defun rmail-autodetect () |
82480
254d73284bb0
(rmail-autodetect): Doc fix.
Andreas Schwab <schwab@suse.de>
parents:
78477
diff
changeset
|
212 "Determine the file name of the `movemail' program and return its flavor. |
60692
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
213 If `rmail-movemail-program' is non-nil, use it. |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
214 Otherwise, look for `movemail' in the directories in |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
215 `rmail-movemail-search-path', those in `exec-path', and `exec-directory'." |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
216 (if rmail-movemail-program |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
217 (rmail-probe rmail-movemail-program) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
218 (catch 'scan |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
219 (dolist (dir (append rmail-movemail-search-path exec-path |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
220 (list exec-directory))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
221 (when (and dir (file-accessible-directory-p dir)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
222 (let ((progname (expand-file-name "movemail" dir))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
223 (when (and (not (file-directory-p progname)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
224 (file-executable-p progname)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
225 (let ((x (rmail-probe progname))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
226 (when x |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
227 (setq rmail-movemail-program progname) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
228 (throw 'scan x)))))))))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
229 |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
230 (defvar rmail-movemail-variant-in-use nil |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
231 "The movemail variant currently in use. Known variants are: |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
232 |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
233 `emacs' Means any implementation, compatible with the native Emacs one. |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
234 This is the default; |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
235 `mailutils' Means GNU mailutils implementation, capable of handling full |
77993
f87b929ffd17
(rmail-movemail-variant-in-use): Fix doc typo.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
77699
diff
changeset
|
236 mail URLs as the source mailbox.") |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
237 |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
238 ;;;###autoload |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
239 (defun rmail-movemail-variant-p (&rest variants) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
240 "Return t if the current movemail variant is any of VARIANTS. |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
241 Currently known variants are 'emacs and 'mailutils." |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
242 (when (not rmail-movemail-variant-in-use) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
243 ;; Autodetect |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
244 (setq rmail-movemail-variant-in-use (rmail-autodetect))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
245 (not (null (member rmail-movemail-variant-in-use variants)))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
246 |
78605
58298f7fd671
(rmail-movemail-variant-p): Call on load to set movemail related variables.
Glenn Morris <rgm@gnu.org>
parents:
78477
diff
changeset
|
247 ;; Call for effect, to set rmail-movemail-program (if not set by the |
58298f7fd671
(rmail-movemail-variant-p): Call on load to set movemail related variables.
Glenn Morris <rgm@gnu.org>
parents:
78477
diff
changeset
|
248 ;; user), and rmail-movemail-variant-in-use. Used by various functions. |
78606 | 249 ;; I'm not sure if M-x rmail is the only entry point to this package. |
250 ;; If so, this can be moved there. | |
78605
58298f7fd671
(rmail-movemail-variant-p): Call on load to set movemail related variables.
Glenn Morris <rgm@gnu.org>
parents:
78477
diff
changeset
|
251 (rmail-movemail-variant-p) |
58298f7fd671
(rmail-movemail-variant-p): Call on load to set movemail related variables.
Glenn Morris <rgm@gnu.org>
parents:
78477
diff
changeset
|
252 |
270 | 253 ;;;###autoload |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
254 (defcustom rmail-dont-reply-to-names nil "\ |
44025
5766d225ccf3
(rmail-dont-reply-to-names): Modify the documentation to make it email
Paul Reilly <pmr@pajato.com>
parents:
43124
diff
changeset
|
255 *A regexp specifying addresses to prune from a reply message. |
5766d225ccf3
(rmail-dont-reply-to-names): Modify the documentation to make it email
Paul Reilly <pmr@pajato.com>
parents:
43124
diff
changeset
|
256 A value of nil means exclude your own email address as an address |
22840
be572a467b59
(rmail-dont-reply-to-names): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22838
diff
changeset
|
257 plus whatever is specified by `rmail-default-dont-reply-to-names'." |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
258 :type '(choice regexp (const :tag "Your Name" nil)) |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
259 :group 'rmail-reply) |
270 | 260 |
261 ;;;###autoload | |
53967
c0b52e41d35d
(rmail-default-dont-reply-to-names): Make "info-"
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53860
diff
changeset
|
262 (defvar rmail-default-dont-reply-to-names "\\`info-" "\ |
c0b52e41d35d
(rmail-default-dont-reply-to-names): Make "info-"
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53860
diff
changeset
|
263 A regular expression specifying part of the default value of the |
c0b52e41d35d
(rmail-default-dont-reply-to-names): Make "info-"
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53860
diff
changeset
|
264 variable `rmail-dont-reply-to-names', for when the user does not set |
270 | 265 `rmail-dont-reply-to-names' explicitly. (The other part of the default |
44025
5766d225ccf3
(rmail-dont-reply-to-names): Modify the documentation to make it email
Paul Reilly <pmr@pajato.com>
parents:
43124
diff
changeset
|
266 value is the user's email address and name.) |
3931 | 267 It is useful to set this variable in the site customization file.") |
270 | 268 |
269 ;;;###autoload | |
35675
45df875afd43
(rmail-ignored-headers): Add X-Sign, X-BeenThere,
Gerd Moellmann <gerd@gnu.org>
parents:
35548
diff
changeset
|
270 (defcustom rmail-ignored-headers |
61598
b543e1be9df2
(rmail-ignored-headers): Ignore more headers
Richard M. Stallman <rms@gnu.org>
parents:
61223
diff
changeset
|
271 (concat "^via:\\|^mail-from:\\|^origin:\\|^references:\\|^sender:" |
35675
45df875afd43
(rmail-ignored-headers): Add X-Sign, X-BeenThere,
Gerd Moellmann <gerd@gnu.org>
parents:
35548
diff
changeset
|
272 "\\|^status:\\|^received:\\|^x400-originator:\\|^x400-recipients:" |
45df875afd43
(rmail-ignored-headers): Add X-Sign, X-BeenThere,
Gerd Moellmann <gerd@gnu.org>
parents:
35548
diff
changeset
|
273 "\\|^x400-received:\\|^x400-mts-identifier:\\|^x400-content-type:" |
45df875afd43
(rmail-ignored-headers): Add X-Sign, X-BeenThere,
Gerd Moellmann <gerd@gnu.org>
parents:
35548
diff
changeset
|
274 "\\|^\\(resent-\\|\\)message-id:\\|^summary-line:\\|^resent-date:" |
51003
0eff53d54ca1
(rmail-ignored-headers): Ignore Face: header.
John Paul Wallington <jpw@pobox.com>
parents:
50864
diff
changeset
|
275 "\\|^nntp-posting-host:\\|^path:\\|^x-char.*:\\|^x-face:\\|^face:" |
64831
40c02e6cdccd
(rmail-ignored-headers): Don't hide mime-version: and content-type: headers.
Richard M. Stallman <rms@gnu.org>
parents:
64754
diff
changeset
|
276 "\\|^x-mailer:\\|^delivered-to:\\|^lines:" |
35675
45df875afd43
(rmail-ignored-headers): Add X-Sign, X-BeenThere,
Gerd Moellmann <gerd@gnu.org>
parents:
35548
diff
changeset
|
277 "\\|^content-transfer-encoding:\\|^x-coding-system:" |
45df875afd43
(rmail-ignored-headers): Add X-Sign, X-BeenThere,
Gerd Moellmann <gerd@gnu.org>
parents:
35548
diff
changeset
|
278 "\\|^return-path:\\|^errors-to:\\|^return-receipt-to:" |
45df875afd43
(rmail-ignored-headers): Add X-Sign, X-BeenThere,
Gerd Moellmann <gerd@gnu.org>
parents:
35548
diff
changeset
|
279 "\\|^precedence:\\|^list-help:\\|^list-post:\\|^list-subscribe:" |
45df875afd43
(rmail-ignored-headers): Add X-Sign, X-BeenThere,
Gerd Moellmann <gerd@gnu.org>
parents:
35548
diff
changeset
|
280 "\\|^list-id:\\|^list-unsubscribe:\\|^list-archive:" |
64972
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
281 "\\|^content-length:\\|^nntp-posting-date:\\|^user-agent" |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
282 "\\|^importance:\\|^envelope-to:\\|^delivery-date\\|^openpgp:" |
69386
2e9fdd693b3f
(rmail-ignored-headers): Discard DomainKey-Signature.
Richard M. Stallman <rms@gnu.org>
parents:
68648
diff
changeset
|
283 "\\|^mbox-line:\\|^cancel-lock:\\|^DomainKey-Signature:" |
64972
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
284 "\\|^resent-face:\\|^resent-x.*:\\|^resent-organization:\\|^resent-openpgp:" |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
285 |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
286 "\\|^x-.*:") |
24562
9bd33c9d9a4e
(rmail-ignored-headers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
24521
diff
changeset
|
287 "*Regexp to match header fields that Rmail should normally hide. |
64972
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
288 \(See also `rmail-nonignored-headers', which overrides this regexp.) |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
289 This variable is used for reformatting the message header, |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
290 which normally happens once for each message, |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
291 when you view the message for the first time in Rmail. |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
292 To make a change in this variable take effect |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
293 for a message that you have already viewed, |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
294 go to that message and type \\[rmail-toggle-header] twice." |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
295 :type 'regexp |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
296 :group 'rmail-headers) |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
297 |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
298 (defcustom rmail-nonignored-headers "^x-spam-status:" |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
299 "*Regexp to match X header fields that Rmail should show. |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
300 This regexp overrides `rmail-ignored-headers'; if both this regexp |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
301 and that one match a certain header field, Rmail shows the field. |
91734
119a8eeef82f
(rmail-nonignored-headers): Allow to be nil.
Bastien Guerry <bzg@altern.org>
parents:
91373
diff
changeset
|
302 If this is nil, ignore all header fields in `rmail-ignored-headers'. |
64972
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
303 |
24562
9bd33c9d9a4e
(rmail-ignored-headers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
24521
diff
changeset
|
304 This variable is used for reformatting the message header, |
9bd33c9d9a4e
(rmail-ignored-headers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
24521
diff
changeset
|
305 which normally happens once for each message, |
9bd33c9d9a4e
(rmail-ignored-headers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
24521
diff
changeset
|
306 when you view the message for the first time in Rmail. |
9bd33c9d9a4e
(rmail-ignored-headers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
24521
diff
changeset
|
307 To make a change in this variable take effect |
9bd33c9d9a4e
(rmail-ignored-headers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
24521
diff
changeset
|
308 for a message that you have already viewed, |
9bd33c9d9a4e
(rmail-ignored-headers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
24521
diff
changeset
|
309 go to that message and type \\[rmail-toggle-header] twice." |
91734
119a8eeef82f
(rmail-nonignored-headers): Allow to be nil.
Bastien Guerry <bzg@altern.org>
parents:
91373
diff
changeset
|
310 :type '(choice (const nil) (regexp)) |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
311 :group 'rmail-headers) |
270 | 312 |
313 ;;;###autoload | |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
314 (defcustom rmail-displayed-headers nil |
11452
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
315 "*Regexp to match Header fields that Rmail should display. |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
316 If nil, display all header fields except those matched by |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
317 `rmail-ignored-headers'." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
318 :type '(choice regexp (const :tag "All")) |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
319 :group 'rmail-headers) |
11452
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
320 |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
321 ;;;###autoload |
36568
c96255f28875
(rmail-retry-failure): Don't call rmail-beginning-of-message.
Richard M. Stallman <rms@gnu.org>
parents:
35890
diff
changeset
|
322 (defcustom rmail-retry-ignored-headers "^x-authentication-warning:" "\ |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
323 *Headers that should be stripped when retrying a failed message." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
324 :type '(choice regexp (const nil :tag "None")) |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
325 :group 'rmail-headers) |
9010
9d48b6752dbf
(rmail-retry-failure): Copy the whole block of headers from the message
Richard M. Stallman <rms@gnu.org>
parents:
8963
diff
changeset
|
326 |
9d48b6752dbf
(rmail-retry-failure): Copy the whole block of headers from the message
Richard M. Stallman <rms@gnu.org>
parents:
8963
diff
changeset
|
327 ;;;###autoload |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
328 (defcustom rmail-highlighted-headers "^From:\\|^Subject:" "\ |
8383
d2b1b642f4e6
(rmail-highlighted-face): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8378
diff
changeset
|
329 *Regexp to match Header fields that Rmail should normally highlight. |
91817
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
330 A value of nil means don't highlight." |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
331 :type 'regexp |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
332 :group 'rmail-headers) |
7051
1733b6c1e30b
(rmail-show-message): Highlight the specified fields.
Richard M. Stallman <rms@gnu.org>
parents:
7037
diff
changeset
|
333 |
69386
2e9fdd693b3f
(rmail-ignored-headers): Discard DomainKey-Signature.
Richard M. Stallman <rms@gnu.org>
parents:
68648
diff
changeset
|
334 (defface rmail-highlight |
79975
d406577e7480
(rmail-highlight): Fix specification.
Martin Rudalics <rudalics@gmx.at>
parents:
79712
diff
changeset
|
335 '((t (:inherit highlight))) |
69386
2e9fdd693b3f
(rmail-ignored-headers): Discard DomainKey-Signature.
Richard M. Stallman <rms@gnu.org>
parents:
68648
diff
changeset
|
336 "Face to use for highlighting the most important header fields." |
2e9fdd693b3f
(rmail-ignored-headers): Discard DomainKey-Signature.
Richard M. Stallman <rms@gnu.org>
parents:
68648
diff
changeset
|
337 :group 'rmail-headers |
2e9fdd693b3f
(rmail-ignored-headers): Discard DomainKey-Signature.
Richard M. Stallman <rms@gnu.org>
parents:
68648
diff
changeset
|
338 :version "22.1") |
2e9fdd693b3f
(rmail-ignored-headers): Discard DomainKey-Signature.
Richard M. Stallman <rms@gnu.org>
parents:
68648
diff
changeset
|
339 |
91817
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
340 (defface rmail-header-name |
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
341 '((t (:inherit font-lock-function-name-face))) |
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
342 "Face to use for highlighting the header names." |
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
343 :group 'rmail-headers |
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
344 :version "23.1") |
8383
d2b1b642f4e6
(rmail-highlighted-face): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8378
diff
changeset
|
345 |
d2b1b642f4e6
(rmail-highlighted-face): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8378
diff
changeset
|
346 ;;;###autoload |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
347 (defcustom rmail-delete-after-output nil "\ |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
348 *Non-nil means automatically delete a message that is copied to a file." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
349 :type 'boolean |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
350 :group 'rmail-files) |
270 | 351 |
352 ;;;###autoload | |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
353 (defcustom rmail-primary-inbox-list nil "\ |
2423
5dd3b7338f71
(rmail): Don't use mbox as inbox by default.
Richard M. Stallman <rms@gnu.org>
parents:
2076
diff
changeset
|
354 *List of files which are inboxes for user's primary mail file `~/RMAIL'. |
50864
5f3b64308e0c
(rmail-primary-inbox-list): Don't quote nil and t in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents:
49889
diff
changeset
|
355 nil means the default, which is (\"/usr/spool/mail/$USER\") |
2423
5dd3b7338f71
(rmail): Don't use mbox as inbox by default.
Richard M. Stallman <rms@gnu.org>
parents:
2076
diff
changeset
|
356 \(the name varies depending on the operating system, |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
357 and the value of the environment variable MAIL overrides it)." |
17821
c0422adc1b0e
(rmail-retry-failure): Rename local to rmail-this-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
17762
diff
changeset
|
358 ;; Don't use backquote here, because we don't want to need it |
c0422adc1b0e
(rmail-retry-failure): Rename local to rmail-this-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
17762
diff
changeset
|
359 ;; at load time. |
c0422adc1b0e
(rmail-retry-failure): Rename local to rmail-this-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
17762
diff
changeset
|
360 :type (list 'choice '(const :tag "Default" nil) |
23185
945fed18ddb8
(rmail-primary-inbox-list): Make the initial
Karl Heuer <kwzh@gnu.org>
parents:
22912
diff
changeset
|
361 (list 'repeat ':value (list (or (getenv "MAIL") |
945fed18ddb8
(rmail-primary-inbox-list): Make the initial
Karl Heuer <kwzh@gnu.org>
parents:
22912
diff
changeset
|
362 (concat "/var/spool/mail/" |
945fed18ddb8
(rmail-primary-inbox-list): Make the initial
Karl Heuer <kwzh@gnu.org>
parents:
22912
diff
changeset
|
363 (getenv "USER")))) |
17821
c0422adc1b0e
(rmail-retry-failure): Rename local to rmail-this-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
17762
diff
changeset
|
364 'file)) |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
365 :group 'rmail-retrieve |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
366 :group 'rmail-files) |
270 | 367 |
4108
e4fbcd480455
(rmail-mail-new-frame): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
4071
diff
changeset
|
368 ;;;###autoload |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
369 (defcustom rmail-mail-new-frame nil |
55114
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
370 "*Non-nil means Rmail makes a new frame for composing outgoing mail. |
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
371 This is handy if you want to preserve the window configuration of |
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
372 the frame where you have the RMAIL buffer displayed." |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
373 :type 'boolean |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
374 :group 'rmail-reply) |
4108
e4fbcd480455
(rmail-mail-new-frame): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
4071
diff
changeset
|
375 |
4844
25d94807689e
(rmail-retry-setup-hook): New hook variable.
Richard M. Stallman <rms@gnu.org>
parents:
4838
diff
changeset
|
376 ;;;###autoload |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
377 (defcustom rmail-secondary-file-directory "~/" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
378 "*Directory for additional secondary Rmail files." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
379 :type 'directory |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
380 :group 'rmail-files) |
6408
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
381 ;;;###autoload |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
382 (defcustom rmail-secondary-file-regexp "\\.xmail$" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
383 "*Regexp for which files are secondary Rmail files." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
384 :type 'regexp |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
385 :group 'rmail-files) |
6408
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
386 |
13477
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
387 ;;;###autoload |
33792
3349ff34a331
(rmail-confirm-expunge): Default to
Gerd Moellmann <gerd@gnu.org>
parents:
30544
diff
changeset
|
388 (defcustom rmail-confirm-expunge 'y-or-n-p |
28290
4aafdd90bf08
(rmail-confirm-expunge): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
27944
diff
changeset
|
389 "*Whether and how to ask for confirmation before expunging deleted messages." |
4aafdd90bf08
(rmail-confirm-expunge): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
27944
diff
changeset
|
390 :type '(choice (const :tag "No confirmation" nil) |
4aafdd90bf08
(rmail-confirm-expunge): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
27944
diff
changeset
|
391 (const :tag "Confirm with y-or-n-p" y-or-n-p) |
4aafdd90bf08
(rmail-confirm-expunge): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
27944
diff
changeset
|
392 (const :tag "Confirm with yes-or-no-p" yes-or-no-p)) |
4aafdd90bf08
(rmail-confirm-expunge): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
27944
diff
changeset
|
393 :version "21.1" |
4aafdd90bf08
(rmail-confirm-expunge): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
27944
diff
changeset
|
394 :group 'rmail-files) |
4aafdd90bf08
(rmail-confirm-expunge): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
27944
diff
changeset
|
395 |
4aafdd90bf08
(rmail-confirm-expunge): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
27944
diff
changeset
|
396 ;;;###autoload |
13477
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
397 (defvar rmail-mode-hook nil |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
398 "List of functions to call when Rmail is invoked.") |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
399 |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
400 ;;;###autoload |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
401 (defvar rmail-get-new-mail-hook nil |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
402 "List of functions to call when Rmail has retrieved new mail.") |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
403 |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
404 ;;;###autoload |
28910
65b986dbb7ba
rmail-show-message-hook): Customize and offer
Dave Love <fx@gnu.org>
parents:
28714
diff
changeset
|
405 (defcustom rmail-show-message-hook nil |
65b986dbb7ba
rmail-show-message-hook): Customize and offer
Dave Love <fx@gnu.org>
parents:
28714
diff
changeset
|
406 "List of functions to call when Rmail displays a message." |
65b986dbb7ba
rmail-show-message-hook): Customize and offer
Dave Love <fx@gnu.org>
parents:
28714
diff
changeset
|
407 :type 'hook |
45360
68f66e6dd200
(rmail-show-message-hook): Offer `goto-address' as an option.
Richard M. Stallman <rms@gnu.org>
parents:
45218
diff
changeset
|
408 :options '(goto-address) |
28910
65b986dbb7ba
rmail-show-message-hook): Customize and offer
Dave Love <fx@gnu.org>
parents:
28714
diff
changeset
|
409 :group 'rmail) |
13477
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
410 |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
411 ;;;###autoload |
27944
b75299f3bc4c
(rmail-quit-hook): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
27871
diff
changeset
|
412 (defvar rmail-quit-hook nil |
b75299f3bc4c
(rmail-quit-hook): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
27871
diff
changeset
|
413 "List of functions to call when quitting out of Rmail.") |
b75299f3bc4c
(rmail-quit-hook): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
27871
diff
changeset
|
414 |
b75299f3bc4c
(rmail-quit-hook): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
27871
diff
changeset
|
415 ;;;###autoload |
13477
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
416 (defvar rmail-delete-message-hook nil |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
417 "List of functions to call when Rmail deletes a message. |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
418 When the hooks are called, the message has been marked deleted but is |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
419 still the current message in the Rmail buffer.") |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
420 |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
421 ;; These may be altered by site-init.el to match the format of mmdf files |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
422 ;; delimiting used on a given host (delim1 and delim2 from the config |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
423 ;; files). |
270 | 424 |
18091
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
425 (defvar rmail-mmdf-delim1 "^\001\001\001\001\n" |
49082
336bfea9bad4
(rmail-mmdf-delim1, rmail-mmdf-delim2): Doc fixes.
John Paul Wallington <jpw@pobox.com>
parents:
49064
diff
changeset
|
426 "Regexp marking the start of an mmdf message.") |
18091
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
427 (defvar rmail-mmdf-delim2 "^\001\001\001\001\n" |
49082
336bfea9bad4
(rmail-mmdf-delim1, rmail-mmdf-delim2): Doc fixes.
John Paul Wallington <jpw@pobox.com>
parents:
49064
diff
changeset
|
428 "Regexp marking the end of an mmdf message.") |
270 | 429 |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
430 (defcustom rmail-message-filter nil |
15832
0b6735ce85ac
(rmail-reply-regexp, rmail-message-filter): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15820
diff
changeset
|
431 "If non-nil, a filter function for new messages in RMAIL. |
0b6735ce85ac
(rmail-reply-regexp, rmail-message-filter): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15820
diff
changeset
|
432 Called with region narrowed to the message, including headers, |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
433 before obeying `rmail-ignored-headers'." |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
434 :group 'rmail-headers |
76121
c248fb92df9b
(rmail-message-filter): Fix custom type.
John Paul Wallington <jpw@pobox.com>
parents:
75347
diff
changeset
|
435 :type '(choice (const nil) function)) |
270 | 436 |
29160
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
437 (defcustom rmail-automatic-folder-directives nil |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
438 "List of directives specifying where to put a message. |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
439 Each element of the list is of the form: |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
440 |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
441 (FOLDERNAME FIELD REGEXP [ FIELD REGEXP ] ... ) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
442 |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
443 Where FOLDERNAME is the name of a BABYL format folder to put the |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
444 message. If any of the field regexp's are nil, then it is ignored. |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
445 |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
446 If FOLDERNAME is \"/dev/null\", it is deleted. |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
447 If FOLDERNAME is nil then it is deleted, and skipped. |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
448 |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
449 FIELD is the plain text name of a field in the message, such as |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
450 \"subject\" or \"from\". A FIELD of \"to\" will automatically include |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
451 all text from the \"cc\" field as well. |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
452 |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
453 REGEXP is an expression to match in the preceeding specified FIELD. |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
454 FIELD/REGEXP pairs continue in the list. |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
455 |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
456 examples: |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
457 (\"/dev/null\" \"from\" \"@spam.com\") ; delete all mail from spam.com |
33918
5ddbb3756471
(rmail-automatic-folder-directives): Add a custom
Gerd Moellmann <gerd@gnu.org>
parents:
33792
diff
changeset
|
458 (\"RMS\" \"from\" \"rms@\") ; save all mail from RMS." |
5ddbb3756471
(rmail-automatic-folder-directives): Add a custom
Gerd Moellmann <gerd@gnu.org>
parents:
33792
diff
changeset
|
459 :group 'rmail |
5ddbb3756471
(rmail-automatic-folder-directives): Add a custom
Gerd Moellmann <gerd@gnu.org>
parents:
33792
diff
changeset
|
460 :version "21.1" |
5ddbb3756471
(rmail-automatic-folder-directives): Add a custom
Gerd Moellmann <gerd@gnu.org>
parents:
33792
diff
changeset
|
461 :type '(repeat (sexp :tag "Directive"))) |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
462 |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
463 (defvar rmail-reply-prefix "Re: " |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
464 "String to prepend to Subject line when replying to a message.") |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
465 |
17065
01cba1834368
(rmail-next-same-subject, rmail-reply): Ignore case, to
Karl Heuer <kwzh@gnu.org>
parents:
17011
diff
changeset
|
466 ;; Some mailers use "Re(2):" or "Re^2:" or "Re: Re:" or "Re[2]:". |
69568
303818bc3ae8
(rmail-reply-regexp): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
69386
diff
changeset
|
467 ;; This pattern should catch all the common variants. |
303818bc3ae8
(rmail-reply-regexp): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
69386
diff
changeset
|
468 ;; rms: I deleted the change to delete tags in square brackets |
303818bc3ae8
(rmail-reply-regexp): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
69386
diff
changeset
|
469 ;; because they mess up RT tags. |
303818bc3ae8
(rmail-reply-regexp): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
69386
diff
changeset
|
470 (defvar rmail-reply-regexp "\\`\\(Re\\(([0-9]+)\\|\\[[0-9]+\\]\\|\\^[0-9]+\\)?: *\\)*" |
15832
0b6735ce85ac
(rmail-reply-regexp, rmail-message-filter): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15820
diff
changeset
|
471 "Regexp to delete from Subject line before inserting `rmail-reply-prefix'.") |
10640 | 472 |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
473 (defcustom rmail-display-summary nil |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
474 "*If non-nil, Rmail always displays the summary buffer." |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
475 :group 'rmail-summary |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
476 :type 'boolean) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
477 |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
478 (defvar rmail-inbox-list nil) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
479 (put 'rmail-inbox-list 'permanent-local t) |
8384
4c88569aaa73
(rmail-display-summary): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8383
diff
changeset
|
480 |
270 | 481 (defvar rmail-keywords nil) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
482 (put 'rmail-keywords 'permanent-local t) |
270 | 483 |
19509
ea4261efd9f9
(rmail-view-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
19315
diff
changeset
|
484 (defvar rmail-buffer nil |
ea4261efd9f9
(rmail-view-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
19315
diff
changeset
|
485 "The RMAIL buffer related to the current buffer. |
ea4261efd9f9
(rmail-view-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
19315
diff
changeset
|
486 In an RMAIL buffer, this holds the RMAIL buffer itself. |
ea4261efd9f9
(rmail-view-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
19315
diff
changeset
|
487 In a summary buffer, this holds the RMAIL buffer it is a summary for.") |
ea4261efd9f9
(rmail-view-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
19315
diff
changeset
|
488 (put 'rmail-buffer 'permanent-local t) |
ea4261efd9f9
(rmail-view-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
19315
diff
changeset
|
489 |
270 | 490 ;; Message counters and markers. Deleted flags. |
491 | |
492 (defvar rmail-current-message nil) | |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
493 (put 'rmail-current-message 'permanent-local t) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
494 |
270 | 495 (defvar rmail-total-messages nil) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
496 (put 'rmail-total-messages 'permanent-local t) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
497 |
270 | 498 (defvar rmail-message-vector nil) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
499 (put 'rmail-message-vector 'permanent-local t) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
500 |
270 | 501 (defvar rmail-deleted-vector nil) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
502 (put 'rmail-deleted-vector 'permanent-local t) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
503 |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
504 (defvar rmail-msgref-vector nil |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
505 "In an Rmail buffer, a vector whose Nth element is a list (N). |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
506 When expunging renumbers messages, these lists are modified |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
507 by substituting the new message number into the existing list.") |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
508 (put 'rmail-msgref-vector 'permanent-local t) |
270 | 509 |
7061
9f27a57b7662
(rmail-show-message): Use overlays, not text properties.
Richard M. Stallman <rms@gnu.org>
parents:
7051
diff
changeset
|
510 (defvar rmail-overlay-list nil) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
511 (put 'rmail-overlay-list 'permanent-local t) |
9380
5eb799a4819b
(rmail-font-lock-keywords): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9153
diff
changeset
|
512 |
270 | 513 ;; These are used by autoloaded rmail-summary. |
514 | |
515 (defvar rmail-summary-buffer nil) | |
19509
ea4261efd9f9
(rmail-view-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
19315
diff
changeset
|
516 (put 'rmail-summary-buffer 'permanent-local t) |
270 | 517 (defvar rmail-summary-vector nil) |
19509
ea4261efd9f9
(rmail-view-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
19315
diff
changeset
|
518 (put 'rmail-summary-vector 'permanent-local t) |
270 | 519 |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
520 (defvar rmail-view-buffer nil |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
521 "Buffer which holds RMAIL message for MIME displaying.") |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
522 (put 'rmail-view-buffer 'permanent-local t) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
523 |
270 | 524 ;; `Sticky' default variables. |
525 | |
526 ;; Last individual label specified to a or k. | |
527 (defvar rmail-last-label nil) | |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
528 (put 'rmail-last-label 'permanent-local t) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
529 |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
530 ;; Last set of values specified to C-M-n, C-M-p, C-M-s or C-M-l. |
270 | 531 (defvar rmail-last-multi-labels nil) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
532 |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
533 (defvar rmail-last-regexp nil) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
534 (put 'rmail-last-regexp 'permanent-local t) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
535 |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
536 (defcustom rmail-default-file "~/xmail" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
537 "*Default file name for \\[rmail-output]." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
538 :type 'file |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
539 :group 'rmail-files) |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
540 (defcustom rmail-default-rmail-file "~/XMAIL" |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
541 "*Default file name for \\[rmail-output-to-rmail-file]." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
542 :type 'file |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
543 :group 'rmail-files) |
22201
40b715281ea5
(rmail-default-body-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
22158
diff
changeset
|
544 (defcustom rmail-default-body-file "~/mailout" |
40b715281ea5
(rmail-default-body-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
22158
diff
changeset
|
545 "*Default file name for \\[rmail-output-body-to-file]." |
40b715281ea5
(rmail-default-body-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
22158
diff
changeset
|
546 :type 'file |
40b715281ea5
(rmail-default-body-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
22158
diff
changeset
|
547 :group 'rmail-files |
40b715281ea5
(rmail-default-body-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
22158
diff
changeset
|
548 :version "20.3") |
617 | 549 |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
550 ;; Mule and MIME related variables. |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
551 |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
552 ;;;###autoload |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
553 (defvar rmail-file-coding-system nil |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
554 "Coding system used in RMAIL file. |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
555 |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
556 This is set to nil by default.") |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
557 |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
558 ;;;###autoload |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
559 (defcustom rmail-enable-mime nil |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
560 "*If non-nil, RMAIL uses MIME feature. |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
561 If the value is t, RMAIL automatically shows MIME decoded message. |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
562 If the value is neither t nor nil, RMAIL does not show MIME decoded message |
68255
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
563 until a user explicitly requires it. |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
564 |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
565 Even if the value is non-nil, you can't use MIME feature |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
566 if the feature specified by `rmail-mime-feature' is not available |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
567 in your session." |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
568 :type '(choice (const :tag "on" t) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
569 (const :tag "off" nil) |
22591
ab11b5ffa8de
(rmail-enable-mime): Use `other' widget type.
Andreas Schwab <schwab@suse.de>
parents:
22498
diff
changeset
|
570 (other :tag "when asked" ask)) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
571 :group 'rmail) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
572 |
41511
19496cafe865
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39298
diff
changeset
|
573 (defvar rmail-enable-mime-composing nil |
19496cafe865
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39298
diff
changeset
|
574 "*If non-nil, RMAIL uses `rmail-insert-mime-forwarded-message-function' to forward.") |
19496cafe865
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39298
diff
changeset
|
575 |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
576 ;;;###autoload |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
577 (defvar rmail-show-mime-function nil |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
578 "Function to show MIME decoded message of RMAIL file. |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
579 This function is called when `rmail-enable-mime' is non-nil. |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
580 It is called with no argument.") |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
581 |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
582 ;;;###autoload |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
583 (defvar rmail-insert-mime-forwarded-message-function nil |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
584 "Function to insert a message in MIME format so it can be forwarded. |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
585 This function is called if `rmail-enable-mime' or |
41511
19496cafe865
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39298
diff
changeset
|
586 `rmail-enable-mime-composing' is non-nil. |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
587 It is called with one argument FORWARD-BUFFER, which is a |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
588 buffer containing the message to forward. The current buffer |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
589 is the outgoing mail buffer.") |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
590 |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
591 ;;;###autoload |
37956
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
592 (defvar rmail-insert-mime-resent-message-function nil |
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
593 "Function to insert a message in MIME format so it can be resent. |
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
594 This function is called if `rmail-enable-mime' is non-nil. |
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
595 It is called with one argument FORWARD-BUFFER, which is a |
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
596 buffer containing the message to forward. The current buffer |
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
597 is the outgoing mail buffer.") |
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
598 |
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
599 ;;;###autoload |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
600 (defvar rmail-search-mime-message-function nil |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
601 "Function to check if a regexp matches a MIME message. |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
602 This function is called if `rmail-enable-mime' is non-nil. |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
603 It is called with two arguments MSG and REGEXP, where |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
604 MSG is the message number, REGEXP is the regular expression.") |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
605 |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
606 ;;;###autoload |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
607 (defvar rmail-search-mime-header-function nil |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
608 "Function to check if a regexp matches a header of MIME message. |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
609 This function is called if `rmail-enable-mime' is non-nil. |
46924
2d6894cca50a
(rmail-search-mime-header-function): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
46129
diff
changeset
|
610 It is called with three arguments MSG, REGEXP, and LIMIT, where |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
611 MSG is the message number, |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
612 REGEXP is the regular expression, |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
613 LIMIT is the position specifying the end of header.") |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
614 |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
615 ;;;###autoload |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
616 (defvar rmail-mime-feature 'rmail-mime |
22133
543e41494c45
(rmail-mime-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22108
diff
changeset
|
617 "Feature to require to load MIME support in Rmail. |
543e41494c45
(rmail-mime-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22108
diff
changeset
|
618 When starting Rmail, if `rmail-enable-mime' is non-nil, |
68255
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
619 this feature is required with `require'. |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
620 |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
621 The default value is `rmail-mime'. This feature is provided by |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
622 the rmail-mime package available at <http://www.m17n.org/rmail-mime/>.") |
24209
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
623 |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
624 ;;;###autoload |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
625 (defvar rmail-decode-mime-charset t |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
626 "*Non-nil means a message is decoded by MIME's charset specification. |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
627 If this variable is nil, or the message has not MIME specification, |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
628 the message is decoded as normal way. |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
629 |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
630 If the variable `rmail-enable-mime' is non-nil, this variables is |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
631 ignored, and all the decoding work is done by a feature specified by |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
632 the variable `rmail-mime-feature'.") |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
633 |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
634 ;;;###autoload |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
635 (defvar rmail-mime-charset-pattern |
73281
f3db6404bec1
(rmail-mime-charset-pattern): Allow a TAB between "Content-Type" and
Eli Zaretskii <eliz@gnu.org>
parents:
73279
diff
changeset
|
636 (concat "^content-type:[ \t]*text/plain;" |
70771
4ec3b5b35f6d
(rmail-mime-charset-pattern): Add "?:" before "format".
Eli Zaretskii <eliz@gnu.org>
parents:
70113
diff
changeset
|
637 "\\(?:[ \t\n]*\\(?:format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*" |
69907
e711374bee77
(rmail-mime-charset-pattern): Ignore format and delsp specs
Richard M. Stallman <rms@gnu.org>
parents:
69676
diff
changeset
|
638 "[ \t\n]*charset=\"?\\([^ \t\n\";]+\\)\"?") |
24209
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
639 "Regexp to match MIME-charset specification in a header of message. |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
640 The first parenthesized expression should match the MIME-charset name.") |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
641 |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
642 |
621 | 643 ;;; Regexp matching the delimiter of messages in UNIX mail format |
644 ;;; (UNIX From lines), minus the initial ^. Note that if you change | |
645 ;;; this expression, you must change the code in rmail-nuke-pinhead-header | |
646 ;;; that knows the exact ordering of the \\( \\) subexpressions. | |
617 | 647 (defvar rmail-unix-mail-delimiter |
1112 | 648 (let ((time-zone-regexp |
12727
7bf59a3ff303
(rmail-unix-mail-delimiter): Allow two-letter timezone name.
Richard M. Stallman <rms@gnu.org>
parents:
12650
diff
changeset
|
649 (concat "\\([A-Z]?[A-Z]?[A-Z][A-Z]\\( DST\\)?" |
1112 | 650 "\\|[-+]?[0-9][0-9][0-9][0-9]" |
651 "\\|" | |
652 "\\) *"))) | |
653 (concat | |
654 "From " | |
655 | |
15534
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
656 ;; Many things can happen to an RFC 822 mailbox before it is put into |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
657 ;; a `From' line. The leading phrase can be stripped, e.g. |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
658 ;; `Joe <@w.x:joe@y.z>' -> `<@w.x:joe@y.z>'. The <> can be stripped, e.g. |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
659 ;; `<@x.y:joe@y.z>' -> `@x.y:joe@y.z'. Everything starting with a CRLF |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
660 ;; can be removed, e.g. |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
661 ;; From: joe@y.z (Joe K |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
662 ;; User) |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
663 ;; can yield `From joe@y.z (Joe K Fri Mar 22 08:11:15 1996', and |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
664 ;; From: Joe User |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
665 ;; <joe@y.z> |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
666 ;; can yield `From Joe User Fri Mar 22 08:11:15 1996'. |
15820
12c537361366
(rmail-unix-mail-delimiter): Allow space or tab as
Paul Eggert <eggert@twinsun.com>
parents:
15746
diff
changeset
|
667 ;; The mailbox can be removed or be replaced by white space, e.g. |
12c537361366
(rmail-unix-mail-delimiter): Allow space or tab as
Paul Eggert <eggert@twinsun.com>
parents:
15746
diff
changeset
|
668 ;; From: "Joe User"{space}{tab} |
12c537361366
(rmail-unix-mail-delimiter): Allow space or tab as
Paul Eggert <eggert@twinsun.com>
parents:
15746
diff
changeset
|
669 ;; <joe@y.z> |
12c537361366
(rmail-unix-mail-delimiter): Allow space or tab as
Paul Eggert <eggert@twinsun.com>
parents:
15746
diff
changeset
|
670 ;; can yield `From {space}{tab} Fri Mar 22 08:11:15 1996', |
12c537361366
(rmail-unix-mail-delimiter): Allow space or tab as
Paul Eggert <eggert@twinsun.com>
parents:
15746
diff
changeset
|
671 ;; where {space} and {tab} represent the Ascii space and tab characters. |
15534
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
672 ;; We want to match the results of any of these manglings. |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
673 ;; The following regexp rejects names whose first characters are |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
674 ;; obviously bogus, but after that anything goes. |
15820
12c537361366
(rmail-unix-mail-delimiter): Allow space or tab as
Paul Eggert <eggert@twinsun.com>
parents:
15746
diff
changeset
|
675 "\\([^\0-\b\n-\r\^?].*\\)? " |
1112 | 676 |
677 ;; The time the message was sent. | |
15534
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
678 "\\([^\0-\r \^?]+\\) +" ; day of the week |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
679 "\\([^\0-\r \^?]+\\) +" ; month |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
680 "\\([0-3]?[0-9]\\) +" ; day of month |
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
681 "\\([0-2][0-9]:[0-5][0-9]\\(:[0-6][0-9]\\)?\\) *" ; time of day |
1112 | 682 |
683 ;; Perhaps a time zone, specified by an abbreviation, or by a | |
684 ;; numeric offset. | |
685 time-zone-regexp | |
686 | |
687 ;; The year. | |
15534
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
688 " \\([0-9][0-9]+\\) *" |
1112 | 689 |
690 ;; On some systems the time zone can appear after the year, too. | |
691 time-zone-regexp | |
692 | |
7037 | 693 ;; Old uucp cruft. |
694 "\\(remote from .*\\)?" | |
1112 | 695 |
696 "\n")) | |
697 nil) | |
698 | |
91796
132b386a2c8b
Reverted wrong changes to rmail.el.
Bastien Guerry <bzg@altern.org>
parents:
91795
diff
changeset
|
699 (defvar rmail-font-lock-keywords |
49064
d9fb715ab692
(rmail-font-lock-keywords): Discard code to match both cases.
Richard M. Stallman <rms@gnu.org>
parents:
49008
diff
changeset
|
700 ;; These are all matched case-insensitively. |
91796
132b386a2c8b
Reverted wrong changes to rmail.el.
Bastien Guerry <bzg@altern.org>
parents:
91795
diff
changeset
|
701 (eval-when-compile |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
702 (let* ((cite-chars "[>|}]") |
49064
d9fb715ab692
(rmail-font-lock-keywords): Discard code to match both cases.
Richard M. Stallman <rms@gnu.org>
parents:
49008
diff
changeset
|
703 (cite-prefix "a-z") |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
704 (cite-suffix (concat cite-prefix "0-9_.@-`'\""))) |
49064
d9fb715ab692
(rmail-font-lock-keywords): Discard code to match both cases.
Richard M. Stallman <rms@gnu.org>
parents:
49008
diff
changeset
|
705 (list '("^\\(From\\|Sender\\|Resent-From\\):" |
91817
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
706 . 'rmail-header-name) |
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
707 '("^Reply-To:.*$" . 'rmail-header-name) |
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
708 '("^Subject:" . 'rmail-header-name) |
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
709 '("^X-Spam-Status:" . 'rmail-header-name) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
710 '("^\\(To\\|Apparently-To\\|Cc\\|Newsgroups\\):" |
91817
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
711 . 'rmail-header-name) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
712 ;; Use MATCH-ANCHORED to effectively anchor the regexp left side. |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
713 `(,cite-chars |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
714 (,(concat "\\=[ \t]*" |
61814
edcdb077c4c1
(rmail-font-lock-keywords): Match any number of
Richard M. Stallman <rms@gnu.org>
parents:
61762
diff
changeset
|
715 "\\(\\(\\([" cite-prefix "]+[" cite-suffix "]*\\)?" |
edcdb077c4c1
(rmail-font-lock-keywords): Match any number of
Richard M. Stallman <rms@gnu.org>
parents:
61762
diff
changeset
|
716 "\\(" cite-chars "[ \t]*\\)\\)+\\)" |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
717 "\\(.*\\)") |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
718 (beginning-of-line) (end-of-line) |
61814
edcdb077c4c1
(rmail-font-lock-keywords): Match any number of
Richard M. Stallman <rms@gnu.org>
parents:
61762
diff
changeset
|
719 (1 font-lock-comment-delimiter-face nil t) |
edcdb077c4c1
(rmail-font-lock-keywords): Match any number of
Richard M. Stallman <rms@gnu.org>
parents:
61762
diff
changeset
|
720 (5 font-lock-comment-face nil t))) |
49064
d9fb715ab692
(rmail-font-lock-keywords): Discard code to match both cases.
Richard M. Stallman <rms@gnu.org>
parents:
49008
diff
changeset
|
721 '("^\\(X-[a-z0-9-]+\\|In-reply-to\\|Date\\):.*\\(\n[ \t]+.*\\)*$" |
91817
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
722 . 'rmail-header-name)))) |
91796
132b386a2c8b
Reverted wrong changes to rmail.el.
Bastien Guerry <bzg@altern.org>
parents:
91795
diff
changeset
|
723 "Additional expressions to highlight in Rmail mode.") |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
724 |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
725 ;; Perform BODY in the summary buffer |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
726 ;; in such a way that its cursor is properly updated in its own window. |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
727 (defmacro rmail-select-summary (&rest body) |
26455 | 728 `(let ((total rmail-total-messages)) |
729 (if (rmail-summary-displayed) | |
730 (let ((window (selected-window))) | |
731 (save-excursion | |
732 (unwind-protect | |
733 (progn | |
734 (pop-to-buffer rmail-summary-buffer) | |
735 ;; rmail-total-messages is a buffer-local var | |
736 ;; in the rmail buffer. | |
737 ;; This way we make it available for the body | |
738 ;; even tho the rmail buffer is not current. | |
739 (let ((rmail-total-messages total)) | |
740 ,@body)) | |
741 (select-window window)))) | |
742 (save-excursion | |
743 (set-buffer rmail-summary-buffer) | |
744 (let ((rmail-total-messages total)) | |
745 ,@body))) | |
746 (rmail-maybe-display-summary))) | |
270 | 747 |
748 ;;;; *** Rmail Mode *** | |
749 | |
37787
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
750 ;; This variable is dynamically bound. The defvar is here to placate |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
751 ;; the byte compiler. |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
752 |
20943
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
753 (defvar rmail-enable-multibyte nil) |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
754 |
37787
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
755 |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
756 (defun rmail-require-mime-maybe () |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
757 "Require `rmail-mime-feature' if that is non-nil. |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
758 Signal an error and set `rmail-mime-feature' to nil if the feature |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
759 isn't provided." |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
760 (when rmail-enable-mime |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
761 (condition-case err |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
762 (require rmail-mime-feature) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
763 (error |
68255
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
764 (display-warning |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
765 :warning |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
766 (format "Although MIME support is requested |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
767 by setting `rmail-enable-mime' to non-nil, the required feature |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
768 `%s' (the value of `rmail-mime-feature') |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
769 is not available in the current session. |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
770 So, the MIME support is turned off for the moment." |
1c0fec1100de
(rmail-enable-mime): Docstring fixed.
Kenichi Handa <handa@m17n.org>
parents:
68094
diff
changeset
|
771 rmail-mime-feature)) |
37787
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
772 (setq rmail-enable-mime nil))))) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
773 |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
774 |
270 | 775 ;;;###autoload |
776 (defun rmail (&optional file-name-arg) | |
777 "Read and edit incoming mail. | |
4838
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
778 Moves messages into file named by `rmail-file-name' (a babyl format file) |
270 | 779 and edits that file in RMAIL Mode. |
780 Type \\[describe-mode] once editing that file, for a list of RMAIL commands. | |
781 | |
5274
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
782 May be called with file name as argument; then performs rmail editing on |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
783 that file, but does not copy any new mail into the file. |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
784 Interactively, if you supply a prefix argument, then you |
8384
4c88569aaa73
(rmail-display-summary): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8383
diff
changeset
|
785 have a chance to specify a file name with the minibuffer. |
4c88569aaa73
(rmail-display-summary): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8383
diff
changeset
|
786 |
4c88569aaa73
(rmail-display-summary): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8383
diff
changeset
|
787 If `rmail-display-summary' is non-nil, make a summary for this RMAIL file." |
270 | 788 (interactive (if current-prefix-arg |
13818
0d1de22afac0
(rmail): Allow nonexistent file as arg.
Richard M. Stallman <rms@gnu.org>
parents:
13808
diff
changeset
|
789 (list (read-file-name "Run rmail on RMAIL file: ")))) |
37787
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
790 (rmail-require-mime-maybe) |
270 | 791 (let* ((file-name (expand-file-name (or file-name-arg rmail-file-name))) |
43087
0a5935fb4e9e
(rmail): Use find-buffer-visiting instead of
Eli Zaretskii <eliz@gnu.org>
parents:
43066
diff
changeset
|
792 ;; Use find-buffer-visiting, not get-file-buffer, for those users |
0a5935fb4e9e
(rmail): Use find-buffer-visiting instead of
Eli Zaretskii <eliz@gnu.org>
parents:
43066
diff
changeset
|
793 ;; who have find-file-visit-truename set to t. |
0a5935fb4e9e
(rmail): Use find-buffer-visiting instead of
Eli Zaretskii <eliz@gnu.org>
parents:
43066
diff
changeset
|
794 (existed (find-buffer-visiting file-name)) |
39298
2b67bb3275f8
(top-level): Require mule-utils when compiling.
Eli Zaretskii <eliz@gnu.org>
parents:
38412
diff
changeset
|
795 ;; This binding is necessary because we must decide if we |
20947
a66eb4a41765
(rmail-decode-babyl-format): Message modified.
Kenichi Handa <handa@m17n.org>
parents:
20943
diff
changeset
|
796 ;; need code conversion while the buffer is unibyte |
a66eb4a41765
(rmail-decode-babyl-format): Message modified.
Kenichi Handa <handa@m17n.org>
parents:
20943
diff
changeset
|
797 ;; (i.e. enable-multibyte-characters is nil). |
22724
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
798 (rmail-enable-multibyte |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
799 (if existed |
22724
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
800 (with-current-buffer existed enable-multibyte-characters) |
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
801 (default-value 'enable-multibyte-characters))) |
20943
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
802 ;; Since the file may contain messages of different encodings |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
803 ;; at the tail (non-BYBYL part), we can't decode them at once |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
804 ;; on reading. So, at first, we read the file without text |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
805 ;; code conversion, then decode the messages one by one by |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
806 ;; rmail-decode-babyl-format or |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
807 ;; rmail-convert-to-babyl-format. |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
808 (coding-system-for-read (and rmail-enable-multibyte 'raw-text)) |
20053
c315820510ba
(rmail): Avoid showing message twice.
Karl Heuer <kwzh@gnu.org>
parents:
19674
diff
changeset
|
809 run-mail-hook msg-shown) |
270 | 810 ;; Like find-file, but in the case where a buffer existed |
811 ;; and the file was reverted, recompute the message-data. | |
21705
71eacf46567c
(rmail): Don't bind enable-local-variables.
Richard M. Stallman <rms@gnu.org>
parents:
21669
diff
changeset
|
812 ;; We used to bind enable-local-variables to nil here, |
71eacf46567c
(rmail): Don't bind enable-local-variables.
Richard M. Stallman <rms@gnu.org>
parents:
21669
diff
changeset
|
813 ;; but that should not be needed now that rmail-mode |
71eacf46567c
(rmail): Don't bind enable-local-variables.
Richard M. Stallman <rms@gnu.org>
parents:
21669
diff
changeset
|
814 ;; sets it locally to nil. |
71eacf46567c
(rmail): Don't bind enable-local-variables.
Richard M. Stallman <rms@gnu.org>
parents:
21669
diff
changeset
|
815 ;; (Binding a variable locally with let is not safe if it has |
71eacf46567c
(rmail): Don't bind enable-local-variables.
Richard M. Stallman <rms@gnu.org>
parents:
21669
diff
changeset
|
816 ;; buffer-local bindings.) |
270 | 817 (if (and existed (not (verify-visited-file-modtime existed))) |
818 (progn | |
21705
71eacf46567c
(rmail): Don't bind enable-local-variables.
Richard M. Stallman <rms@gnu.org>
parents:
21669
diff
changeset
|
819 (find-file file-name) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
820 (if (and (verify-visited-file-modtime existed) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
821 (eq major-mode 'rmail-mode)) |
270 | 822 (progn (rmail-forget-messages) |
823 (rmail-set-message-counters)))) | |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
824 (switch-to-buffer |
22474
927f6e2f680b
(rmail-variables): Locally bind
Richard M. Stallman <rms@gnu.org>
parents:
22435
diff
changeset
|
825 (let ((enable-local-variables nil)) |
927f6e2f680b
(rmail-variables): Locally bind
Richard M. Stallman <rms@gnu.org>
parents:
22435
diff
changeset
|
826 (find-file-noselect file-name)))) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
827 (if (eq major-mode 'rmail-edit-mode) |
20681
4a46ac370fc8
(rmail): Don't bind enable-multibyte-characters;
Richard M. Stallman <rms@gnu.org>
parents:
20662
diff
changeset
|
828 (error "Exit Rmail Edit mode before getting new mail")) |
270 | 829 (if (and existed (> (buffer-size) 0)) |
830 ;; Buffer not new and not empty; ensure in proper mode, but that's all. | |
831 (or (eq major-mode 'rmail-mode) | |
16431
65d3768ccb05
(rmail): Run rmail-mail-hook last.
Richard M. Stallman <rms@gnu.org>
parents:
16349
diff
changeset
|
832 (progn (rmail-mode-2) |
65d3768ccb05
(rmail): Run rmail-mail-hook last.
Richard M. Stallman <rms@gnu.org>
parents:
16349
diff
changeset
|
833 (setq run-mail-hook t))) |
65d3768ccb05
(rmail): Run rmail-mail-hook last.
Richard M. Stallman <rms@gnu.org>
parents:
16349
diff
changeset
|
834 (setq run-mail-hook t) |
270 | 835 (rmail-mode-2) |
836 ;; Convert all or part to Babyl file if possible. | |
837 (rmail-convert-file) | |
22374
aaa851980d1e
(rmail): Prevent find-file from calling
Richard M. Stallman <rms@gnu.org>
parents:
22351
diff
changeset
|
838 (goto-char (point-max))) |
22498
b7643337d0c3
(rmail): Make the buffer multibyte
Richard M. Stallman <rms@gnu.org>
parents:
22474
diff
changeset
|
839 ;; As we have read a file by raw-text, the buffer is set to |
b7643337d0c3
(rmail): Make the buffer multibyte
Richard M. Stallman <rms@gnu.org>
parents:
22474
diff
changeset
|
840 ;; unibyte. We must make it multibyte if necessary. |
b7643337d0c3
(rmail): Make the buffer multibyte
Richard M. Stallman <rms@gnu.org>
parents:
22474
diff
changeset
|
841 (if (and rmail-enable-multibyte |
b7643337d0c3
(rmail): Make the buffer multibyte
Richard M. Stallman <rms@gnu.org>
parents:
22474
diff
changeset
|
842 (not enable-multibyte-characters)) |
b7643337d0c3
(rmail): Make the buffer multibyte
Richard M. Stallman <rms@gnu.org>
parents:
22474
diff
changeset
|
843 (set-buffer-multibyte t)) |
22435
98b909125b87
(rmail-toggle-header): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22374
diff
changeset
|
844 ;; If necessary, scan to find all the messages. |
98b909125b87
(rmail-toggle-header): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22374
diff
changeset
|
845 (rmail-maybe-set-message-counters) |
20662
910d4cdbf81f
(rmail): Unwind-protect call to rmail-get-new-mail.
Karl Heuer <kwzh@gnu.org>
parents:
20399
diff
changeset
|
846 (unwind-protect |
22374
aaa851980d1e
(rmail): Prevent find-file from calling
Richard M. Stallman <rms@gnu.org>
parents:
22351
diff
changeset
|
847 (unless (and (not file-name-arg) |
aaa851980d1e
(rmail): Prevent find-file from calling
Richard M. Stallman <rms@gnu.org>
parents:
22351
diff
changeset
|
848 (rmail-get-new-mail)) |
aaa851980d1e
(rmail): Prevent find-file from calling
Richard M. Stallman <rms@gnu.org>
parents:
22351
diff
changeset
|
849 (rmail-show-message (rmail-first-unseen-message))) |
20662
910d4cdbf81f
(rmail): Unwind-protect call to rmail-get-new-mail.
Karl Heuer <kwzh@gnu.org>
parents:
20399
diff
changeset
|
850 (progn |
910d4cdbf81f
(rmail): Unwind-protect call to rmail-get-new-mail.
Karl Heuer <kwzh@gnu.org>
parents:
20399
diff
changeset
|
851 (if rmail-display-summary (rmail-summary)) |
910d4cdbf81f
(rmail): Unwind-protect call to rmail-get-new-mail.
Karl Heuer <kwzh@gnu.org>
parents:
20399
diff
changeset
|
852 (rmail-construct-io-menu) |
910d4cdbf81f
(rmail): Unwind-protect call to rmail-get-new-mail.
Karl Heuer <kwzh@gnu.org>
parents:
20399
diff
changeset
|
853 (if run-mail-hook |
910d4cdbf81f
(rmail): Unwind-protect call to rmail-get-new-mail.
Karl Heuer <kwzh@gnu.org>
parents:
20399
diff
changeset
|
854 (run-hooks 'rmail-mode-hook)))))) |
270 | 855 |
856 ;; Given the value of MAILPATH, return a list of inbox file names. | |
857 ;; This is turned off because it is not clear that the user wants | |
858 ;; all these inboxes to feed into the primary rmail file. | |
859 ; (defun rmail-convert-mailpath (string) | |
860 ; (let (idx list) | |
861 ; (while (setq idx (string-match "[%:]" string)) | |
862 ; (let ((this (substring string 0 idx))) | |
863 ; (setq string (substring string (1+ idx))) | |
864 ; (setq list (cons (if (string-match "%" this) | |
865 ; (substring this 0 (string-match "%" this)) | |
866 ; this) | |
867 ; list)))) | |
868 ; list)) | |
869 | |
870 ; I have checked that adding "-*- rmail -*-" to the BABYL OPTIONS line | |
871 ; will not cause emacs 18.55 problems. | |
872 | |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
873 ;; This calls rmail-decode-babyl-format if the file is already Babyl. |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
874 |
270 | 875 (defun rmail-convert-file () |
876 (let (convert) | |
877 (widen) | |
878 (goto-char (point-min)) | |
879 ;; If file doesn't start like a Babyl file, | |
880 ;; convert it to one, by adding a header and converting each message. | |
881 (cond ((looking-at "BABYL OPTIONS:")) | |
882 ((looking-at "Version: 5\n") | |
883 ;; Losing babyl file made by old version of Rmail. | |
884 ;; Just fix the babyl file header; don't make a new one, | |
885 ;; so we don't lose the Labels: file attribute, etc. | |
886 (let ((buffer-read-only nil)) | |
887 (insert "BABYL OPTIONS: -*- rmail -*-\n"))) | |
4764
0e239209a6db
(rmail-convert-file): If the file is empty, don't convert it after
Brian Fox <bfox@gnu.org>
parents:
4724
diff
changeset
|
888 ((equal (point-min) (point-max)) |
0e239209a6db
(rmail-convert-file): If the file is empty, don't convert it after
Brian Fox <bfox@gnu.org>
parents:
4724
diff
changeset
|
889 ;; Empty RMAIL file. Just insert the header. |
0e239209a6db
(rmail-convert-file): If the file is empty, don't convert it after
Brian Fox <bfox@gnu.org>
parents:
4724
diff
changeset
|
890 (rmail-insert-rmail-file-header)) |
270 | 891 (t |
4764
0e239209a6db
(rmail-convert-file): If the file is empty, don't convert it after
Brian Fox <bfox@gnu.org>
parents:
4724
diff
changeset
|
892 ;; Non-empty file in non-RMAIL format. Add header and convert. |
270 | 893 (setq convert t) |
894 (rmail-insert-rmail-file-header))) | |
895 ;; If file was not a Babyl file or if there are | |
896 ;; Unix format messages added at the end, | |
897 ;; convert file as necessary. | |
898 (if (or convert | |
4673
047e8f8469d9
(rmail-convert-file): Exclude the Babyl header
Richard M. Stallman <rms@gnu.org>
parents:
4579
diff
changeset
|
899 (save-excursion |
047e8f8469d9
(rmail-convert-file): Exclude the Babyl header
Richard M. Stallman <rms@gnu.org>
parents:
4579
diff
changeset
|
900 (goto-char (point-max)) |
12839
40a12a81cc06
(rmail-convert-file): Look back for ^_ only at bol.
Richard M. Stallman <rms@gnu.org>
parents:
12727
diff
changeset
|
901 (search-backward "\n\^_") |
40a12a81cc06
(rmail-convert-file): Look back for ^_ only at bol.
Richard M. Stallman <rms@gnu.org>
parents:
12727
diff
changeset
|
902 (forward-char 2) |
4673
047e8f8469d9
(rmail-convert-file): Exclude the Babyl header
Richard M. Stallman <rms@gnu.org>
parents:
4579
diff
changeset
|
903 (looking-at "\n*From "))) |
270 | 904 (let ((buffer-read-only nil)) |
905 (message "Converting to Babyl format...") | |
4673
047e8f8469d9
(rmail-convert-file): Exclude the Babyl header
Richard M. Stallman <rms@gnu.org>
parents:
4579
diff
changeset
|
906 ;; If file needs conversion, convert it all, |
047e8f8469d9
(rmail-convert-file): Exclude the Babyl header
Richard M. Stallman <rms@gnu.org>
parents:
4579
diff
changeset
|
907 ;; except for the BABYL header. |
047e8f8469d9
(rmail-convert-file): Exclude the Babyl header
Richard M. Stallman <rms@gnu.org>
parents:
4579
diff
changeset
|
908 ;; (rmail-convert-to-babyl-format would delete the header.) |
047e8f8469d9
(rmail-convert-file): Exclude the Babyl header
Richard M. Stallman <rms@gnu.org>
parents:
4579
diff
changeset
|
909 (goto-char (point-min)) |
047e8f8469d9
(rmail-convert-file): Exclude the Babyl header
Richard M. Stallman <rms@gnu.org>
parents:
4579
diff
changeset
|
910 (search-forward "\n\^_" nil t) |
4698
196fac1c1086
(rmail-convert-file): Narrow to exclude the Babyl header.
Richard M. Stallman <rms@gnu.org>
parents:
4673
diff
changeset
|
911 (narrow-to-region (point) (point-max)) |
270 | 912 (rmail-convert-to-babyl-format) |
20943
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
913 (message "Converting to Babyl format...done")) |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
914 (if (and (not rmail-enable-mime) |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
915 rmail-enable-multibyte) |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
916 ;; We still have to decode BABYL part. |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
917 (rmail-decode-babyl-format))))) |
270 | 918 |
919 (defun rmail-insert-rmail-file-header () | |
920 (let ((buffer-read-only nil)) | |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
921 ;; -*-rmail-*- is here so that visiting the file normally |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
922 ;; recognizes it as an Rmail file. |
270 | 923 (insert "BABYL OPTIONS: -*- rmail -*- |
924 Version: 5 | |
925 Labels: | |
926 Note: This is the header of an rmail file. | |
927 Note: If you are seeing it in rmail, | |
928 Note: it means the file has no messages in it.\n\^_"))) | |
929 | |
46129 | 930 ;; Decode Babyl formatted part at the head of current buffer by |
20943
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
931 ;; rmail-file-coding-system, or if it is nil, do auto conversion. |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
932 |
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
933 (defun rmail-decode-babyl-format () |
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
934 (let ((modifiedp (buffer-modified-p)) |
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
935 (buffer-read-only nil) |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
936 (coding-system rmail-file-coding-system) |
20943
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
937 from to) |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
938 (goto-char (point-min)) |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
939 (search-forward "\n\^_" nil t) ; Skip BABYL header. |
20943
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
940 (setq from (point)) |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
941 (goto-char (point-max)) |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
942 (search-backward "\n\^_" from 'mv) |
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
943 (setq to (point)) |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
944 (unless (and coding-system |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
945 (coding-system-p coding-system)) |
39298
2b67bb3275f8
(top-level): Require mule-utils when compiling.
Eli Zaretskii <eliz@gnu.org>
parents:
38412
diff
changeset
|
946 (setq coding-system |
89882
a42353ac8046
(rmail-decode-babyl-format): Use
Kenichi Handa <handa@m17n.org>
parents:
89847
diff
changeset
|
947 ;; If rmail-file-coding-system is nil, Emacs 21 writes |
a42353ac8046
(rmail-decode-babyl-format): Use
Kenichi Handa <handa@m17n.org>
parents:
89847
diff
changeset
|
948 ;; RMAIL files in emacs-mule, Emacs 22 in utf-8, but |
a42353ac8046
(rmail-decode-babyl-format): Use
Kenichi Handa <handa@m17n.org>
parents:
89847
diff
changeset
|
949 ;; earlier versions did that with the current buffer's |
a42353ac8046
(rmail-decode-babyl-format): Use
Kenichi Handa <handa@m17n.org>
parents:
89847
diff
changeset
|
950 ;; encoding. So we want to favor detection of emacs-mule |
a42353ac8046
(rmail-decode-babyl-format): Use
Kenichi Handa <handa@m17n.org>
parents:
89847
diff
changeset
|
951 ;; (whose normal priority is quite low) and utf-8, but |
a42353ac8046
(rmail-decode-babyl-format): Use
Kenichi Handa <handa@m17n.org>
parents:
89847
diff
changeset
|
952 ;; still allow detection of other encodings if they won't |
a42353ac8046
(rmail-decode-babyl-format): Use
Kenichi Handa <handa@m17n.org>
parents:
89847
diff
changeset
|
953 ;; fit. The call to with-coding-priority below achieves |
a42353ac8046
(rmail-decode-babyl-format): Use
Kenichi Handa <handa@m17n.org>
parents:
89847
diff
changeset
|
954 ;; that. |
a42353ac8046
(rmail-decode-babyl-format): Use
Kenichi Handa <handa@m17n.org>
parents:
89847
diff
changeset
|
955 (with-coding-priority '(emacs-mule utf-8) |
a42353ac8046
(rmail-decode-babyl-format): Use
Kenichi Handa <handa@m17n.org>
parents:
89847
diff
changeset
|
956 (detect-coding-region from to 'highest)))) |
a42353ac8046
(rmail-decode-babyl-format): Use
Kenichi Handa <handa@m17n.org>
parents:
89847
diff
changeset
|
957 (unless (eq (coding-system-type coding-system) 'undecided) |
24584
244e710f3134
(rmail-decode-babyl-format): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
24562
diff
changeset
|
958 (set-buffer-modified-p t) ; avoid locking when decoding |
42659
9522b2780ef1
(rmail-decode-babyl-format): Disable undo around the decode-coding-region call.
Richard M. Stallman <rms@gnu.org>
parents:
41999
diff
changeset
|
959 (let ((buffer-undo-list t)) |
9522b2780ef1
(rmail-decode-babyl-format): Disable undo around the decode-coding-region call.
Richard M. Stallman <rms@gnu.org>
parents:
41999
diff
changeset
|
960 (decode-coding-region from to coding-system)) |
24584
244e710f3134
(rmail-decode-babyl-format): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
24562
diff
changeset
|
961 (setq coding-system last-coding-system-used)) |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
962 (set-buffer-modified-p modifiedp) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
963 (setq buffer-file-coding-system nil) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
964 (setq save-buffer-coding-system |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
965 (or coding-system 'undecided)))) |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
966 |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
967 (defvar rmail-mode-map nil) |
270 | 968 (if rmail-mode-map |
969 nil | |
970 (setq rmail-mode-map (make-keymap)) | |
971 (suppress-keymap rmail-mode-map) | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
972 (define-key rmail-mode-map "a" 'rmail-add-label) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
973 (define-key rmail-mode-map "b" 'rmail-bury) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
974 (define-key rmail-mode-map "c" 'rmail-continue) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
975 (define-key rmail-mode-map "d" 'rmail-delete-forward) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
976 (define-key rmail-mode-map "\C-d" 'rmail-delete-backward) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
977 (define-key rmail-mode-map "e" 'rmail-edit-current-message) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
978 (define-key rmail-mode-map "f" 'rmail-forward) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
979 (define-key rmail-mode-map "g" 'rmail-get-new-mail) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
980 (define-key rmail-mode-map "h" 'rmail-summary) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
981 (define-key rmail-mode-map "i" 'rmail-input) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
982 (define-key rmail-mode-map "j" 'rmail-show-message) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
983 (define-key rmail-mode-map "k" 'rmail-kill-label) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
984 (define-key rmail-mode-map "l" 'rmail-summary-by-labels) |
270 | 985 (define-key rmail-mode-map "\e\C-h" 'rmail-summary) |
986 (define-key rmail-mode-map "\e\C-l" 'rmail-summary-by-labels) | |
987 (define-key rmail-mode-map "\e\C-r" 'rmail-summary-by-recipients) | |
988 (define-key rmail-mode-map "\e\C-s" 'rmail-summary-by-regexp) | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
989 (define-key rmail-mode-map "\e\C-t" 'rmail-summary-by-topic) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
990 (define-key rmail-mode-map "m" 'rmail-mail) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
991 (define-key rmail-mode-map "\em" 'rmail-retry-failure) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
992 (define-key rmail-mode-map "n" 'rmail-next-undeleted-message) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
993 (define-key rmail-mode-map "\en" 'rmail-next-message) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
994 (define-key rmail-mode-map "\e\C-n" 'rmail-next-labeled-message) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
995 (define-key rmail-mode-map "o" 'rmail-output-to-rmail-file) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
996 (define-key rmail-mode-map "\C-o" 'rmail-output) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
997 (define-key rmail-mode-map "p" 'rmail-previous-undeleted-message) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
998 (define-key rmail-mode-map "\ep" 'rmail-previous-message) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
999 (define-key rmail-mode-map "\e\C-p" 'rmail-previous-labeled-message) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1000 (define-key rmail-mode-map "q" 'rmail-quit) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1001 (define-key rmail-mode-map "r" 'rmail-reply) |
1464
7f25b15a6809
(rmail-mode-map): Delete binding of M-r (use global one).
Richard M. Stallman <rms@gnu.org>
parents:
1382
diff
changeset
|
1002 ;; I find I can't live without the default M-r command -- rms. |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1003 ;; (define-key rmail-mode-map "\er" 'rmail-search-backwards) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1004 (define-key rmail-mode-map "s" 'rmail-expunge-and-save) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1005 (define-key rmail-mode-map "\es" 'rmail-search) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1006 (define-key rmail-mode-map "t" 'rmail-toggle-header) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1007 (define-key rmail-mode-map "u" 'rmail-undelete-previous-message) |
17306
09aeacdc6fc2
(rmail-mode-map): Add menu item for
Richard M. Stallman <rms@gnu.org>
parents:
17237
diff
changeset
|
1008 (define-key rmail-mode-map "w" 'rmail-output-body-to-file) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1009 (define-key rmail-mode-map "x" 'rmail-expunge) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1010 (define-key rmail-mode-map "." 'rmail-beginning-of-message) |
64928
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
1011 (define-key rmail-mode-map "/" 'rmail-end-of-message) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1012 (define-key rmail-mode-map "<" 'rmail-first-message) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1013 (define-key rmail-mode-map ">" 'rmail-last-message) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1014 (define-key rmail-mode-map " " 'scroll-up) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1015 (define-key rmail-mode-map "\177" 'scroll-down) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1016 (define-key rmail-mode-map "?" 'describe-mode) |
3877
da9b565f9878
Add autoloads for rmailsort commands.
Richard M. Stallman <rms@gnu.org>
parents:
3864
diff
changeset
|
1017 (define-key rmail-mode-map "\C-c\C-s\C-d" 'rmail-sort-by-date) |
da9b565f9878
Add autoloads for rmailsort commands.
Richard M. Stallman <rms@gnu.org>
parents:
3864
diff
changeset
|
1018 (define-key rmail-mode-map "\C-c\C-s\C-s" 'rmail-sort-by-subject) |
da9b565f9878
Add autoloads for rmailsort commands.
Richard M. Stallman <rms@gnu.org>
parents:
3864
diff
changeset
|
1019 (define-key rmail-mode-map "\C-c\C-s\C-a" 'rmail-sort-by-author) |
da9b565f9878
Add autoloads for rmailsort commands.
Richard M. Stallman <rms@gnu.org>
parents:
3864
diff
changeset
|
1020 (define-key rmail-mode-map "\C-c\C-s\C-r" 'rmail-sort-by-recipient) |
da9b565f9878
Add autoloads for rmailsort commands.
Richard M. Stallman <rms@gnu.org>
parents:
3864
diff
changeset
|
1021 (define-key rmail-mode-map "\C-c\C-s\C-c" 'rmail-sort-by-correspondent) |
da9b565f9878
Add autoloads for rmailsort commands.
Richard M. Stallman <rms@gnu.org>
parents:
3864
diff
changeset
|
1022 (define-key rmail-mode-map "\C-c\C-s\C-l" 'rmail-sort-by-lines) |
37592
767fb2304ebd
(rmail-mode-map): Use rmail-sort-by-labels
Gerd Moellmann <gerd@gnu.org>
parents:
37587
diff
changeset
|
1023 (define-key rmail-mode-map "\C-c\C-s\C-k" 'rmail-sort-by-labels) |
10662
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
1024 (define-key rmail-mode-map "\C-c\C-n" 'rmail-next-same-subject) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
1025 (define-key rmail-mode-map "\C-c\C-p" 'rmail-previous-same-subject) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1026 ) |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1027 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1028 (define-key rmail-mode-map [menu-bar] (make-sparse-keymap)) |
270 | 1029 |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1030 (define-key rmail-mode-map [menu-bar classify] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1031 (cons "Classify" (make-sparse-keymap "Classify"))) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1032 |
6483
373e377d79f7
(rmail-secondary-file-menu): Display relative file names.
Richard M. Stallman <rms@gnu.org>
parents:
6408
diff
changeset
|
1033 (define-key rmail-mode-map [menu-bar classify input-menu] |
8909
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1034 nil) |
6483
373e377d79f7
(rmail-secondary-file-menu): Display relative file names.
Richard M. Stallman <rms@gnu.org>
parents:
6408
diff
changeset
|
1035 |
373e377d79f7
(rmail-secondary-file-menu): Display relative file names.
Richard M. Stallman <rms@gnu.org>
parents:
6408
diff
changeset
|
1036 (define-key rmail-mode-map [menu-bar classify output-menu] |
8909
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1037 nil) |
6483
373e377d79f7
(rmail-secondary-file-menu): Display relative file names.
Richard M. Stallman <rms@gnu.org>
parents:
6408
diff
changeset
|
1038 |
17306
09aeacdc6fc2
(rmail-mode-map): Add menu item for
Richard M. Stallman <rms@gnu.org>
parents:
17237
diff
changeset
|
1039 (define-key rmail-mode-map [menu-bar classify output-body] |
09aeacdc6fc2
(rmail-mode-map): Add menu item for
Richard M. Stallman <rms@gnu.org>
parents:
17237
diff
changeset
|
1040 '("Output body to file..." . rmail-output-body-to-file)) |
09aeacdc6fc2
(rmail-mode-map): Add menu item for
Richard M. Stallman <rms@gnu.org>
parents:
17237
diff
changeset
|
1041 |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1042 (define-key rmail-mode-map [menu-bar classify output-inbox] |
8423
960d9fb24788
(rmail-mode-map): Fix the Get New Mail entry.
Richard M. Stallman <rms@gnu.org>
parents:
8420
diff
changeset
|
1043 '("Output (inbox)..." . rmail-output)) |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1044 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1045 (define-key rmail-mode-map [menu-bar classify output] |
8423
960d9fb24788
(rmail-mode-map): Fix the Get New Mail entry.
Richard M. Stallman <rms@gnu.org>
parents:
8420
diff
changeset
|
1046 '("Output (Rmail)..." . rmail-output-to-rmail-file)) |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1047 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1048 (define-key rmail-mode-map [menu-bar classify kill-label] |
8423
960d9fb24788
(rmail-mode-map): Fix the Get New Mail entry.
Richard M. Stallman <rms@gnu.org>
parents:
8420
diff
changeset
|
1049 '("Kill Label..." . rmail-kill-label)) |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1050 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1051 (define-key rmail-mode-map [menu-bar classify add-label] |
8423
960d9fb24788
(rmail-mode-map): Fix the Get New Mail entry.
Richard M. Stallman <rms@gnu.org>
parents:
8420
diff
changeset
|
1052 '("Add Label..." . rmail-add-label)) |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1053 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1054 (define-key rmail-mode-map [menu-bar summary] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1055 (cons "Summary" (make-sparse-keymap "Summary"))) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1056 |
12447
240de864f06c
(rmail-find-all-files): Bind case-fold-search.
Richard M. Stallman <rms@gnu.org>
parents:
12377
diff
changeset
|
1057 (define-key rmail-mode-map [menu-bar summary senders] |
240de864f06c
(rmail-find-all-files): Bind case-fold-search.
Richard M. Stallman <rms@gnu.org>
parents:
12377
diff
changeset
|
1058 '("By Senders..." . rmail-summary-by-senders)) |
240de864f06c
(rmail-find-all-files): Bind case-fold-search.
Richard M. Stallman <rms@gnu.org>
parents:
12377
diff
changeset
|
1059 |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1060 (define-key rmail-mode-map [menu-bar summary labels] |
8423
960d9fb24788
(rmail-mode-map): Fix the Get New Mail entry.
Richard M. Stallman <rms@gnu.org>
parents:
8420
diff
changeset
|
1061 '("By Labels..." . rmail-summary-by-labels)) |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1062 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1063 (define-key rmail-mode-map [menu-bar summary recipients] |
8423
960d9fb24788
(rmail-mode-map): Fix the Get New Mail entry.
Richard M. Stallman <rms@gnu.org>
parents:
8420
diff
changeset
|
1064 '("By Recipients..." . rmail-summary-by-recipients)) |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1065 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1066 (define-key rmail-mode-map [menu-bar summary topic] |
8423
960d9fb24788
(rmail-mode-map): Fix the Get New Mail entry.
Richard M. Stallman <rms@gnu.org>
parents:
8420
diff
changeset
|
1067 '("By Topic..." . rmail-summary-by-topic)) |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1068 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1069 (define-key rmail-mode-map [menu-bar summary regexp] |
8423
960d9fb24788
(rmail-mode-map): Fix the Get New Mail entry.
Richard M. Stallman <rms@gnu.org>
parents:
8420
diff
changeset
|
1070 '("By Regexp..." . rmail-summary-by-regexp)) |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1071 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1072 (define-key rmail-mode-map [menu-bar summary all] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1073 '("All" . rmail-summary)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1074 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1075 (define-key rmail-mode-map [menu-bar mail] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1076 (cons "Mail" (make-sparse-keymap "Mail"))) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1077 |
8420
988800dcb009
(rmail-mode-map): Fix the Get New Mail entry.
Richard M. Stallman <rms@gnu.org>
parents:
8399
diff
changeset
|
1078 (define-key rmail-mode-map [menu-bar mail rmail-get-new-mail] |
8219
5d9da948dc9f
(rmail-mode-map): Add "Get New Mail" menu item under Mail.
Richard M. Stallman <rms@gnu.org>
parents:
8094
diff
changeset
|
1079 '("Get New Mail" . rmail-get-new-mail)) |
5d9da948dc9f
(rmail-mode-map): Add "Get New Mail" menu item under Mail.
Richard M. Stallman <rms@gnu.org>
parents:
8094
diff
changeset
|
1080 |
5d9da948dc9f
(rmail-mode-map): Add "Get New Mail" menu item under Mail.
Richard M. Stallman <rms@gnu.org>
parents:
8094
diff
changeset
|
1081 (define-key rmail-mode-map [menu-bar mail lambda] |
8230
740b46022e15
(rmail-mode-map): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
8219
diff
changeset
|
1082 '("----")) |
8219
5d9da948dc9f
(rmail-mode-map): Add "Get New Mail" menu item under Mail.
Richard M. Stallman <rms@gnu.org>
parents:
8094
diff
changeset
|
1083 |
5d9da948dc9f
(rmail-mode-map): Add "Get New Mail" menu item under Mail.
Richard M. Stallman <rms@gnu.org>
parents:
8094
diff
changeset
|
1084 (define-key rmail-mode-map [menu-bar mail continue] |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1085 '("Continue" . rmail-continue)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1086 |
8393
4d3ae3aff631
(rmail-mode-map): Move new Re-send menu item to right place.
Richard M. Stallman <rms@gnu.org>
parents:
8384
diff
changeset
|
1087 (define-key rmail-mode-map [menu-bar mail resend] |
8423
960d9fb24788
(rmail-mode-map): Fix the Get New Mail entry.
Richard M. Stallman <rms@gnu.org>
parents:
8420
diff
changeset
|
1088 '("Re-send..." . rmail-resend)) |
8393
4d3ae3aff631
(rmail-mode-map): Move new Re-send menu item to right place.
Richard M. Stallman <rms@gnu.org>
parents:
8384
diff
changeset
|
1089 |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1090 (define-key rmail-mode-map [menu-bar mail forward] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1091 '("Forward" . rmail-forward)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1092 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1093 (define-key rmail-mode-map [menu-bar mail retry] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1094 '("Retry" . rmail-retry-failure)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1095 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1096 (define-key rmail-mode-map [menu-bar mail reply] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1097 '("Reply" . rmail-reply)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1098 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1099 (define-key rmail-mode-map [menu-bar mail mail] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1100 '("Mail" . rmail-mail)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1101 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1102 (define-key rmail-mode-map [menu-bar delete] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1103 (cons "Delete" (make-sparse-keymap "Delete"))) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1104 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1105 (define-key rmail-mode-map [menu-bar delete expunge/save] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1106 '("Expunge/Save" . rmail-expunge-and-save)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1107 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1108 (define-key rmail-mode-map [menu-bar delete expunge] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1109 '("Expunge" . rmail-expunge)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1110 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1111 (define-key rmail-mode-map [menu-bar delete undelete] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1112 '("Undelete" . rmail-undelete-previous-message)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1113 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1114 (define-key rmail-mode-map [menu-bar delete delete] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1115 '("Delete" . rmail-delete-forward)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1116 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1117 (define-key rmail-mode-map [menu-bar move] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1118 (cons "Move" (make-sparse-keymap "Move"))) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1119 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1120 (define-key rmail-mode-map [menu-bar move search-back] |
10187
a3b8bfad0a75
(rmail-search-backward): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents:
10160
diff
changeset
|
1121 '("Search Back..." . rmail-search-backwards)) |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1122 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1123 (define-key rmail-mode-map [menu-bar move search] |
8423
960d9fb24788
(rmail-mode-map): Fix the Get New Mail entry.
Richard M. Stallman <rms@gnu.org>
parents:
8420
diff
changeset
|
1124 '("Search..." . rmail-search)) |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1125 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1126 (define-key rmail-mode-map [menu-bar move previous] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1127 '("Previous Nondeleted" . rmail-previous-undeleted-message)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1128 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1129 (define-key rmail-mode-map [menu-bar move next] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1130 '("Next Nondeleted" . rmail-next-undeleted-message)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1131 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1132 (define-key rmail-mode-map [menu-bar move last] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1133 '("Last" . rmail-last-message)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1134 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1135 (define-key rmail-mode-map [menu-bar move first] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1136 '("First" . rmail-first-message)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1137 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1138 (define-key rmail-mode-map [menu-bar move previous] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1139 '("Previous" . rmail-previous-message)) |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1140 |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1141 (define-key rmail-mode-map [menu-bar move next] |
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1142 '("Next" . rmail-next-message)) |
69676 | 1143 |
1144 ;; Rmail toolbar | |
1145 (defvar rmail-tool-bar-map | |
1146 (if (display-graphic-p) | |
1147 (let ((map (make-sparse-keymap))) | |
1148 (tool-bar-local-item-from-menu 'rmail-get-new-mail "mail/inbox" | |
1149 map rmail-mode-map) | |
1150 (tool-bar-local-item-from-menu 'rmail-next-undeleted-message "right-arrow" | |
1151 map rmail-mode-map) | |
1152 (tool-bar-local-item-from-menu 'rmail-previous-undeleted-message "left-arrow" | |
1153 map rmail-mode-map) | |
1154 (tool-bar-local-item-from-menu 'rmail-search "search" | |
1155 map rmail-mode-map) | |
1156 (tool-bar-local-item-from-menu 'rmail-input "open" | |
1157 map rmail-mode-map) | |
1158 (tool-bar-local-item-from-menu 'rmail-mail "mail/compose" | |
1159 map rmail-mode-map) | |
1160 (tool-bar-local-item-from-menu 'rmail-reply "mail/reply-all" | |
1161 map rmail-mode-map) | |
1162 (tool-bar-local-item-from-menu 'rmail-forward "mail/forward" | |
1163 map rmail-mode-map) | |
1164 (tool-bar-local-item-from-menu 'rmail-delete-forward "close" | |
1165 map rmail-mode-map) | |
1166 (tool-bar-local-item-from-menu 'rmail-output "mail/move" | |
1167 map rmail-mode-map) | |
1168 (tool-bar-local-item-from-menu 'rmail-output-body-to-file "mail/save" | |
1169 map rmail-mode-map) | |
1170 (tool-bar-local-item-from-menu 'rmail-expunge "delete" | |
1171 map rmail-mode-map) | |
1172 map))) | |
1173 | |
1174 | |
3863
049283382a10
(rmail-mode-map): Add local menu bar bindings.
Richard M. Stallman <rms@gnu.org>
parents:
3631
diff
changeset
|
1175 |
270 | 1176 ;; Rmail mode is suitable only for specially formatted data. |
1177 (put 'rmail-mode 'mode-class 'special) | |
1178 | |
8963
286aacffb920
(rmail-mode-kill-summary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
8909
diff
changeset
|
1179 (defun rmail-mode-kill-summary () |
286aacffb920
(rmail-mode-kill-summary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
8909
diff
changeset
|
1180 (if rmail-summary-buffer (kill-buffer rmail-summary-buffer))) |
286aacffb920
(rmail-mode-kill-summary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
8909
diff
changeset
|
1181 |
1382
9b210c7d6c23
* rmail.el (rmail-mode): Make this autoload; we might find a file
Jim Blandy <jimb@redhat.com>
parents:
1372
diff
changeset
|
1182 ;;;###autoload |
270 | 1183 (defun rmail-mode () |
1184 "Rmail Mode is used by \\<rmail-mode-map>\\[rmail] for editing Rmail files. | |
1185 All normal editing commands are turned off. | |
1186 Instead, these commands are available: | |
1187 | |
64928
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
1188 \\[rmail-beginning-of-message] Move point to front of this message. |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
1189 \\[rmail-end-of-message] Move point to bottom of this message. |
270 | 1190 \\[scroll-up] Scroll to next screen of this message. |
1191 \\[scroll-down] Scroll to previous screen of this message. | |
1192 \\[rmail-next-undeleted-message] Move to Next non-deleted message. | |
1193 \\[rmail-previous-undeleted-message] Move to Previous non-deleted message. | |
1194 \\[rmail-next-message] Move to Next message whether deleted or not. | |
1195 \\[rmail-previous-message] Move to Previous message whether deleted or not. | |
1196 \\[rmail-first-message] Move to the first message in Rmail file. | |
1197 \\[rmail-last-message] Move to the last message in Rmail file. | |
1198 \\[rmail-show-message] Jump to message specified by numeric position in file. | |
1199 \\[rmail-search] Search for string and show message it is found in. | |
1200 \\[rmail-delete-forward] Delete this message, move to next nondeleted. | |
1201 \\[rmail-delete-backward] Delete this message, move to previous nondeleted. | |
1202 \\[rmail-undelete-previous-message] Undelete message. Tries current message, then earlier messages | |
1203 till a deleted message is found. | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1204 \\[rmail-edit-current-message] Edit the current message. \\[rmail-cease-edit] to return to Rmail. |
270 | 1205 \\[rmail-expunge] Expunge deleted messages. |
1206 \\[rmail-expunge-and-save] Expunge and save the file. | |
1207 \\[rmail-quit] Quit Rmail: expunge, save, then switch to another buffer. | |
1208 \\[save-buffer] Save without expunging. | |
2423
5dd3b7338f71
(rmail): Don't use mbox as inbox by default.
Richard M. Stallman <rms@gnu.org>
parents:
2076
diff
changeset
|
1209 \\[rmail-get-new-mail] Move new mail from system spool directory into this file. |
270 | 1210 \\[rmail-mail] Mail a message (same as \\[mail-other-window]). |
1211 \\[rmail-continue] Continue composing outgoing message started before. | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1212 \\[rmail-reply] Reply to this message. Like \\[rmail-mail] but initializes some fields. |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1213 \\[rmail-retry-failure] Send this message again. Used on a mailer failure message. |
270 | 1214 \\[rmail-forward] Forward this message to another user. |
1215 \\[rmail-output-to-rmail-file] Output this message to an Rmail file (append it). | |
1216 \\[rmail-output] Output this message to a Unix-format mail file (append it). | |
21405 | 1217 \\[rmail-output-body-to-file] Save message body to a file. Default filename comes from Subject line. |
270 | 1218 \\[rmail-input] Input Rmail file. Run Rmail on that file. |
1219 \\[rmail-add-label] Add label to message. It will be displayed in the mode line. | |
1220 \\[rmail-kill-label] Kill label. Remove a label from current message. | |
1221 \\[rmail-next-labeled-message] Move to Next message with specified label | |
1222 (label defaults to last one specified). | |
1223 Standard labels: filed, unseen, answered, forwarded, deleted. | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1224 Any other label is present only if you add it with \\[rmail-add-label]. |
270 | 1225 \\[rmail-previous-labeled-message] Move to Previous message with specified label |
1226 \\[rmail-summary] Show headers buffer, with a one line summary of each message. | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1227 \\[rmail-summary-by-labels] Summarize only messages with particular label(s). |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1228 \\[rmail-summary-by-recipients] Summarize only messages with particular recipient(s). |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1229 \\[rmail-summary-by-regexp] Summarize only messages with particular regexp(s). |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1230 \\[rmail-summary-by-topic] Summarize only messages with subject line regexp(s). |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1231 \\[rmail-toggle-header] Toggle display of complete header." |
270 | 1232 (interactive) |
37787
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1233 (let ((finding-rmail-file (not (eq major-mode 'rmail-mode)))) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1234 (rmail-mode-2) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1235 (when (and finding-rmail-file |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1236 (null coding-system-for-read) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1237 default-enable-multibyte-characters) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1238 (let ((rmail-enable-multibyte t)) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1239 (rmail-require-mime-maybe) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1240 (rmail-convert-file) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1241 (goto-char (point-max)) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1242 (set-buffer-multibyte t))) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1243 (rmail-set-message-counters) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1244 (rmail-show-message rmail-total-messages) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1245 (when finding-rmail-file |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1246 (when rmail-display-summary |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1247 (rmail-summary)) |
2022cee16ea5
(rmail-require-mime-maybe): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37611
diff
changeset
|
1248 (rmail-construct-io-menu)) |
62762
e73a53eb777e
(rmail-mode): Use run-mode-hooks.
Lute Kamstra <lute@gnu.org>
parents:
62587
diff
changeset
|
1249 (run-mode-hooks 'rmail-mode-hook))) |
270 | 1250 |
1251 (defun rmail-mode-2 () | |
1252 (kill-all-local-variables) | |
1253 (rmail-mode-1) | |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1254 (rmail-perm-variables) |
16431
65d3768ccb05
(rmail): Run rmail-mail-hook last.
Richard M. Stallman <rms@gnu.org>
parents:
16349
diff
changeset
|
1255 (rmail-variables)) |
270 | 1256 |
1257 (defun rmail-mode-1 () | |
1258 (setq major-mode 'rmail-mode) | |
1259 (setq mode-name "RMAIL") | |
1260 (setq buffer-read-only t) | |
5330 | 1261 ;; No need to auto save RMAIL files in normal circumstances |
1262 ;; because they contain no info except attribute changes | |
1263 ;; and deletion of messages. | |
1264 ;; The one exception is when messages are copied into an Rmail mode buffer. | |
1265 ;; rmail-output-to-rmail-file enables auto save when you do that. | |
270 | 1266 (setq buffer-auto-save-file-name nil) |
19536
e0cd56c5b0ac
(rmail-mode-1): Update the value for mode-line-modified.
Richard M. Stallman <rms@gnu.org>
parents:
19509
diff
changeset
|
1267 (setq mode-line-modified "--") |
270 | 1268 (use-local-map rmail-mode-map) |
1269 (set-syntax-table text-mode-syntax-table) | |
1270 (setq local-abbrev-table text-mode-abbrev-table)) | |
1271 | |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1272 ;; Set up the permanent locals associated with an Rmail file. |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1273 (defun rmail-perm-variables () |
270 | 1274 (make-local-variable 'rmail-last-label) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1275 (make-local-variable 'rmail-last-regexp) |
270 | 1276 (make-local-variable 'rmail-deleted-vector) |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
1277 (make-local-variable 'rmail-buffer) |
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
1278 (setq rmail-buffer (current-buffer)) |
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
1279 (make-local-variable 'rmail-view-buffer) |
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
1280 (setq rmail-view-buffer rmail-buffer) |
270 | 1281 (make-local-variable 'rmail-summary-buffer) |
1282 (make-local-variable 'rmail-summary-vector) | |
1283 (make-local-variable 'rmail-current-message) | |
1284 (make-local-variable 'rmail-total-messages) | |
7061
9f27a57b7662
(rmail-show-message): Use overlays, not text properties.
Richard M. Stallman <rms@gnu.org>
parents:
7051
diff
changeset
|
1285 (make-local-variable 'rmail-overlay-list) |
9f27a57b7662
(rmail-show-message): Use overlays, not text properties.
Richard M. Stallman <rms@gnu.org>
parents:
7051
diff
changeset
|
1286 (setq rmail-overlay-list nil) |
270 | 1287 (make-local-variable 'rmail-message-vector) |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
1288 (make-local-variable 'rmail-msgref-vector) |
270 | 1289 (make-local-variable 'rmail-inbox-list) |
1290 (setq rmail-inbox-list (rmail-parse-file-inboxes)) | |
3540
c14c0f2954fd
(rmail-variables): Default rmail-inbox-list here.
Richard M. Stallman <rms@gnu.org>
parents:
3484
diff
changeset
|
1291 ;; Provide default set of inboxes for primary mail file ~/RMAIL. |
c14c0f2954fd
(rmail-variables): Default rmail-inbox-list here.
Richard M. Stallman <rms@gnu.org>
parents:
3484
diff
changeset
|
1292 (and (null rmail-inbox-list) |
4010
735b8dc6cdd2
(rmail-variables): Compare truename as well as given name
Richard M. Stallman <rms@gnu.org>
parents:
3931
diff
changeset
|
1293 (or (equal buffer-file-name (expand-file-name rmail-file-name)) |
5192
3fb665ab94c1
(rmail-variables): Abbreviate truename for comparison.
Richard M. Stallman <rms@gnu.org>
parents:
5047
diff
changeset
|
1294 (equal buffer-file-truename |
3fb665ab94c1
(rmail-variables): Abbreviate truename for comparison.
Richard M. Stallman <rms@gnu.org>
parents:
5047
diff
changeset
|
1295 (abbreviate-file-name (file-truename rmail-file-name)))) |
3540
c14c0f2954fd
(rmail-variables): Default rmail-inbox-list here.
Richard M. Stallman <rms@gnu.org>
parents:
3484
diff
changeset
|
1296 (setq rmail-inbox-list |
c14c0f2954fd
(rmail-variables): Default rmail-inbox-list here.
Richard M. Stallman <rms@gnu.org>
parents:
3484
diff
changeset
|
1297 (or rmail-primary-inbox-list |
c14c0f2954fd
(rmail-variables): Default rmail-inbox-list here.
Richard M. Stallman <rms@gnu.org>
parents:
3484
diff
changeset
|
1298 (list (or (getenv "MAIL") |
c14c0f2954fd
(rmail-variables): Default rmail-inbox-list here.
Richard M. Stallman <rms@gnu.org>
parents:
3484
diff
changeset
|
1299 (concat rmail-spool-directory |
5913
3d155c2636bf
(rmail-variables, rmail-insert-inbox-text): Change user-original-login-name to
Karl Heuer <kwzh@gnu.org>
parents:
5860
diff
changeset
|
1300 (user-login-name))))))) |
270 | 1301 (make-local-variable 'rmail-keywords) |
69676 | 1302 (set (make-local-variable 'tool-bar-map) rmail-tool-bar-map) |
270 | 1303 ;; this gets generated as needed |
7563
4b15aee0be13
(rmail-variables): Don't add any permanent-local props.
Richard M. Stallman <rms@gnu.org>
parents:
7435
diff
changeset
|
1304 (setq rmail-keywords nil)) |
270 | 1305 |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1306 ;; Set up the non-permanent locals associated with Rmail mode. |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1307 (defun rmail-variables () |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1308 (make-local-variable 'save-buffer-coding-system) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1309 ;; If we don't already have a value for save-buffer-coding-system, |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1310 ;; get it from buffer-file-coding-system, and clear that |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1311 ;; because it should be determined in rmail-show-message. |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1312 (unless save-buffer-coding-system |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1313 (setq save-buffer-coding-system (or buffer-file-coding-system 'undecided)) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1314 (setq buffer-file-coding-system nil)) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1315 ;; Don't let a local variables list in a message cause confusion. |
22474
927f6e2f680b
(rmail-variables): Locally bind
Richard M. Stallman <rms@gnu.org>
parents:
22435
diff
changeset
|
1316 (make-local-variable 'local-enable-local-variables) |
927f6e2f680b
(rmail-variables): Locally bind
Richard M. Stallman <rms@gnu.org>
parents:
22435
diff
changeset
|
1317 (setq local-enable-local-variables nil) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1318 (make-local-variable 'revert-buffer-function) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1319 (setq revert-buffer-function 'rmail-revert) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1320 (make-local-variable 'font-lock-defaults) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1321 (setq font-lock-defaults |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1322 '(rmail-font-lock-keywords |
49064
d9fb715ab692
(rmail-font-lock-keywords): Discard code to match both cases.
Richard M. Stallman <rms@gnu.org>
parents:
49008
diff
changeset
|
1323 t t nil nil |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1324 (font-lock-maximum-size . nil) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1325 (font-lock-fontify-buffer-function . rmail-fontify-buffer-function) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1326 (font-lock-unfontify-buffer-function . rmail-unfontify-buffer-function) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
1327 (font-lock-inhibit-thing-lock . (lazy-lock-mode fast-lock-mode)))) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1328 (make-local-variable 'require-final-newline) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1329 (setq require-final-newline nil) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1330 (make-local-variable 'version-control) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1331 (setq version-control 'never) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1332 (make-local-variable 'kill-buffer-hook) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1333 (add-hook 'kill-buffer-hook 'rmail-mode-kill-summary) |
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1334 (make-local-variable 'file-precious-flag) |
55152
734ea91cb677
(rmail-variables): Bind desktop-save-buffer to t.
Lars Hansen <larsh@soem.dk>
parents:
55114
diff
changeset
|
1335 (setq file-precious-flag t) |
734ea91cb677
(rmail-variables): Bind desktop-save-buffer to t.
Lars Hansen <larsh@soem.dk>
parents:
55114
diff
changeset
|
1336 (make-local-variable 'desktop-save-buffer) |
734ea91cb677
(rmail-variables): Bind desktop-save-buffer to t.
Lars Hansen <larsh@soem.dk>
parents:
55114
diff
changeset
|
1337 (setq desktop-save-buffer t)) |
21435
41fa600fadc4
(rmail-message-regexp-p): Handle messages
Karl Heuer <kwzh@gnu.org>
parents:
21405
diff
changeset
|
1338 |
270 | 1339 ;; Handle M-x revert-buffer done in an rmail-mode buffer. |
1340 (defun rmail-revert (arg noconfirm) | |
37956
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
1341 (set-buffer rmail-buffer) |
22724
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1342 (let* ((revert-buffer-function (default-value 'revert-buffer-function)) |
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1343 (rmail-enable-multibyte enable-multibyte-characters) |
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1344 ;; See similar code in `rmail'. |
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1345 (coding-system-for-read (and rmail-enable-multibyte 'raw-text))) |
270 | 1346 ;; Call our caller again, but this time it does the default thing. |
1347 (if (revert-buffer arg noconfirm) | |
1348 ;; If the user said "yes", and we changed something, | |
1349 ;; reparse the messages. | |
20681
4a46ac370fc8
(rmail): Don't bind enable-multibyte-characters;
Richard M. Stallman <rms@gnu.org>
parents:
20662
diff
changeset
|
1350 (progn |
37956
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
1351 (set-buffer rmail-buffer) |
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
1352 (rmail-mode-2) |
22724
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1353 ;; Convert all or part to Babyl file if possible. |
270 | 1354 (rmail-convert-file) |
22724
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1355 ;; We have read the file as raw-text, so the buffer is set to |
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1356 ;; unibyte. Make it multibyte if necessary. |
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1357 (if (and rmail-enable-multibyte |
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1358 (not enable-multibyte-characters)) |
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1359 (set-buffer-multibyte t)) |
270 | 1360 (goto-char (point-max)) |
22724
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1361 (rmail-set-message-counters) |
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1362 (rmail-show-message rmail-total-messages) |
6a6568360d51
(rmail): If existing buffer, use local
Richard M. Stallman <rms@gnu.org>
parents:
22610
diff
changeset
|
1363 (run-hooks 'rmail-mode-hook))))) |
270 | 1364 |
1365 ;; Return a list of files from this buffer's Mail: option. | |
1366 ;; Does not assume that messages have been parsed. | |
1367 ;; Just returns nil if buffer does not look like Babyl format. | |
1368 (defun rmail-parse-file-inboxes () | |
1369 (save-excursion | |
1370 (save-restriction | |
1371 (widen) | |
1372 (goto-char 1) | |
1373 (cond ((looking-at "BABYL OPTIONS:") | |
1374 (search-forward "\n\^_" nil 'move) | |
1375 (narrow-to-region 1 (point)) | |
1376 (goto-char 1) | |
1377 (if (search-forward "\nMail:" nil t) | |
1378 (progn | |
1379 (narrow-to-region (point) (progn (end-of-line) (point))) | |
1380 (goto-char (point-min)) | |
1381 (mail-parse-comma-list)))))))) | |
1382 | |
1383 (defun rmail-expunge-and-save () | |
1384 "Expunge and save RMAIL file." | |
1385 (interactive) | |
1386 (rmail-expunge) | |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1387 (set-buffer rmail-buffer) |
5860
ba1ff614b8f2
(rmail-expunge-and-save): Mark summary buffer as unmodified.
Karl Heuer <kwzh@gnu.org>
parents:
5850
diff
changeset
|
1388 (save-buffer) |
ba1ff614b8f2
(rmail-expunge-and-save): Mark summary buffer as unmodified.
Karl Heuer <kwzh@gnu.org>
parents:
5850
diff
changeset
|
1389 (if (rmail-summary-exists) |
ba1ff614b8f2
(rmail-expunge-and-save): Mark summary buffer as unmodified.
Karl Heuer <kwzh@gnu.org>
parents:
5850
diff
changeset
|
1390 (rmail-select-summary (set-buffer-modified-p nil)))) |
270 | 1391 |
1392 (defun rmail-quit () | |
24110
ec89235ef2a6
(rmail-quit): run `rmail-quit-hook'.
Richard M. Stallman <rms@gnu.org>
parents:
23969
diff
changeset
|
1393 "Quit out of RMAIL. |
ec89235ef2a6
(rmail-quit): run `rmail-quit-hook'.
Richard M. Stallman <rms@gnu.org>
parents:
23969
diff
changeset
|
1394 Hook `rmail-quit-hook' is run after expunging." |
270 | 1395 (interactive) |
1396 (rmail-expunge-and-save) | |
24110
ec89235ef2a6
(rmail-quit): run `rmail-quit-hook'.
Richard M. Stallman <rms@gnu.org>
parents:
23969
diff
changeset
|
1397 (when (boundp 'rmail-quit-hook) |
ec89235ef2a6
(rmail-quit): run `rmail-quit-hook'.
Richard M. Stallman <rms@gnu.org>
parents:
23969
diff
changeset
|
1398 (run-hooks 'rmail-quit-hook)) |
270 | 1399 ;; Don't switch to the summary buffer even if it was recently visible. |
21100
79e564f91938
(rmail-next-same-subject): Ignore leading and
Richard M. Stallman <rms@gnu.org>
parents:
20984
diff
changeset
|
1400 (when rmail-summary-buffer |
79e564f91938
(rmail-next-same-subject): Ignore leading and
Richard M. Stallman <rms@gnu.org>
parents:
20984
diff
changeset
|
1401 (replace-buffer-in-windows rmail-summary-buffer) |
79e564f91938
(rmail-next-same-subject): Ignore leading and
Richard M. Stallman <rms@gnu.org>
parents:
20984
diff
changeset
|
1402 (bury-buffer rmail-summary-buffer)) |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1403 (if rmail-enable-mime |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1404 (let ((obuf rmail-buffer) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1405 (ovbuf rmail-view-buffer)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1406 (set-buffer rmail-view-buffer) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1407 (quit-window) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1408 (replace-buffer-in-windows ovbuf) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1409 (replace-buffer-in-windows obuf) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1410 (bury-buffer obuf)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1411 (let ((obuf (current-buffer))) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1412 (quit-window) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1413 (replace-buffer-in-windows obuf)))) |
270 | 1414 |
10970
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1415 (defun rmail-bury () |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1416 "Bury current Rmail buffer and its summary buffer." |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1417 (interactive) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1418 ;; This let var was called rmail-buffer, but that interfered |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1419 ;; with the buffer-local var used in summary buffers. |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1420 (let ((buffer-to-bury (current-buffer))) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1421 (if (rmail-summary-exists) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1422 (let (window) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1423 (while (setq window (get-buffer-window rmail-summary-buffer)) |
21100
79e564f91938
(rmail-next-same-subject): Ignore leading and
Richard M. Stallman <rms@gnu.org>
parents:
20984
diff
changeset
|
1424 (quit-window nil window)) |
10970
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1425 (bury-buffer rmail-summary-buffer))) |
21100
79e564f91938
(rmail-next-same-subject): Ignore leading and
Richard M. Stallman <rms@gnu.org>
parents:
20984
diff
changeset
|
1426 (quit-window))) |
10970
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1427 |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1428 (defun rmail-duplicate-message () |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1429 "Create a duplicated copy of the current message. |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1430 The duplicate copy goes into the Rmail file just after the |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1431 original copy." |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1432 (interactive) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1433 (widen) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1434 (let ((buffer-read-only nil) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1435 (number rmail-current-message) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1436 (string (buffer-substring (rmail-msgbeg rmail-current-message) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1437 (rmail-msgend rmail-current-message)))) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1438 (goto-char (rmail-msgend rmail-current-message)) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1439 (insert string) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1440 (rmail-forget-messages) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1441 (rmail-show-message number) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1442 (message "Message duplicated"))) |
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
1443 |
270 | 1444 ;;;###autoload |
1445 (defun rmail-input (filename) | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1446 "Run Rmail on file FILENAME." |
270 | 1447 (interactive "FRun rmail on RMAIL file: ") |
1448 (rmail filename)) | |
1449 | |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1450 |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1451 ;; This used to scan subdirectories recursively, but someone pointed out |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1452 ;; that if the user wants that, person can put all the files in one dir. |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1453 ;; And the recursive scan was slow. So I took it out. |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1454 ;; rms, Sep 1996. |
8909
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1455 (defun rmail-find-all-files (start) |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1456 "Return list of file in dir START that match `rmail-secondary-file-regexp'." |
8909
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1457 (if (file-accessible-directory-p start) |
9449
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1458 ;; Don't sort here. |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1459 (let* ((case-fold-search t) |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1460 (files (directory-files start t rmail-secondary-file-regexp))) |
9449
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1461 ;; Sort here instead of in directory-files |
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1462 ;; because this list is usually much shorter. |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1463 (sort files 'string<)))) |
7321
f8ee542dbe80
(rmail-input-menu): Don't call expand-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
7298
diff
changeset
|
1464 |
8909
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1465 (defun rmail-list-to-menu (menu-name l action &optional full-name) |
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1466 (let ((menu (make-sparse-keymap menu-name))) |
85186 | 1467 (mapc |
8909
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1468 (function (lambda (item) |
10971
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1469 (let (command) |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1470 (if (consp item) |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1471 (progn |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1472 (setq command |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
1473 (rmail-list-to-menu (car item) (cdr item) |
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
1474 action |
10971
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1475 (if full-name |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1476 (concat full-name "/" |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1477 (car item)) |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1478 (car item)))) |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1479 (setq name (car item))) |
8909
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1480 (progn |
10971
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1481 (setq name item) |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
1482 (setq command |
10971
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1483 (list 'lambda () '(interactive) |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1484 (list action |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
1485 (expand-file-name |
10971
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1486 (if full-name |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1487 (concat full-name "/" item) |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1488 item) |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1489 rmail-secondary-file-directory)))))) |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1490 (define-key menu (vector (intern name)) |
d7f0852f800f
(rmail-list-to-menu): Bind `command' with let.
Richard M. Stallman <rms@gnu.org>
parents:
10970
diff
changeset
|
1491 (cons name command))))) |
9449
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1492 (reverse l)) |
8909
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1493 menu)) |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
1494 |
9449
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1495 ;; This command is always "disabled" when it appears in a menu. |
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1496 (put 'rmail-disable-menu 'menu-enable ''nil) |
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1497 |
8909
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1498 (defun rmail-construct-io-menu () |
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1499 (let ((files (rmail-find-all-files rmail-secondary-file-directory))) |
9449
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1500 (if files |
8909
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1501 (progn |
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1502 (define-key rmail-mode-map [menu-bar classify input-menu] |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
1503 (cons "Input Rmail File" |
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
1504 (rmail-list-to-menu "Input Rmail File" |
9449
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1505 files |
8909
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1506 'rmail-input))) |
d9c10eb46ce9
Build proper keymap for the "Input (menu)" and "Output (menu)" submenus:
Richard M. Stallman <rms@gnu.org>
parents:
8875
diff
changeset
|
1507 (define-key rmail-mode-map [menu-bar classify output-menu] |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
1508 (cons "Output Rmail File" |
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
1509 (rmail-list-to-menu "Output Rmail File" |
9449
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1510 files |
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1511 'rmail-output-to-rmail-file)))) |
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1512 |
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1513 (define-key rmail-mode-map [menu-bar classify input-menu] |
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1514 '("Input Rmail File" . rmail-disable-menu)) |
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1515 (define-key rmail-mode-map [menu-bar classify output-menu] |
d11a719d7bde
(rmail-find-all-files): Fix several errors and make faster.
Richard M. Stallman <rms@gnu.org>
parents:
9431
diff
changeset
|
1516 '("Output Rmail File" . rmail-disable-menu))))) |
6408
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
1517 |
270 | 1518 |
1519 ;;;; *** Rmail input *** | |
1520 | |
86503
2c08ad76fc1f
* progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86440
diff
changeset
|
1521 (declare-function rmail-spam-filter "rmail-spam-filter" (msg)) |
2c08ad76fc1f
* progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86440
diff
changeset
|
1522 (declare-function rmail-summary-goto-msg "rmailsum" (&optional n nowarn skip-rmail)) |
2c08ad76fc1f
* progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86440
diff
changeset
|
1523 (declare-function rmail-summary-mark-undeleted "rmailsum" (n)) |
2c08ad76fc1f
* progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86440
diff
changeset
|
1524 (declare-function rmail-summary-mark-deleted "rmailsum" (&optional n undel)) |
2c08ad76fc1f
* progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86440
diff
changeset
|
1525 (declare-function rfc822-addresses "rfc822" (header-text)) |
2c08ad76fc1f
* progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86440
diff
changeset
|
1526 (declare-function mail-abbrev-make-syntax-table "mailabbrev.el" ()) |
2c08ad76fc1f
* progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86440
diff
changeset
|
1527 (declare-function mail-sendmail-delimit-header "sendmail" ()) |
2c08ad76fc1f
* progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86440
diff
changeset
|
1528 (declare-function mail-header-end "sendmail" ()) |
2c08ad76fc1f
* progmodes/cperl-mode.el (compilation-error-regexp-alist): Pacify
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86440
diff
changeset
|
1529 |
270 | 1530 ;; RLK feature not added in this version: |
1531 ;; argument specifies inbox file or files in various ways. | |
1532 | |
1533 (defun rmail-get-new-mail (&optional file-name) | |
1534 "Move any new mail from this RMAIL file's inbox files. | |
1535 The inbox files can be specified with the file's Mail: option. The | |
1536 variable `rmail-primary-inbox-list' specifies the inboxes for your | |
2423
5dd3b7338f71
(rmail): Don't use mbox as inbox by default.
Richard M. Stallman <rms@gnu.org>
parents:
2076
diff
changeset
|
1537 primary RMAIL file if it has no Mail: option. By default, this is |
5dd3b7338f71
(rmail): Don't use mbox as inbox by default.
Richard M. Stallman <rms@gnu.org>
parents:
2076
diff
changeset
|
1538 your /usr/spool/mail/$USER. |
270 | 1539 |
1540 You can also specify the file to get new mail from. In this case, the | |
1541 file of new mail is not changed or deleted. Noninteractively, you can | |
1542 pass the inbox file name as an argument. Interactively, a prefix | |
8701
f3567d21b4e9
(rmail-get-new-mail): Run rmail-get-new-mail-hook.
Richard M. Stallman <rms@gnu.org>
parents:
8591
diff
changeset
|
1543 argument causes us to read a file name and use that file as the inbox. |
f3567d21b4e9
(rmail-get-new-mail): Run rmail-get-new-mail-hook.
Richard M. Stallman <rms@gnu.org>
parents:
8591
diff
changeset
|
1544 |
16908
fd99785417a5
(rmail-preserve-inbox): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16772
diff
changeset
|
1545 If the variable `rmail-preserve-inbox' is non-nil, new mail will |
fd99785417a5
(rmail-preserve-inbox): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16772
diff
changeset
|
1546 always be left in inbox files rather than deleted. |
fd99785417a5
(rmail-preserve-inbox): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16772
diff
changeset
|
1547 |
10103
efb97e6ec979
(rmail-get-new-mail): Position on first unseen message.
Richard M. Stallman <rms@gnu.org>
parents:
9633
diff
changeset
|
1548 This function runs `rmail-get-new-mail-hook' before saving the updated file. |
efb97e6ec979
(rmail-get-new-mail): Position on first unseen message.
Richard M. Stallman <rms@gnu.org>
parents:
9633
diff
changeset
|
1549 It returns t if it got any new messages." |
270 | 1550 (interactive |
1551 (list (if current-prefix-arg | |
1552 (read-file-name "Get new mail from file: ")))) | |
15549
212868acf99e
(rmail-get-new-mail): Run rmail-before-get-new-mail-hook.
Richard M. Stallman <rms@gnu.org>
parents:
15547
diff
changeset
|
1553 (run-hooks 'rmail-before-get-new-mail-hook) |
11533
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
1554 ;; If the disk file has been changed from under us, |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
1555 ;; revert to it before we get new mail. |
270 | 1556 (or (verify-visited-file-modtime (current-buffer)) |
11533
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
1557 (find-file (buffer-file-name))) |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
1558 (set-buffer rmail-buffer) |
270 | 1559 (rmail-maybe-set-message-counters) |
1560 (widen) | |
1561 ;; Get rid of all undo records for this buffer. | |
1562 (or (eq buffer-undo-list t) | |
1563 (setq buffer-undo-list nil)) | |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1564 (let ((all-files (if file-name (list file-name) |
20053
c315820510ba
(rmail): Avoid showing message twice.
Karl Heuer <kwzh@gnu.org>
parents:
19674
diff
changeset
|
1565 rmail-inbox-list)) |
20943
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
1566 (rmail-enable-multibyte (default-value 'enable-multibyte-characters)) |
20053
c315820510ba
(rmail): Avoid showing message twice.
Karl Heuer <kwzh@gnu.org>
parents:
19674
diff
changeset
|
1567 found) |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1568 (unwind-protect |
20053
c315820510ba
(rmail): Avoid showing message twice.
Karl Heuer <kwzh@gnu.org>
parents:
19674
diff
changeset
|
1569 (progn |
16928
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1570 (while all-files |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1571 (let ((opoint (point)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1572 (new-messages 0) |
53598
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1573 (rsf-number-of-spam 0) |
16928
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1574 (delete-files ()) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1575 ;; If buffer has not changed yet, and has not been saved yet, |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1576 ;; don't replace the old backup file now. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1577 (make-backup-files (and make-backup-files (buffer-modified-p))) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1578 (buffer-read-only nil) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1579 ;; Don't make undo records for what we do in getting mail. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1580 (buffer-undo-list t) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1581 success |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1582 ;; Files to insert this time around. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1583 files |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1584 ;; Last names of those files. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1585 file-last-names) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1586 ;; Pull files off all-files onto files |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1587 ;; as long as there is no name conflict. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1588 ;; A conflict happens when two inbox file names |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1589 ;; have the same last component. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1590 (while (and all-files |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1591 (not (member (file-name-nondirectory (car all-files)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1592 file-last-names))) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1593 (setq files (cons (car all-files) files) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1594 file-last-names |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1595 (cons (file-name-nondirectory (car all-files)) files)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1596 (setq all-files (cdr all-files))) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1597 ;; Put them back in their original order. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1598 (setq files (nreverse files)) |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1599 |
16928
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1600 (goto-char (point-max)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1601 (skip-chars-backward " \t\n") ; just in case of brain damage |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1602 (delete-region (point) (point-max)) ; caused by require-final-newline |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1603 (save-excursion |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1604 (save-restriction |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1605 (narrow-to-region (point) (point)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1606 ;; Read in the contents of the inbox files, |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1607 ;; renaming them as necessary, |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1608 ;; and adding to the list of files to delete eventually. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1609 (if file-name |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1610 (rmail-insert-inbox-text files nil) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1611 (setq delete-files (rmail-insert-inbox-text files t))) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1612 ;; Scan the new text and convert each message to babyl format. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1613 (goto-char (point-min)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1614 (unwind-protect |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1615 (save-excursion |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1616 (setq new-messages (rmail-convert-to-babyl-format) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1617 success t)) |
23530
8fd3e2d95a51
(rmail-get-new-mail): Delete garbage in any case.
Richard M. Stallman <rms@gnu.org>
parents:
23378
diff
changeset
|
1618 ;; Try to delete the garbage just inserted. |
8fd3e2d95a51
(rmail-get-new-mail): Delete garbage in any case.
Richard M. Stallman <rms@gnu.org>
parents:
23378
diff
changeset
|
1619 (or success (delete-region (point-min) (point-max))) |
16928
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1620 ;; If we could not convert the file's inboxes, |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1621 ;; rename the files we tried to read |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1622 ;; so we won't over and over again. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1623 (if (and (not file-name) (not success)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1624 (let ((delfiles delete-files) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1625 (count 0)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1626 (while delfiles |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1627 (while (file-exists-p (format "RMAILOSE.%d" count)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1628 (setq count (1+ count))) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1629 (rename-file (car delfiles) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1630 (format "RMAILOSE.%d" count)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1631 (setq delfiles (cdr delfiles)))))) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1632 (or (zerop new-messages) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1633 (let (success) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1634 (widen) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1635 (search-backward "\n\^_" nil t) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1636 (narrow-to-region (point) (point-max)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1637 (goto-char (1+ (point-min))) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1638 (rmail-count-new-messages) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1639 (run-hooks 'rmail-get-new-mail-hook) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1640 (save-buffer))) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1641 ;; Delete the old files, now that babyl file is saved. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1642 (while delete-files |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1643 (condition-case () |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1644 ;; First, try deleting. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1645 (condition-case () |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1646 (delete-file (car delete-files)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1647 (file-error |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1648 ;; If we can't delete it, truncate it. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1649 (write-region (point) (point) (car delete-files)))) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1650 (file-error nil)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1651 (setq delete-files (cdr delete-files))))) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1652 (if (= new-messages 0) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1653 (progn (goto-char opoint) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1654 (if (or file-name rmail-inbox-list) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1655 (message "(No new mail has arrived)"))) |
53598
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1656 ;; check new messages to see if any of them is spam: |
54049
d47fd638cd35
(rmail-get-new-mail): Don't reference
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53967
diff
changeset
|
1657 (if (and (featurep 'rmail-spam-filter) |
d47fd638cd35
(rmail-get-new-mail): Don't reference
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53967
diff
changeset
|
1658 rmail-use-spam-filter) |
53598
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1659 (let* |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1660 ((old-messages (- rmail-total-messages new-messages)) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1661 (rsf-scanned-message-number (1+ old-messages)) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1662 ;; save deletion flags of old messages: vector starts |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1663 ;; at zero (is one longer that no of messages), |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1664 ;; therefore take 1+ old-messages |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1665 (save-deleted |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1666 (substring rmail-deleted-vector 0 (1+ |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1667 old-messages)))) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1668 ;; set all messages to undeleted |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1669 (setq rmail-deleted-vector |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1670 (make-string (1+ rmail-total-messages) ?\ )) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1671 (while (<= rsf-scanned-message-number |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1672 rmail-total-messages) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1673 (progn |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1674 (if (not (rmail-spam-filter rsf-scanned-message-number)) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1675 (progn (setq rsf-number-of-spam (1+ rsf-number-of-spam))) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1676 ) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1677 (setq rsf-scanned-message-number (1+ rsf-scanned-message-number)) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1678 )) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1679 (if (> rsf-number-of-spam 0) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1680 (progn |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1681 (when (rmail-expunge-confirmed) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1682 (rmail-only-expunge t)) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1683 )) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1684 (setq rmail-deleted-vector |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1685 (concat |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1686 save-deleted |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1687 (make-string (- rmail-total-messages old-messages) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1688 ?\ ))) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1689 )) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1690 (if (rmail-summary-exists) |
16928
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1691 (rmail-select-summary |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1692 (rmail-update-summary))) |
53598
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1693 (message "%d new message%s read%s" |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1694 new-messages (if (= 1 new-messages) "" "s") |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1695 ;; print out a message on number of spam messages found: |
54049
d47fd638cd35
(rmail-get-new-mail): Don't reference
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53967
diff
changeset
|
1696 (if (and (featurep 'rmail-spam-filter) |
d47fd638cd35
(rmail-get-new-mail): Don't reference
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53967
diff
changeset
|
1697 rmail-use-spam-filter |
d47fd638cd35
(rmail-get-new-mail): Don't reference
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53967
diff
changeset
|
1698 (> rsf-number-of-spam 0)) |
72721
7d4fe4b4afc9
(rmail-get-new-mail): Say whether all msgs are spam.
Richard M. Stallman <rms@gnu.org>
parents:
70771
diff
changeset
|
1699 (cond ((= 1 new-messages) |
7d4fe4b4afc9
(rmail-get-new-mail): Say whether all msgs are spam.
Richard M. Stallman <rms@gnu.org>
parents:
70771
diff
changeset
|
1700 ", and appears to be spam") |
7d4fe4b4afc9
(rmail-get-new-mail): Say whether all msgs are spam.
Richard M. Stallman <rms@gnu.org>
parents:
70771
diff
changeset
|
1701 ((= rsf-number-of-spam new-messages) |
7d4fe4b4afc9
(rmail-get-new-mail): Say whether all msgs are spam.
Richard M. Stallman <rms@gnu.org>
parents:
70771
diff
changeset
|
1702 ", and all appear to be spam") |
7d4fe4b4afc9
(rmail-get-new-mail): Say whether all msgs are spam.
Richard M. Stallman <rms@gnu.org>
parents:
70771
diff
changeset
|
1703 ((> rsf-number-of-spam 1) |
7d4fe4b4afc9
(rmail-get-new-mail): Say whether all msgs are spam.
Richard M. Stallman <rms@gnu.org>
parents:
70771
diff
changeset
|
1704 (format ", and %d appear to be spam" |
7d4fe4b4afc9
(rmail-get-new-mail): Say whether all msgs are spam.
Richard M. Stallman <rms@gnu.org>
parents:
70771
diff
changeset
|
1705 rsf-number-of-spam)) |
7d4fe4b4afc9
(rmail-get-new-mail): Say whether all msgs are spam.
Richard M. Stallman <rms@gnu.org>
parents:
70771
diff
changeset
|
1706 (t |
7d4fe4b4afc9
(rmail-get-new-mail): Say whether all msgs are spam.
Richard M. Stallman <rms@gnu.org>
parents:
70771
diff
changeset
|
1707 ", and 1 appears to be spam")) |
53598
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1708 "")) |
54049
d47fd638cd35
(rmail-get-new-mail): Don't reference
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53967
diff
changeset
|
1709 (if (and (featurep 'rmail-spam-filter) |
d47fd638cd35
(rmail-get-new-mail): Don't reference
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53967
diff
changeset
|
1710 rmail-use-spam-filter |
d47fd638cd35
(rmail-get-new-mail): Don't reference
Eli Zaretskii <eliz@is.elta.co.il>
parents:
53967
diff
changeset
|
1711 (> rsf-number-of-spam 0)) |
58184
022dc2ba2c77
(rmail-get-new-mail): Use the renamed variables `rsf-beep' and
Eli Zaretskii <eliz@gnu.org>
parents:
56521
diff
changeset
|
1712 (progn (if rsf-beep (beep t)) |
022dc2ba2c77
(rmail-get-new-mail): Use the renamed variables `rsf-beep' and
Eli Zaretskii <eliz@gnu.org>
parents:
56521
diff
changeset
|
1713 (sleep-for rsf-sleep-after-message))) |
53598
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
1714 |
16928
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1715 ;; Move to the first new message |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1716 ;; unless we have other unseen messages before it. |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1717 (rmail-show-message (rmail-first-unseen-message)) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1718 (run-hooks 'rmail-after-get-new-mail-hook) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1719 (setq found t)))) |
28186ed53849
(rmail-get-new-mail): Fix return value to match doc.
Karl Heuer <kwzh@gnu.org>
parents:
16908
diff
changeset
|
1720 found) |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1721 ;; Don't leave the buffer screwed up if we get a disk-full error. |
20053
c315820510ba
(rmail): Avoid showing message twice.
Karl Heuer <kwzh@gnu.org>
parents:
19674
diff
changeset
|
1722 (or found (rmail-show-message))))) |
270 | 1723 |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1724 (defun rmail-parse-url (file) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1725 "Parse the supplied URL. Return (list MAILBOX-NAME REMOTE PASSWORD GOT-PASSWORD) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1726 WHERE MAILBOX-NAME is the name of the mailbox suitable as argument to the |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1727 actual version of `movemail', REMOTE is non-nil if MAILBOX-NAME refers to |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1728 a remote mailbox, PASSWORD is the password if it should be |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1729 supplied as a separate argument to `movemail' or nil otherwise, GOT-PASSWORD |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1730 is non-nil if the user has supplied the password interactively. |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1731 " |
61223
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1732 (cond |
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1733 ((string-match "^\\([^:]+\\)://\\(\\([^:@]+\\)\\(:\\([^@]+\\)\\)?@\\)?.*" file) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59561
diff
changeset
|
1734 (let (got-password supplied-password |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1735 (proto (match-string 1 file)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1736 (user (match-string 3 file)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1737 (pass (match-string 5 file)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1738 (host (substring file (or (match-end 2) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1739 (+ 3 (match-end 1)))))) |
64754
fafd692d1e40
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64177
diff
changeset
|
1740 |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1741 (if (not pass) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1742 (when rmail-remote-password-required |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1743 (setq got-password (not (rmail-have-password))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1744 (setq supplied-password (rmail-get-remote-password |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1745 (string-equal proto "imap"))))) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59561
diff
changeset
|
1746 |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1747 (if (rmail-movemail-variant-p 'emacs) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1748 (if (string-equal proto "pop") |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1749 (list (concat "po:" user ":" host) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1750 t |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1751 (or pass supplied-password) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1752 got-password) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1753 (error "Emacs movemail does not support %s protocol" proto)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1754 (list file |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1755 (or (string-equal proto "pop") (string-equal proto "imap")) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1756 supplied-password |
61223
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1757 got-password)))) |
64754
fafd692d1e40
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64177
diff
changeset
|
1758 |
61223
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1759 ((string-match "^po:\\([^:]+\\)\\(:\\(.*\\)\\)?" file) |
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1760 (let (got-password supplied-password |
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1761 (proto "pop") |
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1762 (user (match-string 1 file)) |
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1763 (host (match-string 3 file))) |
64754
fafd692d1e40
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64177
diff
changeset
|
1764 |
61223
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1765 (when rmail-remote-password-required |
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1766 (setq got-password (not (rmail-have-password))) |
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1767 (setq supplied-password (rmail-get-remote-password nil))) |
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1768 |
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1769 (list file "pop" supplied-password got-password))) |
64754
fafd692d1e40
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64177
diff
changeset
|
1770 |
61223
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1771 (t |
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1772 (list file nil nil nil)))) |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1773 |
270 | 1774 (defun rmail-insert-inbox-text (files renamep) |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1775 ;; Detect a locked file now, so that we avoid moving mail |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1776 ;; out of the real inbox file. (That could scare people.) |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1777 (or (memq (file-locked-p buffer-file-name) '(nil t)) |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1778 (error "RMAIL file %s is locked" |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1779 (file-name-nondirectory buffer-file-name))) |
22838
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
1780 (let (file tofile delete-files movemail popmail got-password password) |
270 | 1781 (while files |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1782 ;; Handle remote mailbox names specially; don't expand as filenames |
24220
33f8216be2f1
(rmail-insert-inbox-text): Handle POP mailboxes
Andrew Innes <andrewi@gnu.org>
parents:
24209
diff
changeset
|
1783 ;; in case the userid contains a directory separator. |
33f8216be2f1
(rmail-insert-inbox-text): Handle POP mailboxes
Andrew Innes <andrewi@gnu.org>
parents:
24209
diff
changeset
|
1784 (setq file (car files)) |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1785 (let ((url-data (rmail-parse-url file))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1786 (setq file (nth 0 url-data)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1787 (setq popmail (nth 1 url-data)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1788 (setq password (nth 2 url-data)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1789 (setq got-password (nth 3 url-data))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1790 |
24220
33f8216be2f1
(rmail-insert-inbox-text): Handle POP mailboxes
Andrew Innes <andrewi@gnu.org>
parents:
24209
diff
changeset
|
1791 (if popmail |
33f8216be2f1
(rmail-insert-inbox-text): Handle POP mailboxes
Andrew Innes <andrewi@gnu.org>
parents:
24209
diff
changeset
|
1792 (setq renamep t) |
33f8216be2f1
(rmail-insert-inbox-text): Handle POP mailboxes
Andrew Innes <andrewi@gnu.org>
parents:
24209
diff
changeset
|
1793 (setq file (file-truename |
36830
7c77da3d3841
(rmail-insert-inbox-text): Call expand-file-name before
Kenichi Handa <handa@m17n.org>
parents:
36645
diff
changeset
|
1794 (substitute-in-file-name (expand-file-name file))))) |
24220
33f8216be2f1
(rmail-insert-inbox-text): Handle POP mailboxes
Andrew Innes <andrewi@gnu.org>
parents:
24209
diff
changeset
|
1795 (setq tofile (expand-file-name |
12650
6f4785fee5cc
(rmail-insert-inbox-text): Always use movemail when renaming a file.
Richard M. Stallman <rms@gnu.org>
parents:
12447
diff
changeset
|
1796 ;; Generate name to move to from inbox name, |
6f4785fee5cc
(rmail-insert-inbox-text): Always use movemail when renaming a file.
Richard M. Stallman <rms@gnu.org>
parents:
12447
diff
changeset
|
1797 ;; in case of multiple inboxes that need moving. |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1798 (concat ".newmail-" |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59561
diff
changeset
|
1799 (file-name-nondirectory |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1800 (if (memq system-type '(windows-nt cygwin)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1801 ;; cannot have "po:" in file name |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1802 (substring file 3) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1803 file))) |
12650
6f4785fee5cc
(rmail-insert-inbox-text): Always use movemail when renaming a file.
Richard M. Stallman <rms@gnu.org>
parents:
12447
diff
changeset
|
1804 ;; Use the directory of this rmail file |
6f4785fee5cc
(rmail-insert-inbox-text): Always use movemail when renaming a file.
Richard M. Stallman <rms@gnu.org>
parents:
12447
diff
changeset
|
1805 ;; because it's a nuisance to use the homedir |
6f4785fee5cc
(rmail-insert-inbox-text): Always use movemail when renaming a file.
Richard M. Stallman <rms@gnu.org>
parents:
12447
diff
changeset
|
1806 ;; if that is on a full disk and this rmail |
6f4785fee5cc
(rmail-insert-inbox-text): Always use movemail when renaming a file.
Richard M. Stallman <rms@gnu.org>
parents:
12447
diff
changeset
|
1807 ;; file isn't. |
6f4785fee5cc
(rmail-insert-inbox-text): Always use movemail when renaming a file.
Richard M. Stallman <rms@gnu.org>
parents:
12447
diff
changeset
|
1808 (file-name-directory |
6f4785fee5cc
(rmail-insert-inbox-text): Always use movemail when renaming a file.
Richard M. Stallman <rms@gnu.org>
parents:
12447
diff
changeset
|
1809 (expand-file-name buffer-file-name)))) |
6f4785fee5cc
(rmail-insert-inbox-text): Always use movemail when renaming a file.
Richard M. Stallman <rms@gnu.org>
parents:
12447
diff
changeset
|
1810 ;; Always use movemail to rename the file, |
6f4785fee5cc
(rmail-insert-inbox-text): Always use movemail when renaming a file.
Richard M. Stallman <rms@gnu.org>
parents:
12447
diff
changeset
|
1811 ;; since there can be mailboxes in various directories. |
61223
cf375e6ff77b
(rmail-parse-url): Bugfix. Parse traditional mailbox specifications
Eli Zaretskii <eliz@gnu.org>
parents:
60692
diff
changeset
|
1812 (if (not popmail) |
270 | 1813 (progn |
1814 ;; On some systems, /usr/spool/mail/foo is a directory | |
1815 ;; and the actual inbox is /usr/spool/mail/foo/foo. | |
1816 (if (file-directory-p file) | |
5913
3d155c2636bf
(rmail-variables, rmail-insert-inbox-text): Change user-original-login-name to
Karl Heuer <kwzh@gnu.org>
parents:
5860
diff
changeset
|
1817 (setq file (expand-file-name (user-login-name) |
270 | 1818 file))))) |
11452
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
1819 (cond (popmail |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1820 (message "Getting mail from the remote server ...")) |
11452
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
1821 ((and (file-exists-p tofile) |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
1822 (/= 0 (nth 7 (file-attributes tofile)))) |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
1823 (message "Getting mail from %s..." tofile)) |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
1824 ((and (file-exists-p file) |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
1825 (/= 0 (nth 7 (file-attributes file)))) |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
1826 (message "Getting mail from %s..." file))) |
270 | 1827 ;; Set TOFILE if have not already done so, and |
1828 ;; rename or copy the file FILE to TOFILE if and as appropriate. | |
1829 (cond ((not renamep) | |
1830 (setq tofile file)) | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1831 ((or (file-exists-p tofile) (and (not popmail) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
1832 (not (file-exists-p file)))) |
270 | 1833 nil) |
1834 (t | |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1835 (with-temp-buffer |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1836 (let ((errors (current-buffer))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1837 (buffer-disable-undo errors) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1838 (let ((args |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1839 (append |
78605
58298f7fd671
(rmail-movemail-variant-p): Call on load to set movemail related variables.
Glenn Morris <rgm@gnu.org>
parents:
78477
diff
changeset
|
1840 (list rmail-movemail-program nil errors nil) |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1841 (if rmail-preserve-inbox |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1842 (list "-p") |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1843 nil) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1844 (if (rmail-movemail-variant-p 'mailutils) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1845 (append (list "--emacs") rmail-movemail-flags) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1846 rmail-movemail-flags) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1847 (list file tofile) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1848 (if password (list password) nil)))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1849 (apply 'call-process args)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1850 (if (not (buffer-modified-p errors)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1851 ;; No output => movemail won |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1852 nil |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1853 (set-buffer errors) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1854 (subst-char-in-region (point-min) (point-max) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1855 ?\n ?\ ) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1856 (goto-char (point-max)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1857 (skip-chars-backward " \t") |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1858 (delete-region (point) (point-max)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1859 (goto-char (point-min)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1860 (if (looking-at "movemail: ") |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1861 (delete-region (point-min) (match-end 0))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1862 (beep t) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1863 ;; If we just read the password, most likely it is |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1864 ;; wrong. Otherwise, see if there is a specific |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1865 ;; reason to think that the problem is a wrong passwd. |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1866 (if (or got-password |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1867 (re-search-forward rmail-remote-password-error |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1868 nil t)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1869 (rmail-set-remote-password nil)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1870 |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1871 ;; If using Mailutils, remove initial error code |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1872 ;; abbreviation |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1873 (when (rmail-movemail-variant-p 'mailutils) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1874 (goto-char (point-min)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1875 (when (looking-at "[A-Z][A-Z0-9_]*:") |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1876 (delete-region (point-min) (match-end 0)))) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59561
diff
changeset
|
1877 |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1878 (message "movemail: %s" |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1879 (buffer-substring (point-min) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1880 (point-max))) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59561
diff
changeset
|
1881 |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1882 (sit-for 3) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
1883 nil))))) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59561
diff
changeset
|
1884 |
270 | 1885 ;; At this point, TOFILE contains the name to read: |
1886 ;; Either the alternate name (if we renamed) | |
1887 ;; or the actual inbox (if not renaming). | |
1888 (if (file-exists-p tofile) | |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
1889 (let ((coding-system-for-read 'no-conversion) |
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
1890 size) |
270 | 1891 (goto-char (point-max)) |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
1892 (setq size (nth 1 (insert-file-contents tofile))) |
270 | 1893 (goto-char (point-max)) |
1894 (or (= (preceding-char) ?\n) | |
1895 (zerop size) | |
1896 (insert ?\n)) | |
16908
fd99785417a5
(rmail-preserve-inbox): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16772
diff
changeset
|
1897 (if (not (and rmail-preserve-inbox (string= file tofile))) |
fd99785417a5
(rmail-preserve-inbox): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16772
diff
changeset
|
1898 (setq delete-files (cons tofile delete-files))))) |
270 | 1899 (message "") |
1900 (setq files (cdr files))) | |
1901 delete-files)) | |
1902 | |
24209
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
1903 ;; Decode the region specified by FROM and TO by CODING. |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
1904 ;; If CODING is nil or an invalid coding system, decode by `undecided'. |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
1905 (defun rmail-decode-region (from to coding) |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
1906 (if (or (not coding) (not (coding-system-p coding))) |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
1907 (setq coding 'undecided)) |
55114
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
1908 ;; Use -dos decoding, to remove ^M characters left from base64 or |
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
1909 ;; rogue qp-encoded text. |
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
1910 (decode-coding-region from to |
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
1911 (coding-system-change-eol-conversion coding 1)) |
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
1912 ;; Don't reveal the fact we used -dos decoding, as users generally |
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
1913 ;; will not expect the RMAIL buffer to use DOS EOL format. |
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
1914 (setq buffer-file-coding-system |
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
1915 (setq last-coding-system-used |
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
1916 (coding-system-change-eol-conversion coding 0)))) |
24209
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
1917 |
270 | 1918 ;; the rmail-break-forwarded-messages feature is not implemented |
1919 (defun rmail-convert-to-babyl-format () | |
1920 (let ((count 0) start | |
402
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1921 (case-fold-search nil) |
72721
7d4fe4b4afc9
(rmail-get-new-mail): Say whether all msgs are spam.
Richard M. Stallman <rms@gnu.org>
parents:
70771
diff
changeset
|
1922 (buffer-undo-list t) |
402
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1923 (invalid-input-resync |
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1924 (function (lambda () |
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1925 (message "Invalid Babyl format in inbox!") |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
1926 (sit-for 3) |
402
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1927 ;; Try to get back in sync with a real message. |
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1928 (if (re-search-forward |
18091
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
1929 (concat rmail-mmdf-delim1 "\\|^From") nil t) |
402
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1930 (beginning-of-line) |
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1931 (goto-char (point-max))))))) |
270 | 1932 (goto-char (point-min)) |
1933 (save-restriction | |
1934 (while (not (eobp)) | |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
1935 (setq start (point)) |
87734
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1936 (cond ((looking-at "BABYL OPTIONS:") ;Babyl header |
402
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1937 (if (search-forward "\n\^_" nil t) |
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1938 ;; If we find the proper terminator, delete through there. |
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1939 (delete-region (point-min) (point)) |
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1940 (funcall invalid-input-resync) |
405
698d5d6e8f8b
*** empty log message ***
Michael I. Bushnell <mib@gnu.org>
parents:
403
diff
changeset
|
1941 (delete-region (point-min) (point)))) |
270 | 1942 ;; Babyl format message |
1943 ((looking-at "\^L") | |
1944 (or (search-forward "\n\^_" nil t) | |
402
14485c6a56aa
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
346
diff
changeset
|
1945 (funcall invalid-input-resync)) |
270 | 1946 (setq count (1+ count)) |
1947 ;; Make sure there is no extra white space after the ^_ | |
1948 ;; at the end of the message. | |
1949 ;; Narrowing will make sure that whatever follows the junk | |
1950 ;; will be treated properly. | |
1951 (delete-region (point) | |
1952 (save-excursion | |
1953 (skip-chars-forward " \t\n") | |
1954 (point))) | |
87734
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1955 ;; The following let* form was wrapped in a `save-excursion' |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1956 ;; which in one case caused infinite looping, see: |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1957 ;; http://lists.gnu.org/archive/html/emacs-devel/2008-01/msg00968.html |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1958 ;; Removing that form leaves `point' at the end of the |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1959 ;; region decoded by `rmail-decode-region' which should |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1960 ;; be correct. |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1961 (let* ((header-end |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1962 (progn |
52358
7751260b3358
(rmail-convert-to-babyl-format): Detect
Eli Zaretskii <eliz@gnu.org>
parents:
51003
diff
changeset
|
1963 (save-excursion |
7751260b3358
(rmail-convert-to-babyl-format): Detect
Eli Zaretskii <eliz@gnu.org>
parents:
51003
diff
changeset
|
1964 (goto-char start) |
87734
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1965 (forward-line 1) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1966 (if (looking-at "0") |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1967 (forward-line 1) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1968 (forward-line 2)) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1969 (save-restriction |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1970 (narrow-to-region (point) (point-max)) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1971 (rfc822-goto-eoh) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1972 (point))))) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1973 (case-fold-search t) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1974 (quoted-printable-header-field-end |
52358
7751260b3358
(rmail-convert-to-babyl-format): Detect
Eli Zaretskii <eliz@gnu.org>
parents:
51003
diff
changeset
|
1975 (save-excursion |
87734
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1976 (goto-char start) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1977 (re-search-forward |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1978 "^content-transfer-encoding:\\(\n?[\t ]\\)*quoted-printable\\(\n?[\t ]\\)*" |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1979 header-end t))) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1980 (base64-header-field-end |
53445
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
1981 (save-excursion |
87734
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1982 (goto-char start) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1983 ;; Don't try to decode non-text data. |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1984 (and (re-search-forward |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1985 "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/" |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1986 header-end t) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1987 (goto-char start) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1988 (re-search-forward |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1989 "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*" |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1990 header-end t))))) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1991 (if quoted-printable-header-field-end |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1992 (save-excursion |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1993 (unless |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1994 (mail-unquote-printable-region header-end (point) nil t t) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1995 (message "Malformed MIME quoted-printable message")) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1996 ;; Change "quoted-printable" to "8bit", |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1997 ;; to reflect the decoding we just did. |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1998 (goto-char quoted-printable-header-field-end) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
1999 (delete-region (point) (search-backward ":")) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2000 (insert ": 8bit"))) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2001 (if base64-header-field-end |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2002 (save-excursion |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2003 (when |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2004 (condition-case nil |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2005 (progn |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2006 (base64-decode-region (1+ header-end) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2007 (- (point) 2)) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2008 t) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2009 (error nil)) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2010 ;; Change "base64" to "8bit", to reflect the |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2011 ;; decoding we just did. |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2012 (goto-char base64-header-field-end) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2013 (delete-region (point) (search-backward ":")) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2014 (insert ": 8bit")))) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2015 (setq last-coding-system-used nil) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2016 (or rmail-enable-mime |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2017 (not rmail-enable-multibyte) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2018 (let ((mime-charset |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2019 (if (and rmail-decode-mime-charset |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2020 (save-excursion |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2021 (goto-char start) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2022 (search-forward "\n\n" nil t) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2023 (let ((case-fold-search t)) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2024 (re-search-backward |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2025 rmail-mime-charset-pattern |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2026 start t)))) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2027 (intern (downcase (match-string 1)))))) |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2028 (rmail-decode-region start (point) mime-charset)))) |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2029 ;; Add an X-Coding-System: header if we don't have one. |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2030 (save-excursion |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2031 (goto-char start) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2032 (forward-line 1) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2033 (if (looking-at "0") |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2034 (forward-line 1) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2035 (forward-line 2)) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2036 (or (save-restriction |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2037 (narrow-to-region (point) (point-max)) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2038 (rfc822-goto-eoh) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2039 (goto-char (point-min)) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2040 (re-search-forward "^X-Coding-System:" nil t)) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2041 (insert "X-Coding-System: " |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2042 (symbol-name last-coding-system-used) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2043 "\n"))) |
52864
6cb616f8963b
(rmail-convert-to-babyl-format): Display a message while converting to Babyl.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2044 (narrow-to-region (point) (point-max)) |
6cb616f8963b
(rmail-convert-to-babyl-format): Display a message while converting to Babyl.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2045 (and (= 0 (% count 10)) |
52866
36bc6bf83146
(rmail-convert-to-babyl-format): Fix the last change.
Eli Zaretskii <eliz@gnu.org>
parents:
52864
diff
changeset
|
2046 (message "Converting to Babyl format...%d" count))) |
270 | 2047 ;;*** MMDF format |
2048 ((let ((case-fold-search t)) | |
18091
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
2049 (looking-at rmail-mmdf-delim1)) |
270 | 2050 (let ((case-fold-search t)) |
2051 (replace-match "\^L\n0, unseen,,\n*** EOOH ***\n") | |
18091
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
2052 (re-search-forward rmail-mmdf-delim2 nil t) |
270 | 2053 (replace-match "\^_")) |
2054 (save-excursion | |
2055 (save-restriction | |
2056 (narrow-to-region start (1- (point))) | |
2057 (goto-char (point-min)) | |
87734
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2058 (while (search-forward "\n\^_" nil t) ; single char "\^_" |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2059 (replace-match "\n^_")))) ; 2 chars: "^" and "_" |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2060 (setq last-coding-system-used nil) |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
2061 (or rmail-enable-mime |
20943
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
2062 (not rmail-enable-multibyte) |
17839
b4a81f70d905
Coding system names changed as follows:
Kenichi Handa <handa@m17n.org>
parents:
17822
diff
changeset
|
2063 (decode-coding-region start (point) 'undecided)) |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2064 (save-excursion |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2065 (goto-char start) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2066 (forward-line 3) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2067 (insert "X-Coding-System: " |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2068 (symbol-name last-coding-system-used) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2069 "\n")) |
270 | 2070 (narrow-to-region (point) (point-max)) |
52864
6cb616f8963b
(rmail-convert-to-babyl-format): Display a message while converting to Babyl.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2071 (setq count (1+ count)) |
6cb616f8963b
(rmail-convert-to-babyl-format): Display a message while converting to Babyl.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2072 (and (= 0 (% count 10)) |
52866
36bc6bf83146
(rmail-convert-to-babyl-format): Fix the last change.
Eli Zaretskii <eliz@gnu.org>
parents:
52864
diff
changeset
|
2073 (message "Converting to Babyl format...%d" count))) |
270 | 2074 ;;*** Mail format |
2075 ((looking-at "^From ") | |
2076 (insert "\^L\n0, unseen,,\n*** EOOH ***\n") | |
2077 (rmail-nuke-pinhead-header) | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2078 ;; If this message has a Content-Length field, |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2079 ;; skip to the end of the contents. |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2080 (let* ((header-end (save-excursion |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2081 (and (re-search-forward "\n\n" nil t) |
5466
794b93d511b9
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
5419
diff
changeset
|
2082 (1- (point))))) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2083 (case-fold-search t) |
20273
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2084 (quoted-printable-header-field-end |
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2085 (save-excursion |
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2086 (re-search-forward |
20274 | 2087 "^content-transfer-encoding:\\(\n?[\t ]\\)*quoted-printable\\(\n?[\t ]\\)*" |
20273
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2088 header-end t))) |
52358
7751260b3358
(rmail-convert-to-babyl-format): Detect
Eli Zaretskii <eliz@gnu.org>
parents:
51003
diff
changeset
|
2089 (base64-header-field-end |
76916
31c4e5bc7e74
(rmail-convert-to-babyl-format): Don't try to decode base-64 encoded body
Eli Zaretskii <eliz@gnu.org>
parents:
76121
diff
changeset
|
2090 (and |
31c4e5bc7e74
(rmail-convert-to-babyl-format): Don't try to decode base-64 encoded body
Eli Zaretskii <eliz@gnu.org>
parents:
76121
diff
changeset
|
2091 ;; Don't decode non-text data. |
31c4e5bc7e74
(rmail-convert-to-babyl-format): Don't try to decode base-64 encoded body
Eli Zaretskii <eliz@gnu.org>
parents:
76121
diff
changeset
|
2092 (save-excursion |
31c4e5bc7e74
(rmail-convert-to-babyl-format): Don't try to decode base-64 encoded body
Eli Zaretskii <eliz@gnu.org>
parents:
76121
diff
changeset
|
2093 (re-search-forward |
31c4e5bc7e74
(rmail-convert-to-babyl-format): Don't try to decode base-64 encoded body
Eli Zaretskii <eliz@gnu.org>
parents:
76121
diff
changeset
|
2094 "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/" |
77699
1608babbc1ce
(rmail-convert-to-babyl-format): Check content-transfer-encoding _last_,
Eli Zaretskii <eliz@gnu.org>
parents:
76916
diff
changeset
|
2095 header-end t)) |
1608babbc1ce
(rmail-convert-to-babyl-format): Check content-transfer-encoding _last_,
Eli Zaretskii <eliz@gnu.org>
parents:
76916
diff
changeset
|
2096 (save-excursion |
1608babbc1ce
(rmail-convert-to-babyl-format): Check content-transfer-encoding _last_,
Eli Zaretskii <eliz@gnu.org>
parents:
76916
diff
changeset
|
2097 (re-search-forward |
1608babbc1ce
(rmail-convert-to-babyl-format): Check content-transfer-encoding _last_,
Eli Zaretskii <eliz@gnu.org>
parents:
76916
diff
changeset
|
2098 "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*" |
76916
31c4e5bc7e74
(rmail-convert-to-babyl-format): Don't try to decode base-64 encoded body
Eli Zaretskii <eliz@gnu.org>
parents:
76121
diff
changeset
|
2099 header-end t)))) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2100 (size |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2101 ;; Get the numeric value from the Content-Length field. |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2102 (save-excursion |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2103 ;; Back up to end of prev line, |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2104 ;; in case the Content-Length field comes first. |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2105 (forward-char -1) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2106 (and (search-forward "\ncontent-length: " |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2107 header-end t) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2108 (let ((beg (point)) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2109 (eol (progn (end-of-line) (point)))) |
62402
a7e02ef1e3d6
Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents:
61814
diff
changeset
|
2110 (string-to-number (buffer-substring beg eol))))))) |
6389
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2111 (and size |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2112 (if (and (natnump size) |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2113 (<= (+ header-end size) (point-max)) |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2114 ;; Make sure this would put us at a position |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2115 ;; that we could continue from. |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2116 (save-excursion |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2117 (goto-char (+ header-end size)) |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2118 (skip-chars-forward "\n") |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2119 (or (eobp) |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2120 (and (looking-at "BABYL OPTIONS:") |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2121 (search-forward "\n\^_" nil t)) |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2122 (and (looking-at "\^L") |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2123 (search-forward "\n\^_" nil t)) |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2124 (let ((case-fold-search t)) |
18091
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
2125 (looking-at rmail-mmdf-delim1)) |
6389
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2126 (looking-at "From ")))) |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2127 (goto-char (+ header-end size)) |
9b45e828c2a7
(rmail-convert-to-babyl-format): Check Content-Length field for consistency.
Karl Heuer <kwzh@gnu.org>
parents:
6289
diff
changeset
|
2128 (message "Ignoring invalid Content-Length field") |
20273
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2129 (sit-for 1 0 t))) |
48584
033e93594b23
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
48412
diff
changeset
|
2130 (if (let ((case-fold-search nil)) |
033e93594b23
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
48412
diff
changeset
|
2131 (re-search-forward |
033e93594b23
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
48412
diff
changeset
|
2132 (concat "^[\^_]?\\(" |
033e93594b23
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
48412
diff
changeset
|
2133 rmail-unix-mail-delimiter |
033e93594b23
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
48412
diff
changeset
|
2134 "\\|" |
033e93594b23
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
48412
diff
changeset
|
2135 rmail-mmdf-delim1 "\\|" |
033e93594b23
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
48412
diff
changeset
|
2136 "^BABYL OPTIONS:\\|" |
033e93594b23
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
48412
diff
changeset
|
2137 "\^L\n[01],\\)") nil t)) |
20273
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2138 (goto-char (match-beginning 1)) |
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2139 (goto-char (point-max))) |
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2140 (setq count (1+ count)) |
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2141 (if quoted-printable-header-field-end |
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2142 (save-excursion |
53570
8e83b9e560f0
(rmail-convert-to-babyl-format): Use mail-unquote-printable-region.
Richard M. Stallman <rms@gnu.org>
parents:
53449
diff
changeset
|
2143 (unless |
54262
3d87267bf32d
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
54049
diff
changeset
|
2144 (mail-unquote-printable-region header-end (point) nil t t) |
53570
8e83b9e560f0
(rmail-convert-to-babyl-format): Use mail-unquote-printable-region.
Richard M. Stallman <rms@gnu.org>
parents:
53449
diff
changeset
|
2145 (message "Malformed MIME quoted-printable message")) |
20273
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2146 ;; Change "quoted-printable" to "8bit", |
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2147 ;; to reflect the decoding we just did. |
f451d46a8c68
(rmail-convert-to-babyl-format): If the
Karl Heuer <kwzh@gnu.org>
parents:
20261
diff
changeset
|
2148 (goto-char quoted-printable-header-field-end) |
20274 | 2149 (delete-region (point) (search-backward ":")) |
52358
7751260b3358
(rmail-convert-to-babyl-format): Detect
Eli Zaretskii <eliz@gnu.org>
parents:
51003
diff
changeset
|
2150 (insert ": 8bit"))) |
7751260b3358
(rmail-convert-to-babyl-format): Detect
Eli Zaretskii <eliz@gnu.org>
parents:
51003
diff
changeset
|
2151 (if base64-header-field-end |
53445
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
2152 (save-excursion |
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
2153 (when |
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
2154 (condition-case nil |
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
2155 (progn |
53666
0a56d6bd40da
(rmail-convert-to-babyl-format): Avoid deleting trailing white space
Markus Rost <rost@math.uni-bielefeld.de>
parents:
53598
diff
changeset
|
2156 (base64-decode-region |
0a56d6bd40da
(rmail-convert-to-babyl-format): Avoid deleting trailing white space
Markus Rost <rost@math.uni-bielefeld.de>
parents:
53598
diff
changeset
|
2157 (1+ header-end) |
0a56d6bd40da
(rmail-convert-to-babyl-format): Avoid deleting trailing white space
Markus Rost <rost@math.uni-bielefeld.de>
parents:
53598
diff
changeset
|
2158 (save-excursion |
0a56d6bd40da
(rmail-convert-to-babyl-format): Avoid deleting trailing white space
Markus Rost <rost@math.uni-bielefeld.de>
parents:
53598
diff
changeset
|
2159 ;; Prevent base64-decode-region |
0a56d6bd40da
(rmail-convert-to-babyl-format): Avoid deleting trailing white space
Markus Rost <rost@math.uni-bielefeld.de>
parents:
53598
diff
changeset
|
2160 ;; from removing newline characters. |
0a56d6bd40da
(rmail-convert-to-babyl-format): Avoid deleting trailing white space
Markus Rost <rost@math.uni-bielefeld.de>
parents:
53598
diff
changeset
|
2161 (skip-chars-backward "\n\t ") |
0a56d6bd40da
(rmail-convert-to-babyl-format): Avoid deleting trailing white space
Markus Rost <rost@math.uni-bielefeld.de>
parents:
53598
diff
changeset
|
2162 (point))) |
53445
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
2163 t) |
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
2164 (error nil)) |
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
2165 ;; Change "base64" to "8bit", to reflect the |
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
2166 ;; decoding we just did. |
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
2167 (goto-char base64-header-field-end) |
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
2168 (delete-region (point) (search-backward ":")) |
c6a08cba798f
(rmail-convert-to-babyl-format): Make the code
Eli Zaretskii <eliz@is.elta.co.il>
parents:
52988
diff
changeset
|
2169 (insert ": 8bit"))))) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2170 |
270 | 2171 (save-excursion |
2172 (save-restriction | |
2173 (narrow-to-region start (point)) | |
2174 (goto-char (point-min)) | |
87734
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2175 (while (search-forward "\n\^_" nil t) ; single char |
036570ec4c05
(rmail-convert-to-babyl-format): Remove
Martin Rudalics <rudalics@gmx.at>
parents:
87649
diff
changeset
|
2176 (replace-match "\n^_")))) ; 2 chars: "^" and "_" |
54262
3d87267bf32d
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
54049
diff
changeset
|
2177 ;; This is for malformed messages that don't end in newline. |
3d87267bf32d
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
54049
diff
changeset
|
2178 ;; There shouldn't be any, but some users say occasionally |
3d87267bf32d
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
54049
diff
changeset
|
2179 ;; there are some. |
3d87267bf32d
(rmail-convert-to-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
54049
diff
changeset
|
2180 (or (bolp) (newline)) |
270 | 2181 (insert ?\^_) |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2182 (setq last-coding-system-used nil) |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
2183 (or rmail-enable-mime |
20943
d5e308b7879e
(rmail-enable-multibyte): New variable
Kenichi Handa <handa@m17n.org>
parents:
20854
diff
changeset
|
2184 (not rmail-enable-multibyte) |
24209
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
2185 (let ((mime-charset |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
2186 (if (and rmail-decode-mime-charset |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
2187 (save-excursion |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
2188 (goto-char start) |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
2189 (search-forward "\n\n" nil t) |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
2190 (let ((case-fold-search t)) |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
2191 (re-search-backward |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
2192 rmail-mime-charset-pattern |
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
2193 start t)))) |
70771
4ec3b5b35f6d
(rmail-mime-charset-pattern): Add "?:" before "format".
Eli Zaretskii <eliz@gnu.org>
parents:
70113
diff
changeset
|
2194 (intern (downcase (match-string 1)))))) |
24209
d0853770c8e7
(rmail-decode-mime-charset): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
24110
diff
changeset
|
2195 (rmail-decode-region start (point) mime-charset))) |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2196 (save-excursion |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2197 (goto-char start) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2198 (forward-line 3) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2199 (insert "X-Coding-System: " |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2200 (symbol-name last-coding-system-used) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2201 "\n")) |
52864
6cb616f8963b
(rmail-convert-to-babyl-format): Display a message while converting to Babyl.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2202 (narrow-to-region (point) (point-max)) |
6cb616f8963b
(rmail-convert-to-babyl-format): Display a message while converting to Babyl.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2203 (and (= 0 (% count 10)) |
52866
36bc6bf83146
(rmail-convert-to-babyl-format): Fix the last change.
Eli Zaretskii <eliz@gnu.org>
parents:
52864
diff
changeset
|
2204 (message "Converting to Babyl format...%d" count))) |
270 | 2205 ;; |
2700
9de57e00caf7
(rmail-convert-to-babyl-format): Delete 1 char
Richard M. Stallman <rms@gnu.org>
parents:
2687
diff
changeset
|
2206 ;; This kludge is because some versions of sendmail.el |
9de57e00caf7
(rmail-convert-to-babyl-format): Delete 1 char
Richard M. Stallman <rms@gnu.org>
parents:
2687
diff
changeset
|
2207 ;; insert an extra newline at the beginning that shouldn't |
9de57e00caf7
(rmail-convert-to-babyl-format): Delete 1 char
Richard M. Stallman <rms@gnu.org>
parents:
2687
diff
changeset
|
2208 ;; be there. sendmail.el has been fixed, but old versions |
9de57e00caf7
(rmail-convert-to-babyl-format): Delete 1 char
Richard M. Stallman <rms@gnu.org>
parents:
2687
diff
changeset
|
2209 ;; may still be in use. -- rms, 7 May 1993. |
9de57e00caf7
(rmail-convert-to-babyl-format): Delete 1 char
Richard M. Stallman <rms@gnu.org>
parents:
2687
diff
changeset
|
2210 ((eolp) (delete-char 1)) |
405
698d5d6e8f8b
*** empty log message ***
Michael I. Bushnell <mib@gnu.org>
parents:
403
diff
changeset
|
2211 (t (error "Cannot convert to babyl format"))))) |
72721
7d4fe4b4afc9
(rmail-get-new-mail): Say whether all msgs are spam.
Richard M. Stallman <rms@gnu.org>
parents:
70771
diff
changeset
|
2212 (setq buffer-undo-list nil) |
270 | 2213 count)) |
2214 | |
2215 ;; Delete the "From ..." line, creating various other headers with | |
2216 ;; information from it if they don't already exist. Now puts the | |
4838
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
2217 ;; original line into a mail-from: header line for debugging and for |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
2218 ;; use by the rmail-output function. |
270 | 2219 (defun rmail-nuke-pinhead-header () |
2220 (save-excursion | |
2221 (save-restriction | |
2222 (let ((start (point)) | |
2223 (end (progn | |
2224 (condition-case () | |
2225 (search-forward "\n\n") | |
2226 (error | |
2227 (goto-char (point-max)) | |
2228 (insert "\n\n"))) | |
2229 (point))) | |
2230 has-from has-date) | |
2231 (narrow-to-region start end) | |
2232 (let ((case-fold-search t)) | |
2233 (goto-char start) | |
2234 (setq has-from (search-forward "\nFrom:" nil t)) | |
2235 (goto-char start) | |
2236 (setq has-date (and (search-forward "\nDate:" nil t) (point))) | |
2237 (goto-char start)) | |
2238 (let ((case-fold-search nil)) | |
617 | 2239 (if (re-search-forward (concat "^" rmail-unix-mail-delimiter) nil t) |
270 | 2240 (replace-match |
2241 (concat | |
2242 "Mail-from: \\&" | |
2243 ;; Keep and reformat the date if we don't | |
2244 ;; have a Date: field. | |
2245 (if has-date | |
2246 "" | |
1112 | 2247 (concat |
15534
7f169dd814ce
(rmail-unix-mail-delimiter):
Richard M. Stallman <rms@gnu.org>
parents:
15503
diff
changeset
|
2248 "Date: \\2, \\4 \\3 \\9 \\5 " |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
2249 |
1112 | 2250 ;; The timezone could be matched by group 7 or group 10. |
2251 ;; If neither of them matched, assume EST, since only | |
2252 ;; Easterners would be so sloppy. | |
2253 ;; It's a shame the substitution can't use "\\10". | |
2254 (cond | |
2255 ((/= (match-beginning 7) (match-end 7)) "\\7") | |
2256 ((/= (match-beginning 10) (match-end 10)) | |
2257 (buffer-substring (match-beginning 10) | |
2258 (match-end 10))) | |
2259 (t "EST")) | |
2260 "\n")) | |
270 | 2261 ;; Keep and reformat the sender if we don't |
2262 ;; have a From: field. | |
2263 (if has-from | |
2264 "" | |
4340
505fb5222dea
(rmail-nuke-pinhead-header): Tell replace-match not to alter the case.
Richard M. Stallman <rms@gnu.org>
parents:
4332
diff
changeset
|
2265 "From: \\1\n")) |
505fb5222dea
(rmail-nuke-pinhead-header): Tell replace-match not to alter the case.
Richard M. Stallman <rms@gnu.org>
parents:
4332
diff
changeset
|
2266 t))))))) |
270 | 2267 |
2268 ;;;; *** Rmail Message Formatting and Header Manipulation *** | |
2269 | |
2270 (defun rmail-reformat-message (beg end) | |
2271 (goto-char beg) | |
2272 (forward-line 1) | |
2273 (if (/= (following-char) ?0) | |
38412
253f761ad37b
Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents:
38352
diff
changeset
|
2274 (error "Bad format in RMAIL file")) |
38228
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2275 (let ((inhibit-read-only t) |
270 | 2276 (delta (- (buffer-size) end))) |
2277 (delete-char 1) | |
2278 (insert ?1) | |
2279 (forward-line 1) | |
4340
505fb5222dea
(rmail-nuke-pinhead-header): Tell replace-match not to alter the case.
Richard M. Stallman <rms@gnu.org>
parents:
4332
diff
changeset
|
2280 (let ((case-fold-search t)) |
4838
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
2281 (while (looking-at "Summary-line:\\|Mail-From:") |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
2282 (forward-line 1))) |
270 | 2283 (if (looking-at "\\*\\*\\* EOOH \\*\\*\\*\n") |
2284 (delete-region (point) | |
2285 (progn (forward-line 1) (point)))) | |
2286 (let ((str (buffer-substring (point) | |
2287 (save-excursion (search-forward "\n\n" end 'move) | |
2288 (point))))) | |
2289 (insert str "*** EOOH ***\n") | |
2290 (narrow-to-region (point) (- (buffer-size) delta))) | |
2291 (goto-char (point-min)) | |
9062
1f55bc3c629e
(rmail-reformat-message): Run mail-message-filter
Richard M. Stallman <rms@gnu.org>
parents:
9010
diff
changeset
|
2292 (if rmail-message-filter (funcall rmail-message-filter)) |
11452
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
2293 (if (or rmail-displayed-headers rmail-ignored-headers) |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
2294 (rmail-clear-headers)))) |
270 | 2295 |
9010
9d48b6752dbf
(rmail-retry-failure): Copy the whole block of headers from the message
Richard M. Stallman <rms@gnu.org>
parents:
8963
diff
changeset
|
2296 (defun rmail-clear-headers (&optional ignored-headers) |
11452
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
2297 "Delete all header fields that Rmail should not show. |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
2298 If the optional argument IGNORED-HEADERS is non-nil, |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
2299 delete all header fields whose names match that regexp. |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
2300 Otherwise, if `rmail-displayed-headers' is non-nil, |
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
2301 delete all header fields *except* those whose names match that regexp. |
64972
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
2302 Otherwise, delete all header fields whose names match `rmail-ignored-headers' |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
2303 unless they also match `rmail-nonignored-headers'." |
21195
169fde4a67c1
(rmail-clear-headers): Make sure an empty line
Richard M. Stallman <rms@gnu.org>
parents:
21192
diff
changeset
|
2304 (when (search-forward "\n\n" nil t) |
169fde4a67c1
(rmail-clear-headers): Make sure an empty line
Richard M. Stallman <rms@gnu.org>
parents:
21192
diff
changeset
|
2305 (forward-char -1) |
169fde4a67c1
(rmail-clear-headers): Make sure an empty line
Richard M. Stallman <rms@gnu.org>
parents:
21192
diff
changeset
|
2306 (let ((case-fold-search t) |
169fde4a67c1
(rmail-clear-headers): Make sure an empty line
Richard M. Stallman <rms@gnu.org>
parents:
21192
diff
changeset
|
2307 (buffer-read-only nil)) |
169fde4a67c1
(rmail-clear-headers): Make sure an empty line
Richard M. Stallman <rms@gnu.org>
parents:
21192
diff
changeset
|
2308 (if (and rmail-displayed-headers (null ignored-headers)) |
21293
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2309 (save-restriction |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2310 (narrow-to-region (point-min) (point)) |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2311 (let (lim next) |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2312 (goto-char (point-min)) |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2313 (while (and (not (eobp)) |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2314 (save-excursion |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2315 (if (re-search-forward "\n[^ \t]" nil t) |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2316 (setq lim (match-beginning 0) |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2317 next (1+ lim)) |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2318 (setq lim nil next (point-max))))) |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2319 (if (save-excursion |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2320 (re-search-forward rmail-displayed-headers lim t)) |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2321 (goto-char next) |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2322 (delete-region (point) next)))) |
21de06ed5f74
(rmail-clear-headers): Handle failure to find "\n[^ \t]".
Richard M. Stallman <rms@gnu.org>
parents:
21195
diff
changeset
|
2323 (goto-char (point-min))) |
21195
169fde4a67c1
(rmail-clear-headers): Make sure an empty line
Richard M. Stallman <rms@gnu.org>
parents:
21192
diff
changeset
|
2324 (or ignored-headers (setq ignored-headers rmail-ignored-headers)) |
169fde4a67c1
(rmail-clear-headers): Make sure an empty line
Richard M. Stallman <rms@gnu.org>
parents:
21192
diff
changeset
|
2325 (save-restriction |
169fde4a67c1
(rmail-clear-headers): Make sure an empty line
Richard M. Stallman <rms@gnu.org>
parents:
21192
diff
changeset
|
2326 (narrow-to-region (point-min) (point)) |
64972
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
2327 (goto-char (point-min)) |
30112
d2611d5071d0
(rmail-clear-headers): Don't throw an error
Gerd Moellmann <gerd@gnu.org>
parents:
30100
diff
changeset
|
2328 (while (and ignored-headers |
64972
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
2329 (re-search-forward ignored-headers nil t)) |
21195
169fde4a67c1
(rmail-clear-headers): Make sure an empty line
Richard M. Stallman <rms@gnu.org>
parents:
21192
diff
changeset
|
2330 (beginning-of-line) |
91734
119a8eeef82f
(rmail-nonignored-headers): Allow to be nil.
Bastien Guerry <bzg@altern.org>
parents:
91373
diff
changeset
|
2331 (if (and rmail-nonignored-headers |
119a8eeef82f
(rmail-nonignored-headers): Allow to be nil.
Bastien Guerry <bzg@altern.org>
parents:
91373
diff
changeset
|
2332 (looking-at rmail-nonignored-headers)) |
64972
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
2333 (forward-line 1) |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
2334 (delete-region (point) |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
2335 (save-excursion |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
2336 (if (re-search-forward "\n[^ \t]" nil t) |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
2337 (1- (point)) |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
2338 (point-max))))))))))) |
270 | 2339 |
16772
ce2945525699
(rmail-msg-is-pruned): New function.
Richard M. Stallman <rms@gnu.org>
parents:
16633
diff
changeset
|
2340 (defun rmail-msg-is-pruned () |
270 | 2341 (rmail-maybe-set-message-counters) |
16772
ce2945525699
(rmail-msg-is-pruned): New function.
Richard M. Stallman <rms@gnu.org>
parents:
16633
diff
changeset
|
2342 (save-restriction |
22263
150184345dc7
(rmail-msg-is-pruned): Delete junk from definition.
Richard M. Stallman <rms@gnu.org>
parents:
22201
diff
changeset
|
2343 (narrow-to-region (rmail-msgbeg rmail-current-message) (point-max)) |
16772
ce2945525699
(rmail-msg-is-pruned): New function.
Richard M. Stallman <rms@gnu.org>
parents:
16633
diff
changeset
|
2344 (save-excursion |
22263
150184345dc7
(rmail-msg-is-pruned): Delete junk from definition.
Richard M. Stallman <rms@gnu.org>
parents:
22201
diff
changeset
|
2345 (goto-char (point-min)) |
150184345dc7
(rmail-msg-is-pruned): Delete junk from definition.
Richard M. Stallman <rms@gnu.org>
parents:
22201
diff
changeset
|
2346 (forward-line 1) |
16772
ce2945525699
(rmail-msg-is-pruned): New function.
Richard M. Stallman <rms@gnu.org>
parents:
16633
diff
changeset
|
2347 (= (following-char) ?1)))) |
ce2945525699
(rmail-msg-is-pruned): New function.
Richard M. Stallman <rms@gnu.org>
parents:
16633
diff
changeset
|
2348 |
38191
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2349 (defun rmail-msg-restore-non-pruned-header () |
38228
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2350 (let ((old-point (point)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2351 new-point |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2352 new-start |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2353 (inhibit-read-only t)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2354 (save-excursion |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2355 (narrow-to-region (rmail-msgbeg rmail-current-message) (point-max)) |
38191
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2356 (goto-char (point-min)) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2357 (forward-line 1) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2358 ;; Change 1 to 0. |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2359 (delete-char 1) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2360 (insert ?0) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2361 ;; Insert new EOOH line at the proper place. |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2362 (forward-line 1) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2363 (let ((case-fold-search t)) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2364 (while (looking-at "Summary-Line:\\|Mail-From:") |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2365 (forward-line 1))) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2366 (insert "*** EOOH ***\n") |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2367 (setq new-start (point)) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2368 ;; Delete the old reformatted header. |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2369 (forward-char -1) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2370 (search-forward "\n*** EOOH ***\n") |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2371 (forward-line -1) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2372 (let ((start (point))) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2373 (search-forward "\n\n") |
38228
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2374 (if (and (<= start old-point) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2375 (<= old-point (point))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2376 (setq new-point new-start)) |
38191
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2377 (delete-region start (point))) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2378 ;; Narrow to after the new EOOH line. |
38228
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2379 (narrow-to-region new-start (point-max))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2380 (if new-point |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2381 (goto-char new-point)))) |
38191
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2382 |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2383 (defun rmail-msg-prune-header () |
38228
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2384 (let ((new-point |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2385 (= (point) (point-min)))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2386 (save-excursion |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2387 (narrow-to-region (rmail-msgbeg rmail-current-message) (point-max)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2388 (rmail-reformat-message (point-min) (point-max))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2389 (if new-point |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2390 (goto-char (point-min))))) |
38191
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2391 |
16772
ce2945525699
(rmail-msg-is-pruned): New function.
Richard M. Stallman <rms@gnu.org>
parents:
16633
diff
changeset
|
2392 (defun rmail-toggle-header (&optional arg) |
ce2945525699
(rmail-msg-is-pruned): New function.
Richard M. Stallman <rms@gnu.org>
parents:
16633
diff
changeset
|
2393 "Show original message header if pruned header currently shown, or vice versa. |
ce2945525699
(rmail-msg-is-pruned): New function.
Richard M. Stallman <rms@gnu.org>
parents:
16633
diff
changeset
|
2394 With argument ARG, show the message header pruned if ARG is greater than zero; |
ce2945525699
(rmail-msg-is-pruned): New function.
Richard M. Stallman <rms@gnu.org>
parents:
16633
diff
changeset
|
2395 otherwise, show it in full." |
ce2945525699
(rmail-msg-is-pruned): New function.
Richard M. Stallman <rms@gnu.org>
parents:
16633
diff
changeset
|
2396 (interactive "P") |
38191
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2397 (let* ((pruned (with-current-buffer rmail-buffer |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2398 (rmail-msg-is-pruned))) |
22351
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2399 (prune (if arg |
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2400 (> (prefix-numeric-value arg) 0) |
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2401 (not pruned)))) |
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2402 (if (eq pruned prune) |
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2403 t |
38191
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2404 (set-buffer rmail-buffer) |
22351
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2405 (rmail-maybe-set-message-counters) |
38191
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2406 (if rmail-enable-mime |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2407 (let ((buffer-read-only nil)) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2408 (if pruned |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2409 (rmail-msg-restore-non-pruned-header) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2410 (rmail-msg-prune-header)) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2411 (funcall rmail-show-mime-function)) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2412 (let* ((buffer-read-only nil) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2413 (window (get-buffer-window (current-buffer))) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2414 (at-point-min (= (point) (point-min))) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2415 (all-headers-visible (= (window-start window) (point-min))) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2416 (on-header |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2417 (save-excursion |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2418 (and (not (search-backward "\n\n" nil t)) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2419 (progn |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2420 (end-of-line) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2421 (re-search-backward "^[-A-Za-z0-9]+:" nil t)) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2422 (match-string 0)))) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2423 (old-screen-line |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2424 (rmail-count-screen-lines (window-start window) (point)))) |
22435
98b909125b87
(rmail-toggle-header): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22374
diff
changeset
|
2425 (if pruned |
38191
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2426 (rmail-msg-restore-non-pruned-header) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2427 (rmail-msg-prune-header)) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2428 (cond (at-point-min |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2429 (goto-char (point-min))) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2430 (on-header |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2431 (goto-char (point-min)) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2432 (search-forward "\n\n") |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2433 (or (re-search-backward |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2434 (concat "^" (regexp-quote on-header)) nil t) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2435 (goto-char (point-min)))) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2436 (t |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2437 (save-selected-window |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2438 (select-window window) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2439 (recenter old-screen-line) |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2440 (if (and all-headers-visible |
6eaa11a41f8a
(rmail-msg-restore-non-pruned-header): New
Gerd Moellmann <gerd@gnu.org>
parents:
37956
diff
changeset
|
2441 (not (= (window-start) (point-min)))) |
43124
67ff08aaa0d0
(rmail-toggle-header): Avoid possibly slow call to
Richard M. Stallman <rms@gnu.org>
parents:
43087
diff
changeset
|
2442 (recenter (- (window-height) 2)))))))) |
22351
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2443 (rmail-highlight-headers)))) |
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2444 |
38228
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2445 (defun rmail-narrow-to-non-pruned-header () |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2446 "Narrow to the whole (original) header of the current message." |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2447 (let (start end) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2448 (narrow-to-region (rmail-msgbeg rmail-current-message) (point-max)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2449 (goto-char (point-min)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2450 (forward-line 1) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2451 (if (= (following-char) ?1) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2452 (progn |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2453 (forward-line 1) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2454 (setq start (point)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2455 (search-forward "*** EOOH ***\n") |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2456 (setq end (match-beginning 0))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2457 (forward-line 2) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2458 (setq start (point)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2459 (search-forward "\n\n") |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2460 (setq end (1- (point)))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2461 (narrow-to-region start end) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2462 (goto-char start))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
2463 |
22351
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2464 ;; Lifted from repos-count-screen-lines. |
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2465 ;; Return number of screen lines between START and END. |
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2466 (defun rmail-count-screen-lines (start end) |
22330
6d28f2670ebe
(rmail-toggle-header): Preserve point
Karl Heuer <kwzh@gnu.org>
parents:
22263
diff
changeset
|
2467 (save-excursion |
22351
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2468 (save-restriction |
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2469 (narrow-to-region start end) |
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2470 (goto-char (point-min)) |
fbe69401c609
(rmail-toggle-header): Redo previous change;
Karl Heuer <kwzh@gnu.org>
parents:
22330
diff
changeset
|
2471 (vertical-motion (- (point-max) (point-min)))))) |
270 | 2472 |
2473 ;;;; *** Rmail Attributes and Keywords *** | |
2474 | |
2475 ;; Make a string describing current message's attributes and keywords | |
2476 ;; and set it up as the name of a minor mode | |
2477 ;; so it will appear in the mode line. | |
2478 (defun rmail-display-labels () | |
2479 (let ((blurb "") (beg (point-min-marker)) (end (point-max-marker))) | |
2480 (save-excursion | |
2481 (unwind-protect | |
2482 (progn | |
2483 (widen) | |
2484 (goto-char (rmail-msgbeg rmail-current-message)) | |
2485 (forward-line 1) | |
2486 (if (looking-at "[01],") | |
2487 (progn | |
2488 (narrow-to-region (point) (progn (end-of-line) (point))) | |
2489 ;; Truly valid BABYL format requires a space before each | |
2490 ;; attribute or keyword name. Put them in if missing. | |
2491 (let (buffer-read-only) | |
2492 (goto-char (point-min)) | |
2493 (while (search-forward "," nil t) | |
2494 (or (looking-at "[ ,]") (eobp) | |
2495 (insert " ")))) | |
2496 (goto-char (point-max)) | |
2497 (if (search-backward ",," nil 'move) | |
2498 (progn | |
2499 (if (> (point) (1+ (point-min))) | |
2500 (setq blurb (buffer-substring (+ 1 (point-min)) (point)))) | |
2501 (if (> (- (point-max) (point)) 2) | |
2502 (setq blurb | |
2503 (concat blurb | |
2504 ";" | |
2505 (buffer-substring (+ (point) 3) | |
2506 (1- (point-max))))))))))) | |
2507 ;; Note: we don't use save-restriction because that does not work right | |
2508 ;; if changes are made outside the saved restriction | |
2509 ;; before that restriction is restored. | |
2510 (narrow-to-region beg end) | |
2511 (set-marker beg nil) | |
2512 (set-marker end nil))) | |
2513 (while (string-match " +," blurb) | |
2514 (setq blurb (concat (substring blurb 0 (match-beginning 0)) "," | |
2515 (substring blurb (match-end 0))))) | |
2516 (while (string-match ", +" blurb) | |
2517 (setq blurb (concat (substring blurb 0 (match-beginning 0)) "," | |
2518 (substring blurb (match-end 0))))) | |
2519 (setq mode-line-process | |
11452
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
2520 (format " %d/%d%s" |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2521 rmail-current-message rmail-total-messages blurb)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2522 ;; If rmail-enable-mime is non-nil, we may have to update |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2523 ;; `mode-line-process' of rmail-view-buffer too. |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2524 (if (and rmail-enable-mime |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2525 (not (eq (current-buffer) rmail-view-buffer)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2526 (buffer-live-p rmail-view-buffer)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2527 (let ((mlp mode-line-process)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2528 (with-current-buffer rmail-view-buffer |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2529 (setq mode-line-process mlp)))))) |
270 | 2530 |
2531 ;; Turn an attribute of a message on or off according to STATE. | |
2532 ;; ATTR is the name of the attribute, as a string. | |
2533 ;; MSGNUM is message number to change; nil means current message. | |
2534 (defun rmail-set-attribute (attr state &optional msgnum) | |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2535 (set-buffer rmail-buffer) |
270 | 2536 (let ((omax (point-max-marker)) |
2537 (omin (point-min-marker)) | |
2538 (buffer-read-only nil)) | |
2539 (or msgnum (setq msgnum rmail-current-message)) | |
5047
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2540 (if (> msgnum 0) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2541 (unwind-protect |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2542 (save-excursion |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2543 (widen) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2544 (goto-char (+ 3 (rmail-msgbeg msgnum))) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2545 (let ((curstate |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2546 (not |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2547 (null (search-backward (concat ", " attr ",") |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2548 (prog1 (point) (end-of-line)) t))))) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2549 (or (eq curstate (not (not state))) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2550 (if curstate |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2551 (delete-region (point) (1- (match-end 0))) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2552 (beginning-of-line) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2553 (forward-char 2) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2554 (insert " " attr ",")))) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2555 (if (string= attr "deleted") |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2556 (rmail-set-message-deleted-p msgnum state))) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2557 ;; Note: we don't use save-restriction because that does not work right |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2558 ;; if changes are made outside the saved restriction |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2559 ;; before that restriction is restored. |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2560 (narrow-to-region omin omax) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2561 (set-marker omin nil) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2562 (set-marker omax nil) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2563 (if (= msgnum rmail-current-message) |
1ada11e2d89a
(rmail-set-attribute): Do nothing if MSGNUM is 0.
Richard M. Stallman <rms@gnu.org>
parents:
4969
diff
changeset
|
2564 (rmail-display-labels)))))) |
270 | 2565 |
2566 ;; Return t if the attributes/keywords line of msg number MSG | |
2567 ;; contains a match for the regexp LABELS. | |
2568 (defun rmail-message-labels-p (msg labels) | |
2569 (save-excursion | |
2570 (save-restriction | |
2571 (widen) | |
2572 (goto-char (rmail-msgbeg msg)) | |
2573 (forward-char 3) | |
2574 (re-search-backward labels (prog1 (point) (end-of-line)) t)))) | |
2575 | |
2576 ;;;; *** Rmail Message Selection And Support *** | |
2577 | |
2578 (defun rmail-msgend (n) | |
2579 (marker-position (aref rmail-message-vector (1+ n)))) | |
2580 | |
2581 (defun rmail-msgbeg (n) | |
2582 (marker-position (aref rmail-message-vector n))) | |
2583 | |
2584 (defun rmail-widen-to-current-msgbeg (function) | |
2585 "Call FUNCTION with point at start of internal data of current message. | |
2586 Assumes that bounds were previously narrowed to display the message in Rmail. | |
2587 The bounds are widened enough to move point where desired, then narrowed | |
2588 again afterward. | |
2589 | |
2590 FUNCTION may not change the visible text of the message, but it may | |
2591 change the invisible header text." | |
2592 (save-excursion | |
29301
aec01f0c6729
(rmail-widen-to-current-msgbeg): Use rmail-msgbeg
Gerd Moellmann <gerd@gnu.org>
parents:
29160
diff
changeset
|
2593 (unwind-protect |
aec01f0c6729
(rmail-widen-to-current-msgbeg): Use rmail-msgbeg
Gerd Moellmann <gerd@gnu.org>
parents:
29160
diff
changeset
|
2594 (progn |
aec01f0c6729
(rmail-widen-to-current-msgbeg): Use rmail-msgbeg
Gerd Moellmann <gerd@gnu.org>
parents:
29160
diff
changeset
|
2595 (narrow-to-region (rmail-msgbeg rmail-current-message) |
aec01f0c6729
(rmail-widen-to-current-msgbeg): Use rmail-msgbeg
Gerd Moellmann <gerd@gnu.org>
parents:
29160
diff
changeset
|
2596 (point-max)) |
aec01f0c6729
(rmail-widen-to-current-msgbeg): Use rmail-msgbeg
Gerd Moellmann <gerd@gnu.org>
parents:
29160
diff
changeset
|
2597 (goto-char (point-min)) |
aec01f0c6729
(rmail-widen-to-current-msgbeg): Use rmail-msgbeg
Gerd Moellmann <gerd@gnu.org>
parents:
29160
diff
changeset
|
2598 (funcall function)) |
270 | 2599 ;; Note: we don't use save-restriction because that does not work right |
2600 ;; if changes are made outside the saved restriction | |
2601 ;; before that restriction is restored. | |
29301
aec01f0c6729
(rmail-widen-to-current-msgbeg): Use rmail-msgbeg
Gerd Moellmann <gerd@gnu.org>
parents:
29160
diff
changeset
|
2602 (narrow-to-region (rmail-msgbeg rmail-current-message) |
aec01f0c6729
(rmail-widen-to-current-msgbeg): Use rmail-msgbeg
Gerd Moellmann <gerd@gnu.org>
parents:
29160
diff
changeset
|
2603 (rmail-msgend rmail-current-message))))) |
270 | 2604 |
2605 (defun rmail-forget-messages () | |
2606 (unwind-protect | |
2607 (if (vectorp rmail-message-vector) | |
2608 (let* ((i 0) | |
2609 (v rmail-message-vector) | |
2610 (n (length v))) | |
2611 (while (< i n) | |
2612 (move-marker (aref v i) nil) | |
2613 (setq i (1+ i))))) | |
2614 (setq rmail-message-vector nil) | |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2615 (setq rmail-msgref-vector nil) |
270 | 2616 (setq rmail-deleted-vector nil))) |
2617 | |
2618 (defun rmail-maybe-set-message-counters () | |
2619 (if (not (and rmail-deleted-vector | |
2620 rmail-message-vector | |
2621 rmail-current-message | |
2622 rmail-total-messages)) | |
2623 (rmail-set-message-counters))) | |
2624 | |
2625 (defun rmail-count-new-messages (&optional nomsg) | |
2626 (let* ((case-fold-search nil) | |
2627 (total-messages 0) | |
2628 (messages-head nil) | |
2629 (deleted-head nil)) | |
2630 (or nomsg (message "Counting new messages...")) | |
2631 (goto-char (point-max)) | |
2632 ;; Put at the end of messages-head | |
2633 ;; the entry for message N+1, which marks | |
2634 ;; the end of message N. (N = number of messages). | |
2635 (search-backward "\n\^_") | |
2636 (forward-char 1) | |
2637 (setq messages-head (list (point-marker))) | |
2638 (rmail-set-message-counters-counter (point-min)) | |
2639 (setq rmail-current-message (1+ rmail-total-messages)) | |
2640 (setq rmail-total-messages | |
2641 (+ rmail-total-messages total-messages)) | |
2642 (setq rmail-message-vector | |
2643 (vconcat rmail-message-vector (cdr messages-head))) | |
2644 (aset rmail-message-vector | |
2645 rmail-current-message (car messages-head)) | |
2646 (setq rmail-deleted-vector | |
2647 (concat rmail-deleted-vector deleted-head)) | |
2648 (setq rmail-summary-vector | |
2649 (vconcat rmail-summary-vector (make-vector total-messages nil))) | |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2650 (setq rmail-msgref-vector |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2651 (vconcat rmail-msgref-vector (make-vector total-messages nil))) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2652 ;; Fill in the new elements of rmail-msgref-vector. |
17640
bd31032a2940
(rmail-count-new-messages): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
17630
diff
changeset
|
2653 (let ((i (1+ (- rmail-total-messages total-messages)))) |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2654 (while (<= i rmail-total-messages) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2655 (aset rmail-msgref-vector i (list i)) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2656 (setq i (1+ i)))) |
270 | 2657 (goto-char (point-min)) |
2658 (or nomsg (message "Counting new messages...done (%d)" total-messages)))) | |
2659 | |
2660 (defun rmail-set-message-counters () | |
2661 (rmail-forget-messages) | |
2662 (save-excursion | |
2663 (save-restriction | |
2664 (widen) | |
2665 (let* ((point-save (point)) | |
2666 (total-messages 0) | |
2667 (messages-after-point) | |
2668 (case-fold-search nil) | |
2669 (messages-head nil) | |
2670 (deleted-head nil)) | |
2671 (message "Counting messages...") | |
2672 (goto-char (point-max)) | |
2673 ;; Put at the end of messages-head | |
2674 ;; the entry for message N+1, which marks | |
2675 ;; the end of message N. (N = number of messages). | |
5586
fdf1d3924296
(rmail-bury): Rename local rmail-buffer to buffer-to-bury.
Richard M. Stallman <rms@gnu.org>
parents:
5470
diff
changeset
|
2676 (search-backward "\n\^_" nil t) |
fdf1d3924296
(rmail-bury): Rename local rmail-buffer to buffer-to-bury.
Richard M. Stallman <rms@gnu.org>
parents:
5470
diff
changeset
|
2677 (if (/= (point) (point-max)) (forward-char 1)) |
270 | 2678 (setq messages-head (list (point-marker))) |
2679 (rmail-set-message-counters-counter (min (point) point-save)) | |
2680 (setq messages-after-point total-messages) | |
2681 (rmail-set-message-counters-counter) | |
2682 (setq rmail-total-messages total-messages) | |
2683 (setq rmail-current-message | |
2684 (min total-messages | |
2685 (max 1 (- total-messages messages-after-point)))) | |
2686 (setq rmail-message-vector | |
2687 (apply 'vector (cons (point-min-marker) messages-head)) | |
34055
331be7a21155
(rmail-set-message-counters): Don't use "D"
Gerd Moellmann <gerd@gnu.org>
parents:
33918
diff
changeset
|
2688 rmail-deleted-vector (concat "0" deleted-head) |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2689 rmail-summary-vector (make-vector rmail-total-messages nil) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2690 rmail-msgref-vector (make-vector (1+ rmail-total-messages) nil)) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2691 (let ((i 0)) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2692 (while (<= i rmail-total-messages) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2693 (aset rmail-msgref-vector i (list i)) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
2694 (setq i (1+ i)))) |
270 | 2695 (message "Counting messages...done"))))) |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
2696 |
270 | 2697 (defun rmail-set-message-counters-counter (&optional stop) |
23750
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2698 (let ((start (point)) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2699 next) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2700 (while (search-backward "\n\^_\^L" stop t) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2701 ;; Detect messages that have been added with DOS line endings and |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2702 ;; convert the line endings for such messages. |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2703 (setq next (point)) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2704 (if (looking-at "\n\^_\^L\r\n") |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2705 (let ((buffer-read-only nil) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2706 (buffer-undo t)) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2707 (message "Counting messages...(converting line endings)") |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2708 (save-excursion |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2709 (goto-char start) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2710 (while (search-backward "\r\n" next t) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2711 (delete-char 1))))) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2712 (setq start next) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2713 (forward-char 1) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2714 (setq messages-head (cons (point-marker) messages-head)) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2715 (save-excursion |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2716 (setq deleted-head |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2717 (cons (if (search-backward ", deleted," |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2718 (prog1 (point) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2719 (forward-line 2)) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2720 t) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2721 ?D ?\ ) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2722 deleted-head))) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2723 (if (zerop (% (setq total-messages (1+ total-messages)) 20)) |
15450ece2f24
(rmail-set-message-counters-counter): Detect messages that have been
Andrew Innes <andrewi@gnu.org>
parents:
23740
diff
changeset
|
2724 (message "Counting messages...%d" total-messages))))) |
270 | 2725 |
2726 (defun rmail-beginning-of-message () | |
2727 "Show current message starting from the beginning." | |
2728 (interactive) | |
64928
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2729 (let ((rmail-show-message-hook |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2730 (list (function (lambda () |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2731 (goto-char (point-min))))))) |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2732 (rmail-show-message rmail-current-message))) |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2733 |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2734 (defun rmail-end-of-message () |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2735 "Show bottom of current message." |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2736 (interactive) |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2737 (let ((rmail-show-message-hook |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2738 (list (function (lambda () |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2739 (goto-char (point-max)) |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2740 (recenter (1- (window-height)))))))) |
555661181471
(rmail-end-of-message): New command to go to the
Eli Zaretskii <eliz@gnu.org>
parents:
64897
diff
changeset
|
2741 (rmail-show-message rmail-current-message))) |
270 | 2742 |
60692
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2743 (defun rmail-unknown-mail-followup-to () |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2744 "Handle a \"Mail-Followup-To\" header field with an unknown mailing list. |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2745 Ask the user whether to add that list name to `mail-mailing-lists'." |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2746 (save-restriction |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2747 (rmail-narrow-to-non-pruned-header) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2748 (let ((mail-followup-to (mail-fetch-field "mail-followup-to" nil t))) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2749 (when mail-followup-to |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2750 (let ((addresses |
64754
fafd692d1e40
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64177
diff
changeset
|
2751 (split-string |
60692
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2752 (mail-strip-quoted-names mail-followup-to) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2753 ",[[:space:]]+" t))) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2754 (dolist (addr addresses) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2755 (when (and (not (member addr mail-mailing-lists)) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2756 (not |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2757 ;; taken from rmailsum.el |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2758 (string-match |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2759 (or rmail-user-mail-address-regexp |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2760 (concat "^\\(" |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2761 (regexp-quote (user-login-name)) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2762 "\\($\\|@\\)\\|" |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2763 (regexp-quote |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2764 (or user-mail-address |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2765 (concat (user-login-name) "@" |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2766 (or mail-host-address |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2767 (system-name))))) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2768 "\\>\\)")) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2769 addr)) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2770 (y-or-n-p |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2771 (format "Add `%s' to `mail-mailing-lists'? " |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2772 addr))) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2773 (customize-save-variable 'mail-mailing-lists |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2774 (cons addr mail-mailing-lists))))))))) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2775 |
9431
65e65fe6e8f3
(rmail-show-message): New argument no-summary.
Richard M. Stallman <rms@gnu.org>
parents:
9394
diff
changeset
|
2776 (defun rmail-show-message (&optional n no-summary) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2777 "Show message number N (prefix argument), counting from start of file. |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2778 If summary buffer is currently displayed, update current message there also." |
270 | 2779 (interactive "p") |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
2780 (or (eq major-mode 'rmail-mode) |
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
2781 (switch-to-buffer rmail-buffer)) |
270 | 2782 (rmail-maybe-set-message-counters) |
2783 (widen) | |
2784 (if (zerop rmail-total-messages) | |
2785 (progn (narrow-to-region (point-min) (1- (point-max))) | |
2786 (goto-char (point-min)) | |
2787 (setq mode-line-process nil)) | |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2788 (let (blurb coding-system) |
270 | 2789 (if (not n) |
2790 (setq n rmail-current-message) | |
2791 (cond ((<= n 0) | |
2792 (setq n 1 | |
2793 rmail-current-message 1 | |
2794 blurb "No previous message")) | |
2795 ((> n rmail-total-messages) | |
2796 (setq n rmail-total-messages | |
2797 rmail-current-message rmail-total-messages | |
2798 blurb "No following message")) | |
2799 (t | |
2800 (setq rmail-current-message n)))) | |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
2801 (let ((beg (rmail-msgbeg n))) |
270 | 2802 (goto-char beg) |
2803 (forward-line 1) | |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2804 (save-excursion |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2805 (let ((end (rmail-msgend n))) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2806 (save-restriction |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2807 (if (prog1 (= (following-char) ?0) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2808 (forward-line 2) |
24323
c1bb999de64e
(rmail-show-message): If an unseen message has a
Richard M. Stallman <rms@gnu.org>
parents:
24292
diff
changeset
|
2809 ;; If there's a Summary-line in the (otherwise empty) |
c1bb999de64e
(rmail-show-message): If an unseen message has a
Richard M. Stallman <rms@gnu.org>
parents:
24292
diff
changeset
|
2810 ;; header, we didn't yet get past the EOOH line. |
c1bb999de64e
(rmail-show-message): If an unseen message has a
Richard M. Stallman <rms@gnu.org>
parents:
24292
diff
changeset
|
2811 (if (looking-at "^\\*\\*\\* EOOH \\*\\*\\*\n") |
c1bb999de64e
(rmail-show-message): If an unseen message has a
Richard M. Stallman <rms@gnu.org>
parents:
24292
diff
changeset
|
2812 (forward-line 1)) |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2813 (narrow-to-region (point) end)) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2814 (rfc822-goto-eoh) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2815 (search-forward "\n*** EOOH ***\n" end t)) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2816 (narrow-to-region beg (point)) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2817 (goto-char (point-min)) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2818 (if (re-search-forward "^X-Coding-System: *\\(.*\\)$" nil t) |
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2819 (let ((coding-system (intern (match-string 1)))) |
45218
4c51a687cf5c
(rmail-show-message): Catch error in check-coding-system.
Richard M. Stallman <rms@gnu.org>
parents:
45144
diff
changeset
|
2820 (condition-case nil |
4c51a687cf5c
(rmail-show-message): Catch error in check-coding-system.
Richard M. Stallman <rms@gnu.org>
parents:
45144
diff
changeset
|
2821 (progn |
4c51a687cf5c
(rmail-show-message): Catch error in check-coding-system.
Richard M. Stallman <rms@gnu.org>
parents:
45144
diff
changeset
|
2822 (check-coding-system coding-system) |
4c51a687cf5c
(rmail-show-message): Catch error in check-coding-system.
Richard M. Stallman <rms@gnu.org>
parents:
45144
diff
changeset
|
2823 (setq buffer-file-coding-system coding-system)) |
49082
336bfea9bad4
(rmail-mmdf-delim1, rmail-mmdf-delim2): Doc fixes.
John Paul Wallington <jpw@pobox.com>
parents:
49064
diff
changeset
|
2824 (error |
45218
4c51a687cf5c
(rmail-show-message): Catch error in check-coding-system.
Richard M. Stallman <rms@gnu.org>
parents:
45144
diff
changeset
|
2825 (setq buffer-file-coding-system nil)))) |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2826 (setq buffer-file-coding-system nil))))) |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
2827 ;; Clear the "unseen" attribute when we show a message. |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
2828 (rmail-set-attribute "unseen" nil) |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
2829 (let ((end (rmail-msgend n))) |
22045
2c21cfc02a7f
(rmail-decode-babyl-format):
Richard M. Stallman <rms@gnu.org>
parents:
21864
diff
changeset
|
2830 ;; Reformat the header, or else find the reformatted header. |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
2831 (if (= (following-char) ?0) |
270 | 2832 (rmail-reformat-message beg end) |
16241
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
2833 (search-forward "\n*** EOOH ***\n" end t) |
3c84b8d28902
(rmail-insert-inbox-text): Detect locked
Richard M. Stallman <rms@gnu.org>
parents:
15879
diff
changeset
|
2834 (narrow-to-region (point) end))) |
270 | 2835 (goto-char (point-min)) |
38352
37bce1f38f0a
(rmail-show-message): Show beginning of message in
Gerd Moellmann <gerd@gnu.org>
parents:
38311
diff
changeset
|
2836 (walk-windows |
37bce1f38f0a
(rmail-show-message): Show beginning of message in
Gerd Moellmann <gerd@gnu.org>
parents:
38311
diff
changeset
|
2837 (function (lambda (window) |
37bce1f38f0a
(rmail-show-message): Show beginning of message in
Gerd Moellmann <gerd@gnu.org>
parents:
38311
diff
changeset
|
2838 (if (eq (window-buffer window) (current-buffer)) |
37bce1f38f0a
(rmail-show-message): Show beginning of message in
Gerd Moellmann <gerd@gnu.org>
parents:
38311
diff
changeset
|
2839 (set-window-point window (point))))) |
37bce1f38f0a
(rmail-show-message): Show beginning of message in
Gerd Moellmann <gerd@gnu.org>
parents:
38311
diff
changeset
|
2840 nil t) |
270 | 2841 (rmail-display-labels) |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
2842 (if (eq rmail-enable-mime t) |
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
2843 (funcall rmail-show-mime-function) |
60692
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2844 (setq rmail-view-buffer rmail-buffer)) |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2845 (when mail-mailing-lists |
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
2846 (rmail-unknown-mail-followup-to)) |
7084
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2847 (rmail-highlight-headers) |
7696
ebcefadd2e1b
(rmail-show-message): If transient-mark-mode, deactivate the mark.
Richard M. Stallman <rms@gnu.org>
parents:
7563
diff
changeset
|
2848 (if transient-mark-mode (deactivate-mark)) |
270 | 2849 (run-hooks 'rmail-show-message-hook) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2850 ;; If there is a summary buffer, try to move to this message |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2851 ;; in that buffer. But don't complain if this message |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
2852 ;; is not mentioned in the summary. |
9431
65e65fe6e8f3
(rmail-show-message): New argument no-summary.
Richard M. Stallman <rms@gnu.org>
parents:
9394
diff
changeset
|
2853 ;; Don't do this at all if we were called on behalf |
65e65fe6e8f3
(rmail-show-message): New argument no-summary.
Richard M. Stallman <rms@gnu.org>
parents:
9394
diff
changeset
|
2854 ;; of cursor motion in the summary buffer. |
65e65fe6e8f3
(rmail-show-message): New argument no-summary.
Richard M. Stallman <rms@gnu.org>
parents:
9394
diff
changeset
|
2855 (and (rmail-summary-exists) (not no-summary) |
65e65fe6e8f3
(rmail-show-message): New argument no-summary.
Richard M. Stallman <rms@gnu.org>
parents:
9394
diff
changeset
|
2856 (let ((curr-msg rmail-current-message)) |
65e65fe6e8f3
(rmail-show-message): New argument no-summary.
Richard M. Stallman <rms@gnu.org>
parents:
9394
diff
changeset
|
2857 (rmail-select-summary |
65e65fe6e8f3
(rmail-show-message): New argument no-summary.
Richard M. Stallman <rms@gnu.org>
parents:
9394
diff
changeset
|
2858 (rmail-summary-goto-msg curr-msg t t)))) |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2859 (with-current-buffer rmail-buffer |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
2860 (rmail-auto-file)) |
270 | 2861 (if blurb |
2862 (message blurb)))))) | |
2863 | |
73681
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2864 (defun rmail-redecode-body (coding &optional raw) |
35471
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2865 "Decode the body of the current message using coding system CODING. |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2866 This is useful with mail messages that have malformed or missing |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2867 charset= headers. |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2868 |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2869 This function assumes that the current message is already decoded |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2870 and displayed in the RMAIL buffer, but the coding system used to |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2871 decode it was incorrect. It then encodes the message back to its |
35548
a22e84d6a26b
(rmail-redecode-body): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
35471
diff
changeset
|
2872 original form, and decodes it again, using the coding system CODING. |
35471
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2873 |
73681
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2874 Optional argument RAW, if non-nil, means don't encode the message |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2875 before decoding it with the new CODING. This is useful if the current |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2876 message text was produced by some function which invokes `insert', |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2877 since `insert' leaves unibyte character codes 128 through 255 unconverted |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2878 to multibyte. One example of such a situation is when the text was |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2879 produced by `base64-decode-region'. |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2880 |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2881 Interactively, invoke the function with a prefix argument to set RAW |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2882 non-nil. |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2883 |
35471
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2884 Note that if Emacs erroneously auto-detected one of the iso-2022 |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2885 encodings in the message, this function might fail because the escape |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2886 sequences that switch between character sets and also single-shift and |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2887 locking-shift codes are impossible to recover. This function is meant |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2888 to be used to fix messages encoded with 8-bit encodings, such as |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2889 iso-8859, koi8-r, etc." |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2890 (interactive "zCoding system for re-decoding this message: ") |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2891 (when (not rmail-enable-mime) |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2892 (or (eq major-mode 'rmail-mode) |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2893 (switch-to-buffer rmail-buffer)) |
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2894 (save-excursion |
73681
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2895 (let ((pruned (rmail-msg-is-pruned)) |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2896 (raw (or raw current-prefix-arg))) |
43066
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2897 (unwind-protect |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2898 (let ((msgbeg (rmail-msgbeg rmail-current-message)) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2899 (msgend (rmail-msgend rmail-current-message)) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2900 x-coding-header) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2901 ;; We need the message headers pruned (we later restore |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2902 ;; the pruned stat to what it was, see the end of |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2903 ;; unwind-protect form). |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2904 (or pruned |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2905 (rmail-toggle-header 1)) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2906 (narrow-to-region msgbeg msgend) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2907 (goto-char (point-min)) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2908 (when (search-forward "\n*** EOOH ***\n" (point-max) t) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2909 (narrow-to-region msgbeg (point))) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2910 (goto-char (point-min)) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2911 (if (re-search-forward "^X-Coding-System: *\\(.*\\)$" nil t) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2912 (let ((old-coding (intern (match-string 1))) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2913 (buffer-read-only nil)) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2914 (check-coding-system old-coding) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2915 ;; Make sure the new coding system uses the same EOL |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2916 ;; conversion, to prevent ^M characters from popping |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2917 ;; up all over the place. |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2918 (setq coding |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2919 (coding-system-change-eol-conversion |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2920 coding |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2921 (coding-system-eol-type old-coding))) |
73279
fb0e9cf9f77b
(rmail-redecode-body): If the old encoding is `undecided', call
Eli Zaretskii <eliz@gnu.org>
parents:
72721
diff
changeset
|
2922 ;; If old-coding is `undecided', encode-coding-region |
fb0e9cf9f77b
(rmail-redecode-body): If the old encoding is `undecided', call
Eli Zaretskii <eliz@gnu.org>
parents:
72721
diff
changeset
|
2923 ;; will not encode the text at all. Find a proper |
fb0e9cf9f77b
(rmail-redecode-body): If the old encoding is `undecided', call
Eli Zaretskii <eliz@gnu.org>
parents:
72721
diff
changeset
|
2924 ;; non-trivial encoding to use. |
fb0e9cf9f77b
(rmail-redecode-body): If the old encoding is `undecided', call
Eli Zaretskii <eliz@gnu.org>
parents:
72721
diff
changeset
|
2925 (if (memq (coding-system-base old-coding) '(nil undecided)) |
fb0e9cf9f77b
(rmail-redecode-body): If the old encoding is `undecided', call
Eli Zaretskii <eliz@gnu.org>
parents:
72721
diff
changeset
|
2926 (setq old-coding |
fb0e9cf9f77b
(rmail-redecode-body): If the old encoding is `undecided', call
Eli Zaretskii <eliz@gnu.org>
parents:
72721
diff
changeset
|
2927 (car (find-coding-systems-region msgbeg msgend)))) |
43066
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2928 (setq x-coding-header (point-marker)) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2929 (narrow-to-region msgbeg msgend) |
73681
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2930 (and (null raw) |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2931 ;; If old and new encoding are the same, it |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2932 ;; clearly doesn't make sense to encode. |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2933 (not (coding-system-equal |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2934 (coding-system-base old-coding) |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2935 (coding-system-base coding))) |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2936 ;; If the body includes only eight-bit-* |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2937 ;; characters, encoding might fail, e.g. with |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2938 ;; UTF-8, and isn't needed anyway. |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2939 (> (length (delq 'ascii |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2940 (delq 'eight-bit-graphic |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2941 (delq 'eight-bit-control |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2942 (find-charset-region |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2943 msgbeg msgend))))) |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2944 0) |
e1c32a83bd29
(rmail-redecode-body): New optional argument RAW.
Eli Zaretskii <eliz@gnu.org>
parents:
73281
diff
changeset
|
2945 (encode-coding-region (point) msgend old-coding)) |
43066
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2946 (decode-coding-region (point) msgend coding) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2947 (setq last-coding-system-used coding) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2948 ;; Rewrite the coding-system header according |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2949 ;; to what we did. |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2950 (goto-char x-coding-header) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2951 (delete-region (point) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2952 (save-excursion |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2953 (beginning-of-line) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2954 (point))) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2955 (insert "X-Coding-System: " |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2956 (symbol-name last-coding-system-used)) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2957 (set-marker x-coding-header nil) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2958 (rmail-show-message)) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2959 (error "No X-Coding-System header found"))) |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2960 (or pruned |
5be5677eb18e
(rmail-redecode-body): Prune the headers before
Eli Zaretskii <eliz@gnu.org>
parents:
42659
diff
changeset
|
2961 (rmail-toggle-header 0))))))) |
35471
a06f22cd075b
(rmail-redecode-body): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
34185
diff
changeset
|
2962 |
7084
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2963 ;; Find all occurrences of certain fields, and highlight them. |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2964 (defun rmail-highlight-headers () |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2965 ;; Do this only if the system supports faces. |
8094
d9c6c2429f85
(rmail-highlight-headers): Do nothing if
Richard M. Stallman <rms@gnu.org>
parents:
7955
diff
changeset
|
2966 (if (and (fboundp 'internal-find-face) |
d9c6c2429f85
(rmail-highlight-headers): Do nothing if
Richard M. Stallman <rms@gnu.org>
parents:
7955
diff
changeset
|
2967 rmail-highlighted-headers) |
7084
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2968 (save-excursion |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2969 (search-forward "\n\n" nil 'move) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2970 (save-restriction |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2971 (narrow-to-region (point-min) (point)) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2972 (let ((case-fold-search t) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2973 (inhibit-read-only t) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2974 ;; Highlight with boldface if that is available. |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2975 ;; Otherwise use the `highlight' face. |
91817
f0b22bbb77fb
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
Bastien Guerry <bzg@altern.org>
parents:
91796
diff
changeset
|
2976 (face (or 'rmail-highlight |
8383
d2b1b642f4e6
(rmail-highlighted-face): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8378
diff
changeset
|
2977 (if (face-differs-from-default-p 'bold) |
d2b1b642f4e6
(rmail-highlighted-face): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
8378
diff
changeset
|
2978 'bold 'highlight))) |
7084
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2979 ;; List of overlays to reuse. |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2980 (overlays rmail-overlay-list)) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2981 (goto-char (point-min)) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2982 (while (re-search-forward rmail-highlighted-headers nil t) |
7955
a03d7bdee306
(rmail-highlight-headers): Don't skip newlines, just tab and space.
Richard M. Stallman <rms@gnu.org>
parents:
7696
diff
changeset
|
2983 (skip-chars-forward " \t") |
7084
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2984 (let ((beg (point)) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2985 overlay) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2986 (while (progn (forward-line 1) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2987 (looking-at "[ \t]"))) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2988 ;; Back up over newline, then trailing spaces or tabs |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2989 (forward-char -1) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2990 (while (member (preceding-char) '(? ?\t)) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2991 (forward-char -1)) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2992 (if overlays |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2993 ;; Reuse an overlay we already have. |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2994 (progn |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2995 (setq overlay (car overlays) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2996 overlays (cdr overlays)) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2997 (overlay-put overlay 'face face) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2998 (move-overlay overlay beg (point))) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
2999 ;; Make a new overlay and add it to |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
3000 ;; rmail-overlay-list. |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
3001 (setq overlay (make-overlay beg (point))) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
3002 (overlay-put overlay 'face face) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
3003 (setq rmail-overlay-list |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
3004 (cons overlay rmail-overlay-list)))))))))) |
5ceea5b326b6
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Karl Heuer <kwzh@gnu.org>
parents:
7065
diff
changeset
|
3005 |
29160
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3006 (defun rmail-auto-file () |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3007 "Automatically move a message into a sub-folder based on criteria. |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3008 Called when a new message is displayed." |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3009 (if (or (rmail-message-labels-p rmail-current-message "filed") |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3010 (not (string= (buffer-file-name) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3011 (expand-file-name rmail-file-name)))) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3012 ;; Do nothing if it's already been filed. |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3013 nil |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3014 ;; Find out some basics (common fields) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3015 (let ((from (mail-fetch-field "from")) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3016 (subj (mail-fetch-field "subject")) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3017 (to (concat (mail-fetch-field "to") "," (mail-fetch-field "cc"))) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3018 (d rmail-automatic-folder-directives) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3019 (directive-loop nil) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3020 (folder nil)) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3021 (while d |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3022 (setq folder (car (car d)) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3023 directive-loop (cdr (car d))) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3024 (while (and (car directive-loop) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3025 (let ((f (cond |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3026 ((string= (car directive-loop) "from") from) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3027 ((string= (car directive-loop) "to") to) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3028 ((string= (car directive-loop) "subject") subj) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3029 (t (mail-fetch-field (car directive-loop)))))) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3030 (and f (string-match (car (cdr directive-loop)) f)))) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3031 (setq directive-loop (cdr (cdr directive-loop)))) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3032 ;; If there are no directives left, then it was a complete match. |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3033 (if (null directive-loop) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3034 (if (null folder) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3035 (rmail-delete-forward) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3036 (if (string= "/dev/null" folder) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3037 (rmail-delete-message) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3038 (rmail-output-to-rmail-file folder 1 t) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3039 (setq d nil)))) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3040 (setq d (cdr d)))))) |
998506bd35f3
1999-01-23 Eric M. Ludlam <zappo@ultranet.com>
Dave Love <fx@gnu.org>
parents:
29025
diff
changeset
|
3041 |
270 | 3042 (defun rmail-next-message (n) |
3043 "Show following message whether deleted or not. | |
3044 With prefix arg N, moves forward N messages, or backward if N is negative." | |
3045 (interactive "p") | |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3046 (set-buffer rmail-buffer) |
270 | 3047 (rmail-maybe-set-message-counters) |
3048 (rmail-show-message (+ rmail-current-message n))) | |
3049 | |
3050 (defun rmail-previous-message (n) | |
3051 "Show previous message whether deleted or not. | |
3052 With prefix arg N, moves backward N messages, or forward if N is negative." | |
3053 (interactive "p") | |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
3054 (rmail-next-message (- n))) |
270 | 3055 |
3056 (defun rmail-next-undeleted-message (n) | |
3057 "Show following non-deleted message. | |
3058 With prefix arg N, moves forward N non-deleted messages, | |
4838
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3059 or backward if N is negative. |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3060 |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3061 Returns t if a new message is being shown, nil otherwise." |
270 | 3062 (interactive "p") |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3063 (set-buffer rmail-buffer) |
270 | 3064 (rmail-maybe-set-message-counters) |
3065 (let ((lastwin rmail-current-message) | |
3066 (current rmail-current-message)) | |
3067 (while (and (> n 0) (< current rmail-total-messages)) | |
3068 (setq current (1+ current)) | |
3069 (if (not (rmail-message-deleted-p current)) | |
3070 (setq lastwin current n (1- n)))) | |
3071 (while (and (< n 0) (> current 1)) | |
3072 (setq current (1- current)) | |
3073 (if (not (rmail-message-deleted-p current)) | |
3074 (setq lastwin current n (1+ n)))) | |
3075 (if (/= lastwin rmail-current-message) | |
4838
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3076 (progn (rmail-show-message lastwin) |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3077 t) |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3078 (if (< n 0) |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3079 (message "No previous nondeleted message")) |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3080 (if (> n 0) |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3081 (message "No following nondeleted message")) |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3082 nil))) |
270 | 3083 |
3084 (defun rmail-previous-undeleted-message (n) | |
3085 "Show previous non-deleted message. | |
3086 With prefix argument N, moves backward N non-deleted messages, | |
3087 or forward if N is negative." | |
3088 (interactive "p") | |
3089 (rmail-next-undeleted-message (- n))) | |
3090 | |
3091 (defun rmail-first-message () | |
3092 "Show first message in file." | |
3093 (interactive) | |
3094 (rmail-maybe-set-message-counters) | |
3095 (rmail-show-message 1)) | |
3096 | |
3097 (defun rmail-last-message () | |
3098 "Show last message in file." | |
3099 (interactive) | |
3100 (rmail-maybe-set-message-counters) | |
3101 (rmail-show-message rmail-total-messages)) | |
3102 | |
3103 (defun rmail-what-message () | |
3104 (let ((where (point)) | |
3105 (low 1) | |
3106 (high rmail-total-messages) | |
3107 (mid (/ rmail-total-messages 2))) | |
3108 (while (> (- high low) 1) | |
3109 (if (>= where (rmail-msgbeg mid)) | |
3110 (setq low mid) | |
3111 (setq high mid)) | |
3112 (setq mid (+ low (/ (- high low) 2)))) | |
3113 (if (>= where (rmail-msgbeg high)) high low))) | |
3114 | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3115 (defun rmail-message-recipients-p (msg recipients &optional primary-only) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3116 (save-restriction |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3117 (goto-char (rmail-msgbeg msg)) |
21640
50e05b0adf4a
(rmail-message-regexp-p):
Richard M. Stallman <rms@gnu.org>
parents:
21512
diff
changeset
|
3118 (search-forward "\n*** EOOH ***\n") |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3119 (narrow-to-region (point) (progn (search-forward "\n\n") (point))) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3120 (or (string-match recipients (or (mail-fetch-field "To") "")) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3121 (string-match recipients (or (mail-fetch-field "From") "")) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3122 (if (not primary-only) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3123 (string-match recipients (or (mail-fetch-field "Cc") "")))))) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3124 |
37494
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3125 (defun rmail-message-regexp-p (n regexp) |
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3126 "Return t, if for message number N, regexp REGEXP matches in the header." |
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3127 (let ((beg (rmail-msgbeg n)) |
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3128 (end (rmail-msgend n))) |
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3129 (goto-char beg) |
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3130 (forward-line 1) |
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3131 (save-excursion |
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3132 (save-restriction |
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3133 (if (prog1 (= (following-char) ?0) |
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3134 (forward-line 2) |
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3135 ;; If there's a Summary-line in the (otherwise empty) |
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3136 ;; header, we didn't yet get past the EOOH line. |
37517
cd2d6781a5f8
(rmail-message-regexp-p): Yet another fix.
Gerd Moellmann <gerd@gnu.org>
parents:
37500
diff
changeset
|
3137 (when (looking-at "^\\*\\*\\* EOOH \\*\\*\\*\n") |
cd2d6781a5f8
(rmail-message-regexp-p): Yet another fix.
Gerd Moellmann <gerd@gnu.org>
parents:
37500
diff
changeset
|
3138 (forward-line 1)) |
37500
797a4ab5dbed
(rmail-message-regexp-p): Don't match before
Gerd Moellmann <gerd@gnu.org>
parents:
37494
diff
changeset
|
3139 (setq beg (point)) |
37494
3da588b28890
(rmail-message-regexp-p): Use rfc822-goto-eoh
Gerd Moellmann <gerd@gnu.org>
parents:
36830
diff
changeset
|
3140 (narrow-to-region (point) end)) |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
3141 (progn |
37517
cd2d6781a5f8
(rmail-message-regexp-p): Yet another fix.
Gerd Moellmann <gerd@gnu.org>
parents:
37500
diff
changeset
|
3142 (rfc822-goto-eoh) |
cd2d6781a5f8
(rmail-message-regexp-p): Yet another fix.
Gerd Moellmann <gerd@gnu.org>
parents:
37500
diff
changeset
|
3143 (setq end (point))) |
37500
797a4ab5dbed
(rmail-message-regexp-p): Don't match before
Gerd Moellmann <gerd@gnu.org>
parents:
37494
diff
changeset
|
3144 (setq beg (point)) |
37517
cd2d6781a5f8
(rmail-message-regexp-p): Yet another fix.
Gerd Moellmann <gerd@gnu.org>
parents:
37500
diff
changeset
|
3145 (search-forward "\n*** EOOH ***\n" end t) |
cd2d6781a5f8
(rmail-message-regexp-p): Yet another fix.
Gerd Moellmann <gerd@gnu.org>
parents:
37500
diff
changeset
|
3146 (setq end (1+ (match-beginning 0))))) |
37500
797a4ab5dbed
(rmail-message-regexp-p): Don't match before
Gerd Moellmann <gerd@gnu.org>
parents:
37494
diff
changeset
|
3147 (goto-char beg) |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3148 (if rmail-enable-mime |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3149 (funcall rmail-search-mime-header-function n regexp end) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3150 (re-search-forward regexp end t))))) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3151 |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3152 (defun rmail-search-message (msg regexp) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3153 "Return non-nil, if for message number MSG, regexp REGEXP matches." |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3154 (goto-char (rmail-msgbeg msg)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3155 (if rmail-enable-mime |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3156 (funcall rmail-search-mime-message-function msg regexp) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3157 (re-search-forward regexp (rmail-msgend msg) t))) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3158 |
270 | 3159 (defvar rmail-search-last-regexp nil) |
874
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3160 (defun rmail-search (regexp &optional n) |
13808
308a47d72b19
(rmail-ignored-headers): Add resent-date, nntp-posting-host.
Karl Heuer <kwzh@gnu.org>
parents:
13724
diff
changeset
|
3161 "Show message containing next match for REGEXP (but not the current msg). |
874
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3162 Prefix argument gives repeat count; negative argument means search |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3163 backwards (through earlier messages). |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3164 Interactively, empty argument means use same regexp used last time." |
270 | 3165 (interactive |
3166 (let* ((reversep (< (prefix-numeric-value current-prefix-arg) 0)) | |
3167 (prompt | |
65680
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3168 (concat (if reversep "Reverse " "") "Rmail search (regexp")) |
270 | 3169 regexp) |
65680
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3170 (setq prompt |
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3171 (concat prompt |
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3172 (if rmail-search-last-regexp |
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3173 (concat ", default " |
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3174 rmail-search-last-regexp "): ") |
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3175 "): "))) |
270 | 3176 (setq regexp (read-string prompt)) |
3177 (cond ((not (equal regexp "")) | |
3178 (setq rmail-search-last-regexp regexp)) | |
3179 ((not rmail-search-last-regexp) | |
3180 (error "No previous Rmail search string"))) | |
874
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3181 (list rmail-search-last-regexp |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3182 (prefix-numeric-value current-prefix-arg)))) |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3183 (or n (setq n 1)) |
270 | 3184 (message "%sRmail search for %s..." |
937
0f082d63bfd6
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
874
diff
changeset
|
3185 (if (< n 0) "Reverse " "") |
270 | 3186 regexp) |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3187 (set-buffer rmail-buffer) |
270 | 3188 (rmail-maybe-set-message-counters) |
3189 (let ((omin (point-min)) | |
3190 (omax (point-max)) | |
3191 (opoint (point)) | |
3192 win | |
874
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3193 (reversep (< n 0)) |
270 | 3194 (msg rmail-current-message)) |
3195 (unwind-protect | |
3196 (progn | |
3197 (widen) | |
874
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3198 (while (/= n 0) |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3199 ;; Check messages one by one, advancing message number up or down |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3200 ;; but searching forward through each message. |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3201 (if reversep |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3202 (while (and (null win) (> msg 1)) |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3203 (setq msg (1- msg) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3204 win (rmail-search-message msg regexp))) |
874
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3205 (while (and (null win) (< msg rmail-total-messages)) |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3206 (setq msg (1+ msg) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3207 win (rmail-search-message msg regexp)))) |
937
0f082d63bfd6
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
874
diff
changeset
|
3208 (setq n (+ n (if reversep 1 -1))))) |
270 | 3209 (if win |
3210 (progn | |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3211 (rmail-show-message msg) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3212 ;; Search forward (if this is a normal search) or backward |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3213 ;; (if this is a reverse search) through this message to |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3214 ;; position point. This search may fail because REGEXP |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3215 ;; was found in the hidden portion of this message. In |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3216 ;; that case, move point to the beginning of visible |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3217 ;; portion. |
270 | 3218 (if reversep |
3219 (progn | |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3220 (goto-char (point-max)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3221 (re-search-backward regexp nil 'move)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3222 (goto-char (point-min)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3223 (re-search-forward regexp nil t)) |
270 | 3224 (message "%sRmail search for %s...done" |
3225 (if reversep "Reverse " "") | |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3226 regexp)) |
270 | 3227 (goto-char opoint) |
3228 (narrow-to-region omin omax) | |
3229 (ding) | |
3230 (message "Search failed: %s" regexp))))) | |
3231 | |
874
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3232 (defun rmail-search-backwards (regexp &optional n) |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3233 "Show message containing previous match for REGEXP. |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3234 Prefix argument gives repeat count; negative argument means search |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3235 forward (through later messages). |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3236 Interactively, empty argument means use same regexp used last time." |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3237 (interactive |
937
0f082d63bfd6
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
874
diff
changeset
|
3238 (let* ((reversep (>= (prefix-numeric-value current-prefix-arg) 0)) |
874
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3239 (prompt |
65680
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3240 (concat (if reversep "Reverse " "") "Rmail search (regexp")) |
874
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3241 regexp) |
65680
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3242 (setq prompt |
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3243 (concat prompt |
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3244 (if rmail-search-last-regexp |
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3245 (concat ", default " |
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3246 rmail-search-last-regexp "): ") |
ed770a0a7846
2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents:
65210
diff
changeset
|
3247 "): "))) |
874
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3248 (setq regexp (read-string prompt)) |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3249 (cond ((not (equal regexp "")) |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3250 (setq rmail-search-last-regexp regexp)) |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3251 ((not rmail-search-last-regexp) |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3252 (error "No previous Rmail search string"))) |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3253 (list rmail-search-last-regexp |
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3254 (prefix-numeric-value current-prefix-arg)))) |
12198
74afe5e734a8
(rmail-search-backwards): Default count is 1, not -1.
Karl Heuer <kwzh@gnu.org>
parents:
11552
diff
changeset
|
3255 (rmail-search regexp (- (or n 1)))) |
874
b945f592b94d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
846
diff
changeset
|
3256 |
270 | 3257 ;; Show the first message which has the `unseen' attribute. |
3258 (defun rmail-first-unseen-message () | |
1360
9cb1a4b90b5c
Cleaned up rmail-first-unseen-message.
Joseph Arceneaux <jla@gnu.org>
parents:
1342
diff
changeset
|
3259 (rmail-maybe-set-message-counters) |
270 | 3260 (let ((current 1) |
3261 found) | |
3262 (save-restriction | |
3263 (widen) | |
10191
f81679f84f68
(rmail-first-unseen-message): Fix 1-off error.
Richard M. Stallman <rms@gnu.org>
parents:
10187
diff
changeset
|
3264 (while (and (not found) (<= current rmail-total-messages)) |
270 | 3265 (if (rmail-message-labels-p current ", ?\\(unseen\\),") |
346 | 3266 (setq found current)) |
3267 (setq current (1+ current)))) | |
1342
776d4c59f256
* rmail.el (rmail-first-unseen-message): Don't show the message,
Joseph Arceneaux <jla@gnu.org>
parents:
1267
diff
changeset
|
3268 ;; Let the caller show the message. |
776d4c59f256
* rmail.el (rmail-first-unseen-message): Don't show the message,
Joseph Arceneaux <jla@gnu.org>
parents:
1267
diff
changeset
|
3269 ;; (if found |
776d4c59f256
* rmail.el (rmail-first-unseen-message): Don't show the message,
Joseph Arceneaux <jla@gnu.org>
parents:
1267
diff
changeset
|
3270 ;; (rmail-show-message found)) |
776d4c59f256
* rmail.el (rmail-first-unseen-message): Don't show the message,
Joseph Arceneaux <jla@gnu.org>
parents:
1267
diff
changeset
|
3271 found)) |
10662
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3272 |
68091
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3273 (defun rmail-current-subject () |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3274 "Return the current subject. |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3275 The subject is stripped of leading and trailing whitespace, and |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3276 of typical reply prefixes such as Re:." |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3277 (let ((subject (or (mail-fetch-field "Subject") ""))) |
21100
79e564f91938
(rmail-next-same-subject): Ignore leading and
Richard M. Stallman <rms@gnu.org>
parents:
20984
diff
changeset
|
3278 (if (string-match "\\`[ \t]+" subject) |
79e564f91938
(rmail-next-same-subject): Ignore leading and
Richard M. Stallman <rms@gnu.org>
parents:
20984
diff
changeset
|
3279 (setq subject (substring subject (match-end 0)))) |
68091
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3280 (if (string-match rmail-reply-regexp subject) |
15746
d7a83c7ea12a
(rmail-next-same-subject): Don't set search-regexp
Karl Heuer <kwzh@gnu.org>
parents:
15549
diff
changeset
|
3281 (setq subject (substring subject (match-end 0)))) |
21100
79e564f91938
(rmail-next-same-subject): Ignore leading and
Richard M. Stallman <rms@gnu.org>
parents:
20984
diff
changeset
|
3282 (if (string-match "[ \t]+\\'" subject) |
79e564f91938
(rmail-next-same-subject): Ignore leading and
Richard M. Stallman <rms@gnu.org>
parents:
20984
diff
changeset
|
3283 (setq subject (substring subject 0 (match-beginning 0)))) |
68091
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3284 subject)) |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3285 |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3286 (defun rmail-current-subject-regexp () |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3287 "Return a regular expression matching the current subject. |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3288 The regular expression matches the subject header line of |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3289 messages about the same subject. The subject itself is stripped |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3290 of leading and trailing whitespace, of typical reply prefixes |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3291 such as Re: and whitespace within the subject is replaced by a |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3292 regular expression matching whitespace in general in order to |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3293 take into account that subject header lines may include newlines |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3294 and more whitespace. The returned regular expressions contains |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3295 `rmail-reply-regexp' and ends with a newline." |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3296 (let ((subject (rmail-current-subject))) |
67469
b845fff9455c
(rmail-next-same-subject): Handle multiple "Re: " strings and long subject
Eli Zaretskii <eliz@gnu.org>
parents:
65680
diff
changeset
|
3297 ;; If Subject is long, mailers will break it into several lines at |
b845fff9455c
(rmail-next-same-subject): Handle multiple "Re: " strings and long subject
Eli Zaretskii <eliz@gnu.org>
parents:
65680
diff
changeset
|
3298 ;; arbitrary places, so replace whitespace with a regexp that will |
b845fff9455c
(rmail-next-same-subject): Handle multiple "Re: " strings and long subject
Eli Zaretskii <eliz@gnu.org>
parents:
65680
diff
changeset
|
3299 ;; match any sequence of spaces, TABs, and newlines. |
b845fff9455c
(rmail-next-same-subject): Handle multiple "Re: " strings and long subject
Eli Zaretskii <eliz@gnu.org>
parents:
65680
diff
changeset
|
3300 (setq subject (regexp-quote subject)) |
b845fff9455c
(rmail-next-same-subject): Handle multiple "Re: " strings and long subject
Eli Zaretskii <eliz@gnu.org>
parents:
65680
diff
changeset
|
3301 (setq subject |
b845fff9455c
(rmail-next-same-subject): Handle multiple "Re: " strings and long subject
Eli Zaretskii <eliz@gnu.org>
parents:
65680
diff
changeset
|
3302 (replace-regexp-in-string "[ \t\n]+" "[ \t\n]+" subject t t)) |
79439
b5d24ce5f8b7
(rmail-current-subject-regexp): Allow more than one space after "Subject:".
Eli Zaretskii <eliz@gnu.org>
parents:
78606
diff
changeset
|
3303 ;; Some mailers insert extra spaces after "Subject:", so allow any |
b5d24ce5f8b7
(rmail-current-subject-regexp): Allow more than one space after "Subject:".
Eli Zaretskii <eliz@gnu.org>
parents:
78606
diff
changeset
|
3304 ;; amount of them. |
b5d24ce5f8b7
(rmail-current-subject-regexp): Allow more than one space after "Subject:".
Eli Zaretskii <eliz@gnu.org>
parents:
78606
diff
changeset
|
3305 (concat "^Subject:[ \t]+" |
68091
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3306 (if (string= "\\`" (substring rmail-reply-regexp 0 2)) |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3307 (substring rmail-reply-regexp 2) |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3308 rmail-reply-regexp) |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3309 subject "[ \t]*\n"))) |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3310 |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3311 (defun rmail-next-same-subject (n) |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3312 "Go to the next mail message having the same subject header. |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3313 With prefix argument N, do this N times. |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3314 If N is negative, go backwards instead." |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3315 (interactive "p") |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3316 (let ((search-regexp (rmail-current-subject-regexp)) |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3317 (forward (> n 0)) |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3318 (i rmail-current-message) |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3319 (case-fold-search t) |
17b9be3ce6af
(rmail-current-subject): New function.
Alex Schroeder <alex@gnu.org>
parents:
67469
diff
changeset
|
3320 found) |
10662
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3321 (save-excursion |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3322 (save-restriction |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3323 (widen) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3324 (while (and (/= n 0) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3325 (if forward |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3326 (< i rmail-total-messages) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3327 (> i 1))) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3328 (let (done) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3329 (while (and (not done) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3330 (if forward |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3331 (< i rmail-total-messages) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3332 (> i 1))) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3333 (setq i (if forward (1+ i) (1- i))) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3334 (goto-char (rmail-msgbeg i)) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3335 (search-forward "\n*** EOOH ***\n") |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3336 (let ((beg (point)) end) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3337 (search-forward "\n\n") |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3338 (setq end (point)) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3339 (goto-char beg) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3340 (setq done (re-search-forward search-regexp end t)))) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3341 (if done (setq found i))) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3342 (setq n (if forward (1- n) (1+ n)))))) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3343 (if found |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3344 (rmail-show-message found) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3345 (error "No %s message with same subject" |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3346 (if forward "following" "previous"))))) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3347 |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3348 (defun rmail-previous-same-subject (n) |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3349 "Go to the previous mail message having the same subject header. |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3350 With prefix argument N, do this N times. |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3351 If N is negative, go forwards instead." |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3352 (interactive "p") |
cd968ab6a0eb
(rmail-next-same-subject): New command.
Richard M. Stallman <rms@gnu.org>
parents:
10640
diff
changeset
|
3353 (rmail-next-same-subject (- n))) |
270 | 3354 |
3355 ;;;; *** Rmail Message Deletion Commands *** | |
3356 | |
3357 (defun rmail-message-deleted-p (n) | |
3358 (= (aref rmail-deleted-vector n) ?D)) | |
3359 | |
3360 (defun rmail-set-message-deleted-p (n state) | |
3361 (aset rmail-deleted-vector n (if state ?D ?\ ))) | |
3362 | |
3363 (defun rmail-delete-message () | |
3364 "Delete this message and stay on it." | |
3365 (interactive) | |
13477
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
3366 (rmail-set-attribute "deleted" t) |
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
3367 (run-hooks 'rmail-delete-message-hook)) |
270 | 3368 |
3369 (defun rmail-undelete-previous-message () | |
3370 "Back up to deleted message, select it, and undelete it." | |
3371 (interactive) | |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3372 (set-buffer rmail-buffer) |
270 | 3373 (let ((msg rmail-current-message)) |
3374 (while (and (> msg 0) | |
3375 (not (rmail-message-deleted-p msg))) | |
3376 (setq msg (1- msg))) | |
3377 (if (= msg 0) | |
3378 (error "No previous deleted message") | |
3379 (if (/= msg rmail-current-message) | |
3380 (rmail-show-message msg)) | |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3381 (rmail-set-attribute "deleted" nil) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3382 (if (rmail-summary-exists) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3383 (save-excursion |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3384 (set-buffer rmail-summary-buffer) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3385 (rmail-summary-mark-undeleted msg))) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3386 (rmail-maybe-display-summary)))) |
270 | 3387 |
3388 (defun rmail-delete-forward (&optional backward) | |
3389 "Delete this message and move to next nondeleted one. | |
3390 Deleted messages stay in the file until the \\[rmail-expunge] command is given. | |
4838
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3391 With prefix argument, delete and move backward. |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3392 |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3393 Returns t if a new message is displayed after the delete, or nil otherwise." |
270 | 3394 (interactive "P") |
3395 (rmail-set-attribute "deleted" t) | |
13477
5c500f39271c
(rmail-delete-message-hook): New hook.
Richard M. Stallman <rms@gnu.org>
parents:
13302
diff
changeset
|
3396 (run-hooks 'rmail-delete-message-hook) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3397 (let ((del-msg rmail-current-message)) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3398 (if (rmail-summary-exists) |
9394
802381617d14
(rmail-delete-forward): Use rmail-select-summary.
Richard M. Stallman <rms@gnu.org>
parents:
9380
diff
changeset
|
3399 (rmail-select-summary |
802381617d14
(rmail-delete-forward): Use rmail-select-summary.
Richard M. Stallman <rms@gnu.org>
parents:
9380
diff
changeset
|
3400 (rmail-summary-mark-deleted del-msg))) |
4838
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3401 (prog1 (rmail-next-undeleted-message (if backward -1 1)) |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3402 (rmail-maybe-display-summary)))) |
270 | 3403 |
3404 (defun rmail-delete-backward () | |
3405 "Delete this message and move to previous nondeleted one. | |
3406 Deleted messages stay in the file until the \\[rmail-expunge] command is given." | |
3407 (interactive) | |
3408 (rmail-delete-forward t)) | |
3409 | |
9153
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3410 ;; Compute the message number a given message would have after expunging. |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3411 ;; The present number of the message is OLDNUM. |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3412 ;; DELETEDVEC should be rmail-deleted-vector. |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3413 ;; The value is nil for a message that would be deleted. |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3414 (defun rmail-msg-number-after-expunge (deletedvec oldnum) |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3415 (if (or (null oldnum) (= (aref deletedvec oldnum) ?D)) |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3416 nil |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3417 (let ((i 0) |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3418 (newnum 0)) |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3419 (while (< i oldnum) |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3420 (if (/= (aref deletedvec i) ?D) |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3421 (setq newnum (1+ newnum))) |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3422 (setq i (1+ i))) |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3423 newnum))) |
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3424 |
34185
f43d562a5b65
(rmail-expunge-confirmed): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34055
diff
changeset
|
3425 (defun rmail-expunge-confirmed () |
f43d562a5b65
(rmail-expunge-confirmed): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34055
diff
changeset
|
3426 "Return t if deleted message should be expunged. If necessary, ask the user. |
f43d562a5b65
(rmail-expunge-confirmed): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34055
diff
changeset
|
3427 See also user-option `rmail-confirm-expunge'." |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3428 (set-buffer rmail-buffer) |
34185
f43d562a5b65
(rmail-expunge-confirmed): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34055
diff
changeset
|
3429 (or (not (stringp rmail-deleted-vector)) |
f43d562a5b65
(rmail-expunge-confirmed): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34055
diff
changeset
|
3430 (not (string-match "D" rmail-deleted-vector)) |
f43d562a5b65
(rmail-expunge-confirmed): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34055
diff
changeset
|
3431 (null rmail-confirm-expunge) |
f43d562a5b65
(rmail-expunge-confirmed): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34055
diff
changeset
|
3432 (funcall rmail-confirm-expunge |
f43d562a5b65
(rmail-expunge-confirmed): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34055
diff
changeset
|
3433 "Erase deleted messages from Rmail file? "))) |
f43d562a5b65
(rmail-expunge-confirmed): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34055
diff
changeset
|
3434 |
53598
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
3435 (defun rmail-only-expunge (&optional dont-show) |
270 | 3436 "Actually erase all deleted messages in the file." |
3437 (interactive) | |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3438 (set-buffer rmail-buffer) |
270 | 3439 (message "Expunging deleted messages...") |
3440 ;; Discard all undo records for this buffer. | |
3441 (or (eq buffer-undo-list t) | |
3442 (setq buffer-undo-list nil)) | |
3443 (rmail-maybe-set-message-counters) | |
3444 (let* ((omax (- (buffer-size) (point-max))) | |
3445 (omin (- (buffer-size) (point-min))) | |
3446 (opoint (if (and (> rmail-current-message 0) | |
7037 | 3447 (rmail-message-deleted-p rmail-current-message)) |
3448 0 | |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3449 (if rmail-enable-mime |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3450 (with-current-buffer rmail-view-buffer |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3451 (- (point)(point-min))) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3452 (- (point) (point-min))))) |
270 | 3453 (messages-head (cons (aref rmail-message-vector 0) nil)) |
3454 (messages-tail messages-head) | |
3455 ;; Don't make any undo records for the expunging. | |
3456 (buffer-undo-list t) | |
3457 (win)) | |
3458 (unwind-protect | |
3459 (save-excursion | |
3460 (widen) | |
3461 (goto-char (point-min)) | |
3462 (let ((counter 0) | |
3463 (number 1) | |
3464 (total rmail-total-messages) | |
3465 (new-message-number rmail-current-message) | |
3466 (new-summary nil) | |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3467 (new-msgref (list (list 0))) |
9153
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3468 (rmailbuf (current-buffer)) |
270 | 3469 (buffer-read-only nil) |
3470 (messages rmail-message-vector) | |
3471 (deleted rmail-deleted-vector) | |
3472 (summary rmail-summary-vector)) | |
3473 (setq rmail-total-messages nil | |
3474 rmail-current-message nil | |
3475 rmail-message-vector nil | |
3476 rmail-deleted-vector nil | |
3477 rmail-summary-vector nil) | |
9153
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3478 |
270 | 3479 (while (<= number total) |
3480 (if (= (aref deleted number) ?D) | |
3481 (progn | |
3482 (delete-region | |
3483 (marker-position (aref messages number)) | |
3484 (marker-position (aref messages (1+ number)))) | |
3485 (move-marker (aref messages number) nil) | |
3486 (if (> new-message-number counter) | |
3487 (setq new-message-number (1- new-message-number)))) | |
3488 (setq counter (1+ counter)) | |
3489 (setq messages-tail | |
3490 (setcdr messages-tail | |
3491 (cons (aref messages number) nil))) | |
3492 (setq new-summary | |
3493 (cons (if (= counter number) (aref summary (1- number))) | |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3494 new-summary)) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3495 (setq new-msgref |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3496 (cons (aref rmail-msgref-vector number) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3497 new-msgref)) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3498 (setcar (car new-msgref) counter)) |
270 | 3499 (if (zerop (% (setq number (1+ number)) 20)) |
3500 (message "Expunging deleted messages...%d" number))) | |
3501 (setq messages-tail | |
3502 (setcdr messages-tail | |
3503 (cons (aref messages number) nil))) | |
3504 (setq rmail-current-message new-message-number | |
3505 rmail-total-messages counter | |
3506 rmail-message-vector (apply 'vector messages-head) | |
3507 rmail-deleted-vector (make-string (1+ counter) ?\ ) | |
3508 rmail-summary-vector (vconcat (nreverse new-summary)) | |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3509 rmail-msgref-vector (apply 'vector (nreverse new-msgref)) |
270 | 3510 win t))) |
3511 (message "Expunging deleted messages...done") | |
3512 (if (not win) | |
3513 (narrow-to-region (- (buffer-size) omin) (- (buffer-size) omax))) | |
53598
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
3514 (if (not dont-show) |
c66875fbc45d
(rmail-get-new-mail): New local rsf-number-of-spam.
Richard M. Stallman <rms@gnu.org>
parents:
53570
diff
changeset
|
3515 (rmail-show-message |
64177
d1baae4e247f
(rmail-only-expunge): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents:
64085
diff
changeset
|
3516 (if (zerop rmail-current-message) 1 nil))) |
d1baae4e247f
(rmail-only-expunge): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents:
64085
diff
changeset
|
3517 (if rmail-enable-mime |
d1baae4e247f
(rmail-only-expunge): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents:
64085
diff
changeset
|
3518 (goto-char (+ (point-min) opoint)) |
d1baae4e247f
(rmail-only-expunge): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents:
64085
diff
changeset
|
3519 (goto-char (+ (point) opoint)))))) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3520 |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3521 (defun rmail-expunge () |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3522 "Erase deleted messages from Rmail file and summary buffer." |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3523 (interactive) |
34185
f43d562a5b65
(rmail-expunge-confirmed): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34055
diff
changeset
|
3524 (when (rmail-expunge-confirmed) |
28290
4aafdd90bf08
(rmail-confirm-expunge): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
27944
diff
changeset
|
3525 (rmail-only-expunge) |
4aafdd90bf08
(rmail-confirm-expunge): New user-option.
Gerd Moellmann <gerd@gnu.org>
parents:
27944
diff
changeset
|
3526 (if (rmail-summary-exists) |
34185
f43d562a5b65
(rmail-expunge-confirmed): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34055
diff
changeset
|
3527 (rmail-select-summary (rmail-update-summary))))) |
270 | 3528 |
3529 ;;;; *** Rmail Mailing Commands *** | |
3530 | |
16633
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3531 (defun rmail-start-mail (&optional noerase to subject in-reply-to cc |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3532 replybuffer sendactions same-window others) |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3533 (let (yank-action) |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3534 (if replybuffer |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3535 (setq yank-action (list 'insert-buffer replybuffer))) |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3536 (setq others (cons (cons "cc" cc) others)) |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3537 (setq others (cons (cons "in-reply-to" in-reply-to) others)) |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3538 (if same-window |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3539 (compose-mail to subject others |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3540 noerase nil |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3541 yank-action sendactions) |
55114
c58efa90d5a6
(rmail-mail-new-frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
55056
diff
changeset
|
3542 (if rmail-mail-new-frame |
16633
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3543 (prog1 |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3544 (compose-mail to subject others |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3545 noerase 'switch-to-buffer-other-frame |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3546 yank-action sendactions) |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3547 ;; This is not a standard frame parameter; |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3548 ;; nothing except sendmail.el looks at it. |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3549 (modify-frame-parameters (selected-frame) |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3550 '((mail-dedicated-frame . t)))) |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3551 (compose-mail to subject others |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3552 noerase 'switch-to-buffer-other-window |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3553 yank-action sendactions))))) |
4108
e4fbcd480455
(rmail-mail-new-frame): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
4071
diff
changeset
|
3554 |
270 | 3555 (defun rmail-mail () |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3556 "Send mail in another window. |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3557 While composing the message, use \\[mail-yank-original] to yank the |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3558 original message into it." |
270 | 3559 (interactive) |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
3560 (rmail-start-mail nil nil nil nil nil rmail-view-buffer)) |
270 | 3561 |
3562 (defun rmail-continue () | |
3563 "Continue composing outgoing message previously being composed." | |
3564 (interactive) | |
4108
e4fbcd480455
(rmail-mail-new-frame): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
4071
diff
changeset
|
3565 (rmail-start-mail t)) |
270 | 3566 |
3567 (defun rmail-reply (just-sender) | |
3568 "Reply to the current message. | |
3569 Normally include CC: to all other recipients of original message; | |
3570 prefix argument means ignore them. While composing the reply, | |
3571 use \\[mail-yank-original] to yank the original message into it." | |
3572 (interactive "P") | |
16953
46b39d9f3ad0
(rmail-reply): Copy all the References: headers
Richard M. Stallman <rms@gnu.org>
parents:
16928
diff
changeset
|
3573 (let (from reply-to cc subject date to message-id references |
16467
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3574 resent-to resent-cc resent-reply-to |
17093
f8584d52dd48
(rmail-view-buffer, rmail-enable-mime, rmail-show-mime-function,
Kenichi Handa <handa@m17n.org>
parents:
17065
diff
changeset
|
3575 (msgnum rmail-current-message)) |
270 | 3576 (save-excursion |
3577 (save-restriction | |
38305
3c5911d68b33
(rmail-reply): Don't forget to narrow header in
Gerd Moellmann <gerd@gnu.org>
parents:
38228
diff
changeset
|
3578 (if rmail-enable-mime |
3c5911d68b33
(rmail-reply): Don't forget to narrow header in
Gerd Moellmann <gerd@gnu.org>
parents:
38228
diff
changeset
|
3579 (narrow-to-region |
3c5911d68b33
(rmail-reply): Don't forget to narrow header in
Gerd Moellmann <gerd@gnu.org>
parents:
38228
diff
changeset
|
3580 (goto-char (point-min)) |
3c5911d68b33
(rmail-reply): Don't forget to narrow header in
Gerd Moellmann <gerd@gnu.org>
parents:
38228
diff
changeset
|
3581 (if (search-forward "\n\n" nil 'move) |
3c5911d68b33
(rmail-reply): Don't forget to narrow header in
Gerd Moellmann <gerd@gnu.org>
parents:
38228
diff
changeset
|
3582 (1+ (match-beginning 0)) |
3c5911d68b33
(rmail-reply): Don't forget to narrow header in
Gerd Moellmann <gerd@gnu.org>
parents:
38228
diff
changeset
|
3583 (point))) |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3584 (widen) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3585 (goto-char (rmail-msgbeg rmail-current-message)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3586 (forward-line 1) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3587 (if (= (following-char) ?0) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3588 (narrow-to-region |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3589 (progn (forward-line 2) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3590 (point)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3591 (progn (search-forward "\n\n" (rmail-msgend rmail-current-message) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3592 'move) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3593 (point))) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3594 (narrow-to-region (point) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3595 (progn (search-forward "\n*** EOOH ***\n") |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3596 (beginning-of-line) (point))))) |
16467
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3597 (setq from (mail-fetch-field "from") |
64972
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
3598 reply-to (or (mail-fetch-field "mail-reply-to" nil t) |
60692
e2880855e3d0
(rmail-movemail-program, rmail-pop-password)
Richard M. Stallman <rms@gnu.org>
parents:
59996
diff
changeset
|
3599 (mail-fetch-field "reply-to" nil t) |
270 | 3600 from) |
16467
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3601 subject (mail-fetch-field "subject") |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3602 date (mail-fetch-field "date") |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3603 message-id (mail-fetch-field "message-id") |
16953
46b39d9f3ad0
(rmail-reply): Copy all the References: headers
Richard M. Stallman <rms@gnu.org>
parents:
16928
diff
changeset
|
3604 references (mail-fetch-field "references" nil nil t) |
46b39d9f3ad0
(rmail-reply): Copy all the References: headers
Richard M. Stallman <rms@gnu.org>
parents:
16928
diff
changeset
|
3605 resent-reply-to (mail-fetch-field "resent-reply-to" nil t) |
16467
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3606 resent-cc (and (not just-sender) |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3607 (mail-fetch-field "resent-cc" nil t)) |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3608 resent-to (or (mail-fetch-field "resent-to" nil t) "") |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3609 ;;; resent-subject (mail-fetch-field "resent-subject") |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3610 ;;; resent-date (mail-fetch-field "resent-date") |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3611 ;;; resent-message-id (mail-fetch-field "resent-message-id") |
64972
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
3612 ) |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
3613 (unless just-sender |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
3614 (if (mail-fetch-field "mail-followup-to" nil t) |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
3615 ;; If this header field is present, use it instead of the To and CC fields. |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
3616 (setq to (mail-fetch-field "mail-followup-to" nil t)) |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
3617 (setq cc (or (mail-fetch-field "cc" nil t) "") |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
3618 to (or (mail-fetch-field "to" nil t) "")))) |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
3619 |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
3620 )) |
d10e1f63c588
(rmail-nonignored-headers): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
64961
diff
changeset
|
3621 |
16467
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3622 ;; Merge the resent-to and resent-cc into the to and cc. |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3623 (if (and resent-to (not (equal resent-to ""))) |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3624 (if (not (equal to "")) |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3625 (setq to (concat to ", " resent-to)) |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3626 (setq to resent-to))) |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3627 (if (and resent-cc (not (equal resent-cc ""))) |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3628 (if (not (equal cc "")) |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3629 (setq cc (concat cc ", " resent-cc)) |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3630 (setq cc resent-cc))) |
446f51ea7cb8
(rmail-reply): Merge resent-to and resent-cc into to and cc.
Richard M. Stallman <rms@gnu.org>
parents:
16452
diff
changeset
|
3631 ;; Add `Re: ' to subject if not there already. |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
3632 (and (stringp subject) |
10640 | 3633 (setq subject |
3634 (concat rmail-reply-prefix | |
17065
01cba1834368
(rmail-next-same-subject, rmail-reply): Ignore case, to
Karl Heuer <kwzh@gnu.org>
parents:
17011
diff
changeset
|
3635 (if (let ((case-fold-search t)) |
01cba1834368
(rmail-next-same-subject, rmail-reply): Ignore case, to
Karl Heuer <kwzh@gnu.org>
parents:
17011
diff
changeset
|
3636 (string-match rmail-reply-regexp subject)) |
10640 | 3637 (substring subject (match-end 0)) |
3638 subject)))) | |
18091
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3639 (rmail-start-mail |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3640 nil |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3641 ;; Using mail-strip-quoted-names is undesirable with newer mailers |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3642 ;; since they can handle the names unstripped. |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3643 ;; I don't know whether there are other mailers that still |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3644 ;; need the names to be stripped. |
49008
dfbf1b11349a
(rmail-reply): Don't call mail-strip-quoted-names.
Richard M. Stallman <rms@gnu.org>
parents:
48584
diff
changeset
|
3645 ;;; (mail-strip-quoted-names reply-to) |
62587
bb278282ddbc
(rmail-reply): Filter the list in reply-to through rmail-dont-reply-to.
Eli Zaretskii <eliz@gnu.org>
parents:
62402
diff
changeset
|
3646 ;; Remove unwanted names from reply-to, since Mail-Followup-To |
bb278282ddbc
(rmail-reply): Filter the list in reply-to through rmail-dont-reply-to.
Eli Zaretskii <eliz@gnu.org>
parents:
62402
diff
changeset
|
3647 ;; header causes all the names in it to wind up in reply-to, not |
bb278282ddbc
(rmail-reply): Filter the list in reply-to through rmail-dont-reply-to.
Eli Zaretskii <eliz@gnu.org>
parents:
62402
diff
changeset
|
3648 ;; in cc. But if what's left is an empty list, use the original. |
bb278282ddbc
(rmail-reply): Filter the list in reply-to through rmail-dont-reply-to.
Eli Zaretskii <eliz@gnu.org>
parents:
62402
diff
changeset
|
3649 (let* ((reply-to-list (rmail-dont-reply-to reply-to))) |
bb278282ddbc
(rmail-reply): Filter the list in reply-to through rmail-dont-reply-to.
Eli Zaretskii <eliz@gnu.org>
parents:
62402
diff
changeset
|
3650 (if (string= reply-to-list "") reply-to reply-to-list)) |
18091
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3651 subject |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3652 (rmail-make-in-reply-to-field from date message-id) |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3653 (if just-sender |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3654 nil |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3655 ;; mail-strip-quoted-names is NOT necessary for rmail-dont-reply-to |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3656 ;; to do its job. |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3657 (let* ((cc-list (rmail-dont-reply-to |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3658 (mail-strip-quoted-names |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3659 (if (null cc) to (concat to ", " cc)))))) |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3660 (if (string= cc-list "") nil cc-list))) |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3661 rmail-view-buffer |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3662 (list (list 'rmail-mark-message |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3663 rmail-buffer |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3664 (with-current-buffer rmail-buffer |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3665 (aref rmail-msgref-vector msgnum)) |
18091
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3666 "answered")) |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3667 nil |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3668 (list (cons "References" (concat (mapconcat 'identity references " ") |
1bd633f97c45
(rmail-mmdf-delim1, rmail-mmdf-delim2):
Richard M. Stallman <rms@gnu.org>
parents:
17839
diff
changeset
|
3669 " " message-id)))))) |
17565
09d1f6578d7f
(rmail-reply): Pass Rmail buffer and msgnum
Richard M. Stallman <rms@gnu.org>
parents:
17306
diff
changeset
|
3670 |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3671 (defun rmail-mark-message (buffer msgnum-list attribute) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3672 "Give BUFFER's message number in MSGNUM-LIST the attribute ATTRIBUTE. |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3673 This is use in the send-actions for message buffers. |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3674 MSGNUM-LIST is a list of the form (MSGNUM) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3675 which is an element of rmail-msgref-vector." |
17565
09d1f6578d7f
(rmail-reply): Pass Rmail buffer and msgnum
Richard M. Stallman <rms@gnu.org>
parents:
17306
diff
changeset
|
3676 (save-excursion |
09d1f6578d7f
(rmail-reply): Pass Rmail buffer and msgnum
Richard M. Stallman <rms@gnu.org>
parents:
17306
diff
changeset
|
3677 (set-buffer buffer) |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3678 (if (car msgnum-list) |
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3679 (rmail-set-attribute attribute t (car msgnum-list))))) |
270 | 3680 |
3681 (defun rmail-make-in-reply-to-field (from date message-id) | |
3682 (cond ((not from) | |
3683 (if message-id | |
3684 message-id | |
3685 nil)) | |
3686 (mail-use-rfc822 | |
3687 (require 'rfc822) | |
3688 (let ((tem (car (rfc822-addresses from)))) | |
3689 (if message-id | |
19315
f842aabf9735
(rmail-make-in-reply-to-field): Don't cause an
Richard M. Stallman <rms@gnu.org>
parents:
19031
diff
changeset
|
3690 (if (or (not tem) |
f842aabf9735
(rmail-make-in-reply-to-field): Don't cause an
Richard M. Stallman <rms@gnu.org>
parents:
19031
diff
changeset
|
3691 (string-match |
f842aabf9735
(rmail-make-in-reply-to-field): Don't cause an
Richard M. Stallman <rms@gnu.org>
parents:
19031
diff
changeset
|
3692 (regexp-quote (if (string-match "@[^@]*\\'" tem) |
f842aabf9735
(rmail-make-in-reply-to-field): Don't cause an
Richard M. Stallman <rms@gnu.org>
parents:
19031
diff
changeset
|
3693 (substring tem 0 |
f842aabf9735
(rmail-make-in-reply-to-field): Don't cause an
Richard M. Stallman <rms@gnu.org>
parents:
19031
diff
changeset
|
3694 (match-beginning 0)) |
f842aabf9735
(rmail-make-in-reply-to-field): Don't cause an
Richard M. Stallman <rms@gnu.org>
parents:
19031
diff
changeset
|
3695 tem)) |
f842aabf9735
(rmail-make-in-reply-to-field): Don't cause an
Richard M. Stallman <rms@gnu.org>
parents:
19031
diff
changeset
|
3696 message-id)) |
f842aabf9735
(rmail-make-in-reply-to-field): Don't cause an
Richard M. Stallman <rms@gnu.org>
parents:
19031
diff
changeset
|
3697 ;; missing From, or Message-ID is sufficiently informative |
270 | 3698 message-id |
3699 (concat message-id " (" tem ")")) | |
5692
bb9b20ea092d
(rmail-make-in-reply-to-field): Discard text properties from
Richard M. Stallman <rms@gnu.org>
parents:
5611
diff
changeset
|
3700 ;; Copy TEM, discarding text properties. |
bb9b20ea092d
(rmail-make-in-reply-to-field): Discard text properties from
Richard M. Stallman <rms@gnu.org>
parents:
5611
diff
changeset
|
3701 (setq tem (copy-sequence tem)) |
bb9b20ea092d
(rmail-make-in-reply-to-field): Discard text properties from
Richard M. Stallman <rms@gnu.org>
parents:
5611
diff
changeset
|
3702 (set-text-properties 0 (length tem) nil tem) |
bb9b20ea092d
(rmail-make-in-reply-to-field): Discard text properties from
Richard M. Stallman <rms@gnu.org>
parents:
5611
diff
changeset
|
3703 (setq tem (copy-sequence tem)) |
bb9b20ea092d
(rmail-make-in-reply-to-field): Discard text properties from
Richard M. Stallman <rms@gnu.org>
parents:
5611
diff
changeset
|
3704 ;; Use prin1 to fake RFC822 quoting |
bb9b20ea092d
(rmail-make-in-reply-to-field): Discard text properties from
Richard M. Stallman <rms@gnu.org>
parents:
5611
diff
changeset
|
3705 (let ((field (prin1-to-string tem))) |
bb9b20ea092d
(rmail-make-in-reply-to-field): Discard text properties from
Richard M. Stallman <rms@gnu.org>
parents:
5611
diff
changeset
|
3706 (if date |
bb9b20ea092d
(rmail-make-in-reply-to-field): Discard text properties from
Richard M. Stallman <rms@gnu.org>
parents:
5611
diff
changeset
|
3707 (concat field "'s message of " date) |
bb9b20ea092d
(rmail-make-in-reply-to-field): Discard text properties from
Richard M. Stallman <rms@gnu.org>
parents:
5611
diff
changeset
|
3708 field))))) |
20681
4a46ac370fc8
(rmail): Don't bind enable-multibyte-characters;
Richard M. Stallman <rms@gnu.org>
parents:
20662
diff
changeset
|
3709 ((let* ((foo "[^][\000-\037()<>@,;:\\\" ]+") |
4a46ac370fc8
(rmail): Don't bind enable-multibyte-characters;
Richard M. Stallman <rms@gnu.org>
parents:
20662
diff
changeset
|
3710 (bar "[^][\000-\037()<>@,;:\\\"]+")) |
4a46ac370fc8
(rmail): Don't bind enable-multibyte-characters;
Richard M. Stallman <rms@gnu.org>
parents:
20662
diff
changeset
|
3711 ;; These strings both match all non-ASCII characters. |
270 | 3712 (or (string-match (concat "\\`[ \t]*\\(" bar |
3713 "\\)\\(<" foo "@" foo ">\\)?[ \t]*\\'") | |
3714 ;; "Unix Loser <Foo@bar.edu>" => "Unix Loser" | |
3715 from) | |
3716 (string-match (concat "\\`[ \t]*<" foo "@" foo ">[ \t]*(\\(" | |
3717 bar "\\))[ \t]*\\'") | |
3718 ;; "<Bugs@bar.edu>" (Losing Unix) => "Losing Unix" | |
3719 from))) | |
3720 (let ((start (match-beginning 1)) | |
3721 (end (match-end 1))) | |
3722 ;; Trim whitespace which above regexp match allows | |
3723 (while (and (< start end) | |
3724 (memq (aref from start) '(?\t ?\ ))) | |
3725 (setq start (1+ start))) | |
3726 (while (and (< start end) | |
3727 (memq (aref from (1- end)) '(?\t ?\ ))) | |
3728 (setq end (1- end))) | |
3729 (let ((field (substring from start end))) | |
3730 (if date (setq field (concat "message from " field " on " date))) | |
3731 (if message-id | |
3732 ;; "<AA259@bar.edu> (message from Unix Loser on 1-Apr-89)" | |
3733 (concat message-id " (" field ")") | |
3734 field)))) | |
3735 (t | |
3736 ;; If we can't kludge it simply, do it correctly | |
3737 (let ((mail-use-rfc822 t)) | |
3738 (rmail-make-in-reply-to-field from date message-id))))) | |
10970
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
3739 |
2687
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3740 (defun rmail-forward (resend) |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3741 "Forward the current message to another user. |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3742 With prefix argument, \"resend\" the message instead of forwarding it; |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3743 see the documentation of `rmail-resend'." |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3744 (interactive "P") |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3745 (if resend |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3746 (call-interactively 'rmail-resend) |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3747 (let ((forward-buffer rmail-buffer) |
9153
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3748 (msgnum rmail-current-message) |
2687
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3749 (subject (concat "[" |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3750 (let ((from (or (mail-fetch-field "From") |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3751 (mail-fetch-field ">From")))) |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3752 (if from |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3753 (concat (mail-strip-quoted-names from) ": ") |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3754 "")) |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3755 (or (mail-fetch-field "Subject") "") |
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3756 "]"))) |
16633
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3757 (if (rmail-start-mail |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3758 nil nil subject nil nil nil |
17565
09d1f6578d7f
(rmail-reply): Pass Rmail buffer and msgnum
Richard M. Stallman <rms@gnu.org>
parents:
17306
diff
changeset
|
3759 (list (list 'rmail-mark-message |
17620
30a88c9b3505
(rmail-msgref-vector): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
17565
diff
changeset
|
3760 forward-buffer |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3761 (with-current-buffer rmail-buffer |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3762 (aref rmail-msgref-vector msgnum)) |
17565
09d1f6578d7f
(rmail-reply): Pass Rmail buffer and msgnum
Richard M. Stallman <rms@gnu.org>
parents:
17306
diff
changeset
|
3763 "forwarded")) |
16633
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3764 ;; If only one window, use it for the mail buffer. |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3765 ;; Otherwise, use another window for the mail buffer |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3766 ;; so that the Rmail buffer remains visible |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3767 ;; and sending the mail will get back to it. |
bd4dbc8ca6f7
(rmail-start-mail): Rewrite to use compose-mail.
Richard M. Stallman <rms@gnu.org>
parents:
16467
diff
changeset
|
3768 (and (not rmail-mail-new-frame) (one-window-p t))) |
9153
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3769 ;; The mail buffer is now current. |
4263
7c7fa71cfd6e
(rmail-last-rmail-file): Initialize to a file name.
Richard M. Stallman <rms@gnu.org>
parents:
4108
diff
changeset
|
3770 (save-excursion |
4724
04714985ce20
(rmail-forward): Insert the text right after the header separator.
Richard M. Stallman <rms@gnu.org>
parents:
4698
diff
changeset
|
3771 ;; Insert after header separator--before signature if any. |
21864
191bddd991ef
(rmail-forward): Use mail-text-start.
Richard M. Stallman <rms@gnu.org>
parents:
21705
diff
changeset
|
3772 (goto-char (mail-text-start)) |
41511
19496cafe865
2001-11-25 ShengHuo ZHU <zsh@cs.rochester.edu>
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
39298
diff
changeset
|
3773 (if (or rmail-enable-mime rmail-enable-mime-composing) |
37611
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3774 (funcall rmail-insert-mime-forwarded-message-function |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3775 forward-buffer) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3776 (insert "------- Start of forwarded message -------\n") |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3777 ;; Quote lines with `- ' if they start with `-'. |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3778 (let ((beg (point)) end) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3779 (setq end (point-marker)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3780 (set-marker-insertion-type end t) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3781 (insert-buffer-substring forward-buffer) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3782 (goto-char beg) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3783 (while (re-search-forward "^-" end t) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3784 (beginning-of-line) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3785 (insert "- ") |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3786 (forward-line 1)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3787 (goto-char end) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3788 (skip-chars-backward "\n") |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3789 (if (< (point) end) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3790 (forward-char 1)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3791 (delete-region (point) end) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3792 (set-marker end nil)) |
73f25c014d5c
(rmail-insert-mime-forwarded-message-function)
Gerd Moellmann <gerd@gnu.org>
parents:
37592
diff
changeset
|
3793 (insert "------- End of forwarded message -------\n")) |
9153
029821174e53
(rmail-forward): Simplify insertion of forwarded msg.
Richard M. Stallman <rms@gnu.org>
parents:
9083
diff
changeset
|
3794 (push-mark)))))) |
10970
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
3795 |
270 | 3796 (defun rmail-resend (address &optional from comment mail-alias-file) |
3797 "Resend current message to ADDRESSES. | |
5274
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3798 ADDRESSES should be a single address, a string consisting of several |
270 | 3799 addresses separated by commas, or a list of addresses. |
3800 | |
3801 Optional FROM is the address to resend the message from, and | |
19031
369a8580b08e
(rmail-resend): Use user-mail-address.
Richard M. Stallman <rms@gnu.org>
parents:
18990
diff
changeset
|
3802 defaults from the value of `user-mail-address'. |
369a8580b08e
(rmail-resend): Use user-mail-address.
Richard M. Stallman <rms@gnu.org>
parents:
18990
diff
changeset
|
3803 Optional COMMENT is a string to insert as a comment in the resent message. |
270 | 3804 Optional ALIAS-FILE is alternate aliases file to be used by sendmail, |
3805 typically for purposes of moderating a list." | |
3806 (interactive "sResend to: ") | |
3484
bd26679f0db5
(rmail-resend): Require sendmail and mailalias.
Richard M. Stallman <rms@gnu.org>
parents:
3462
diff
changeset
|
3807 (require 'sendmail) |
bd26679f0db5
(rmail-resend): Require sendmail and mailalias.
Richard M. Stallman <rms@gnu.org>
parents:
3462
diff
changeset
|
3808 (require 'mailalias) |
37956
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
3809 (unless (or (eq rmail-view-buffer (current-buffer)) |
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
3810 (eq rmail-buffer (current-buffer))) |
27871
210900dff9a5
(rmail-resend): Verify buffer is really Rmail.
Gerd Moellmann <gerd@gnu.org>
parents:
27643
diff
changeset
|
3811 (error "Not an Rmail buffer")) |
19031
369a8580b08e
(rmail-resend): Use user-mail-address.
Richard M. Stallman <rms@gnu.org>
parents:
18990
diff
changeset
|
3812 (if (not from) (setq from user-mail-address)) |
270 | 3813 (let ((tembuf (generate-new-buffer " sendmail temp")) |
3814 (case-fold-search nil) | |
59118
a3caa12a673a
(rmail-resend): Let MAIL-ALIAS-FILE arg override mail-personal-alias-file.
Richard M. Stallman <rms@gnu.org>
parents:
58184
diff
changeset
|
3815 (mail-personal-alias-file |
a3caa12a673a
(rmail-resend): Let MAIL-ALIAS-FILE arg override mail-personal-alias-file.
Richard M. Stallman <rms@gnu.org>
parents:
58184
diff
changeset
|
3816 (or mail-alias-file mail-personal-alias-file)) |
23298
116f19dd86dc
(rmail-resend): Work properly if invoked from summary.
Karl Heuer <kwzh@gnu.org>
parents:
23293
diff
changeset
|
3817 (mailbuf rmail-buffer)) |
270 | 3818 (unwind-protect |
23298
116f19dd86dc
(rmail-resend): Work properly if invoked from summary.
Karl Heuer <kwzh@gnu.org>
parents:
23293
diff
changeset
|
3819 (with-current-buffer tembuf |
270 | 3820 ;;>> Copy message into temp buffer |
37956
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
3821 (if rmail-enable-mime |
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
3822 (funcall rmail-insert-mime-resent-message-function mailbuf) |
b59847354241
(rmail-revert): Modify to work in
Gerd Moellmann <gerd@gnu.org>
parents:
37839
diff
changeset
|
3823 (insert-buffer-substring mailbuf)) |
270 | 3824 (goto-char (point-min)) |
14033
d146539da475
(rmail-retry-failure): Bind inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
13834
diff
changeset
|
3825 ;; Delete any Sender field, since that's not specifiable. |
5274
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3826 ; Only delete Sender fields in the actual header. |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3827 (re-search-forward "^$" nil 'move) |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3828 ; Using "while" here rather than "if" because some buggy mail |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3829 ; software may have inserted multiple Sender fields. |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3830 (while (re-search-backward "^Sender:" nil t) |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3831 (let (beg) |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3832 (setq beg (point)) |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3833 (forward-line 1) |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3834 (while (looking-at "[ \t]") |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3835 (forward-line 1)) |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3836 (delete-region beg (point)))) |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3837 ; Go back to the beginning of the buffer so the Resent- fields |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3838 ; are inserted there. |
89b71a85be3e
(rmail-quit): Expunge without updating summary.
Richard M. Stallman <rms@gnu.org>
parents:
5192
diff
changeset
|
3839 (goto-char (point-min)) |
270 | 3840 ;;>> Insert resent-from: |
3841 (insert "Resent-From: " from "\n") | |
4020
a35cd533fda4
(rmail-resend): Use RFC 822 style date in Resent-Date: line.
Richard M. Stallman <rms@gnu.org>
parents:
4010
diff
changeset
|
3842 (insert "Resent-Date: " (mail-rfc822-date) "\n") |
270 | 3843 ;;>> Insert resent-to: and bcc if need be. |
3844 (let ((before (point))) | |
4838
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3845 (if mail-self-blind |
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3846 (insert "Resent-Bcc: " (user-login-name) "\n")) |
270 | 3847 (insert "Resent-To: " (if (stringp address) |
3848 address | |
3849 (mapconcat 'identity address ",\n\t")) | |
3850 "\n") | |
11452
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
3851 ;; Expand abbrevs in the recipients. |
8545
2aa8cbd91781
(rmail-resend): Preserve point around expand-mail-aliases.
Richard M. Stallman <rms@gnu.org>
parents:
8533
diff
changeset
|
3852 (save-excursion |
11452
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
3853 (if (featurep 'mailabbrev) |
11533
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3854 (let ((end (point-marker)) |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3855 (local-abbrev-table mail-abbrevs) |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3856 (old-syntax-table (syntax-table))) |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3857 (if (and (not (vectorp mail-abbrevs)) |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3858 (file-exists-p mail-personal-alias-file)) |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3859 (build-mail-abbrevs)) |
44141
264c168daeaa
(rmail-resend): Call mail-abbrev-make-syntax-table.
Richard M. Stallman <rms@gnu.org>
parents:
44025
diff
changeset
|
3860 (unless mail-abbrev-syntax-table |
264c168daeaa
(rmail-resend): Call mail-abbrev-make-syntax-table.
Richard M. Stallman <rms@gnu.org>
parents:
44025
diff
changeset
|
3861 (mail-abbrev-make-syntax-table)) |
11533
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3862 (set-syntax-table mail-abbrev-syntax-table) |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3863 (goto-char before) |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3864 (while (and (< (point) end) |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3865 (progn (forward-word 1) |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3866 (<= (point) end))) |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3867 (expand-abbrev)) |
2d1e996c4359
(rmail-resend): Fix abbrev expansion.
Richard M. Stallman <rms@gnu.org>
parents:
11497
diff
changeset
|
3868 (set-syntax-table old-syntax-table)) |
11452
a24224fc5a92
(rmail-reformat-message): Call `rmail-clear-headers'
Richard M. Stallman <rms@gnu.org>
parents:
11049
diff
changeset
|
3869 (expand-mail-aliases before (point))))) |
270 | 3870 ;;>> Set up comment, if any. |
3871 (if (and (sequencep comment) (not (zerop (length comment)))) | |
3872 (let ((before (point)) | |
3873 after) | |
3874 (insert comment) | |
3875 (or (eolp) (insert "\n")) | |
3876 (setq after (point)) | |
3877 (goto-char before) | |
3878 (while (< (point) after) | |
3879 (insert "Resent-Comment: ") | |
3880 (forward-line 1)))) | |
3881 ;; Don't expand aliases in the destination fields | |
3882 ;; of the original message. | |
3883 (let (mail-aliases) | |
5470
b8e8802d2216
(rmail-resend): Use send-mail-function.
Richard M. Stallman <rms@gnu.org>
parents:
5466
diff
changeset
|
3884 (funcall send-mail-function))) |
2687
37cca1d50b6a
(rmail-resend): Add `resent' attribute.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
3885 (kill-buffer tembuf)) |
23298
116f19dd86dc
(rmail-resend): Work properly if invoked from summary.
Karl Heuer <kwzh@gnu.org>
parents:
23293
diff
changeset
|
3886 (with-current-buffer rmail-buffer |
116f19dd86dc
(rmail-resend): Work properly if invoked from summary.
Karl Heuer <kwzh@gnu.org>
parents:
23293
diff
changeset
|
3887 (rmail-set-attribute "resent" t rmail-current-message)))) |
10970
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
3888 |
1267
1e1a54ebb29b
(mail-unsent-separator): Add another alternative.
Richard M. Stallman <rms@gnu.org>
parents:
1165
diff
changeset
|
3889 (defvar mail-unsent-separator |
1370
c017b62c8073
(mail-unsent-separator): Allow "original message" as alternative.
Richard M. Stallman <rms@gnu.org>
parents:
1360
diff
changeset
|
3890 (concat "^ *---+ +Unsent message follows +---+ *$\\|" |
c017b62c8073
(mail-unsent-separator): Allow "original message" as alternative.
Richard M. Stallman <rms@gnu.org>
parents:
1360
diff
changeset
|
3891 "^ *---+ +Returned message +---+ *$\\|" |
22158
aca5c8cb2c04
(mail-unsent-separator): Handle "returned message follows".
Richard M. Stallman <rms@gnu.org>
parents:
22135
diff
changeset
|
3892 "^ *---+ *Returned mail follows *---+ *$\\|" |
10815
52e860d10537
(rmail-retry-failure): Support a new style of failure msg.
Richard M. Stallman <rms@gnu.org>
parents:
10711
diff
changeset
|
3893 "^Start of returned message$\\|" |
22610
f5539d91e129
(mail-unsent-separator): Add new alternative.
Richard M. Stallman <rms@gnu.org>
parents:
22591
diff
changeset
|
3894 "^---+ Below this line is a copy of the message.$\\|" |
1372
e839dc00fc2e
(mail-unsent-separator): Handle "Message text follows".
Richard M. Stallman <rms@gnu.org>
parents:
1370
diff
changeset
|
3895 "^ *---+ +Original message +---+ *$\\|" |
1757
7e85913523ef
(mail-unsent-separator): Add `-- begin message --'.
Richard M. Stallman <rms@gnu.org>
parents:
1704
diff
changeset
|
3896 "^ *--+ +begin message +--+ *$\\|" |
4838
754b38c0e941
(rmail): Really don't get new mail if file name was given.
Richard M. Stallman <rms@gnu.org>
parents:
4819
diff
changeset
|
3897 "^ *---+ +Original message follows +---+ *$\\|" |
20984
f27355b19aba
(rmail-retry-failure): Don't insist on finding
Karl Heuer <kwzh@gnu.org>
parents:
20953
diff
changeset
|
3898 "^ *---+ +Your message follows +---+ *$\\|" |
24929
6ba667635e10
(mail-unsent-separator): Add a missing \\|.
Richard M. Stallman <rms@gnu.org>
parents:
24634
diff
changeset
|
3899 "^|? *---+ +Message text follows: +---+ *|?$\\|" |
30100
020fc2e83129
(mail-unsent-separator): Changed "the" to "\\w+", as
Gerd Moellmann <gerd@gnu.org>
parents:
29301
diff
changeset
|
3900 "^ *---+ +This is a copy of \\w+ message, including all the headers.*---+ *$") |
8572
1dd6c880b6ea
(rmail-retry-failure, mail-unsent-separator): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
8545
diff
changeset
|
3901 "A regexp that matches the separator before the text of a failed message.") |
270 | 3902 |
17197
7689ab3937cc
(rmail-retry-failure): Special handling for mime.
Richard M. Stallman <rms@gnu.org>
parents:
17164
diff
changeset
|
3903 (defvar mail-mime-unsent-header "^Content-Type: message/rfc822 *$" |
7689ab3937cc
(rmail-retry-failure): Special handling for mime.
Richard M. Stallman <rms@gnu.org>
parents:
17164
diff
changeset
|
3904 "A regexp that matches the header of a MIME body part with a failed message.") |
7689ab3937cc
(rmail-retry-failure): Special handling for mime.
Richard M. Stallman <rms@gnu.org>
parents:
17164
diff
changeset
|
3905 |
270 | 3906 (defun rmail-retry-failure () |
3907 "Edit a mail message which is based on the contents of the current message. | |
3908 For a message rejected by the mail system, extract the interesting headers and | |
8572
1dd6c880b6ea
(rmail-retry-failure, mail-unsent-separator): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
8545
diff
changeset
|
3909 the body of the original message. |
17197
7689ab3937cc
(rmail-retry-failure): Special handling for mime.
Richard M. Stallman <rms@gnu.org>
parents:
17164
diff
changeset
|
3910 If the failed message is a MIME multipart message, it is searched for a |
7689ab3937cc
(rmail-retry-failure): Special handling for mime.
Richard M. Stallman <rms@gnu.org>
parents:
17164
diff
changeset
|
3911 body part with a header which matches the variable `mail-mime-unsent-header'. |
7689ab3937cc
(rmail-retry-failure): Special handling for mime.
Richard M. Stallman <rms@gnu.org>
parents:
17164
diff
changeset
|
3912 Otherwise, the variable `mail-unsent-separator' should match the string that |
9010
9d48b6752dbf
(rmail-retry-failure): Copy the whole block of headers from the message
Richard M. Stallman <rms@gnu.org>
parents:
8963
diff
changeset
|
3913 delimits the returned original message. |
9d48b6752dbf
(rmail-retry-failure): Copy the whole block of headers from the message
Richard M. Stallman <rms@gnu.org>
parents:
8963
diff
changeset
|
3914 The variable `rmail-retry-ignored-headers' is a regular expression |
9d48b6752dbf
(rmail-retry-failure): Copy the whole block of headers from the message
Richard M. Stallman <rms@gnu.org>
parents:
8963
diff
changeset
|
3915 specifying headers which should not be copied into the new message." |
270 | 3916 (interactive) |
3917 (require 'mail-utils) | |
17821
c0422adc1b0e
(rmail-retry-failure): Rename local to rmail-this-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
17762
diff
changeset
|
3918 (let ((rmail-this-buffer (current-buffer)) |
13808
308a47d72b19
(rmail-ignored-headers): Add resent-date, nntp-posting-host.
Karl Heuer <kwzh@gnu.org>
parents:
13724
diff
changeset
|
3919 (msgnum rmail-current-message) |
38228
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3920 bounce-start bounce-end bounce-indent resending |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3921 ;; Fetch any content-type header in current message |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3922 ;; Must search thru the whole unpruned header. |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3923 (content-type |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3924 (save-excursion |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3925 (save-restriction |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3926 (rmail-narrow-to-non-pruned-header) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3927 (mail-fetch-field "Content-Type") )))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3928 (save-excursion |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3929 (goto-char (point-min)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3930 (let ((case-fold-search t)) |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
3931 (if (and content-type |
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
3932 (string-match |
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
3933 ";[\n\t ]*boundary=\"?\\([-0-9a-z'()+_,./:=? ]+\\)\"?" |
38228
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3934 content-type)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3935 ;; Handle a MIME multipart bounce message. |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3936 (let ((codestring |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3937 (concat "\n--" |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
3938 (substring content-type (match-beginning 1) |
38228
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3939 (match-end 1))))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3940 (unless (re-search-forward mail-mime-unsent-header nil t) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3941 (error "Cannot find beginning of header in failed message")) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3942 (unless (search-forward "\n\n" nil t) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3943 (error "Cannot find start of Mime data in failed message")) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3944 (setq bounce-start (point)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3945 (if (search-forward codestring nil t) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3946 (setq bounce-end (match-beginning 0)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3947 (setq bounce-end (point-max)))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3948 ;; Non-MIME bounce. |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3949 (or (re-search-forward mail-unsent-separator nil t) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3950 (error "Cannot parse this as a failure message")) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3951 (skip-chars-forward "\n") |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3952 ;; Support a style of failure message in which the original |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3953 ;; message is indented, and included within lines saying |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3954 ;; `Start of returned message' and `End of returned message'. |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3955 (if (looking-at " +Received:") |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3956 (progn |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3957 (setq bounce-start (point)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3958 (skip-chars-forward " ") |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3959 (setq bounce-indent (- (current-column))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3960 (goto-char (point-max)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3961 (re-search-backward "^End of returned message$" nil t) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3962 (setq bounce-end (point))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3963 ;; One message contained a few random lines before |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3964 ;; the old message header. The first line of the |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3965 ;; message started with two hyphens. A blank line |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3966 ;; followed these random lines. The same line |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3967 ;; beginning with two hyphens was possibly marking |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3968 ;; the end of the message. |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3969 (if (looking-at "^--") |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3970 (let ((boundary (buffer-substring-no-properties |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3971 (point) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3972 (progn (end-of-line) (point))))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3973 (search-forward "\n\n") |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3974 (skip-chars-forward "\n") |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3975 (setq bounce-start (point)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3976 (goto-char (point-max)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3977 (search-backward (concat "\n\n" boundary) bounce-start t) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3978 (setq bounce-end (point))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3979 (setq bounce-start (point) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3980 bounce-end (point-max))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3981 (unless (search-forward "\n\n" nil t) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3982 (error "Cannot find end of header in failed message")))))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3983 ;; We have found the message that bounced, within the current message. |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3984 ;; Now start sending new message; default header fields from original. |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3985 ;; Turn off the usual actions for initializing the message body |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3986 ;; because we want to get only the text from the failure message. |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3987 (let (mail-signature mail-setup-hook) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3988 (if (rmail-start-mail nil nil nil nil nil rmail-this-buffer |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3989 (list (list 'rmail-mark-message |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3990 rmail-this-buffer |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3991 (aref rmail-msgref-vector msgnum) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3992 "retried"))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3993 ;; Insert original text as initial text of new draft message. |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3994 ;; Bind inhibit-read-only since the header delimiter |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3995 ;; of the previous message was probably read-only. |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3996 (let ((inhibit-read-only t) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3997 rmail-displayed-headers |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3998 rmail-ignored-headers) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
3999 (erase-buffer) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4000 (insert-buffer-substring rmail-this-buffer |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4001 bounce-start bounce-end) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4002 (goto-char (point-min)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4003 (if bounce-indent |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4004 (indent-rigidly (point-min) (point-max) bounce-indent)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4005 (rmail-clear-headers rmail-retry-ignored-headers) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4006 (rmail-clear-headers "^sender:\\|^return-path:\\|^received:") |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4007 (mail-sendmail-delimit-header) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4008 (save-restriction |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4009 (narrow-to-region (point-min) (mail-header-end)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4010 (setq resending (mail-fetch-field "resent-to")) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4011 (if mail-self-blind |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4012 (if resending |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4013 (insert "Resent-Bcc: " (user-login-name) "\n") |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4014 (insert "BCC: " (user-login-name) "\n")))) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4015 (goto-char (point-min)) |
812026b169d4
(rmail-reformat-message): Bind inhibit-read-only to t.
Richard M. Stallman <rms@gnu.org>
parents:
38191
diff
changeset
|
4016 (mail-position-on-field (if resending "Resent-To" "To") t)))))) |
10970
c71d4c1319e4
(rmail-duplicate-message): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10815
diff
changeset
|
4017 |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
4018 (defun rmail-summary-exists () |
78477
0092d723fe35
Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents:
78232
diff
changeset
|
4019 "Non-nil if in an RMAIL buffer and an associated summary buffer exists. |
6408
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4020 In fact, the non-nil value returned is the summary buffer itself." |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
4021 (and rmail-summary-buffer (buffer-name rmail-summary-buffer) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
4022 rmail-summary-buffer)) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
4023 |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
4024 (defun rmail-summary-displayed () |
78477
0092d723fe35
Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents:
78232
diff
changeset
|
4025 "t if in RMAIL buffer and an associated summary buffer is displayed." |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
4026 (and rmail-summary-buffer (get-buffer-window rmail-summary-buffer))) |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
4027 |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
4028 (defcustom rmail-redisplay-summary nil |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
4029 "*Non-nil means Rmail should show the summary when it changes. |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
4030 This has an effect only if a summary buffer exists." |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
4031 :type 'boolean |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
4032 :group 'rmail-summary) |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
4033 |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
4034 (defcustom rmail-summary-window-size nil |
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
4035 "*Non-nil means specify the height for an Rmail summary window." |
20261
a1ca84bd10fd
(rmail-summary-window-size): Allow integer values.
Karl Heuer <kwzh@gnu.org>
parents:
20053
diff
changeset
|
4036 :type '(choice (const :tag "Disabled" nil) integer) |
17630
de5770c149d9
Add defgroups, and use defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
17620
diff
changeset
|
4037 :group 'rmail-summary) |
6408
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4038 |
2076
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
4039 ;; Put the summary buffer back on the screen, if user wants that. |
5140299129c3
(rmail-delete-forward): Go to summary buf to change D mark.
Richard M. Stallman <rms@gnu.org>
parents:
2006
diff
changeset
|
4040 (defun rmail-maybe-display-summary () |
6408
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4041 (let ((selected (selected-window)) |
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4042 window) |
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4043 ;; If requested, make sure the summary is displayed. |
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4044 (and rmail-summary-buffer (buffer-name rmail-summary-buffer) |
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4045 rmail-redisplay-summary |
8533
a0af63b5bc45
(rmail-retry-failure): Narrow to just the old header
Richard M. Stallman <rms@gnu.org>
parents:
8506
diff
changeset
|
4046 (if (get-buffer-window rmail-summary-buffer 0) |
a0af63b5bc45
(rmail-retry-failure): Narrow to just the old header
Richard M. Stallman <rms@gnu.org>
parents:
8506
diff
changeset
|
4047 ;; It's already in some frame; show that one. |
a0af63b5bc45
(rmail-retry-failure): Narrow to just the old header
Richard M. Stallman <rms@gnu.org>
parents:
8506
diff
changeset
|
4048 (let ((frame (window-frame |
a0af63b5bc45
(rmail-retry-failure): Narrow to just the old header
Richard M. Stallman <rms@gnu.org>
parents:
8506
diff
changeset
|
4049 (get-buffer-window rmail-summary-buffer 0)))) |
a0af63b5bc45
(rmail-retry-failure): Narrow to just the old header
Richard M. Stallman <rms@gnu.org>
parents:
8506
diff
changeset
|
4050 (make-frame-visible frame) |
a0af63b5bc45
(rmail-retry-failure): Narrow to just the old header
Richard M. Stallman <rms@gnu.org>
parents:
8506
diff
changeset
|
4051 (raise-frame frame)) |
a0af63b5bc45
(rmail-retry-failure): Narrow to just the old header
Richard M. Stallman <rms@gnu.org>
parents:
8506
diff
changeset
|
4052 (display-buffer rmail-summary-buffer))) |
6408
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4053 ;; If requested, set the height of the summary window. |
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4054 (and rmail-summary-buffer (buffer-name rmail-summary-buffer) |
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4055 rmail-summary-window-size |
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4056 (setq window (get-buffer-window rmail-summary-buffer)) |
8533
a0af63b5bc45
(rmail-retry-failure): Narrow to just the old header
Richard M. Stallman <rms@gnu.org>
parents:
8506
diff
changeset
|
4057 ;; Don't try to change the size if just one window in frame. |
a0af63b5bc45
(rmail-retry-failure): Narrow to just the old header
Richard M. Stallman <rms@gnu.org>
parents:
8506
diff
changeset
|
4058 (not (eq window (frame-root-window (window-frame window)))) |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
4059 (unwind-protect |
6408
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4060 (progn |
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4061 (select-window window) |
14779
afbd0214f6ec
Must fontify only if we're actually showing a message.
Simon Marshall <simon@gnu.org>
parents:
14749
diff
changeset
|
4062 (enlarge-window (- rmail-summary-window-size (window-height)))) |
6408
185b1fd3a525
(rmail-summary-window-size): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
6389
diff
changeset
|
4063 (select-window selected))))) |
270 | 4064 |
14374
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4065 ;;;; *** Rmail Local Fontification *** |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4066 |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4067 (defun rmail-fontify-buffer-function () |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4068 ;; This function's symbol is bound to font-lock-fontify-buffer-function. |
14467
f95ca90841d7
Fix up specialised fontification stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
4069 (add-hook 'rmail-show-message-hook 'rmail-fontify-message nil t) |
14779
afbd0214f6ec
Must fontify only if we're actually showing a message.
Simon Marshall <simon@gnu.org>
parents:
14749
diff
changeset
|
4070 ;; If we're already showing a message, fontify it now. |
afbd0214f6ec
Must fontify only if we're actually showing a message.
Simon Marshall <simon@gnu.org>
parents:
14749
diff
changeset
|
4071 (if rmail-current-message (rmail-fontify-message)) |
afbd0214f6ec
Must fontify only if we're actually showing a message.
Simon Marshall <simon@gnu.org>
parents:
14749
diff
changeset
|
4072 ;; Prevent Font Lock mode from kicking in. |
14467
f95ca90841d7
Fix up specialised fontification stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
4073 (setq font-lock-fontified t)) |
14374
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4074 |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4075 (defun rmail-unfontify-buffer-function () |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4076 ;; This function's symbol is bound to font-lock-fontify-unbuffer-function. |
14467
f95ca90841d7
Fix up specialised fontification stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
4077 (let ((modified (buffer-modified-p)) |
f95ca90841d7
Fix up specialised fontification stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
4078 (buffer-undo-list t) (inhibit-read-only t) |
f95ca90841d7
Fix up specialised fontification stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
4079 before-change-functions after-change-functions |
f95ca90841d7
Fix up specialised fontification stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
4080 buffer-file-name buffer-file-truename) |
f95ca90841d7
Fix up specialised fontification stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
4081 (save-restriction |
f95ca90841d7
Fix up specialised fontification stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
4082 (widen) |
f95ca90841d7
Fix up specialised fontification stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
4083 (remove-hook 'rmail-show-message-hook 'rmail-fontify-message t) |
f95ca90841d7
Fix up specialised fontification stuff.
Simon Marshall <simon@gnu.org>
parents:
14374
diff
changeset
|
4084 (remove-text-properties (point-min) (point-max) '(rmail-fontified nil)) |
14898
467e9d219590
(rmail-fontify-message, rmail-unfontify-buffer-function):
Richard M. Stallman <rms@gnu.org>
parents:
14779
diff
changeset
|
4085 (font-lock-default-unfontify-buffer) |
467e9d219590
(rmail-fontify-message, rmail-unfontify-buffer-function):
Richard M. Stallman <rms@gnu.org>
parents:
14779
diff
changeset
|
4086 (and (not modified) (buffer-modified-p) (set-buffer-modified-p nil))))) |
14374
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4087 |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4088 (defun rmail-fontify-message () |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4089 ;; Fontify the current message if it is not already fontified. |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4090 (if (text-property-any (point-min) (point-max) 'rmail-fontified nil) |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4091 (let ((modified (buffer-modified-p)) |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4092 (buffer-undo-list t) (inhibit-read-only t) |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4093 before-change-functions after-change-functions |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4094 buffer-file-name buffer-file-truename) |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4095 (save-excursion |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4096 (save-match-data |
e2423983be05
Support for local fontification.
Simon Marshall <simon@gnu.org>
parents:
14370
diff
changeset
|
4097 (add-text-properties (point-min) (point-max) '(rmail-fontified t)) |
14898
467e9d219590
(rmail-fontify-message, rmail-unfontify-buffer-function):
Richard M. Stallman <rms@gnu.org>
parents:
14779
diff
changeset
|
4098 (font-lock-fontify-region (point-min) (point-max)) |
467e9d219590
(rmail-fontify-message, rmail-unfontify-buffer-function):
Richard M. Stallman <rms@gnu.org>
parents:
14779
diff
changeset
|
4099 (and (not modified) (buffer-modified-p) (set-buffer-modified-p nil))))))) |
22732
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4100 |
20757
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4101 ;;; Speedbar support for RMAIL files. |
22732
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4102 (eval-when-compile (require 'speedbar)) |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4103 |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4104 (defvar rmail-speedbar-match-folder-regexp "^[A-Z0-9]+\\(\\.[A-Z0-9]+\\)?$" |
47024
15430c8d0eaa
* startup.el (normal-splash-screen): Ensure splash buffer is
John Paul Wallington <jpw@pobox.com>
parents:
46924
diff
changeset
|
4105 "*This regex is used to match folder names to be displayed in speedbar. |
22732
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4106 Enabling this will permit speedbar to display your folders for easy |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4107 browsing, and moving of messages.") |
20757
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4108 |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4109 (defvar rmail-speedbar-last-user nil |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4110 "The last user to be displayed in the speedbar.") |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4111 |
22732
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4112 (defvar rmail-speedbar-key-map nil |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4113 "Keymap used when in rmail display mode.") |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4114 |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4115 (defun rmail-install-speedbar-variables () |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4116 "Install those variables used by speedbar to enhance rmail." |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4117 (if rmail-speedbar-key-map |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4118 nil |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4119 (setq rmail-speedbar-key-map (speedbar-make-specialized-keymap)) |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4120 |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4121 (define-key rmail-speedbar-key-map "e" 'speedbar-edit-line) |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4122 (define-key rmail-speedbar-key-map "r" 'speedbar-edit-line) |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4123 (define-key rmail-speedbar-key-map "\C-m" 'speedbar-edit-line) |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4124 (define-key rmail-speedbar-key-map "M" |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4125 'rmail-speedbar-move-message-to-folder-on-line))) |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4126 |
20757
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4127 (defvar rmail-speedbar-menu-items |
22732
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4128 '(["Read Folder" speedbar-edit-line t] |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4129 ["Move message to folder" rmail-speedbar-move-message-to-folder-on-line |
20757
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4130 (save-excursion (beginning-of-line) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4131 (looking-at "<M> "))]) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4132 "Additional menu-items to add to speedbar frame.") |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4133 |
22732
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4134 ;; Make sure our special speedbar major mode is loaded |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4135 (if (featurep 'speedbar) |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4136 (rmail-install-speedbar-variables) |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4137 (add-hook 'speedbar-load-hook 'rmail-install-speedbar-variables)) |
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4138 |
20757
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4139 (defun rmail-speedbar-buttons (buffer) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4140 "Create buttons for BUFFER containing rmail messages. |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4141 Click on the address under Reply to: to reply to this person. |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4142 Under Folders: Click a name to read it, or on the <M> to move the |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4143 current message into that RMAIL folder." |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4144 (let ((from nil)) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4145 (save-excursion |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4146 (set-buffer buffer) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4147 (goto-char (point-min)) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4148 (if (not (re-search-forward "^Reply-To: " nil t)) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4149 (if (not (re-search-forward "^From:? " nil t)) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4150 (setq from t))) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4151 (if from |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4152 nil |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4153 (setq from (buffer-substring (point) (save-excursion |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4154 (end-of-line) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4155 (point)))))) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4156 (goto-char (point-min)) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4157 (if (and (looking-at "Reply to:") |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4158 (equal from rmail-speedbar-last-user)) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4159 nil |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4160 (setq rmail-speedbar-last-user from) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4161 (erase-buffer) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4162 (insert "Reply To:\n") |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4163 (if (stringp from) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4164 (speedbar-insert-button from 'speedbar-directory-face 'highlight |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4165 'rmail-speedbar-button 'rmail-reply)) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4166 (insert "Folders:\n") |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4167 (let* ((case-fold-search nil) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4168 (df (directory-files (save-excursion (set-buffer buffer) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4169 default-directory) |
22732
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4170 nil rmail-speedbar-match-folder-regexp))) |
20757
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4171 (while df |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4172 (speedbar-insert-button "<M>" 'speedbar-button-face 'highlight |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4173 'rmail-speedbar-move-message (car df)) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4174 (speedbar-insert-button (car df) 'speedbar-file-face 'highlight |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4175 'rmail-speedbar-find-file nil t) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4176 (setq df (cdr df))))))) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4177 |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4178 (defun rmail-speedbar-button (text token indent) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4179 "Execute an rmail command specified by TEXT. |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4180 The command used is TOKEN. INDENT is not used." |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4181 (speedbar-with-attached-buffer |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4182 (funcall token t))) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4183 |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4184 (defun rmail-speedbar-find-file (text token indent) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4185 "Load in the rmail file TEXT. |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4186 TOKEN and INDENT are not used." |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4187 (speedbar-with-attached-buffer |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4188 (message "Loading in RMAIL file %s..." text) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4189 (find-file text))) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4190 |
22732
3408cd75e193
No longer depends on speedbspec for byte compile.
Karl Heuer <kwzh@gnu.org>
parents:
22724
diff
changeset
|
4191 (defun rmail-speedbar-move-message-to-folder-on-line () |
20757
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4192 "If the current line is a folder, move current message to it." |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4193 (interactive) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4194 (save-excursion |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4195 (beginning-of-line) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4196 (if (re-search-forward "<M> " (save-excursion (end-of-line) (point)) t) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4197 (progn |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4198 (forward-char -2) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4199 (speedbar-do-function-pointer))))) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4200 |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4201 (defun rmail-speedbar-move-message (text token indent) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4202 "From button TEXT, copy current message to the rmail file specified by TOKEN. |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4203 TEXT and INDENT are not used." |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4204 (speedbar-with-attached-buffer |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4205 (message "Moving message to %s" token) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4206 (rmail-output-to-rmail-file token))) |
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4207 |
22838
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4208 ; Functions for setting, getting and encoding the POP password. |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4209 ; The password is encoded to prevent it from being easily accessible |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4210 ; to "prying eyes." Obviously, this encoding isn't "real security," |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4211 ; nor is it meant to be. |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4212 |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4213 ;;;###autoload |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4214 (defun rmail-set-remote-password (password) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4215 "Set PASSWORD to be used for retrieving mail from a POP or IMAP server." |
22838
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4216 (interactive "sPassword: ") |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4217 (if password |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4218 (setq rmail-encoded-remote-password |
22838
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4219 (rmail-encode-string password (emacs-pid))) |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4220 (setq rmail-remote-password nil) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4221 (setq rmail-encoded-remote-password nil))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4222 |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4223 (defun rmail-get-remote-password (imap) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4224 "Get the password for retrieving mail from a POP or IMAP server. If none |
22838
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4225 has been set, then prompt the user for one." |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4226 (when (not rmail-encoded-remote-password) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4227 (if (not rmail-remote-password) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4228 (setq rmail-remote-password |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4229 (read-passwd (if imap |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4230 "IMAP password: " |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4231 "POP password: ")))) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4232 (rmail-set-remote-password rmail-remote-password) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4233 (setq rmail-remote-password nil)) |
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4234 (rmail-encode-string rmail-encoded-remote-password (emacs-pid))) |
22838
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4235 |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4236 (defun rmail-have-password () |
59561
1e7f10c55429
Updated to work with movemail from GNU Mailutils
Eli Zaretskii <eliz@gnu.org>
parents:
59118
diff
changeset
|
4237 (or rmail-remote-password rmail-encoded-remote-password)) |
22838
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4238 |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4239 (defun rmail-encode-string (string mask) |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4240 "Encode STRING with integer MASK, by taking the exclusive OR of the |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4241 lowest byte in the mask with the first character of string, the |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4242 second-lowest-byte with the second character of the string, etc., |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4243 restarting at the lowest byte of the mask whenever it runs out. |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4244 Returns the encoded string. Calling the function again with an |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4245 encoded string (and the same mask) will decode the string." |
23969
3e4e87cddb85
(rmail-encode-string): Make sure mask value is
Richard M. Stallman <rms@gnu.org>
parents:
23750
diff
changeset
|
4246 (setq mask (abs mask)) ; doesn't work if negative |
45144
30db00c75dbf
(rmail-font-lock-keywords): Highlight Resent-[Ff]rom:.
Francesco Potortì <pot@gnu.org>
parents:
44141
diff
changeset
|
4247 (let* ((string-vector (string-to-vector string)) (i 0) |
22838
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4248 (len (length string-vector)) (curmask mask) charmask) |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4249 (while (< i len) |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4250 (if (= curmask 0) |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4251 (setq curmask mask)) |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4252 (setq charmask (% curmask 256)) |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4253 (setq curmask (lsh curmask -8)) |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4254 (aset string-vector i (logxor charmask (aref string-vector i))) |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4255 (setq i (1+ i))) |
4b3e0d38cdb0
(rmail-insert-inbox-text): Use rmail-have-password,
Richard M. Stallman <rms@gnu.org>
parents:
22732
diff
changeset
|
4256 (concat string-vector))) |
20757
f900cfe382e4
Added speedbar support for RMAIL files.
Eric M. Ludlam <zappo@gnu.org>
parents:
20681
diff
changeset
|
4257 |
55056
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4258 ;;;; Desktop support |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4259 |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4260 (defun rmail-restore-desktop-buffer (desktop-buffer-file-name |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4261 desktop-buffer-name |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4262 desktop-buffer-misc) |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4263 "Restore an rmail buffer specified in a desktop file." |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4264 (condition-case error |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4265 (progn |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4266 (rmail-input desktop-buffer-file-name) |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4267 (if (eq major-mode 'rmail-mode) |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4268 (current-buffer) |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4269 rmail-buffer)) |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4270 (file-locked |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4271 (kill-buffer (current-buffer)) |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4272 nil))) |
c7ded215e268
(rmail-restore-desktop-buffer): Move from desktop.el. Add Parameters.
Lars Hansen <larsh@soem.dk>
parents:
54990
diff
changeset
|
4273 |
64961 | 4274 (add-to-list 'desktop-buffer-mode-handlers |
4275 '(rmail-mode . rmail-restore-desktop-buffer)) | |
64897
2c34662daa03
Add handler to desktop-buffer-mode-handlers.
Lars Hansen <larsh@soem.dk>
parents:
64831
diff
changeset
|
4276 |
584 | 4277 (provide 'rmail) |
4278 | |
52401 | 4279 ;;; arch-tag: cff0a950-57fe-4f73-a86e-91ff75afd06c |
658
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
4280 ;;; rmail.el ends here |