*** dist/vm-digest.el.dist Sat Jun 23 18:57:59 2001 --- vm-digest.el Mon Jul 23 20:25:13 2001 *************** *** 71,73 **** If ALWAYS-USE-DIGEST is non-nil, always encapsulate for a multipart/digest. ! Otherwise if there are fewer than two messages to be encapsulated leave off the multipart boundary strings. The caller is assumed to --- 71,73 ---- If ALWAYS-USE-DIGEST is non-nil, always encapsulate for a multipart/digest. ! Otherwise if there is only one message to be encapsulated leave off the multipart boundary strings. The caller is assumed to *************** *** 82,84 **** (mlist message-list) - (mime-keep-list (append keep-list vm-mime-header-list)) (boundary nil) --- 82,83 ---- *************** *** 99,106 **** (goto-char beg) ! (vm-reorder-message-headers nil nil "\\(X-VM-\\|Status:\\)") ! (vm-reorder-message-headers ! nil (if (vm-mime-plain-message-p m) ! keep-list ! mime-keep-list) ! discard-regexp) (goto-char (point-max)) --- 98,110 ---- (goto-char beg) ! ;; remove the Berkeley and VM status headers and sort ! ;; the MIME headers to the top of the message. ! (vm-reorder-message-headers nil vm-mime-header-list ! "\\(X-VM-\\|Status:\\)") ! ;; skip past the MIME headers so that when the ! ;; user's header filters are applied they won't ! ;; remove the MIME headers. ! (while (and (vm-match-header) (looking-at vm-mime-header-regexp)) ! (goto-char (vm-matched-header-end))) ! ;; apply the user's header filters. ! (vm-reorder-message-headers nil keep-list discard-regexp) (goto-char (point-max)) *************** *** 251,253 **** (let ((target-buffer (current-buffer)) - (mime-keep-list (append keep-list vm-mime-header-list)) (mlist message-list) --- 255,256 ---- *************** *** 274,282 **** (goto-char beg) ! (vm-reorder-message-headers nil nil "\\(X-VM-\\|Status:\\)") ! (vm-reorder-message-headers ! nil (if (vm-mime-plain-message-p m) ! keep-list ! mime-keep-list) ! discard-regexp) (vm-rfc934-char-stuff-region beg (point-max)))))) --- 277,290 ---- (goto-char beg) ! ;; remove the Berkeley and VM status headers and sort ! ;; the MIME headers to the top of the message. ! (vm-reorder-message-headers nil vm-mime-header-list "\\(X-VM-\\|Status:\\)") ! ;; skip past the MIME headers so that when the ! ;; user's header filters are applied they won't ! ;; remove the MIME headers. ! (while (and (vm-match-header) ! (looking-at vm-mime-header-regexp)) ! (goto-char (vm-matched-header-end))) ! ;; apply the user's header filters. ! (vm-reorder-message-headers nil keep-list discard-regexp) (vm-rfc934-char-stuff-region beg (point-max)))))) *************** *** 339,341 **** (let ((target-buffer (current-buffer)) - (mime-keep-list (append keep-list vm-mime-header-list)) (mlist message-list) --- 347,348 ---- *************** *** 362,370 **** (goto-char beg) ! (vm-reorder-message-headers nil nil "\\(X-VM-\\|Status:\\)") ! (vm-reorder-message-headers ! nil (if (vm-mime-plain-message-p m) ! keep-list ! mime-keep-list) ! discard-regexp) (vm-rfc1153-char-stuff-region beg (point-max)))))) --- 369,382 ---- (goto-char beg) ! ;; remove the Berkeley and VM status headers and sort ! ;; the MIME headers to the top of the message. ! (vm-reorder-message-headers nil vm-mime-header-list "\\(X-VM-\\|Status:\\)") ! ;; skip past the MIME headers so that when the ! ;; user's header filters are applied they won't ! ;; remove the MIME headers. ! (while (and (vm-match-header) ! (looking-at vm-mime-header-regexp)) ! (goto-char (vm-matched-header-end))) ! ;; apply the user's header filters. ! (vm-reorder-message-headers nil keep-list discard-regexp) (vm-rfc1153-char-stuff-region beg (point-max)))))) *************** *** 723,725 **** (goto-char (vm-text-of m)) ! (cond ((search-forward "\n----------------------------------------------------------------------\n" (vm-text-end-of m) t) "rfc1153") --- 735,738 ---- (goto-char (vm-text-of m)) ! (cond ((and (search-forward "\n----------------------------------------------------------------------\n" (vm-text-end-of m) t) ! (search-forward "\n------------------------------\n" (vm-text-end-of m) t)) "rfc1153") *** dist/vm-folder.el.dist Sat Jun 23 18:57:59 2001 --- vm-folder.el Sat Jul 21 23:12:54 2001 *************** *** 787,788 **** --- 787,790 ---- nil ))) + ((eq vm-folder-type 'baremessage) + (goto-char (point-max))) ((eq vm-folder-type 'babyl) *************** *** 836,837 **** --- 838,841 ---- (vm-find-leading-message-separator)) + ((eq vm-folder-type 'baremessage) + (goto-char (point-max))) ((eq vm-folder-type 'babyl) *************** *** 2910,2923 **** (save-excursion ! (set-buffer (car b-list)) ! (if (and (eq major-mode 'vm-mode) ! (setq found-one t) ! ;; to avoid reentrance into the pop and imap code ! (not vm-global-block-new-mail)) ! (progn ! (setq oldval vm-spooled-mail-waiting) ! (setq vm-spooled-mail-waiting (vm-check-for-spooled-mail nil t)) ! (if (not (eq oldval vm-spooled-mail-waiting)) ! (progn ! (intern (buffer-name) vm-buffers-needing-display-update) ! (run-hooks 'vm-spooled-mail-waiting-hook)))))) (setq b-list (cdr b-list))) --- 2914,2929 ---- (save-excursion ! (if (not (buffer-live-p (car b-list))) ! nil ! (set-buffer (car b-list)) ! (if (and (eq major-mode 'vm-mode) ! (setq found-one t) ! ;; to avoid reentrance into the pop and imap code ! (not vm-global-block-new-mail)) ! (progn ! (setq oldval vm-spooled-mail-waiting) ! (setq vm-spooled-mail-waiting (vm-check-for-spooled-mail nil t)) ! (if (not (eq oldval vm-spooled-mail-waiting)) ! (progn ! (intern (buffer-name) vm-buffers-needing-display-update) ! (run-hooks 'vm-spooled-mail-waiting-hook))))))) (setq b-list (cdr b-list))) *************** *** 2950,2970 **** (save-excursion ! (set-buffer (car b-list)) ! (if (and (eq major-mode 'vm-mode) ! (setq found-one t) ! (not (and (not (buffer-modified-p)) ! buffer-file-name ! (file-newer-than-file-p ! (make-auto-save-file-name) ! buffer-file-name))) ! (not vm-global-block-new-mail) ! (not vm-folder-read-only) ! (vm-get-spooled-mail nil) ! (vm-assimilate-new-messages t)) ! (progn ! ;; don't move the message pointer unless the folder ! ;; was empty. ! (if (and (null vm-message-pointer) ! (vm-thoughtfully-select-message)) ! (vm-preview-current-message) ! (vm-update-summary-and-mode-line))))) (setq b-list (cdr b-list))) --- 2956,2978 ---- (save-excursion ! (if (not (buffer-live-p (car b-list))) ! nil ! (set-buffer (car b-list)) ! (if (and (eq major-mode 'vm-mode) ! (setq found-one t) ! (not (and (not (buffer-modified-p)) ! buffer-file-name ! (file-newer-than-file-p ! (make-auto-save-file-name) ! buffer-file-name))) ! (not vm-global-block-new-mail) ! (not vm-folder-read-only) ! (vm-get-spooled-mail nil) ! (vm-assimilate-new-messages t)) ! (progn ! ;; don't move the message pointer unless the folder ! ;; was empty. ! (if (and (null vm-message-pointer) ! (vm-thoughtfully-select-message)) ! (vm-preview-current-message) ! (vm-update-summary-and-mode-line)))))) (setq b-list (cdr b-list))) *************** *** 2998,3015 **** (while (and buf-list (not (input-pending-p))) ! (set-buffer (car buf-list)) ! (cond ((and (eq major-mode 'vm-mode) vm-message-list) ! (setq found-one t) ! (if (not (eq vm-modification-counter ! vm-flushed-modification-counter)) ! (progn ! (vm-stuff-last-modified) ! (vm-stuff-pop-retrieved) ! (vm-stuff-imap-retrieved) ! (vm-stuff-summary) ! (vm-stuff-labels) ! (and vm-message-order-changed ! (vm-stuff-message-order)) ! (and (vm-stuff-folder-attributes t) ! (setq vm-flushed-modification-counter ! vm-modification-counter)))))) (setq buf-list (cdr buf-list))) --- 3006,3025 ---- (while (and buf-list (not (input-pending-p))) ! (if (not (buffer-live-p (car buf-list))) ! nil ! (set-buffer (car buf-list)) ! (cond ((and (eq major-mode 'vm-mode) vm-message-list) ! (setq found-one t) ! (if (not (eq vm-modification-counter ! vm-flushed-modification-counter)) ! (progn ! (vm-stuff-last-modified) ! (vm-stuff-pop-retrieved) ! (vm-stuff-imap-retrieved) ! (vm-stuff-summary) ! (vm-stuff-labels) ! (and vm-message-order-changed ! (vm-stuff-message-order)) ! (and (vm-stuff-folder-attributes t) ! (setq vm-flushed-modification-counter ! vm-modification-counter))))))) (setq buf-list (cdr buf-list))) *** dist/vm-imap.el.dist Sat Jun 23 18:57:59 2001 --- vm-imap.el Sat Jul 21 00:20:09 2001 *************** *** 486,488 **** (message "IMAP password for %s incorrect" imapdrop) ! (sleep-for 2) (throw 'end-of-session nil)))) --- 486,490 ---- (message "IMAP password for %s incorrect" imapdrop) ! ;; don't sleep unless we're running synchronously. ! (if vm-imap-ok-to-ask ! (sleep-for 2)) (throw 'end-of-session nil)))) *************** *** 528,530 **** (message "IMAP password for %s incorrect" imapdrop) ! (sleep-for 2) (throw 'end-of-session nil))))) --- 530,534 ---- (message "IMAP password for %s incorrect" imapdrop) ! ;; don't sleep unless we're running synchronously. ! (if vm-imap-ok-to-ask ! (sleep-for 2)) (throw 'end-of-session nil))))) *************** *** 534,536 **** (message "IMAP session was not pre-authenticated") ! (sleep-for 2) (throw 'end-of-session nil)))) --- 538,542 ---- (message "IMAP session was not pre-authenticated") ! ;; don't sleep unless we're running synchronously. ! (if vm-imap-ok-to-ask ! (sleep-for 2)) (throw 'end-of-session nil)))) *************** *** 797,799 **** ;; must make the read point a marker so that it stays fixed ! ;; relative to the text and we modify things below. (setq vm-imap-read-point (point-marker)) --- 803,805 ---- ;; must make the read point a marker so that it stays fixed ! ;; relative to the text when we modify things below. (setq vm-imap-read-point (point-marker)) *************** *** 834,839 **** (insert (vm-leading-message-separator)) ! ;; this will not find the trailing message separator but ! ;; for the Content-Length stuff counting from eob is ! ;; the same thing in this case. ! (vm-convert-folder-type-headers nil vm-folder-type) (goto-char end) --- 840,844 ---- (insert (vm-leading-message-separator)) ! (save-restriction ! (narrow-to-region (point) end) ! (vm-convert-folder-type-headers 'baremessage vm-folder-type)) (goto-char end) *** dist/vm-mime.el.dist Sat Jun 23 18:57:59 2001 --- vm-mime.el Mon Jul 23 11:16:07 2001 *************** *** 1743,1745 **** (vm-mime-transfer-decode-region layout start end))) ! (setq suffix (vm-mime-extract-filename-suffix layout)) (setq tempfile (vm-make-tempfile-name suffix)) --- 1743,1747 ---- (vm-mime-transfer-decode-region layout start end))) ! (setq suffix (vm-mime-extract-filename-suffix layout) ! suffix (or suffix ! (vm-mime-find-filename-suffix-for-type layout))) (setq tempfile (vm-make-tempfile-name suffix)) *************** *** 2385,2386 **** --- 2387,2389 ---- (vm-set-extent-property e 'begin-glyph g) + (vm-set-extent-property e 'start-open t) t ))) *************** *** 3101,3102 **** --- 3104,3116 ---- + (defun vm-mime-find-filename-suffix-for-type (layout) + (let ((type (car (vm-mm-layout-type layout))) + suffix + (alist vm-mime-attachment-auto-suffix-alist)) + (while alist + (if (vm-mime-types-match (car (car alist)) type) + (setq suffix (cdr (car alist)) + alist nil) + (setq alist (cdr alist)))) + suffix )) + (defun vm-mime-attach-file (file type &optional charset description *************** *** 3282,3288 **** ! First argument, MESSAGE, is a VM message struct. When called ! interactively a message number read. The message will come from ! the parent folder of this composition. If the composition has no ! parent, the name of a folder will be read from the minibuffer ! before the message number is read. --- 3296,3303 ---- ! First argument, MESSAGE, is either a VM message struct or a list ! of message structs. When called interactively a message number is read ! from the minibuffer. The message will come from the parent ! folder of this composition. If the composition has no parent, ! the name of a folder will be read from the minibuffer before the ! message number is read. *************** *** 3292,3293 **** --- 3307,3312 ---- + If this command is invoked on marked message (via + `vm-next-command-uses-marks') the marked messages in the selected + folder will be attached as a MIME message digest. + Optional second argument DESCRIPTION is a one-line description of *************** *** 3300,3302 **** (result 0) ! mp default prompt description folder) (if (null vm-send-using-mime) --- 3319,3321 ---- (result 0) ! mlist mp default prompt description folder) (if (null vm-send-using-mime) *************** *** 3308,3313 **** default-directory)) ! file ! (last-command last-command) ! (this-command this-command)) ! (setq file (read-file-name "Yank from folder: " dir nil t)) (save-excursion --- 3327,3332 ---- default-directory)) ! file) ! (let ((last-command last-command) ! (this-command this-command)) ! (setq file (read-file-name "Yank from folder: " dir nil t))) (save-excursion *************** *** 3317,3335 **** (setq folder (current-buffer)) ! (vm-mode)))) (t ! (setq folder vm-mail-buffer))) ! (save-excursion ! (set-buffer folder) ! (setq default (and vm-message-pointer ! (vm-number-of (car vm-message-pointer))) ! prompt (if default ! (format "Yank message number: (default %s) " ! default) ! "Yank message number: ")) ! (while (zerop result) ! (setq result (read-string prompt)) ! (and (string= result "") default (setq result default)) ! (setq result (string-to-int result))) ! (if (null (setq mp (nthcdr (1- result) vm-message-list))) ! (error "No such message."))) (setq description (read-string "Description: ")) --- 3336,3359 ---- (setq folder (current-buffer)) ! (vm-mode) ! (setq mlist (vm-select-marked-or-prefixed-messages 0))))) (t ! (setq folder vm-mail-buffer) ! (save-excursion ! (set-buffer folder) ! (setq mlist (vm-select-marked-or-prefixed-messages 0))))) ! (if (null mlist) ! (save-excursion ! (set-buffer folder) ! (setq default (and vm-message-pointer ! (vm-number-of (car vm-message-pointer))) ! prompt (if default ! (format "Yank message number: (default %s) " ! default) ! "Yank message number: ")) ! (while (zerop result) ! (setq result (read-string prompt)) ! (and (string= result "") default (setq result default)) ! (setq result (string-to-int result))) ! (if (null (setq mp (nthcdr (1- result) vm-message-list))) ! (error "No such message.")))) (setq description (read-string "Description: ")) *************** *** 3337,3359 **** (setq description nil)) ! (list (car mp) description))) (if (null vm-send-using-mime) (error "MIME attachments disabled, set vm-send-using-mime non-nil to enable.")) ! (let* ((buf (generate-new-buffer "*attached message*")) ! (m (vm-real-message-of message)) ! (folder (vm-buffer-of m))) ! (save-excursion ! (set-buffer buf) ! (if vm-fsfemacs-mule-p ! (set-buffer-multibyte nil)) ! (vm-insert-region-from-buffer folder (vm-headers-of m) ! (vm-text-end-of m)) ! (goto-char (point-min)) ! (vm-reorder-message-headers nil nil "\\(X-VM-\\|Status:\\)")) ! (and description (setq description ! (vm-mime-scrub-description description))) ! (vm-mime-attach-object buf "message/rfc822" nil description nil) ! (add-hook 'kill-buffer-hook ! (list 'lambda () ! (list 'if (list 'eq (current-buffer) '(current-buffer)) ! (list 'kill-buffer buf)))))) --- 3361,3412 ---- (setq description nil)) ! (list (or mlist (car mp)) description))) (if (null vm-send-using-mime) (error "MIME attachments disabled, set vm-send-using-mime non-nil to enable.")) ! (if (not (consp message)) ! (let* ((buf (generate-new-buffer "*attached message*")) ! (m (vm-real-message-of message)) ! (folder (vm-buffer-of m))) ! (save-excursion ! (set-buffer buf) ! (if vm-fsfemacs-mule-p ! (set-buffer-multibyte nil)) ! (vm-insert-region-from-buffer folder (vm-headers-of m) ! (vm-text-end-of m)) ! (goto-char (point-min)) ! (vm-reorder-message-headers nil nil "\\(X-VM-\\|Status:\\)")) ! (and description (setq description ! (vm-mime-scrub-description description))) ! (vm-mime-attach-object buf "message/rfc822" nil description nil) ! (add-hook 'kill-buffer-hook ! (list 'lambda () ! (list 'if (list 'eq (current-buffer) '(current-buffer)) ! (list 'kill-buffer buf))))) ! (let ((buf (generate-new-buffer "*attached messages*")) ! boundary) ! (save-excursion ! (set-buffer buf) ! (setq boundary (vm-mime-encapsulate-messages ! message vm-mime-digest-headers ! vm-mime-digest-discard-header-regexp ! t)) ! (goto-char (point-min)) ! (insert "MIME-Version: 1.0\n") ! (insert (if vm-mime-avoid-folding-content-type ! "Content-Type: multipart/digest; boundary=\"" ! "Content-Type: multipart/digest;\n\tboundary=\"") ! boundary "\"\n") ! (insert "Content-Transfer-Encoding: " ! (vm-determine-proper-content-transfer-encoding ! (point) ! (point-max)) ! "\n\n")) ! (and description (setq description ! (vm-mime-scrub-description description))) ! (vm-mime-attach-object buf "multipart/digest" ! (list (concat "boundary=\"" ! boundary "\"")) nil t) ! (add-hook 'kill-buffer-hook ! (list 'lambda () ! (list 'if (list 'eq (current-buffer) '(current-buffer)) ! (list 'kill-buffer buf))))))) *** dist/vm-misc.el.dist Sat Jun 23 18:57:59 2001 --- vm-misc.el Sun Jul 22 19:30:34 2001 *************** *** 317,319 **** sym-string (or sym-string "-unparseable-garbage-") ! sym (intern sym-string hashtable)) (if (boundp sym) --- 317,320 ---- sym-string (or sym-string "-unparseable-garbage-") ! sym (intern (if hack-addresses (downcase sym-string) sym-string) ! hashtable)) (if (boundp sym) *************** *** 869,871 **** (goto-char (point-min)) ! (if (or (re-search-forward "[^0-9a-f\n]") (< (point-max) 32)) --- 870,872 ---- (goto-char (point-min)) ! (if (or (re-search-forward "[^0-9a-f\n]" nil t) (< (point-max) 32)) *** dist/vm-page.el.dist Sat Jun 23 18:57:59 2001 --- vm-page.el Mon Jul 23 12:11:27 2001 *************** *** 550,551 **** --- 550,571 ---- (forward-line (if (natnump vm-preview-lines) vm-preview-lines 0)) + ;; KLUDGE CITY: Under XEmacs, an extent's begin-glyph + ;; will be displayed even if the extent is at the end + ;; of a narrowed region. Thus a message continaing + ;; only an image will have the image displayed at + ;; preview time even if vm-preview-lines is 0 provided + ;; vm-mime-decode-for-preview is non-nil. We kludge + ;; a fix for this by moving everything on the preview + ;; cutoff line one character forward, but only if + ;; we're doing MIME decode for preview. + (if (and vm-xemacs-p + vm-mail-buffer ; in presentation buffer + vm-auto-decode-mime-messages + vm-mime-decode-for-preview + ;; can't do the kludge unless we know that + ;; when the message is exposed it will be + ;; decoded and thereby remove the kludge. + (not (vm-mime-plain-message-p (car vm-message-pointer)))) + (let ((buffer-read-only nil)) + (insert " ") + (forward-char -1))) (point)))) *** dist/vm-pop.el.dist Sat Jun 23 18:57:59 2001 --- vm-pop.el Sat Jul 21 00:17:59 2001 *************** *** 432,434 **** (message "POP password for %s incorrect" popdrop) ! (sleep-for 2) (throw 'done nil)))) --- 432,436 ---- (message "POP password for %s incorrect" popdrop) ! ;; don't sleep unless we're running synchronously. ! (if vm-pop-ok-to-ask ! (sleep-for 2)) (throw 'done nil)))) *************** *** 449,451 **** (message "Server of %s does not support APOP" popdrop) ! (sleep-for 2) (throw 'done nil))) --- 451,455 ---- (message "Server of %s does not support APOP" popdrop) ! ;; don't sleep unless we're running synchronously ! (if vm-pop-ok-to-ask ! (sleep-for 2)) (throw 'done nil))) *************** *** 462,464 **** (message "POP password for %s incorrect" popdrop) ! (sleep-for 2) (throw 'done nil)))) --- 466,469 ---- (message "POP password for %s incorrect" popdrop) ! (if vm-pop-ok-to-ask ! (sleep-for 2)) (throw 'done nil)))) *************** *** 752,757 **** (insert (vm-leading-message-separator)) ! ;; this will not find the trailing message separator but ! ;; for the Content-Length stuff counting from eob is ! ;; the same thing in this case. ! (vm-convert-folder-type-headers nil vm-folder-type) (goto-char end) --- 757,761 ---- (insert (vm-leading-message-separator)) ! (save-restriction ! (narrow-to-region (point) end) ! (vm-convert-folder-type-headers 'baremessage vm-folder-type)) (goto-char end) *** dist/vm-reply.el.dist Sat Jun 23 18:57:59 2001 --- vm-reply.el Fri Jul 20 20:06:45 2001 *************** *** 1426,1472 **** (defun vm-mail-mode-remove-tm-hooks () ! (make-local-hook 'mail-setup-hook) ! (remove-hook 'mail-setup-hook 'mime/decode-message-header t) ! (remove-hook 'mail-setup-hook 'mime/editor-mode t) ! (make-local-hook 'mail-send-hook) (remove-hook 'mail-send-hook 'mime-editor/maybe-translate)) - - (defvar mail-send-actions) - - (defun vm-compose-mail (&optional to subject other-headers continue - switch-function yank-action - send-actions) - (interactive) - (vm-session-initialization) - (if continue - (vm-continue-composing-message) - (let ((buffer (vm-mail-internal - (if to - (format "message to %s" - (vm-truncate-roman-string to 20)) - nil) - to subject))) - (goto-char (point-min)) - (re-search-forward (concat "^" mail-header-separator "$")) - (beginning-of-line) - (while other-headers - (insert (car (car other-headers))) - (while (eq (char-syntax (char-before (point))) ?\ ) - (delete-char -1)) - (while (eq (char-before (point)) ?:) - (delete-char -1)) - (insert ": " (cdr (car other-headers))) - (if (not (eq (char-before (point)) ?\n)) - (insert "\n")) - (setq other-headers (cdr other-headers))) - (cond ((null to) - (mail-position-on-field "To")) - ((null subject) - (mail-position-on-field "Subject")) - (t - (mail-text))) - (funcall (or switch-function (function switch-to-buffer)) - (current-buffer)) - (if yank-action - (apply (car yank-action) (cdr yank-action))) - (make-local-variable 'mail-send-actions) - (setq mail-send-actions send-actions)))) --- 1426,1431 ---- (defun vm-mail-mode-remove-tm-hooks () ! (remove-hook 'mail-setup-hook 'turn-on-mime-edit) ! (remove-hook 'mail-setup-hook 'mime/decode-message-header) ! (remove-hook 'mail-setup-hook 'mime/editor-mode) ! (remove-hook 'mail-send-hook 'mime-edit-maybe-translate) (remove-hook 'mail-send-hook 'mime-editor/maybe-translate)) *** dist/vm-startup.el.dist Mon Jul 9 12:01:48 2001 --- vm-startup.el Mon Jul 23 22:25:20 2001 *************** *** 344,346 **** ! This is VM 6.94. --- 344,346 ---- ! This is VM 6.95. *************** *** 1073,1074 **** --- 1073,1116 ---- (vm-update-summary-and-mode-line)) + + (defvar mail-send-actions) + + ;;;###autoload + (defun vm-compose-mail (&optional to subject other-headers continue + switch-function yank-action + send-actions) + (interactive) + (vm-session-initialization) + (if continue + (vm-continue-composing-message) + (let ((buffer (vm-mail-internal + (if to + (format "message to %s" + (vm-truncate-roman-string to 20)) + nil) + to subject))) + (goto-char (point-min)) + (re-search-forward (concat "^" mail-header-separator "$")) + (beginning-of-line) + (while other-headers + (insert (car (car other-headers))) + (while (eq (char-syntax (char-before (point))) ?\ ) + (delete-char -1)) + (while (eq (char-before (point)) ?:) + (delete-char -1)) + (insert ": " (cdr (car other-headers))) + (if (not (eq (char-before (point)) ?\n)) + (insert "\n")) + (setq other-headers (cdr other-headers))) + (cond ((null to) + (mail-position-on-field "To")) + ((null subject) + (mail-position-on-field "Subject")) + (t + (mail-text))) + (funcall (or switch-function (function switch-to-buffer)) + (current-buffer)) + (if yank-action + (apply (car yank-action) (cdr yank-action))) + (make-local-variable 'mail-send-actions) + (setq mail-send-actions send-actions)))) *** dist/vm-toolbar.el.dist Tue Dec 12 00:11:10 2000 --- vm-toolbar.el Tue Jul 17 10:29:44 2001 *************** *** 182,184 **** If there is mail waiting in one of the spool files associated ! with the current folder, this button will run `vm-get-new-mail'. If the current message needs to be MIME decoded then this button --- 182,185 ---- If there is mail waiting in one of the spool files associated ! with the current folder, and the `getmail' button is not on the ! toolbar, this button will run `vm-get-new-mail'. If the current message needs to be MIME decoded then this button *************** *** 299,304 **** vm-toolbar-helper-icon vm-toolbar-recover-icon)) ! ((vm-toolbar-mail-waiting-p) (setq vm-toolbar-helper-command 'vm-get-new-mail vm-toolbar-helper-icon vm-toolbar-getmail-icon)) ! ((and (vm-toolbar-can-decode-mime-p) (not vm-mime-decoded)) (setq vm-toolbar-helper-command 'vm-decode-mime-message --- 300,307 ---- vm-toolbar-helper-icon vm-toolbar-recover-icon)) ! ((and (vm-toolbar-mail-waiting-p) ! (not (memq 'getmail vm-use-toolbar))) (setq vm-toolbar-helper-command 'vm-get-new-mail vm-toolbar-helper-icon vm-toolbar-getmail-icon)) ! ((and (vm-toolbar-can-decode-mime-p) (not vm-mime-decoded) ! (not (memq 'mime vm-use-toolbar))) (setq vm-toolbar-helper-command 'vm-decode-mime-message *** dist/vm-vars.el.dist Sat Jun 23 18:58:00 2001 --- vm-vars.el Mon Jul 23 20:53:59 2001 *************** *** 506,508 **** specifies the order in which headers are displayed. Headers not ! matching `vm-visible-headers' are display last.") --- 506,508 ---- specifies the order in which headers are displayed. Headers not ! matching `vm-visible-headers' are displayed last.") *************** *** 1101,1102 **** --- 1101,1139 ---- + (defvar vm-mime-attachment-auto-suffix-alist + '( + ("image/jpeg" . ".jpg") + ("image/gif" . ".gif") + ("image/png" . ".png") + ("text/html" . ".html") + ("audio/basic" . ".au") + ("video/mpeg" . ".mpg") + ("video/quicktime" . ".mov") + ("application/postscript" . ".ps") + ("application/pdf" . ".pdf") + ("application/vnd.ms.excel" . ".xls") + ("application/mac-binhex40" . ".hqx") + ("application/pdf" . ".pdf") + ("application/zip" . ".zip") + ) + "*Alist used to select a filename suffix for MIME object temporary files. + The list format is + + ((TYPE . SUFFIX) ...) + + TYPE is a string specifying a MIME top-level type or a type/subtype pair. + If a top-level type is listed without a subtype, all subtypes of + that type are matched. + + SUFFIX is a string specifying the suffix that shoul be used for + the accompanying type. + + When a MIME object is displayed using an external viewer VM must + first write the object to a temporary file. The external viewer + opens and displays that file. Some viewers will not open a file + unless the filename ends with some extention that it recognizes + such as '.html' or '.jpg'. You can use this variable to map MIME + types to extensions that your external viewers will recognize. VM + will search the list for a matching type. The suffix assocaited + with the first type that matches will be used.") + (defvar vm-mime-max-message-size nil *************** *** 2508,2510 **** (defvar vm-url-retrieval-methods '(lynx wget url-w3) ! "*Non-mil value specifies how VM is permitted to retrieve URLs. VM needs to do this when supporting the message/external-body --- 2545,2547 ---- (defvar vm-url-retrieval-methods '(lynx wget url-w3) ! "*Non-nil value specifies how VM is permitted to retrieve URLs. VM needs to do this when supporting the message/external-body *************** *** 3901,3903 **** (defconst vm-mime-header-list '("MIME-Version:" "Content-")) ! (defconst vm-mime-mule-charset-to-coding-alist --- 3938,3940 ---- (defconst vm-mime-header-list '("MIME-Version:" "Content-")) ! (defconst vm-mime-header-regexp "\\(MIME-Version:\\|Content-\\)") (defconst vm-mime-mule-charset-to-coding-alist *** dist/vm-version.el.dist Mon Jul 9 12:01:48 2001 --- vm-version.el Mon Jul 23 22:25:20 2001 *************** *** 4,6 **** ! (defconst vm-version "6.94" "Version number of VM.") --- 4,6 ---- ! (defconst vm-version "6.95" "Version number of VM.")