*** dist/vm-digest.el.dist Tue Jul 24 21:01:43 2001 --- vm-digest.el Thu Aug 16 11:00:39 2001 *************** *** 1,3 **** ;;; Message encapsulation ! ;;; Copyright (C) 1989, 1990, 1993, 1994, 1997 Kyle E. Jones ;;; --- 1,3 ---- ;;; Message encapsulation ! ;;; Copyright (C) 1989, 1990, 1993, 1994, 1997, 2001 Kyle E. Jones ;;; *************** *** 130,133 **** (insert ! (format "This is a digest, %d messages, MIME encapsulation.\n" ! n))) (goto-char start)) --- 130,133 ---- (insert ! (format "This is a digest, %d message%s, MIME encapsulation.\n" ! n (if (= n 1) "" "s")))) (goto-char start)) *** dist/vm-edit.el.dist Tue Sep 5 12:19:40 2000 --- vm-edit.el Thu Aug 16 11:03:46 2001 *************** *** 1,3 **** ;;; Editing VM messages ! ;;; Copyright (C) 1990, 1991, 1993, 1994, 1997 Kyle E. Jones ;;; --- 1,3 ---- ;;; Editing VM messages ! ;;; Copyright (C) 1990, 1991, 1993, 1994, 1997, 2001 Kyle E. Jones ;;; *************** *** 136,139 **** (vm-error-if-folder-empty) ! (let ((mlist (vm-select-marked-or-prefixed-messages count)) ! (buffers-needing-thread-sort (make-vector 29 0)) m) --- 136,144 ---- (vm-error-if-folder-empty) ! (let ((mlist (vm-select-marked-or-prefixed-messages count))) ! (vm-discard-cached-data-internal mlist)) ! (vm-display nil nil '(vm-discard-cached-data) '(vm-discard-cached-data)) ! (vm-update-summary-and-mode-line)) ! ! (defun vm-discard-cached-data-internal (mlist) ! (let ((buffers-needing-thread-sort (make-vector 29 0)) m) *************** *** 176,180 **** (vm-sort-messages "thread"))) ! buffers-needing-thread-sort))) ! (vm-display nil nil '(vm-discard-cached-data) '(vm-discard-cached-data)) ! (vm-update-summary-and-mode-line)) --- 181,183 ---- (vm-sort-messages "thread"))) ! buffers-needing-thread-sort)))) *** dist/vm-folder.el.dist Tue Jul 24 21:01:43 2001 --- vm-folder.el Sun Sep 2 11:08:15 2001 *************** *** 1,3 **** ;;; VM folder related functions ! ;;; Copyright (C) 1989-1998 Kyle E. Jones ;;; --- 1,3 ---- ;;; VM folder related functions ! ;;; Copyright (C) 1989-2001 Kyle E. Jones ;;; *************** *** 3144,3145 **** --- 3144,3162 ---- (vm-set-buffer-modified-p nil) + ;; clear the modified flag in virtual folders if all the + ;; real buffers assocaited with them are unmodified. + (let ((b-list vm-virtual-buffers) rb-list one-modified) + (save-excursion + (while b-list + (if (null (cdr (vm-buffer-variable-value (car b-list) + 'vm-real-buffers))) + (vm-set-buffer-modified-p nil (car b-list)) + (set-buffer (car b-list)) + (setq rb-list vm-real-buffers one-modified nil) + (while rb-list + (if (buffer-modified-p (car rb-list)) + (setq one-modified t rb-list nil) + (setq rb-list (cdr rb-list)))) + (if (not one-modified) + (vm-set-buffer-modified-p nil (car b-list)))) + (setq b-list (cdr b-list))))) (vm-clear-modification-flag-undos) *************** *** 3882,3885 **** (let ((lines vm-startup-message-lines)) ! (message "VM %s, Copyright (C) 2000 Kyle E. Jones; type ? for help" ! vm-version) (setq vm-startup-message-displayed t) --- 3899,3902 ---- (let ((lines vm-startup-message-lines)) ! (message "VM %s, Copyright %s 2001 Kyle E. Jones; type ? for help" ! vm-version (if vm-xemacs-p "\251" "(C)")) (setq vm-startup-message-displayed t) *** dist/vm-imap.el.dist Tue Jul 24 21:01:43 2001 --- vm-imap.el Tue Aug 28 01:15:26 2001 *************** *** 1,3 **** ;;; Simple IMAP4 (RFC 2060) client for VM ! ;;; Copyright (C) 1998 Kyle E. Jones ;;; --- 1,3 ---- ;;; Simple IMAP4 (RFC 2060) client for VM ! ;;; Copyright (C) 1998, 2001 Kyle E. Jones ;;; *************** *** 47,48 **** --- 47,49 ---- (source-nopwd (vm-imapdrop-sans-password source)) + (use-rfc822-peek nil) auto-expunge x select source-list uid *************** *** 135,152 **** n mailbox-count imapdrop) ! (condition-case data (progn ! (vm-imap-send-command process ! (format "FETCH %d (BODY.PEEK[])" ! n)) ! (vm-imap-retrieve-to-crashbox process destination ! statblob t)) ! (vm-imap-protocol-error ! (message "FETCH %d (BODY.PEEK[]) failed, trying RFC822.PEEK" ! n) ! (vm-imap-send-command process ! (format ! "FETCH %d (RFC822.PEEK)" n)) ! (vm-imap-retrieve-to-crashbox process destination ! statblob nil))) ! (vm-increment retrieved) --- 136,156 ---- n mailbox-count imapdrop) ! (if use-rfc822-peek (progn ! (vm-imap-send-command process ! (format ! "FETCH %d (RFC822.PEEK)" n)) ! (vm-imap-retrieve-to-crashbox process destination ! statblob nil)) ! (condition-case data ! (progn ! (vm-imap-send-command process ! (format "FETCH %d (BODY.PEEK[])" ! n)) ! (vm-imap-retrieve-to-crashbox process destination ! statblob t)) ! (vm-imap-protocol-error ! (vm-imap-send-command process ! (format "FETCH %d (RFC822.PEEK)" n)) ! (vm-imap-retrieve-to-crashbox process destination ! statblob nil)))) (vm-increment retrieved) *************** *** 523,525 **** answer (vm-mime-base64-encode-string answer)) ! (vm-imap-send-command process answer) (and (null (vm-imap-read-ok-response process)) --- 527,529 ---- answer (vm-mime-base64-encode-string answer)) ! (vm-imap-send-command process answer nil t) (and (null (vm-imap-read-ok-response process)) *************** *** 627,631 **** ! (defun vm-imap-send-command (process command) (goto-char (point-max)) ! (insert-before-markers "VM ") (let ((case-fold-search t)) --- 631,635 ---- ! (defun vm-imap-send-command (process command &optional tag no-tag) (goto-char (point-max)) ! (or no-tag (insert-before-markers (or tag "VM") " ")) (let ((case-fold-search t)) *************** *** 635,639 **** (setq vm-imap-read-point (point)) ! (process-send-string process "VM ") ! (process-send-string process command) ! (process-send-string process "\r\n")) --- 639,645 ---- (setq vm-imap-read-point (point)) ! ;; previously we had a process-send-string call for each string ! ;; to avoid extra consing but that caused a lot of packet overhead. ! (if no-tag ! (process-send-string process (format "%s\r\n" command)) ! (process-send-string process (format "%s %s\r\n" (or tag "VM") command)))) *************** *** 739,741 **** need-header nil)) ! ((vm-imap-response-matches response 'VM 'OK 'FETCH) (setq need-ok nil)))) --- 745,747 ---- need-header nil)) ! ((vm-imap-response-matches response 'VM 'OK) (setq need-ok nil)))) *** dist/vm-mime.el.dist Tue Jul 24 21:01:44 2001 --- vm-mime.el Thu Aug 16 11:02:36 2001 *************** *** 1,3 **** ;;; MIME support functions ! ;;; Copyright (C) 1997-1998, 2000 Kyle E. Jones ;;; --- 1,3 ---- ;;; MIME support functions ! ;;; Copyright (C) 1997-1998, 2000, 2001 Kyle E. Jones ;;; *************** *** 1841,1844 **** nil ! (vm-mime-get-parameter layout "name")))) ! (vm-mime-send-body-to-file layout default-filename))) t ) --- 1841,1851 ---- nil ! (vm-mime-get-parameter layout "name"))) ! (file nil)) ! (setq file (vm-mime-send-body-to-file layout default-filename)) ! (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)))))) t ) *************** *** 3330,3332 **** (this-command this-command)) ! (setq file (read-file-name "Yank from folder: " dir nil t))) (save-excursion --- 3337,3340 ---- (this-command this-command)) ! (setq file (read-file-name "Attach message from folder: " ! dir nil t))) (save-excursion *** dist/vm-misc.el.dist Tue Jul 24 21:01:44 2001 --- vm-misc.el Mon Aug 20 11:54:06 2001 *************** *** 1,3 **** ;;; Miscellaneous functions for VM ! ;;; Copyright (C) 1989-1997 Kyle E. Jones ;;; --- 1,3 ---- ;;; Miscellaneous functions for VM ! ;;; Copyright (C) 1989-2001 Kyle E. Jones ;;; *************** *** 40,46 **** (or matchn (setq matchn 1)) ! (let (list) (store-match-data nil) (while (string-match regexp string (match-end 0)) ! (setq list (cons (substring string (match-beginning matchn) ! (match-end matchn)) list))) (nreverse list))) --- 40,55 ---- (or matchn (setq matchn 1)) ! (let (list tem) (store-match-data nil) (while (string-match regexp string (match-end 0)) ! (if (not (consp matchn)) ! (setq list (cons (substring string (match-beginning matchn) ! (match-end matchn)) list)) ! (setq tem matchn) ! (while tem ! (if (match-beginning (car tem)) ! (setq list (cons (substring string ! (match-beginning (car tem)) ! (match-end (car tem))) list) ! tem nil) ! (setq tem (cdr tem)))))) (nreverse list))) *** dist/vm-pop.el.dist Tue Jul 24 21:01:44 2001 --- vm-pop.el Tue Aug 28 14:40:39 2001 *************** *** 572,575 **** (setq vm-pop-read-point (point)) ! (process-send-string process command) ! (process-send-string process "\r\n")) --- 572,574 ---- (setq vm-pop-read-point (point)) ! (process-send-string process (format "%s\r\n" command))) *** dist/vm-reply.el.dist Tue Jul 24 21:01:44 2001 --- vm-reply.el Mon Aug 20 12:13:57 2001 *************** *** 1,3 **** ;;; Mailing, forwarding, and replying commands for VM ! ;;; Copyright (C) 1989-1998 Kyle E. Jones ;;; --- 1,3 ---- ;;; Mailing, forwarding, and replying commands for VM ! ;;; Copyright (C) 1989-2001 Kyle E. Jones ;;; *************** *** 1094,1100 **** (defun vm-mail-to-mailto-url (url) ! (let ((address (car (vm-parse url "^mailto:\\(.+\\)")))) ! (setq address (vm-url-decode-string address)) (vm-select-folder-buffer) (vm-check-for-killed-summary) ! (vm-mail-internal nil address) (run-hooks 'vm-mail-hook) --- 1094,1132 ---- (defun vm-mail-to-mailto-url (url) ! (let ((list (vm-parse url "^mailto:\\([^?]+\\)\\??\\|\\([^&]+\\)&?" ! '(1 2))) ! to subject in-reply-to cc references newsgroups body ! tem header value header-list) ! (setq to (car list) ! to (vm-url-decode-string to) ! list (cdr list)) ! (while list ! (setq tem (vm-parse (car list) "\\([^=]+\\)=?")) ! (if (null (nth 1 tem)) ! nil ! (setq header (downcase (vm-url-decode-string (car tem))) ! value (vm-url-decode-string (nth 1 tem))) ! (if (member header '("subject" "in-reply-to" "cc" ! "references" "newsgroups" "body")) ! ;; set the variable let-bound above ! (set (intern header) value) ! ;; we'll insert the header later ! (setq header-list (cons header (cons value header-list))))) ! (setq list (cdr list))) (vm-select-folder-buffer) (vm-check-for-killed-summary) ! (vm-mail-internal nil to subject in-reply-to cc references newsgroups) ! (save-excursion ! (goto-char (point-min)) ! (while header-list ! (insert (car header-list) ": ") ! (capitalize-region (point) (save-excursion (beginning-of-line) (point))) ! (insert (nth 1 header-list) "\n") ! (setq header-list (nthcdr 2 header-list))) ! (if (null body) ! nil ! (mail-text) ! (save-excursion (insert (vm-url-decode-string body) "\n")) ! ;; CRLF to LF for line breaks in the body ! (while (search-forward "\r\n" nil t) ! (replace-match "\n")))) (run-hooks 'vm-mail-hook) *** dist/vm-startup.el.dist Tue Jul 24 21:01:44 2001 --- vm-startup.el Wed Sep 5 22:19:25 2001 *************** *** 344,346 **** ! This is VM 6.95. --- 344,346 ---- ! This is VM 6.96. *** dist/vm-summary.el.dist Sat Jun 23 18:58:00 2001 --- vm-summary.el Mon Aug 27 00:56:22 2001 *************** *** 156,158 **** (vm-su-start-of m) ! (vm-su-end-of m)))) (vm-set-su-start-of m (vm-marker (vm-su-start-of m))) --- 156,159 ---- (vm-su-start-of m) ! (vm-su-end-of m) ! (vm-su-summary-mouse-track-overlay-of m)))) (vm-set-su-start-of m (vm-marker (vm-su-start-of m))) *************** *** 339,341 **** (let ((vm-su-message message)) ! (eval (cdr match))))) --- 340,344 ---- (let ((vm-su-message message)) ! (if (or tokenize (null vm-display-using-mime)) ! (eval (cdr match)) ! (vm-decode-mime-encoded-words-in-string (eval (cdr match))))))) *** dist/vm-thread.el.dist Sat Jun 23 18:58:00 2001 --- vm-thread.el Wed Sep 5 22:05:49 2001 *************** *** 1,3 **** ;;; Thread support for VM ! ;;; Copyright (C) 1994 Kyle E. Jones ;;; --- 1,3 ---- ;;; Thread support for VM ! ;;; Copyright (C) 1994, 2001 Kyle E. Jones ;;; *************** *** 192,193 **** --- 192,194 ---- (m message) + (loop-recovery-point nil) thread-list id-sym subject-sym loop-sym root-date) *************** *** 195,222 **** (set-buffer (vm-buffer-of m)) (setq id-sym (intern (vm-su-message-id m) vm-thread-obarray) thread-list (list id-sym)) ! (fillarray vm-thread-loop-obarray 0) (while (not done) ! (setq loop-sym (intern (symbol-name id-sym) vm-thread-loop-obarray)) ! (if (boundp loop-sym) ! ;; loop detected, bail... ! (setq done t) ! (set loop-sym t) ! (if (and (boundp id-sym) (symbol-value id-sym)) ! (progn ! (setq id-sym (symbol-value id-sym) ! thread-list (cons id-sym thread-list) ! m (car (get id-sym 'messages)))) ! (if (null m) ! (setq done t) ! (if (null vm-thread-using-subject) ! nil ! (setq subject-sym ! (intern (vm-so-sortable-subject m) ! vm-thread-subject-obarray)) ! (if (or (not (boundp subject-sym)) ! (eq (aref (symbol-value subject-sym) 0) id-sym)) ! (setq done t) ! (setq id-sym (aref (symbol-value subject-sym) 0) ! thread-list (cons id-sym thread-list) m (car (get id-sym 'messages))))))))) --- 196,235 ---- (set-buffer (vm-buffer-of m)) + (fillarray vm-thread-loop-obarray 0) (setq id-sym (intern (vm-su-message-id m) vm-thread-obarray) thread-list (list id-sym)) ! (set (intern (symbol-name id-sym) vm-thread-loop-obarray) t) (while (not done) ! (if (and (boundp id-sym) (symbol-value id-sym)) ! (progn ! (setq id-sym (symbol-value id-sym) ! loop-sym (intern (symbol-name id-sym) ! vm-thread-loop-obarray)) ! (if (boundp loop-sym) ! ;; loop detected, bail... ! (setq done t ! thread-list (or loop-recovery-point thread-list)) ! (set loop-sym t) ! (setq thread-list (cons id-sym thread-list) ! m (car (get id-sym 'messages))))) ! (if (null m) ! (setq done t) ! (if (null vm-thread-using-subject) ! nil ! (setq subject-sym ! (intern (vm-so-sortable-subject m) ! vm-thread-subject-obarray)) ! (if (or (not (boundp subject-sym)) ! (eq (aref (symbol-value subject-sym) 0) id-sym)) ! (setq done t) ! (setq id-sym (aref (symbol-value subject-sym) 0) ! loop-recovery-point (or loop-recovery-point ! thread-list) ! loop-sym (intern (symbol-name id-sym) ! vm-thread-loop-obarray)) ! (if (boundp loop-sym) ! ;; loop detected, bail... ! (setq done t ! thread-list (or loop-recovery-point thread-list)) ! (set loop-sym t) ! (setq thread-list (cons id-sym thread-list) m (car (get id-sym 'messages))))))))) *** dist/vm-toolbar.el.dist Tue Jul 24 21:01:44 2001 --- vm-toolbar.el Thu Aug 16 11:01:58 2001 *************** *** 1,3 **** ;;; Toolbar related functions and commands ! ;;; Copyright (C) 1995-1997, 2000 Kyle E. Jones ;;; --- 1,3 ---- ;;; Toolbar related functions and commands ! ;;; Copyright (C) 1995-1997, 2000, 2001 Kyle E. Jones ;;; *** dist/vm-vars.el.dist Tue Jul 24 21:01:44 2001 --- vm-vars.el Wed Aug 29 13:27:42 2001 *************** *** 1079,1081 **** ("\\.mov$" . "video/quicktime") ! ("\\.ps$" . "application/postscript") ("\\.pdf$" . "application/pdf") --- 1079,1081 ---- ("\\.mov$" . "video/quicktime") ! ("\\.e?ps$" . "application/postscript") ("\\.pdf$" . "application/pdf") *** dist/vm-version.el.dist Tue Jul 24 21:01:44 2001 --- vm-version.el Wed Sep 5 22:19:25 2001 *************** *** 4,6 **** ! (defconst vm-version "6.95" "Version number of VM.") --- 4,6 ---- ! (defconst vm-version "6.96" "Version number of VM.") *************** *** 89,91 **** (or (and vm-xemacs-p (featurep 'toolbar)) ! (and vm-fsfemacs-p (fboundp 'tool-bar-mode)))) --- 89,91 ---- (or (and vm-xemacs-p (featurep 'toolbar)) ! (and vm-fsfemacs-p (fboundp 'tool-bar-mode) (boundp 'tool-bar-map)))) *** dist/make-autoloads.dist Thu Nov 2 09:27:08 2000 --- make-autoloads Tue Jul 24 21:02:07 2001 *************** *** 21,23 **** (if (and (consp sexp) (cdr sexp) ! (memq (car sexp) '(defun defmacro defsubst))) (progn --- 21,23 ---- (if (and (consp sexp) (cdr sexp) ! (memq (car sexp) '(defun defmacro defsubst fset))) (progn *************** *** 26,38 **** (setq macro nil)) ! (setq sexp (cdr sexp) ! function (car sexp) ! sexp (cdr (cdr sexp))) ! (if (stringp (car sexp)) ! (setq doc (car sexp) ! sexp (cdr sexp)) ! (setq doc nil)) ! (if (and (consp (car sexp)) ! (eq (car (car sexp)) 'interactive)) ! (setq interactive t) ! (setq interactive nil)) (if (string-match "\\.el$" (car files)) --- 26,43 ---- (setq macro nil)) ! (if (eq (car sexp) 'fset) ! (setq sexp (cdr sexp) ! function (eval (car sexp)) ! interactive nil ! doc nil) ! (setq sexp (cdr sexp) ! function (car sexp) ! sexp (cdr (cdr sexp))) ! (if (stringp (car sexp)) ! (setq doc (car sexp) ! sexp (cdr sexp)) ! (setq doc nil)) ! (if (and (consp (car sexp)) ! (eq (car (car sexp)) 'interactive)) ! (setq interactive t) ! (setq interactive nil))) (if (string-match "\\.el$" (car files))