*** dist/vm-folder.el.dist Fri Feb 5 01:41:58 1999 --- vm-folder.el Thu Apr 8 23:05:19 1999 *************** *** 3780,3796 **** - (defun vm-session-initialization () - ;; If this is the first time VM has been run in this Emacs session, - ;; do some necessary preparations. - (if (or (not (boundp 'vm-session-beginning)) - vm-session-beginning) - (progn - (random t) - (vm-load-init-file) - (if (not vm-window-configuration-file) - (setq vm-window-configurations vm-default-window-configuration) - (or (vm-load-window-configurations vm-window-configuration-file) - (setq vm-window-configurations vm-default-window-configuration))) - (setq vm-buffers-needing-display-update (make-vector 29 0)) - (setq vm-session-beginning nil)))) - (defun vm-toggle-read-only () --- 3780,3781 ---- *** dist/vm-imap.el.dist Thu Feb 25 23:30:52 1999 --- vm-imap.el Sat May 15 22:21:27 1999 *************** *** 372,374 **** greeting timestamp ! host port auth user pass source-list process-buffer source-nopwd-nombox) --- 372,374 ---- greeting timestamp ! host port mailbox auth user pass source-list process-buffer source-nopwd-nombox) *************** *** 433,441 **** (set-buffer-file-coding-system 'binary t)) ! (insert "starting IMAP session " (current-time-string) "\n") ! (insert (format "connecting to %s:%s\n" host port)) ! ;; open the connection to the server ! (setq process (open-network-stream "IMAP" process-buffer ! host port)) ! (and (null process) (throw 'end-of-session nil)) ! (insert "connected\n") (process-kill-without-query process) --- 433,448 ---- (set-buffer-file-coding-system 'binary t)) ! (if (equal auth "preauth") ! (setq process ! (run-hook-with-args-until-success 'vm-imap-session-preauth-hook ! host port mailbox ! user pass))) ! (if (processp process) ! (set-process-buffer process (current-buffer)) ! (insert "starting IMAP session " (current-time-string) "\n") ! (insert (format "connecting to %s:%s\n" host port)) ! ;; open the connection to the server ! (setq process (open-network-stream "IMAP" process-buffer ! host port)) ! (and (null process) (throw 'end-of-session nil)) ! (insert "connected\n")) (process-kill-without-query process) *** dist/vm-menu.el.dist Thu Mar 18 18:42:12 1999 --- vm-menu.el Sun May 9 02:08:48 1999 *************** *** 392,394 **** (vm-mime-run-display-function-at-point ! 'vm-mime-pipe-body-to-queried-command-discard-output) t])))) --- 392,395 ---- (vm-mime-run-display-function-at-point ! 'vm-mime-pipe-body-to-queried-command-discard-output) t] ! ["Delete object" 'vm-delete-mime-object t])))) *** dist/vm-mime.el.dist Thu Apr 8 00:31:10 1999 --- vm-mime.el Sat May 15 17:26:16 1999 *************** *** 51,52 **** --- 51,61 ---- (defun vm-set-mm-layout-qtype (e type) (aset e 1 type)) + (defun vm-set-mm-layout-encoding (e encoding) (aset e 2 encoding)) + (defun vm-set-mm-layout-id (e id) (aset e 3 id)) + (defun vm-set-mm-layout-description (e des) (aset e 4 des)) + (defun vm-set-mm-layout-disposition (e d) (aset e 5 d)) + (defun vm-set-mm-layout-qdisposition (e d) (aset e 6 d)) + (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)) *************** *** 139,141 **** ((not (vm-multiple-fonts-possible-p)) nil) ! ((vm-string-member charset vm-mime-default-face-charsets) nil) (t --- 148,150 ---- ((not (vm-multiple-fonts-possible-p)) nil) ! ((vm-mime-default-face-charset-p charset) nil) (t *************** *** 681,691 **** passing-message-only) ! (let ((case-fold-search t) version type qtype encoding id description ! disposition qdisposition boundary boundary-regexp start ! multipart-list c-t c-t-e done p returnval) ! (catch 'return-value ! (save-excursion ! (if (and m (not passing-message-only)) ! (progn ! (setq m (vm-real-message-of m)) ! (set-buffer (vm-buffer-of m)))) (save-excursion --- 690,700 ---- passing-message-only) ! (catch 'return-value ! (save-excursion ! (if (and m (not passing-message-only)) ! (progn ! (setq m (vm-real-message-of m)) ! (set-buffer (vm-buffer-of m)))) ! (let ((case-fold-search t) version type qtype encoding id description ! disposition qdisposition boundary boundary-regexp start ! multipart-list c-t c-t-e done p returnval) (save-excursion *************** *** 1217,1219 **** nil ! (vm-mm-layout-message layout) nil)))) --- 1226,1228 ---- nil ! (vm-mime-make-message-symbol (vm-mm-layout-message layout)) nil)))) *************** *** 1427,1429 **** ((and (vm-mime-should-display-internal layout dont-honor-c-d) ! (condition-case nil (funcall (intern --- 1436,1438 ---- ((and (vm-mime-should-display-internal layout dont-honor-c-d) ! (or (condition-case nil (funcall (intern *************** *** 1432,1434 **** layout) ! (void-function nil)))) ((vm-mime-types-match "multipart" type) --- 1441,1449 ---- layout) ! (void-function nil)) ! (condition-case nil ! (funcall (intern ! (concat "vm-mime-display-internal-" ! type-no-subtype)) ! layout) ! (void-function nil))))) ((vm-mime-types-match "multipart" type) *************** *** 1461,1462 **** --- 1476,1480 ---- + (defun vm-mime-display-internal-text (layout) + (vm-mime-display-internal-text/plain layout)) + (defun vm-mime-display-internal-text/html (layout) *************** *** 2284,2299 **** (error "Aborted")) ! ;; Bind the function jka-compr-get-compression-info to ! ;; somethign that will return nil so that jka-compr ! ;; won't compress already compressed data. This is a ! ;; crock, but I'm tired of hearing about this. ! (let ((jk-func (and (fboundp 'jka-compr-get-compression-info) ! (symbol-function ! 'jka-compr-get-compression-info)))) ! (unwind-protect ! (progn ! (fset 'jka-compr-get-compression-info 'ignore) ! (write-region (point-min) (point-max) file nil nil)) ! (if jk-func ! (fset 'jka-compr-get-compression-info jk-func) ! (fmakunbound 'jka-compr-get-compression-info))))) (and work-buffer (kill-buffer work-buffer)))))) --- 2302,2312 ---- (error "Aborted")) ! ;; Bind the jka-compr-compression-info-list to nil so ! ;; that jka-compr won't compress already compressed ! ;; data. This is a crock, but as usual I'm getting ! ;; the bug reports for somebody else's bad code. ! (let ((jka-compr-compression-info-list nil)) ! (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)))))) *************** *** 2475,2477 **** "us-ascii"))) ! (vm-string-member charset vm-mime-default-face-charsets)) (string-match "^\\(7bit\\|8bit\\|binary\\)$" --- 2488,2490 ---- "us-ascii"))) ! (vm-mime-default-face-charset-p charset)) (string-match "^\\(7bit\\|8bit\\|binary\\)$" *************** *** 2490,2498 **** (vm-string-assoc name vm-mime-mule-charset-to-coding-alist)) ! ((and vm-fsfemacs-mule-p (memq window-system '(x win32))) (vm-string-assoc name vm-mime-mule-charset-to-coding-alist)) ((vm-multiple-fonts-possible-p) ! (or (vm-string-member name vm-mime-default-face-charsets) (vm-string-assoc name vm-mime-charset-font-alist))) (t ! (vm-string-member name vm-mime-default-face-charsets)))) --- 2503,2519 ---- (vm-string-assoc name vm-mime-mule-charset-to-coding-alist)) ! ((and vm-fsfemacs-mule-p (memq window-system '(x win32 w32))) (vm-string-assoc name vm-mime-mule-charset-to-coding-alist)) ((vm-multiple-fonts-possible-p) ! (or (vm-mime-default-face-charset-p name) (vm-string-assoc name vm-mime-charset-font-alist))) (t ! (vm-mime-default-face-charset-p name)))) ! ! (defun vm-mime-default-face-charset-p (charset) ! (and (or (eq vm-mime-default-face-charsets t) ! (and (consp vm-mime-default-face-charsets) ! (vm-string-member charset vm-mime-default-face-charsets))) ! (not (vm-string-member charset ! vm-mime-default-face-charset-exceptions)))) ! *************** *** 3035,3036 **** --- 3056,3184 ---- + (defun vm-delete-mime-object () + "Deletes the contents of MIME object referred to by the MIME + button at point. The MIME object is replaced by a text/plain + object that briefly describes what was deleted." + (interactive) + (vm-follow-summary-cursor) + (vm-select-folder-buffer) + (vm-check-for-killed-summary) + (vm-check-for-killed-presentation) + (vm-error-if-folder-read-only) + (vm-error-if-folder-empty) + (if (and (vm-virtual-message-p (car vm-message-pointer)) + (null (vm-virtual-messages-of (car vm-message-pointer)))) + (error "Can't edit unmirrored virtual messages.")) + (and vm-presentation-buffer + (set-buffer vm-presentation-buffer)) + (let (layout) + (cond (vm-fsfemacs-p + (let (o-list o (found nil)) + (setq o-list (overlays-at (point))) + (while (and o-list (not found)) + (setq o (car o-list)) + (cond ((setq layout (overlay-get o 'vm-mime-layout)) + (setq found t) + (if (eq layout + (vm-mime-layout-of + (vm-mm-layout-message layout))) + (error "Can't delete only MIME object; use vm-delete-message instead.")) + (if vm-mime-confirm-delete + (or (y-or-n-p (vm-mime-sprintf "Delete %t? " layout)) + (error "Aborted"))) + (funcall 'vm-mime-discard-layout-contents layout))) + (setq o-list (cdr o-list))) + (if (not found) + (error "No MIME button found at point.")) + (let ((inhibit-read-only t) + (buffer-read-only nil)) + (save-excursion + (vm-save-restriction + (goto-char (overlay-start o)) + (insert "Deleted " (vm-mime-sprintf "%d\n" layout)) + (delete-region (point) (overlay-end o))))))) + (vm-xemacs-p + (let ((e (extent-at (point) nil 'vm-mime-layout))) + (if (null e) + (error "No MIME button found at point.") + (setq layout (extent-property e 'vm-mime-layout)) + (if (= (vm-mm-layout-header-start layout) + (vm-headers-of (vm-mm-layout-message layout))) + (error "Can't delete only MIME object; use vm-delete-message instead.")) + (if vm-mime-confirm-delete + (or (y-or-n-p (vm-mime-sprintf "Delete %t? " layout)) + (error "Aborted"))) + (let ((inhibit-read-only t) + opos + (buffer-read-only nil)) + (save-excursion + (vm-save-restriction + (goto-char (extent-start-position e)) + (setq opos (point)) + (insert "Deleted " (vm-mime-sprintf "%d\n" layout)) + (delete-region (point) (extent-end-position e)) + (set-extent-endpoints e opos (point))))) + (funcall 'vm-mime-discard-layout-contents layout))))))) + + (defun vm-mime-discard-layout-contents (layout &optional file) + (save-excursion + (set-buffer (vm-buffer-of (vm-real-message-of + (vm-mm-layout-message layout)))) + (let ((inhibit-read-only t) + (buffer-read-only nil) + newid new-layout) + (vm-save-restriction + (widen) + (goto-char (vm-mm-layout-header-start layout)) + (cond ((null file) + (insert "Content-Type: text/plain; charset=us-ascii\n\n") + (vm-set-mm-layout-body-start layout (point-marker)) + (insert "[Deleted " (vm-mime-sprintf "%d]\n" layout))) + (t + (insert "Content-Type: message/external-body; access-type=local-file; name=\"" file "\"\n") + (insert "Content-Transfer-Encoding: 7bit\n\n") + (insert "Content-Type: " (car (vm-mm-layout-qtype layout))) + (if (cdr (vm-mm-layout-qtype layout)) + (let ((p (cdr (vm-mm-layout-qtype layout)))) + (insert "; " (mapconcat 'identity p "; ")))) + (insert "\n") + (if (vm-mm-layout-qdisposition layout) + (let ((p (vm-mm-layout-qdisposition layout))) + (insert "Content-Disposition: " + (mapconcat 'identity p "; ") + "\n"))) + (if (vm-mm-layout-id layout) + (insert "Content-ID: " (vm-mm-layout-id layout) "\n") + (setq newid (vm-make-message-id)) + (insert "Content-ID: " newid "\n")) + (insert "Content-Transfer-Encoding: binary\n\n") + (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)) + (vm-set-edited-flag-of (vm-mm-layout-message layout) t) + (cond (file + (save-restriction + (narrow-to-region (vm-mm-layout-header-start layout) + (vm-mm-layout-body-end layout)) + (setq new-layout (vm-mime-parse-entity-safe)) + ;; should use accessor and mutator functions + ;; to copy the layout struct members, but i'm + ;; tired. + (let ((i (1- (length layout)))) + (while (>= i 0) + (aset layout i (aref new-layout i)) + (setq i (1- i)))))) + (t + (vm-set-mm-layout-type layout '("text/x-vm-deleted")) + (vm-set-mm-layout-qtype layout '("text/x-vm-deleted")) + (vm-set-mm-layout-encoding layout "7bit") + (vm-set-mm-layout-id layout nil) + (vm-set-mm-layout-description + layout + (vm-mime-sprintf "Deleted %d" layout)) + (vm-set-mm-layout-disposition layout nil) + (vm-set-mm-layout-qdisposition layout nil) + (vm-set-mm-layout-parts layout nil) + (vm-set-mm-layout-cache layout nil) + (vm-set-mm-layout-display-error layout nil))))))) + (defun vm-mime-encode-composition () *************** *** 3165,3166 **** --- 3313,3316 ---- (format-alist nil) + ;; no decompression! + (jka-compr-compression-info-list nil) ;; don't let buffer-file-coding-system be changed *************** *** 3522,3523 **** --- 3672,3675 ---- (format-alist nil) + ;; no decompression! + (jka-compr-compression-info-list nil) ;; don't let buffer-file-coding-system be *************** *** 3975,3976 **** --- 4127,4132 ---- (catch 'done + (cond ((vm-mime-types-match "error/error" type) + (throw 'done "%d")) + ((vm-mime-types-match "text/x-vm-deleted" type) + (throw 'done "%d"))) (while p *** dist/vm-misc.el.dist Sun Mar 21 16:47:38 1999 --- vm-misc.el Sat May 15 21:36:23 1999 *************** *** 694,696 **** (buffer-read-only nil) ! (fill-column (1- len)) ;; user doesn't want long line, so set this to zero for them. --- 694,696 ---- (buffer-read-only nil) ! (fill-column vm-paragraph-fill-column) ;; user doesn't want long line, so set this to zero for them. *************** *** 708 **** --- 708,722 ---- (setq done (>= (point) end))))))) + + (defun vm-make-message-id () + (let (hostname + (time (current-time))) + (setq hostname (cond ((string-match "\\." (system-name)) + (system-name)) + ((and (stringp mail-host-address) + (string-match "\\." mail-host-address)) + mail-host-address) + (t "gargle.gargle.HOWL"))) + (format "<%d.%d.%d.%d@%s>" + (car time) (nth 1 time) (nth 2 time) + (random 1000000) + hostname))) *** dist/vm-reply.el.dist Thu Mar 18 18:42:14 1999 --- vm-reply.el Sun May 9 16:12:55 1999 *************** *** 349,350 **** --- 349,354 ---- (vm-check-for-killed-folder) + (if (and (boundp 'mail-alias-file) + mail-alias-file + (not (eq (user-uid) 0))) + (error "Must be superuser to use mail-alias-file. Please set mail-alias-file to nil.")) (let ((b (current-buffer))) *************** *** 403,413 **** (save-excursion ! (let ((resent nil) ! hostname ! (time (current-time))) ! (setq hostname (cond ((string-match "\\." (system-name)) ! (system-name)) ! ((and (stringp mail-host-address) ! (string-match "\\." mail-host-address)) ! mail-host-address) ! (t "gargle.gargle.HOWL"))) (if (or (vm-mail-mode-get-header-contents "Resent-To:") --- 407,409 ---- (save-excursion ! (let ((resent nil)) (if (or (vm-mail-mode-get-header-contents "Resent-To:") *************** *** 421,427 **** (goto-char (point-min)) ! (insert (format "%sMessage-ID: <%d.%d.%d.%d@%s>\n" (if resent "Resent-" "") ! (car time) (nth 1 time) (nth 2 time) ! (random 1000000) ! hostname))))))) --- 417,421 ---- (goto-char (point-min)) ! (insert (format "%sMessage-ID: %s\n" (if resent "Resent-" "") ! (vm-make-message-id)))))))) *** dist/vm-sort.el.dist Fri Jan 29 00:13:38 1999 --- vm-sort.el Fri May 21 00:24:54 1999 *************** *** 308,309 **** --- 308,310 ---- (vm-build-threads-if-unbuilt) + (vm-build-thread-lists) (setq key-funcs (cons 'vm-sort-compare-thread key-funcs))) *** dist/vm-startup.el.dist Thu Apr 8 00:31:12 1999 --- vm-startup.el Fri May 21 00:55:00 1999 *************** *** 317,319 **** ! This is VM 6.71. --- 317,319 ---- ! This is VM 6.72. *************** *** 1169,1174 **** vm-version)) ! ((and vm-fsfemacs-p ! (= emacs-major-version 20) ! (< emacs-minor-version 4)) ! (error "VM must be run on Emacs 20.4 or a later v20 version.")))) --- 1169,1172 ---- vm-version)) ! ((and vm-fsfemacs-p (= emacs-major-version 20)) ! (error "VM has not been ported to v20 Emacs.")))) *************** *** 1190,1192 **** (vm-note-emacs-version) ! (vm-check-emacs-version) ;; (vm-set-debug-flags) --- 1188,1190 ---- (vm-note-emacs-version) ! ;; (vm-check-emacs-version) ;; (vm-set-debug-flags) *** dist/vm-summary.el.dist Sun Jan 17 17:42:37 1999 --- vm-summary.el Sat May 15 01:13:00 1999 *************** *** 745,747 **** ;; because such malformed headers have been observed. ! "\\(\\([a-z][a-z][a-z]\\),\\)?[ \t\n]*\\([0-9][0-9]?\\)[ \t\n---]*\\([a-z][a-z][a-z]\\)[ \t\n---]*\\([0-9]*[0-9][0-9]\\)[ \t\n]*\\([0-9:]+\\)[ \t\n]*\\([a-z][a-z]?[a-z]?\\|[---+][0-9][0-9][0-9][0-9]\\)" date) --- 745,747 ---- ;; because such malformed headers have been observed. ! "\\(\\([a-z][a-z][a-z]\\),\\)?[ \t\n]*\\([0-9][0-9]?\\)[ \t\n---]*\\([a-z][a-z][a-z]\\)[ \t\n---]*\\([0-9]*[0-9][0-9]\\)[ \t\n]*\\([0-9:]+\\)[ \t\n]*\\([a-z][a-z]?[a-z]?\\|[---+]?[0-9][0-9][0-9][0-9]\\)" date) *** dist/vm-thread.el.dist Mon Apr 28 11:04:14 1997 --- vm-thread.el Fri May 21 00:28:09 1999 *************** *** 149,150 **** --- 149,163 ---- + ;; used by the thread sort code. + ;; + ;; vm-th-thread-list initializes the oldest-date property on + ;; the message-id symbols. Since this property is used as an + ;; ordering key by the thread sort the oldest-date properties + ;; must be computed before the sort begins, not during it. + ;; Otherwise the sort won't be stable and there will be chaos. + (defun vm-build-thread-lists () + (let ((mp vm-message-list)) + (while mp + (vm-th-thread-list (car mp)) + (setq mp (cdr mp))))) + (defun vm-thread-mark-for-summary-update (message-list) *** dist/vm-undo.el.dist Thu Apr 8 00:31:13 1999 --- vm-undo.el Tue Apr 13 12:35:25 1999 *************** *** 412,414 **** (setq labels (cdr labels)))) ! (setq labels (cdr labels))))) (setq act-labels action-labels --- 412,414 ---- (setq labels (cdr labels)))) ! (setq mm-list (cdr mm-list))))) (setq act-labels action-labels *** dist/vm-vars.el.dist Thu Apr 8 00:31:15 1999 --- vm-vars.el Sat May 15 22:16:23 1999 *************** *** 548,549 **** --- 548,554 ---- + (defvar vm-paragraph-fill-column (default-value 'fill-column) + "*Column beyond which automatic line-wrapping should happen when + doing re-filling lines longer than the value of + `vm-fill-paragraphs-containing-long-lines'.") + (defvar vm-display-using-mime t *************** *** 793,795 **** (if vm-fsfemacs-mule-p ! '("us-ascii") '("us-ascii" "iso-8859-1")) --- 798,802 ---- (if vm-fsfemacs-mule-p ! (if (eq window-system nil) ! '("us-ascii" "iso-8859-1") ! '("us-ascii")) '("us-ascii" "iso-8859-1")) *************** *** 807,808 **** --- 814,823 ---- + A value of t means all characters set can be displayed by the + default face. This should be used in combination with + `vm-mime-default-face-charset-exceptions' to tell VM that most of + the mail you receive is displayable using your default face and + its associated font, even though the messages might arrive with + unknown or unregistered character sets specified in the MIME + Content-Type header. + To tell VM how to display other character sets, see *************** *** 810,811 **** --- 825,832 ---- + (defvar vm-mime-default-face-charset-exceptions nil + "*List of character sets that cannot be displayed using the default face. + This variable acts as an exception list for `vm-mime-default-face-charsets'. + Character sets listed here will not be considered displayable using the + default face even if they are also listed in `vm-mime-default-face-charsets'.") + (defvar vm-mime-charset-font-alist nil *************** *** 840,841 **** --- 861,872 ---- + (defvar vm-mime-delete-after-saving nil + "*Non-nil value causes VM to delete MIME body contents from a folder + after the MIME object has been saved to disk. The MIME object is replaced + with a message/external-body object that points to the disk copy of the + object.") + + (defvar vm-mime-confirm-delete t + "*Non-nil value causes VM to request confirmation from the user before + deleting a MIME object with vm-delete-mime-object.") + (defvar vm-mime-button-face 'gui-button-face *************** *** 853,857 **** ("image" . "%-35.35(%d%) [%k to %a]") ! ("application/octet-stream" . "%-35.35(%d, %f%) [%k to %a]") ! ;; for parse errors ! ("error/error" . "%d")) "*List of types and formats for MIME buttons. --- 884,886 ---- ("image" . "%-35.35(%d%) [%k to %a]") ! ("application/octet-stream" . "%-35.35(%d, %f%) [%k to %a]")) "*List of types and formats for MIME buttons. *************** *** 2704,2705 **** --- 2733,2746 ---- + (defvar vm-imap-session-preauth-hook nil + "*List of hook functions to call to generate an authenticated + IMAP session process. This hook is only run if the + authentication method for the IMAP mailbox is ``preauth''. Each + hook is called with five arguments: HOST, PORT, MAILBOX, USER, + PASSWORD. (See the documentation for vm-spool-files to find out + about these arguments.) It is the responsibility of the hook + function to create an Emacs process whose input/output streams + are connected to an authenticated IMAP session, and to return + this process. If the hook cannot accomplish this, it should + return nil. If all the hooks return nil, VM will signal an error.") + (defvar mail-yank-hooks nil *************** *** 2954,2956 **** (define-key map "$p" 'vm-mime-reader-map-pipe-to-printer) ! (define-key map "$d" 'vm-mime-reader-map-display-using-default) (define-key map "$e" 'vm-mime-reader-map-display-using-external-viewer) --- 2995,2998 ---- (define-key map "$p" 'vm-mime-reader-map-pipe-to-printer) ! (define-key map "$\r" 'vm-mime-reader-map-display-using-default) ! (define-key map "$d" 'vm-delete-mime-object) (define-key map "$e" 'vm-mime-reader-map-display-using-external-viewer) *************** *** 3282,3283 **** --- 3324,3326 ---- (subject . vm-vs-subject) + (sortable-subject . vm-vs-sortable-subject) (sent-before . vm-vs-sent-before) *** dist/vm-version.el.dist Thu Apr 8 00:31:15 1999 --- vm-version.el Fri May 21 00:54:59 1999 *************** *** 4,6 **** ! (defconst vm-version "6.71" "Version number of VM.") --- 4,6 ---- ! (defconst vm-version "6.72" "Version number of VM.") *************** *** 62,64 **** (vm-fsfemacs-p ! (memq window-system '(x win32))))) --- 62,64 ---- (vm-fsfemacs-p ! (memq window-system '(x w32 win32))))) *************** *** 77,80 **** (vm-fsfemacs-p ! (or (eq window-system 'x) ! (eq window-system 'win32))))) --- 77,79 ---- (vm-fsfemacs-p ! (memq window-system '(x w32 win32))))) *** dist/vm-virtual.el.dist Wed Apr 8 10:38:44 1998 --- vm-virtual.el Sat May 8 17:08:01 1999 *************** *** 325,327 **** (vm-create-virtual-folder ! 'subject subject nil (format "%s %s %s" (buffer-name) 'subject displayed-subject)))) --- 325,327 ---- (vm-create-virtual-folder ! 'sortable-subject subject nil (format "%s %s %s" (buffer-name) 'subject displayed-subject)))) *************** *** 442,443 **** --- 442,446 ---- (string-match arg (vm-su-subject m))) + + (defun vm-vs-sortable-subject (m arg) + (string-match arg (vm-so-sortable-subject m)))