*** dist/vm-digest.el.dist Mon Jul 13 08:05:08 1998 --- vm-digest.el Sun Oct 22 12:34:57 2000 *************** *** 159,162 **** (widen) ! (setq work-buffer (generate-new-buffer "*vm-work*")) ! (buffer-disable-undo work-buffer) (set-buffer work-buffer) --- 159,161 ---- (widen) ! (setq work-buffer (vm-make-work-buffer)) (set-buffer work-buffer) *************** *** 406,409 **** (catch 'done ! (setq work-buffer (generate-new-buffer "*vm-work*")) ! (buffer-disable-undo work-buffer) (set-buffer work-buffer) --- 405,407 ---- (catch 'done ! (setq work-buffer (vm-make-work-buffer)) (set-buffer work-buffer) *************** *** 660,661 **** --- 658,660 ---- (if (cdr mlist) " ..." "")))) + (buffer-disable-undo work-buffer) (set-buffer work-buffer) *** dist/vm-folder.el.dist Tue Sep 5 12:19:40 2000 --- vm-folder.el Fri Oct 27 22:45:02 2000 *************** *** 517,519 **** (set-buffer b) ! (setq temp-buffer (generate-new-buffer "*vm-work*")) (set-buffer temp-buffer) --- 517,519 ---- (set-buffer b) ! (setq temp-buffer (vm-make-work-buffer)) (set-buffer temp-buffer) *************** *** 1058,1060 **** (insert ?\n)))) ! (setq work-buffer (generate-new-buffer "*vm-work*")) (set-buffer work-buffer) --- 1058,1060 ---- (insert ?\n)))) ! (setq work-buffer (vm-make-work-buffer)) (set-buffer work-buffer) *************** *** 3269,3270 **** --- 3269,3272 ---- (find-file-noselect crash-box))) + (if (eq (current-buffer) crash-buf) + (error "folder is the same file as crash box, cannot continue")) (save-excursion *** dist/vm-imap.el.dist Tue Sep 5 12:19:40 2000 --- vm-imap.el Fri Oct 27 21:28:56 2000 *************** *** 155,157 **** (progn ! ;; CLOSE forces an expunge and avoid the EXPUNGE ;; responses. --- 155,157 ---- (progn ! ;; CLOSE forces an expunge and avoids the EXPUNGE ;; responses. *************** *** 423,425 **** (setq process-buffer ! (generate-new-buffer (format "trace of IMAP session to %s" host))) --- 423,425 ---- (setq process-buffer ! (vm-make-work-buffer (format "trace of IMAP session to %s" host))) *************** *** 488,490 **** (kill-buffer (process-buffer process)) ! (save-excursions (set-buffer (process-buffer process)) --- 488,490 ---- (kill-buffer (process-buffer process)) ! (save-excursion (set-buffer (process-buffer process)) *** dist/vm-menu.el.dist Tue Sep 5 12:19:40 2000 --- vm-menu.el Tue Oct 31 09:49:15 2000 *************** *** 84,86 **** (defconst vm-menu-dispose-menu ! (let ((title (if (vm-menu-fsfemacs-menus-p) (list "Dispose" --- 84,86 ---- (defconst vm-menu-dispose-menu ! (let ((title (if (vm-menu-fsfemacs19-menus-p) (list "Dispose" *************** *** 248,250 **** (defconst vm-menu-mail-menu ! (let ((title (if (vm-menu-fsfemacs-menus-p) (list "Mail Commands" --- 248,250 ---- (defconst vm-menu-mail-menu ! (let ((title (if (vm-menu-fsfemacs19-menus-p) (list "Mail Commands" *************** *** 263,265 **** (append ! (if (vm-menu-fsfemacs-menus-p) (list "Send Using MIME..." --- 263,265 ---- (append ! (if (vm-menu-fsfemacs19-menus-p) (list "Send Using MIME..." *************** *** 282,284 **** (append ! (if (vm-menu-fsfemacs-menus-p) (list "Fragment Messages Larger Than ..." --- 282,284 ---- (append ! (if (vm-menu-fsfemacs19-menus-p) (list "Fragment Messages Larger Than ..." *************** *** 330,332 **** (append ! (if (vm-menu-fsfemacs-menus-p) (list "Encode 8-bit Characters Using ..." --- 330,332 ---- (append ! (if (vm-menu-fsfemacs19-menus-p) (list "Encode 8-bit Characters Using ..." *************** *** 368,370 **** (defconst vm-menu-mime-dispose-menu ! (let ((title (if (vm-menu-fsfemacs-menus-p) (list "Take Action on MIME body ..." --- 368,370 ---- (defconst vm-menu-mime-dispose-menu ! (let ((title (if (vm-menu-fsfemacs19-menus-p) (list "Take Action on MIME body ..." *************** *** 385,386 **** --- 385,395 ---- 'vm-mime-send-body-to-file) t] + ["Save to folder" (vm-mime-run-display-function-at-point + 'vm-mime-send-body-to-folder) + (let ((layout (vm-mime-run-display-function-at-point 'identity))) + (if (null layout) + nil + (or (vm-mime-types-match "message/rfc822" + (vm-mm-layout-type layout)) + (vm-mime-types-match "message/news" + (vm-mm-layout-type layout)))))] ["Send to Printer" (vm-mime-run-display-function-at-point *************** *** 396,398 **** (defconst vm-menu-url-browser-menu ! (let ((title (if (vm-menu-fsfemacs-menus-p) (list "Send URL to ..." --- 405,407 ---- (defconst vm-menu-url-browser-menu ! (let ((title (if (vm-menu-fsfemacs19-menus-p) (list "Send URL to ..." *************** *** 424,426 **** (defconst vm-menu-mailto-url-browser-menu ! (let ((title (if (vm-menu-fsfemacs-menus-p) (list "Send Mail using ..." --- 433,435 ---- (defconst vm-menu-mailto-url-browser-menu ! (let ((title (if (vm-menu-fsfemacs19-menus-p) (list "Send Mail using ..." *************** *** 435,437 **** (defconst vm-menu-subject-menu ! (let ((title (if (vm-menu-fsfemacs-menus-p) (list "Take Action on Subject..." --- 444,446 ---- (defconst vm-menu-subject-menu ! (let ((title (if (vm-menu-fsfemacs19-menus-p) (list "Take Action on Subject..." *************** *** 458,460 **** (defconst vm-menu-author-menu ! (let ((title (if (vm-menu-fsfemacs-menus-p) (list "Take Action on Author..." --- 467,469 ---- (defconst vm-menu-author-menu ! (let ((title (if (vm-menu-fsfemacs19-menus-p) (list "Take Action on Author..." *************** *** 476,478 **** (defconst vm-menu-content-disposition-menu ! (let ((title (if (vm-menu-fsfemacs-menus-p) (list "Set Content Disposition" --- 485,487 ---- (defconst vm-menu-content-disposition-menu ! (let ((title (if (vm-menu-fsfemacs19-menus-p) (list "Set Content Disposition" *************** *** 505,507 **** (defconst vm-menu-vm-menu ! (let ((title (if (vm-menu-fsfemacs-menus-p) (list "VM" --- 514,516 ---- (defconst vm-menu-vm-menu ! (let ((title (if (vm-menu-fsfemacs19-menus-p) (list "VM" *** dist/vm-mime.el.dist Tue Sep 5 12:19:40 2000 --- vm-mime.el Wed Nov 1 11:51:27 2000 *************** *** 39,45 **** (defun vm-mm-layout-header-start (e) (aref e 7)) ! (defun vm-mm-layout-body-start (e) (aref e 8)) ! (defun vm-mm-layout-body-end (e) (aref e 9)) ! (defun vm-mm-layout-parts (e) (aref e 10)) ! (defun vm-mm-layout-cache (e) (aref e 11)) ! (defun vm-mm-layout-message-symbol (e) (aref e 12)) (defun vm-mm-layout-message (e) --- 39,46 ---- (defun vm-mm-layout-header-start (e) (aref e 7)) ! (defun vm-mm-layout-header-end (e) (aref e 8)) ! (defun vm-mm-layout-body-start (e) (aref e 9)) ! (defun vm-mm-layout-body-end (e) (aref e 10)) ! (defun vm-mm-layout-parts (e) (aref e 11)) ! (defun vm-mm-layout-cache (e) (aref e 12)) ! (defun vm-mm-layout-message-symbol (e) (aref e 13)) (defun vm-mm-layout-message (e) *************** *** 47,49 **** ;; if display of MIME part fails, error string will be here. ! (defun vm-mm-layout-display-error (e) (aref e 13)) --- 48,50 ---- ;; if display of MIME part fails, error string will be here. ! (defun vm-mm-layout-display-error (e) (aref e 14)) *************** *** 57,63 **** (defun vm-set-mm-layout-header-start (e start) (aset e 7 start)) ! (defun vm-set-mm-layout-body-start (e start) (aset e 8 start)) ! (defun vm-set-mm-layout-body-end (e end) (aset e 9 end)) ! (defun vm-set-mm-layout-parts (e parts) (aset e 10 parts)) ! (defun vm-set-mm-layout-cache (e c) (aset e 11 c)) ! (defun vm-set-mm-layout-display-error (e c) (aset e 13 c)) --- 58,65 ---- (defun vm-set-mm-layout-header-start (e start) (aset e 7 start)) ! (defun vm-set-mm-layout-header-end (e start) (aset e 8 start)) ! (defun vm-set-mm-layout-body-start (e start) (aset e 9 start)) ! (defun vm-set-mm-layout-body-end (e end) (aset e 10 end)) ! (defun vm-set-mm-layout-parts (e parts) (aset e 11 parts)) ! (defun vm-set-mm-layout-cache (e c) (aset e 12 c)) ! (defun vm-set-mm-layout-display-error (e c) (aset e 14 c)) *************** *** 98,102 **** (defun vm-mime-Q-encode-region (start end) ! (let ((buffer-read-only nil)) (subst-char-in-region start end (string-to-char " ") ?_ t) ! (vm-mime-qp-encode-region start end t))) --- 100,106 ---- (defun vm-mime-Q-encode-region (start end) ! (let ((buffer-read-only nil) ! (val)) ! (setq val (vm-mime-qp-encode-region start end t)) (subst-char-in-region start end (string-to-char " ") ?_ t) ! val )) *************** *** 125,126 **** --- 129,193 ---- + (defun vm-encode-coding-region (b-start b-end coding-system &rest foo) + (let ((work-buffer (vm-make-work-buffer)) + start end + retval + (b (current-buffer))) + (save-excursion + (set-buffer work-buffer) + (insert-buffer-substring b b-start b-end) + (display-buffer work-buffer) + (setq retval (apply 'encode-coding-region (point-min) (point-max) + coding-system foo)) + (setq start (point-min) end (point-max)) + (setq retval (buffer-size)) + (save-excursion + (set-buffer b) + (goto-char b-end) + (insert-buffer-substring work-buffer start end) + (delete-region b-start b-end) + (kill-buffer work-buffer) + retval )))) + + (defun vm-encode-coding-region (b-start b-end coding-system &rest foo) + (let ((work-buffer (vm-make-work-buffer)) + start end + retval + (b (current-buffer))) + (save-excursion + (set-buffer work-buffer) + (insert-buffer-substring b b-start b-end) + (setq retval (apply 'encode-coding-region (point-min) (point-max) + coding-system foo)) + (setq start (point-min) end (point-max)) + (setq retval (buffer-size)) + (save-excursion + (set-buffer b) + (goto-char b-start) + (insert-buffer-substring work-buffer start end) + (delete-region (point) b-end) + (kill-buffer work-buffer) + retval )))) + + (defun vm-decode-coding-region (b-start b-end coding-system &rest foo) + (if vm-xemacs-p + (apply 'decode-coding-region b-start b-end coding-system foo) + (let ((work-buffer (vm-make-work-buffer)) + start end + retval + (b (current-buffer))) + (save-excursion + (set-buffer work-buffer) + (insert-buffer-substring b b-start b-end) + (setq retval (apply 'decode-coding-region (point-min) (point-max) + coding-system foo)) + (set-buffer-multibyte t) + (setq start (point-min) end (point-max)) + (save-excursion + (set-buffer b) + (goto-char b-end) + (insert-buffer-substring work-buffer start end) + (delete-region b-start b-end) + (kill-buffer work-buffer) + retval ))))) + (defun vm-mime-charset-decode-region (charset start end) *************** *** 129,131 **** (if (or (and vm-xemacs-p (memq (device-type) '(x mswindows))) ! (and vm-fsfemacs-p (eq window-system 'x)) nil) --- 196,199 ---- (if (or (and vm-xemacs-p (memq (device-type) '(x mswindows))) ! vm-fsfemacs-p ! ;; (and vm-fsfemacs-p (memq window-system '(x w32))) nil) *************** *** 139,142 **** (progn (set-marker end (+ start ! (or (decode-coding-region start end (car cell)) --- 207,217 ---- (progn + '(if vm-fsfemacs-p + (set-marker end (+ start + (or (vm-encode-coding-region + start end 'iso-8859-1) + (- oend start))))) + ;; decode 8-bit indeterminate char to correct + ;; char in correct charset. (set-marker end (+ start ! (or (vm-decode-coding-region start end (car cell)) *************** *** 179,180 **** --- 254,256 ---- (defun vm-mime-base64-decode-region (start end &optional crlf) + (or (markerp end) (setq end (vm-marker end))) (and (> (- end start) 200) *************** *** 189,250 **** (save-excursion ! (let ((default-enable-multibyte-characters nil)) ! (setq work-buffer (generate-new-buffer " *vm-work*"))) ! (buffer-disable-undo work-buffer) ! (if vm-mime-base64-decoder-program ! (let* ((binary-process-output t) ; any text already has CRLFs ! ;; use binary coding system in FSF Emacs/MULE ! (coding-system-for-read (vm-binary-coding-system)) ! (coding-system-for-write (vm-binary-coding-system)) ! (status (apply 'vm-run-command-on-region ! start end work-buffer ! vm-mime-base64-decoder-program ! vm-mime-base64-decoder-switches))) ! (if (not (eq status t)) ! (vm-mime-error "%s" (cdr status)))) ! (goto-char start) ! (skip-chars-forward non-data-chars end) ! (while (not done) ! (setq inputpos (point)) ! (cond ! ((> (skip-chars-forward vm-mime-base64-alphabet end) 0) ! (setq lim (point)) ! (while (< inputpos lim) ! (setq bits (+ bits ! (aref vm-mime-base64-alphabet-decoding-vector ! (char-after inputpos)))) ! (vm-increment counter) ! (vm-increment inputpos) ! (cond ((= counter 4) (vm-insert-char (lsh bits -16) 1 nil work-buffer) ! (vm-insert-char (logand (lsh bits -8) 255) 1 nil ! work-buffer) ! (vm-insert-char (logand bits 255) 1 nil work-buffer) ! (setq bits 0 counter 0)) ! (t (setq bits (lsh bits 6))))))) ! (cond ! ((= (point) end) ! (if (not (zerop counter)) ! (vm-mime-error "at least %d bits missing at end of base64 encoding" ! (* (- 4 counter) 6))) ! (setq done t)) ! ((= (char-after (point)) 61) ; 61 is ASCII equals ! (setq done t) ! (cond ((= counter 1) ! (vm-mime-error "at least 2 bits missing at end of base64 encoding")) ! ((= counter 2) ! (vm-insert-char (lsh bits -10) 1 nil work-buffer)) ! ((= counter 3) ! (vm-insert-char (lsh bits -16) 1 nil work-buffer) ! (vm-insert-char (logand (lsh bits -8) 255) ! 1 nil work-buffer)) ! ((= counter 0) t))) ! (t (skip-chars-forward non-data-chars end))))) ! (and crlf ! (save-excursion ! (set-buffer work-buffer) ! (vm-mime-crlf-to-lf-region (point-min) (point-max)))) ! (or (markerp end) (setq end (vm-marker end))) ! (goto-char start) ! (insert-buffer-substring work-buffer) ! (delete-region (point) end)) (and work-buffer (kill-buffer work-buffer)))) --- 265,329 ---- (save-excursion ! (cond ! ((and (featurep 'base64) ! (fboundp 'base64-decode-region)) ! (base64-decode-region start end) ! (and crlf (vm-mime-crlf-to-lf-region start end))) ! (t ! (setq work-buffer (vm-make-work-buffer)) ! (if vm-mime-base64-decoder-program ! (let* ((binary-process-output t) ; any text already has CRLFs ! ;; use binary coding system in FSF Emacs/MULE ! (coding-system-for-read (vm-binary-coding-system)) ! (coding-system-for-write (vm-binary-coding-system)) ! (status (apply 'vm-run-command-on-region ! start end work-buffer ! vm-mime-base64-decoder-program ! vm-mime-base64-decoder-switches))) ! (if (not (eq status t)) ! (vm-mime-error "%s" (cdr status)))) ! (goto-char start) ! (skip-chars-forward non-data-chars end) ! (while (not done) ! (setq inputpos (point)) ! (cond ! ((> (skip-chars-forward vm-mime-base64-alphabet end) 0) ! (setq lim (point)) ! (while (< inputpos lim) ! (setq bits (+ bits ! (aref vm-mime-base64-alphabet-decoding-vector ! (char-after inputpos)))) ! (vm-increment counter) ! (vm-increment inputpos) ! (cond ((= counter 4) ! (vm-insert-char (lsh bits -16) 1 nil work-buffer) ! (vm-insert-char (logand (lsh bits -8) 255) 1 nil ! work-buffer) ! (vm-insert-char (logand bits 255) 1 nil work-buffer) ! (setq bits 0 counter 0)) ! (t (setq bits (lsh bits 6))))))) ! (cond ! ((= (point) end) ! (if (not (zerop counter)) ! (vm-mime-error "at least %d bits missing at end of base64 encoding" ! (* (- 4 counter) 6))) ! (setq done t)) ! ((= (char-after (point)) 61) ; 61 is ASCII equals ! (setq done t) ! (cond ((= counter 1) ! (vm-mime-error "at least 2 bits missing at end of base64 encoding")) ! ((= counter 2) ! (vm-insert-char (lsh bits -10) 1 nil work-buffer)) ! ((= counter 3) (vm-insert-char (lsh bits -16) 1 nil work-buffer) ! (vm-insert-char (logand (lsh bits -8) 255) ! 1 nil work-buffer)) ! ((= counter 0) t))) ! (t (skip-chars-forward non-data-chars end))))) ! (and crlf ! (save-excursion ! (set-buffer work-buffer) ! (vm-mime-crlf-to-lf-region (point-min) (point-max)))) ! (goto-char start) ! (insert-buffer-substring work-buffer) ! (delete-region (point) end)))) (and work-buffer (kill-buffer work-buffer)))) *************** *** 254,255 **** --- 333,335 ---- (defun vm-mime-base64-encode-region (start end &optional crlf B-encoding) + (or (markerp end) (setq end (vm-marker end))) (and (> (- end start) 200) *************** *** 264,330 **** (save-excursion ! (let ((default-enable-multibyte-characters nil)) ! (setq work-buffer (generate-new-buffer " *vm-work*"))) ! (buffer-disable-undo work-buffer) ! (if crlf ! (progn ! (or (markerp end) (setq end (vm-marker end))) ! (vm-mime-lf-to-crlf-region start end))) ! (if vm-mime-base64-encoder-program ! (let ((status (apply 'vm-run-command-on-region ! start end work-buffer ! vm-mime-base64-encoder-program ! vm-mime-base64-encoder-switches))) ! (if (not (eq status t)) ! (vm-mime-error "%s" (cdr status))) ! (if B-encoding ! (save-excursion ! (set-buffer work-buffer) ! ;; if we're B encoding, strip out the line breaks ! (goto-char (point-min)) ! (while (search-forward "\n" nil t) ! (delete-char -1))))) ! (setq inputpos start) ! (while (< inputpos end) ! (setq bits (+ bits (char-after inputpos))) ! (vm-increment counter) ! (cond ((= counter 3) ! (vm-insert-char (aref alphabet (lsh bits -18)) 1 nil ! work-buffer) ! (vm-insert-char (aref alphabet (logand (lsh bits -12) 63)) ! 1 nil work-buffer) ! (vm-insert-char (aref alphabet (logand (lsh bits -6) 63)) ! 1 nil work-buffer) ! (vm-insert-char (aref alphabet (logand bits 63)) 1 nil ! work-buffer) ! (setq cols (+ cols 4)) ! (cond ((= cols 72) ! (setq cols 0) ! (if (not B-encoding) ! (vm-insert-char ?\n 1 nil work-buffer)))) ! (setq bits 0 counter 0)) ! (t (setq bits (lsh bits 8)))) ! (vm-increment inputpos)) ! ;; write out any remaining bits with appropriate padding ! (if (= counter 0) ! nil ! (setq bits (lsh bits (- 16 (* 8 counter)))) ! (vm-insert-char (aref alphabet (lsh bits -18)) 1 nil ! work-buffer) ! (vm-insert-char (aref alphabet (logand (lsh bits -12) 63)) ! 1 nil work-buffer) ! (if (= counter 1) ! (vm-insert-char ?= 2 nil work-buffer) ! (vm-insert-char (aref alphabet (logand (lsh bits -6) 63)) 1 nil work-buffer) ! (vm-insert-char ?= 1 nil work-buffer))) ! (if (> cols 0) ! (vm-insert-char ?\n 1 nil work-buffer))) ! (or (markerp end) (setq end (vm-marker end))) ! (goto-char start) ! (insert-buffer-substring work-buffer) ! (delete-region (point) end) (and (> (- end start) 200) (message "Encoding base64... done")) ! (- end start)) ! (and work-buffer (kill-buffer work-buffer))))) --- 344,410 ---- (save-excursion ! (and crlf (vm-mime-lf-to-crlf-region start end)) ! (cond ! ((and (featurep 'base64) ! (fboundp 'base64-encode-region)) ! (base64-encode-region start end t)) ! (t ! (setq work-buffer (vm-make-work-buffer)) ! (if vm-mime-base64-encoder-program ! (let ((status (apply 'vm-run-command-on-region ! start end work-buffer ! vm-mime-base64-encoder-program ! vm-mime-base64-encoder-switches))) ! (if (not (eq status t)) ! (vm-mime-error "%s" (cdr status))) ! (if B-encoding ! (save-excursion ! (set-buffer work-buffer) ! ;; if we're B encoding, strip out the line breaks ! (goto-char (point-min)) ! (while (search-forward "\n" nil t) ! (delete-char -1))))) ! (setq inputpos start) ! (while (< inputpos end) ! (setq bits (+ bits (char-after inputpos))) ! (vm-increment counter) ! (cond ((= counter 3) ! (vm-insert-char (aref alphabet (lsh bits -18)) 1 nil ! work-buffer) ! (vm-insert-char (aref alphabet (logand (lsh bits -12) 63)) ! 1 nil work-buffer) ! (vm-insert-char (aref alphabet (logand (lsh bits -6) 63)) ! 1 nil work-buffer) ! (vm-insert-char (aref alphabet (logand bits 63)) 1 nil ! work-buffer) ! (setq cols (+ cols 4)) ! (cond ((= cols 72) ! (setq cols 0) ! (if (not B-encoding) ! (vm-insert-char ?\n 1 nil work-buffer)))) ! (setq bits 0 counter 0)) ! (t (setq bits (lsh bits 8)))) ! (vm-increment inputpos)) ! ;; write out any remaining bits with appropriate padding ! (if (= counter 0) ! nil ! (setq bits (lsh bits (- 16 (* 8 counter)))) ! (vm-insert-char (aref alphabet (lsh bits -18)) 1 nil ! work-buffer) ! (vm-insert-char (aref alphabet (logand (lsh bits -12) 63)) 1 nil work-buffer) ! (if (= counter 1) ! (vm-insert-char ?= 2 nil work-buffer) ! (vm-insert-char (aref alphabet (logand (lsh bits -6) 63)) ! 1 nil work-buffer) ! (vm-insert-char ?= 1 nil work-buffer))) ! (if (> cols 0) ! (vm-insert-char ?\n 1 nil work-buffer))) ! (or (markerp end) (setq end (vm-marker end))) ! (goto-char start) ! (insert-buffer-substring work-buffer) ! (delete-region (point) end))) (and (> (- end start) 200) (message "Encoding base64... done")) ! (- end start))) ! (and work-buffer (kill-buffer work-buffer)))) *************** *** 348,352 **** (save-excursion ! (let ((default-enable-multibyte-characters nil)) ! (setq work-buffer (generate-new-buffer " *vm-work*"))) ! (buffer-disable-undo work-buffer) (if vm-mime-qp-decoder-program --- 428,430 ---- (save-excursion ! (setq work-buffer (vm-make-work-buffer)) (if vm-mime-qp-decoder-program *************** *** 429,433 **** (save-excursion ! (let ((default-enable-multibyte-characters nil)) ! (setq work-buffer (generate-new-buffer " *vm-work*"))) ! (buffer-disable-undo work-buffer) (if vm-mime-qp-encoder-program --- 507,509 ---- (save-excursion ! (setq work-buffer (vm-make-work-buffer)) (if vm-mime-qp-encoder-program *************** *** 517,522 **** (save-excursion ! (let ((default-enable-multibyte-characters nil)) ! (setq work-buffer (generate-new-buffer " *vm-work*"))) (set-buffer work-buffer) - (buffer-disable-undo work-buffer) (insert-buffer-substring region-buffer start end) --- 593,596 ---- (save-excursion ! (setq work-buffer (vm-make-work-buffer)) (set-buffer work-buffer) (insert-buffer-substring region-buffer start end) *************** *** 631,633 **** (if (and vm-display-using-mime ! (string-match vm-mime-encoded-word-regexp string)) (vm-with-string-as-temp-buffer string 'vm-decode-mime-encoded-words) --- 705,708 ---- (if (and vm-display-using-mime ! (let ((case-fold-search t)) ! (string-match vm-mime-encoded-word-regexp string))) (vm-with-string-as-temp-buffer string 'vm-decode-mime-encoded-words) *************** *** 780,781 **** --- 855,857 ---- (vm-headers-of m) + (vm-marker (1- (vm-text-of m))) (vm-text-of m) *************** *** 793,794 **** --- 869,871 ---- (vm-marker (point-min)) + (vm-marker (1- (point))) (vm-marker (point)) *************** *** 814,816 **** c-t-e "7bit")) ; below ! ((string-match "^message/\\(rfc822\\|news\\)" (car type)) (setq c-t '("text/plain" "charset=us-ascii") --- 891,894 ---- c-t-e "7bit")) ; below ! ((string-match "^message/\\(rfc822\\|news\\|external-body\\)" ! (car type)) (setq c-t '("text/plain" "charset=us-ascii") *************** *** 824,825 **** --- 902,904 ---- (vm-marker (point-min)) + (vm-marker (1- (point))) (vm-marker (point)) *************** *** 842,843 **** --- 921,923 ---- (vm-marker (point-min)) + (vm-marker (1- (point))) (vm-marker (point)) *************** *** 891,892 **** --- 971,973 ---- (vm-marker (point-min)) + (vm-marker (1- (point))) (vm-marker (point)) *************** *** 928,929 **** --- 1009,1011 ---- header + (vm-marker (1- text)) text *************** *** 959,965 **** (defun vm-mime-insert-mime-headers (layout) ! (vm-insert-region-from-buffer (marker-buffer (vm-mm-layout-body-start layout)) (vm-mm-layout-header-start layout) ! (vm-mm-layout-body-start layout)) ! (if (and (not (bobp)) (char-equal (char-after (1- (point))) ?\n)) ! (delete-char -1))) --- 1041,1045 ---- (defun vm-mime-insert-mime-headers (layout) ! (vm-insert-region-from-buffer (marker-buffer (vm-mm-layout-header-start layout)) (vm-mm-layout-header-start layout) ! (vm-mm-layout-header-end layout))) *************** *** 1173,1175 **** ;; this because GNUS bogusly sets up autoloads ! ;; for w3-region ewven if W3 isn't installed. (fboundp 'w3-about))) --- 1253,1255 ---- ;; this because GNUS bogusly sets up autoloads ! ;; for w3-region even if W3 isn't installed. (fboundp 'w3-about))) *************** *** 1201,1206 **** (message "Converting %s to %s..." ! (car (vm-mm-layout-type layout)) ! (nth 1 ooo)) (save-excursion ! (set-buffer (generate-new-buffer " *mime object*")) ;; call-process-region calls write-region. --- 1281,1286 ---- (message "Converting %s to %s..." ! (car (vm-mm-layout-type layout)) ! (nth 1 ooo)) (save-excursion ! (set-buffer (vm-make-work-buffer " *mime object*")) ;; call-process-region calls write-region. *************** *** 1211,1215 **** vm-message-garbage-alist)) ! (vm-with-unibyte-buffer ! (vm-mime-insert-mime-body layout) ! (vm-mime-transfer-decode-region layout (point-min) (point-max))) (call-process-region (point-min) (point-max) shell-file-name --- 1291,1294 ---- vm-message-garbage-alist)) ! (vm-mime-insert-mime-body layout) ! (vm-mime-transfer-decode-region layout (point-min) (point-max)) (call-process-region (point-min) (point-max) shell-file-name *************** *** 1231,1232 **** --- 1310,1312 ---- (vm-marker (point-min)) + (vm-marker (1- (point))) (vm-marker (point)) *************** *** 1538,1540 **** nil) ! (vm-with-unibyte-buffer (vm-mime-insert-mime-body layout) --- 1618,1620 ---- nil) ! ;; (vm-with-unibyte-buffer (vm-mime-insert-mime-body layout) *************** *** 1544,1546 **** (vm-mime-charset-decode-region charset start end) ! (set-marker end (+ end (- (buffer-size) old-size)))) (or no-highlighting (vm-energize-urls-in-message-region start end)) --- 1624,1626 ---- (vm-mime-charset-decode-region charset start end) ! (set-marker end (+ end (- (buffer-size) old-size)));) (or no-highlighting (vm-energize-urls-in-message-region start end)) *************** *** 1635,1637 **** (cons (cons tempfile 'delete-file) ! vm-folder-garbage-alist)))))) --- 1715,1717 ---- (cons (cons tempfile 'delete-file) ! vm-message-garbage-alist)))))) *************** *** 1882,1883 **** --- 1962,2057 ---- + (defun vm-mime-display-internal-message/external-body (layout) + (let ((child-layout (car (vm-mm-layout-parts layout))) + (access-method (downcase (vm-mime-get-parameter layout "access-type"))) + ob + (work-buffer nil)) + ;; Normal objects have the header and body in the same + ;; buffer. A retrieved external-body has the body in a + ;; different buffer from the header, so we use this as an + ;; indicator of whether the retrieval work has been dnoe + ;; yet. + (unwind-protect + (cond ((and (eq access-method "mail-server") + (vm-mm-layout-id child-layout) + (setq ob (vm-mime-find-leaf-content-id-in-layout-folder + layout (vm-mm-layout-id child-layout)))) + (setq child-layout ob)) + ((eq (marker-buffer (vm-mm-layout-header-start child-layout)) + (marker-buffer (vm-mm-layout-body-start child-layout))) + (save-excursion + (setq work-buffer + (vm-make-work-buffer + (format "*%s mime object*" + (car (vm-mm-layout-type child-layout))))) + (set-buffer work-buffer) + (cond ((string= access-method "local-file") + (let ((name (vm-mime-get-parameter layout "name"))) + (if (null name) + (vm-mime-error + "%s access type missing `name' parameter" + access-method)) + (if (not (file-exists-p name)) + (vm-mime-error "file %s does not exist" name)) + (condition-case data + (insert-file-contents name) + (error (signal 'vm-mime-error (cdr data)))))) + ((and (or (string= access-method "ftp") + (string= access-method "anon-ftp")) + (featurep 'efs)) + (let ((name (vm-mime-get-parameter layout "name")) + (directory (vm-mime-get-parameter layout + "directory")) + (site (vm-mime-get-parameter layout "site")) + user) + (if (null name) + (vm-mime-error + "%s access type missing `name' parameter" + access-method)) + (if (null site) + (vm-mime-error + "%s access type missing `site' parameter" + access-method)) + (cond ((string= access-method "anon-ftp") + (setq user (read-string + (format "User name to access %s: " + site) + (user-login-name)))) + (t (setq user "anonymous"))) + (cond (directory + (setq directory + (concat "/" user "@" site ":" directory)) + (setq name (expand-file-name name directory))) + (t + (setq name (concat "/" user "@" site ":" + name)))) + (condition-case data + (insert-file-contents name) + (error (signal 'vm-mime-error (cdr data)))))) + ((string= access-method "mail-server") + (let ((server (vm-mime-get-parameter layout "server")) + (subject (vm-mime-get-parameter layout "subject"))) + (if (null server) + (vm-mime-error + "%s access type missing `server' parameter" + access-method)) + (if (not + (y-or-n-p + (format + "Send message to %s to retrieve external body? " + server))) + (error "Aborted")) + (vm-mail-internal + (format "mail to MIME mail server %s" server) + server subject) + (mail-text) + (vm-mime-insert-mime-body child-layout) + (let ((vm-confirm-mail-send nil)) + (vm-mail-send))))) + (setq work-buffer nil) + (vm-set-mm-layout-body-end child-layout (vm-marker (point-max))) + (vm-set-mm-layout-body-start child-layout + (vm-marker (point-min)))))) + (and work-buffer (kill-buffer work-buffer))) + (vm-decode-mime-layout child-layout))) + (defun vm-mime-display-internal-message/partial (layout) *************** *** 2169,2171 **** (interactive) ! (vm-mime-run-display-function-at-point 'vm-mime-send-body-to-file)) --- 2343,2371 ---- (interactive) ! ;; make sure point doesn't move, we need it to stay on the tag ! ;; if the user wants to delete after saving. ! (let (file) ! (save-excursion ! (setq file (vm-mime-run-display-function-at-point ! 'vm-mime-send-body-to-file))) ! (if vm-mime-delete-after-saving ! (let ((vm-mime-confirm-delete nil)) ! ;; we don't care if the delete fails ! (condition-case nil ! (vm-delete-mime-object (expand-file-name file)) ! (error nil)))))) ! ! (defun vm-mime-reader-map-save-message () ! (interactive) ! ;; make sure point doesn't move, we need it to stay on the tag ! ;; if the user wants to delete after saving. ! (let (folder) ! (save-excursion ! (setq folder (vm-mime-run-display-function-at-point ! 'vm-mime-send-body-to-folder))) ! (if vm-mime-delete-after-saving ! (let ((vm-mime-confirm-delete nil)) ! ;; we don't care if the delete fails ! (condition-case nil ! (vm-delete-mime-object folder) ! (error nil)))))) *************** *** 2304,2308 **** (coding-system-for-write (vm-binary-coding-system))) ! (let ((default-enable-multibyte-characters nil)) ! (setq work-buffer (generate-new-buffer " *vm-work*"))) ! (buffer-disable-undo work-buffer) (set-buffer work-buffer) --- 2504,2506 ---- (coding-system-for-write (vm-binary-coding-system))) ! (setq work-buffer (vm-make-work-buffer)) (set-buffer work-buffer) *************** *** 2330,2336 **** (write-region (point-min) (point-max) file nil nil)) ! (if vm-mime-delete-after-saving ! (vm-mime-discard-layout-contents layout ! (expand-file-name file)))) (and work-buffer (kill-buffer work-buffer)))))) (defun vm-mime-pipe-body-to-command (command layout &optional discard-output) --- 2528,2565 ---- (write-region (point-min) (point-max) file nil nil)) ! file ) (and work-buffer (kill-buffer work-buffer)))))) + (defun vm-mime-send-body-to-folder (layout &optional default-filename) + (if (not (vectorp layout)) + (setq layout (vm-extent-property layout 'vm-mime-layout))) + (let ((work-buffer nil) + (type (car (vm-mm-layout-type layout))) + file) + (if (not (or (vm-mime-types-match type "message/rfc822") + (vm-mime-types-match type "message/news"))) + (vm-mime-send-body-to-file layout default-filename) + (save-excursion + (unwind-protect + (let ((coding-system-for-read (vm-binary-coding-system)) + (coding-system-for-write (vm-binary-coding-system))) + (setq work-buffer (vm-make-work-buffer)) + (set-buffer work-buffer) + (setq selective-display nil) + ;; Tell DOS/Windows NT whether the file is binary + (setq buffer-file-type (not (vm-mime-text-type-layout-p layout))) + ;; Tell XEmacs/MULE not to mess with the bits unless + ;; this is a text type. + (if (or vm-xemacs-mule-p vm-fsfemacs-mule-p) + (if (vm-mime-text-type-layout-p layout) + (set-buffer-file-coding-system + (vm-line-ending-coding-system) nil) + (set-buffer-file-coding-system (vm-binary-coding-system) t))) + (vm-mime-insert-mime-body layout) + (vm-mime-transfer-decode-region layout (point-min) (point-max)) + (vm-mode t) + (setq file (call-interactively 'vm-save-message)) + (vm-quit-no-change) + file ) + (and work-buffer (kill-buffer work-buffer))))))) + (defun vm-mime-pipe-body-to-command (command layout &optional discard-output) *************** *** 2349,2352 **** (progn ! (let ((default-enable-multibyte-characters nil)) ! (setq work-buffer (generate-new-buffer " *vm-work*"))) ;; call-process-region calls write-region. --- 2578,2580 ---- (progn ! (setq work-buffer (vm-make-work-buffer)) ;; call-process-region calls write-region. *************** *** 2354,2356 **** (setq selective-display nil) - (buffer-disable-undo work-buffer) (set-buffer work-buffer) --- 2582,2583 ---- *************** *** 2424,2427 **** (progn ! (setq work-buffer (generate-new-buffer " *vm-work*")) ! (buffer-disable-undo work-buffer) (set-buffer work-buffer) --- 2651,2653 ---- (progn ! (setq work-buffer (vm-make-work-buffer)) (set-buffer work-buffer) *************** *** 2545,2547 **** (type (vm-mm-layout-type layout))) ! (cond ((vm-mime-types-match "multipart" (car type)) (let ((parts (vm-mm-layout-parts layout)) o) --- 2771,2773 ---- (type (vm-mm-layout-type layout))) ! (cond ((vm-mime-composite-type-p (car (vm-mm-layout-type layout))) (let ((parts (vm-mm-layout-parts layout)) o) *************** *** 2557,2558 **** --- 2783,2820 ---- + (defun vm-mime-find-leaf-content-id-in-layout-folder (layout id) + (save-excursion + (save-restriction + (let (m (o nil)) + (set-buffer (vm-buffer-of + (vm-real-message-of + (vm-mm-layout-message layout)))) + (widen) + (goto-char (point-min)) + (while (and (search-forward id nil t) + (setq m (vm-message-at-point))) + (setq o (vm-mm-layout m)) + (if (not (vectorp o)) + nil + (setq o (vm-mime-find-leaf-content-id id)) + (if (null o) + nil + ;; if we found it, end the search loop + (goto-char (point-max))))) + o )))) + + (defun vm-mime-find-leaf-content-id (layout id) + (let ((list nil) + (type (vm-mm-layout-type layout))) + (catch 'done + (cond ((vm-mime-composite-type-p (car (vm-mm-layout-type layout))) + (let ((parts (vm-mm-layout-parts layout)) o) + (while parts + (setq o (vm-mime-find-leaf-content-id (car parts) id)) + (if o + (throw 'done o)) + (setq parts (cdr parts))))) + (t + (if (equal (vm-mm-layout-id layout "id") id) + (throw 'done layout))))))) + (defun vm-message-at-point () *************** *** 3054,3056 **** (goto-char (vm-mm-layout-header-start layout)) ! (narrow-to-region (point) (vm-mm-layout-body-start layout)) (vm-reorder-message-headers nil nil "Content-Transfer-Encoding:") --- 3316,3318 ---- (goto-char (vm-mm-layout-header-start layout)) ! (narrow-to-region (point) (vm-mm-layout-header-end layout)) (vm-reorder-message-headers nil nil "Content-Transfer-Encoding:") *************** *** 3079,3081 **** ! (defun vm-delete-mime-object () "Deletes the contents of MIME object referred to by the MIME --- 3341,3343 ---- ! (defun vm-delete-mime-object (&optional saved-file) "Deletes the contents of MIME object referred to by the MIME *************** *** 3110,3112 **** (error "Aborted"))) ! (funcall 'vm-mime-discard-layout-contents layout))) (setq o-list (cdr o-list))) --- 3372,3374 ---- (error "Aborted"))) ! (vm-mime-discard-layout-contents layout saved-file))) (setq o-list (cdr o-list))) *************** *** 3142,3144 **** (set-extent-endpoints e opos (point))))) ! (funcall 'vm-mime-discard-layout-contents layout))))))) --- 3404,3406 ---- (set-extent-endpoints e opos (point))))) ! (vm-mime-discard-layout-contents layout saved-file))))))) *************** *** 3177,3179 **** (insert "[Deleted " (vm-mime-sprintf "%d]\n" layout)) ! (insert "[Saved to " file " on " (system-name) "]\n"))) (delete-region (point) (vm-mm-layout-body-end layout)) --- 3439,3441 ---- (insert "[Deleted " (vm-mime-sprintf "%d]\n" layout)) ! (insert "[Saved to " file " on " (system-name) "]\n"))) (delete-region (point) (vm-mm-layout-body-end layout)) *************** *** 3364,3365 **** --- 3626,3629 ---- (jka-compr-compression-info-list nil) + ;; no font-lock + (font-lock-mode nil) ;; don't let buffer-file-coding-system be changed *************** *** 3524,3526 **** ;; remove header/text separator ! (goto-char (1- (vm-mm-layout-body-start layout))) (if (looking-at "\n") --- 3788,3790 ---- ;; remove header/text separator ! (goto-char (vm-mm-layout-header-end layout)) (if (looking-at "\n") *************** *** 3723,3724 **** --- 3987,3990 ---- (jka-compr-compression-info-list nil) + ;; no font-lock + (font-lock-mode nil) ;; don't let buffer-file-coding-system be *************** *** 3897,3899 **** ;; remove header/text separator ! (goto-char (1- (vm-mm-layout-body-start layout))) (if (looking-at "\n") --- 4163,4165 ---- ;; remove header/text separator ! (goto-char (vm-mm-layout-header-end layout)) (if (looking-at "\n") *** dist/vm-misc.el.dist Tue Sep 5 12:19:40 2000 --- vm-misc.el Tue Oct 24 10:28:54 2000 *************** *** 54,56 **** (let (list start s char) ! (setq work-buffer (generate-new-buffer "*vm-work*")) (set-buffer work-buffer) --- 54,56 ---- (let (list start s char) ! (setq work-buffer (vm-make-work-buffer)) (set-buffer work-buffer) *************** *** 106,108 **** sp+sepchar (concat "\t\f\n\r " (list sepchar)))) ! (setq work-buffer (generate-new-buffer "*vm-work*")) (buffer-disable-undo work-buffer) --- 106,108 ---- sp+sepchar (concat "\t\f\n\r " (list sepchar)))) ! (setq work-buffer (vm-make-work-buffer)) (buffer-disable-undo work-buffer) *************** *** 448,450 **** (save-excursion ! (setq temp-buffer (generate-new-buffer "*vm-work*")) (set-buffer temp-buffer) --- 448,450 ---- (save-excursion ! (setq temp-buffer (vm-make-work-buffer)) (set-buffer temp-buffer) *************** *** 584,588 **** (defun vm-make-work-buffer (&optional name) ! (let (work-buffer) (setq work-buffer (generate-new-buffer (or name "*vm-workbuf*"))) (buffer-disable-undo work-buffer) work-buffer )) --- 584,594 ---- (defun vm-make-work-buffer (&optional name) ! (let ((default-enable-multibyte-characters nil) ! work-buffer) (setq work-buffer (generate-new-buffer (or name "*vm-workbuf*"))) (buffer-disable-undo work-buffer) + ;; probably not worth doing since no one sets buffer-offer-save + ;; non-nil globally, do they? + ;; (save-excursion + ;; (set-buffer work-buffer) + ;; (setq buffer-offer-save nil)) work-buffer )) *************** *** 627,629 **** (save-excursion ! (setq work-buffer (generate-new-buffer " *work*")) (set-buffer work-buffer) --- 633,635 ---- (save-excursion ! (setq work-buffer (vm-make-work-buffer)) (set-buffer work-buffer) *** dist/vm-mouse.el.dist Tue Sep 5 12:19:40 2000 --- vm-mouse.el Wed Oct 25 08:55:49 2000 *************** *** 324,326 **** (or dir (setq dir default-directory)) ! (set-buffer (generate-new-buffer " *Files*")) (use-local-map (make-sparse-keymap)) --- 324,326 ---- (or dir (setq dir default-directory)) ! (set-buffer (vm-make-work-buffer " *Files*")) (use-local-map (make-sparse-keymap)) *************** *** 424,426 **** (save-excursion ! (set-buffer (generate-new-buffer " *Choices*")) (use-local-map (make-sparse-keymap)) --- 424,426 ---- (save-excursion ! (set-buffer (vm-make-work-buffer " *Choices*")) (use-local-map (make-sparse-keymap)) *** dist/vm-page.el.dist Tue Jul 27 10:52:39 1999 --- vm-page.el Mon Oct 16 11:01:08 2000 *************** *** 583,587 **** (not (vm-mime-plain-message-p (car vm-message-pointer)))) ! (progn (condition-case data ! (vm-decode-mime-message) (vm-mime-error (vm-set-mime-layout-of (car vm-message-pointer) --- 583,601 ---- (not (vm-mime-plain-message-p (car vm-message-pointer)))) ! ;; restrict the things that are auto-displayed, since ! ;; decode-for-preview is meant to allow a numeric ! ;; vm-preview-lines to be useful in the face of multipart ! ;; messages. ! (let ((vm-auto-displayed-mime-content-types ! '("text" "multipart" "message")) ! (vm-auto-displayed-mime-content-type-exceptions nil) ! (vm-mime-external-content-types-alist nil)) (condition-case data ! (progn ! (vm-decode-mime-message) ! ;; reset vm-mime-decoded so that when the user ! ;; opens the message completely, the full MIME ! ;; display will happen. ! (and vm-mail-buffer ! (vm-set-buffer-variable vm-mail-buffer ! 'vm-mime-decoded nil))) (vm-mime-error (vm-set-mime-layout-of (car vm-message-pointer) *** dist/vm-pop.el.dist Tue Sep 5 12:19:40 2000 --- vm-pop.el Thu Nov 2 08:40:54 2000 *************** *** 115,119 **** ;; something failed, so UIDL must not be working. ! ;; note that fact and carry on. ! (setq can-uidl nil ! msgid nil)))) (vm-pop-send-command process (format "LIST %d" n)) --- 115,127 ---- ;; something failed, so UIDL must not be working. ! (if (and (not auto-expunge) ! (or (not vm-pop-ok-to-ask) ! (not (vm-pop-ask-about-no-uidl popdrop)))) ! (progn ! (message "Skipping mailbox %s (no UIDL support)" ! popdrop) ! (throw 'done (not (equal retrieved 0)))) ! ;; user doesn't care, so go ahead and ! ;; expunge from the server ! (setq can-uidl nil ! msgid nil))))) (vm-pop-send-command process (format "LIST %d" n)) *************** *** 383,385 **** (setq process-buffer ! (generate-new-buffer (format "trace of POP session to %s" host))) --- 391,393 ---- (setq process-buffer ! (vm-make-work-buffer (format "trace of POP session to %s" host))) *************** *** 458,460 **** (kill-buffer (process-buffer process)) ! (save-excursions (set-buffer (process-buffer process)) --- 466,468 ---- (kill-buffer (process-buffer process)) ! (save-excursion (set-buffer (process-buffer process)) *************** *** 651,652 **** --- 659,680 ---- + (defun vm-pop-ask-about-no-uidl (popdrop) + (let ((work-buffer nil) + (pop-buffer (current-buffer)) + start end) + (unwind-protect + (save-excursion + (save-window-excursion + (setq work-buffer (generate-new-buffer + (format "*trouble with %s*" popdrop))) + (set-buffer work-buffer) + (insert + "You have asked VM to leave messages on the server for the POP mailbox " + popdrop + ". VM cannot do so because the server does not seem to support the POP UIDL command.\n\nYou can either continue to retrieve messages from this mailbox with VM deleting the messages from the server, or you can skip this mailbox, leaving messages on the server and not retrieving any messages.") + (fill-individual-paragraphs (point-min) (point-max)) + (vm-display-buffer work-buffer) + (setq minibuffer-scroll-window (selected-window)) + (yes-or-no-p "Continue retrieving anyway? "))) + (and work-buffer (kill-buffer work-buffer))))) + (defun vm-pop-retrieve-to-crashbox (process crash statblob) *************** *** 736,738 **** (save-excursion ! (setq buffer (generate-new-buffer "*vm-work*")) (set-buffer buffer) --- 764,766 ---- (save-excursion ! (setq buffer (vm-make-work-buffer)) (set-buffer buffer) *** dist/vm-reply.el.dist Tue Sep 5 12:19:40 2000 --- vm-reply.el Wed Oct 25 08:42:40 2000 *************** *** 743,745 **** (setq mail-buffer (current-buffer)) ! (set-buffer (generate-new-buffer "*vm-forward-buffer*")) (setq header-end (point)) --- 743,745 ---- (setq mail-buffer (current-buffer)) ! (set-buffer (vm-make-work-buffer "*vm-forward-buffer*")) (setq header-end (point)) *************** *** 953,955 **** (setq mail-buffer (current-buffer)) ! (set-buffer (generate-new-buffer "*vm-digest-buffer*")) (setq header-end (point)) --- 953,955 ---- (setq mail-buffer (current-buffer)) ! (set-buffer (vm-make-work-buffer "*vm-digest-buffer*")) (setq header-end (point)) *** dist/vm-save.el.dist Tue Sep 5 12:19:40 2000 --- vm-save.el Sat Oct 28 14:41:10 2000 *************** *** 361,363 **** (if vm-delete-after-saving ! (vm-delete-message count)))) --- 361,364 ---- (if vm-delete-after-saving ! (vm-delete-message count)) ! folder )) *************** *** 551,553 **** (progn ! (setq work-buffer (generate-new-buffer "*vm-work*")) (set-buffer work-buffer) --- 552,554 ---- (progn ! (setq work-buffer (vm-make-work-buffer)) (set-buffer work-buffer) *** dist/vm-startup.el.dist Tue Sep 5 12:19:41 2000 --- vm-startup.el Thu Nov 2 09:26:21 2000 *************** *** 39,42 **** deletion with `d', and saved to another folder with `s'. Quitting VM ! with `q' expunges deleted messages and saves the buffered folder to ! disk. --- 39,42 ---- deletion with `d', and saved to another folder with `s'. Quitting VM ! with `q' saves the buffered folder to disk, but does not expunge ! deleted messages. Use `###' to expunge deleted messages. *************** *** 92,94 **** ;; ! ;; There are seaprate code blocks for FSF Emacs and XEmacs ;; because the coding systems have different names. --- 92,94 ---- ;; ! ;; There are separate code blocks for FSF Emacs and XEmacs ;; because the coding systems have different names. *************** *** 327,329 **** ! This is VM 6.76. --- 327,329 ---- ! This is VM 6.77. *************** *** 384,386 **** A - save unfiled messages to their vm-auto-folder-alist specified folders ! # - expunge deleted messages (without saving folder) q - quit VM, deleted messages are not expunged, folder is --- 384,386 ---- A - save unfiled messages to their vm-auto-folder-alist specified folders ! ### - expunge deleted messages (without saving folder) q - quit VM, deleted messages are not expunged, folder is *************** *** 440,441 **** --- 440,451 ---- l d - delete labels from message + + $ - prefix for MIME commands. Position the cursor over a MIME + tag and use these keystrokes to operate on a MIME object. + + $ s - save the MIME object + $ p - print the MIME object + $ | - pipe the MIME object to a shell command. + $ RET - display the MIME object's text using the \"default\" face. + $ e - display the MIME object with an external viewer. + $ d - delete the MIME object from the message. *** dist/vm-toolbar.el.dist Sun Mar 29 23:43:39 1998 --- vm-toolbar.el Thu Sep 14 08:14:05 2000 *************** *** 318,363 **** (defun vm-toolbar-install-toolbar () ! (vm-toolbar-initialize) ! (let ((height (+ 4 (glyph-height (car vm-toolbar-help-icon)))) ! (width (+ 4 (glyph-width (car vm-toolbar-help-icon)))) ! (frame (selected-frame)) ! (buffer (current-buffer)) ! (tag-set '(win)) ! (myframe (vm-created-this-frame-p)) ! toolbar ) ! ;; glyph-width and glyph-height return 0 at startup sometimes ! ;; use reasonable values if they fail. ! (if (= width 4) ! (setq width 68)) ! (if (= height 4) ! (setq height 46)) ! ;; honor user setting of vm-toolbar if they are daring enough ! ;; to set it. ! (if vm-toolbar ! (setq toolbar vm-toolbar) ! (setq toolbar (vm-toolbar-make-toolbar-spec) ! vm-toolbar toolbar)) ! (cond ((eq vm-toolbar-orientation 'right) ! (setq vm-toolbar-specifier right-toolbar) ! (if myframe ! (set-specifier right-toolbar toolbar frame tag-set)) ! (set-specifier right-toolbar toolbar buffer) ! (set-specifier right-toolbar-width width frame tag-set)) ! ((eq vm-toolbar-orientation 'left) ! (setq vm-toolbar-specifier left-toolbar) ! (if myframe ! (set-specifier left-toolbar toolbar frame tag-set)) ! (set-specifier left-toolbar toolbar buffer) ! (set-specifier left-toolbar-width width frame tag-set)) ! ((eq vm-toolbar-orientation 'bottom) ! (setq vm-toolbar-specifier bottom-toolbar) ! (if myframe ! (set-specifier bottom-toolbar toolbar frame tag-set)) ! (set-specifier bottom-toolbar toolbar buffer) ! (set-specifier bottom-toolbar-height height frame tag-set)) ! (t ! (setq vm-toolbar-specifier top-toolbar) ! (if myframe ! (set-specifier top-toolbar toolbar frame tag-set)) ! (set-specifier top-toolbar toolbar buffer) ! (set-specifier top-toolbar-height height frame tag-set))))) --- 318,368 ---- (defun vm-toolbar-install-toolbar () ! (if (not (and (stringp vm-toolbar-pixmap-directory) ! (file-directory-p vm-toolbar-pixmap-directory))) ! (progn ! (message "Bad toolbar pixmap directory, can't setup toolbar.") ! (sit-for 2)) ! (vm-toolbar-initialize) ! (let ((height (+ 4 (glyph-height (car vm-toolbar-help-icon)))) ! (width (+ 4 (glyph-width (car vm-toolbar-help-icon)))) ! (frame (selected-frame)) ! (buffer (current-buffer)) ! (tag-set '(win)) ! (myframe (vm-created-this-frame-p)) ! toolbar ) ! ;; glyph-width and glyph-height return 0 at startup sometimes ! ;; use reasonable values if they fail. ! (if (= width 4) ! (setq width 68)) ! (if (= height 4) ! (setq height 46)) ! ;; honor user setting of vm-toolbar if they are daring enough ! ;; to set it. ! (if vm-toolbar ! (setq toolbar vm-toolbar) ! (setq toolbar (vm-toolbar-make-toolbar-spec) ! vm-toolbar toolbar)) ! (cond ((eq vm-toolbar-orientation 'right) ! (setq vm-toolbar-specifier right-toolbar) ! (if myframe ! (set-specifier right-toolbar toolbar frame tag-set)) ! (set-specifier right-toolbar toolbar buffer) ! (set-specifier right-toolbar-width width frame tag-set)) ! ((eq vm-toolbar-orientation 'left) ! (setq vm-toolbar-specifier left-toolbar) ! (if myframe ! (set-specifier left-toolbar toolbar frame tag-set)) ! (set-specifier left-toolbar toolbar buffer) ! (set-specifier left-toolbar-width width frame tag-set)) ! ((eq vm-toolbar-orientation 'bottom) ! (setq vm-toolbar-specifier bottom-toolbar) ! (if myframe ! (set-specifier bottom-toolbar toolbar frame tag-set)) ! (set-specifier bottom-toolbar toolbar buffer) ! (set-specifier bottom-toolbar-height height frame tag-set)) ! (t ! (setq vm-toolbar-specifier top-toolbar) ! (if myframe ! (set-specifier top-toolbar toolbar frame tag-set)) ! (set-specifier top-toolbar toolbar buffer) ! (set-specifier top-toolbar-height height frame tag-set)))))) *************** *** 456,471 **** tuple files var) ! (if (not (file-directory-p vm-toolbar-pixmap-directory)) ! (error "Bad toolbar pixmap directory: %s" ! vm-toolbar-pixmap-directory) ! (while tuples ! (setq tuple (car tuples) ! var (car tuple) ! files (cdr tuple)) ! (set var (mapcar ! (function ! (lambda (f) ! (make-glyph ! (expand-file-name f vm-toolbar-pixmap-directory)))) ! files)) ! (setq tuples (cdr tuples))))))) (setq vm-toolbar-delete/undelete-icon vm-toolbar-delete-icon) --- 461,473 ---- tuple files var) ! (while tuples ! (setq tuple (car tuples) ! var (car tuple) ! files (cdr tuple)) ! (set var (mapcar ! (function ! (lambda (f) ! (make-glyph ! (expand-file-name f vm-toolbar-pixmap-directory)))) ! files)) ! (setq tuples (cdr tuples)))))) (setq vm-toolbar-delete/undelete-icon vm-toolbar-delete-icon) *** dist/vm-vars.el.dist Tue Sep 5 12:19:41 2000 --- vm-vars.el Mon Oct 30 11:21:49 2000 *************** *** 257,258 **** --- 257,263 ---- in the POP mailbox until you run `vm-expunge-pop-messages'. + VM can only support a nil value for this variable if the + remote POP server supports the UIDL command. If the server does + not support UIDL and you've asked VM leave messages on the server, + VM will complain about the lack of UIDL support and not retrieve + messages from the server. *************** *** 277,279 **** corresponding POP mailbox, t if retrieved messages should be ! deleted from the mailbox immediately after retrieval.") --- 282,290 ---- corresponding POP mailbox, t if retrieved messages should be ! deleted from the mailbox immediately after retrieval. ! ! VM can only support a non-nil setting of this variable if the ! remote POP server supports the UIDL command. If the server does ! not support UIDL and you've asked VM leave messages on the server, ! VM will complain about the lack of UIDL support and not retrieve ! messages from the server.") *************** *** 611,613 **** (defvar vm-mime-decode-for-preview t ! "*Non-nil value causes MIME deocding to happen when a message is previewed, instead of when it is displayed in full. --- 622,624 ---- (defvar vm-mime-decode-for-preview t ! "*Non-nil value causes MIME decoding to happen when a message is previewed, instead of when it is displayed in full. *************** *** 2912,2914 **** (define-key map "|" 'vm-pipe-message-to-command) ! (define-key map "#" 'vm-expunge-folder) (define-key map "q" 'vm-quit) --- 2923,2925 ---- (define-key map "|" 'vm-pipe-message-to-command) ! (define-key map "###" 'vm-expunge-folder) (define-key map "q" 'vm-quit) *************** *** 3031,3033 **** (let ((map (make-sparse-keymap))) ! (define-key map "$s" 'vm-mime-reader-map-save-file) (define-key map "$|" 'vm-mime-reader-map-pipe-to-command) --- 3042,3045 ---- (let ((map (make-sparse-keymap))) ! (define-key map "$s" 'vm-mime-reader-map-save-message) ! (define-key map "$w" 'vm-mime-reader-map-save-file) (define-key map "$|" 'vm-mime-reader-map-pipe-to-command) *** dist/vm-version.el.dist Tue Sep 5 12:19:41 2000 --- vm-version.el Thu Nov 2 09:26:21 2000 *************** *** 4,6 **** ! (defconst vm-version "6.76" "Version number of VM.") --- 4,6 ---- ! (defconst vm-version "6.77" "Version number of VM.") *************** *** 40,41 **** --- 40,46 ---- (fboundp 'menu-bar-mode))) + + (defun vm-menu-fsfemacs19-menus-p () + (and vm-fsfemacs-p + (fboundp 'menu-bar-mode) + (= emacs-major-version 19))) *** dist/make-autoloads.dist Mon Jan 6 04:50:05 1997 --- make-autoloads Mon Oct 30 10:23:13 2000 *************** *** 21,26 **** (if (and (consp sexp) (cdr sexp) ! (or (eq (car sexp) 'defun) ! (eq (car sexp) 'defmacro))) (progn ! (if (eq (car sexp) 'defmacro) (setq macro macro-flag) --- 21,25 ---- (if (and (consp sexp) (cdr sexp) ! (memq (car sexp) '(defun defmacro defsubst))) (progn ! (if (memq (car sexp) '(defmacro defsubst)) (setq macro macro-flag)