*** dist/vm-folder.el.dist Thu May 16 14:22:08 2002 --- vm-folder.el Mon May 13 11:18:31 2002 *************** *** 3098,3102 **** (vm-error-if-virtual-folder) ! (let ((old-buffer-name (buffer-name))) ! (save-excursion ! (call-interactively 'write-file)) (if (and vm-folders-summary-database buffer-file-name) --- 3098,3108 ---- (vm-error-if-virtual-folder) ! (let ((old-buffer-name (buffer-name)) ! (oldmodebits (and (fboundp 'default-file-modes) ! (default-file-modes)))) ! (unwind-protect ! (save-excursion ! (and oldmodebits (set-default-file-modes ! vm-default-folder-permission-bits)) ! (call-interactively 'write-file)) ! (and oldmodebits (set-default-file-modes oldmodebits))) (if (and vm-folders-summary-database buffer-file-name) *************** *** 3165,3168 **** (message "Saving...") ! (let ((vm-inhibit-write-file-hook t)) ! (save-buffer prefix)) (vm-set-buffer-modified-p nil) --- 3171,3181 ---- (message "Saving...") ! (let ((vm-inhibit-write-file-hook t) ! (oldmodebits (and (fboundp 'default-file-modes) ! (default-file-modes)))) ! (unwind-protect ! (progn ! (and oldmodebits (set-default-file-modes ! vm-default-folder-permission-bits)) ! (save-buffer prefix)) ! (and oldmodebits (set-default-file-modes oldmodebits)))) (vm-set-buffer-modified-p nil) *** dist/vm-misc.el.dist Thu May 16 14:16:58 2002 --- vm-misc.el Sun Jun 2 16:26:33 2002 *************** *** 192,195 **** (insert string))) ! (let ((temp-buffer nil) ! (coding-system-for-write (vm-line-ending-coding-system))) (unwind-protect --- 192,194 ---- (insert string))) ! (let ((temp-buffer nil)) (unwind-protect *************** *** 203,208 **** (setq buffer-file-type nil) - ;; Tell MULE to pick the correct newline conversion. - (if (fboundp 'set-buffer-file-coding-system) - (set-buffer-file-coding-system - (vm-line-ending-coding-system) nil)) (write-region (point-min) (point-max) where t 'quiet)) --- 202,203 ---- *************** *** 764,765 **** --- 759,782 ---- (fset 'vm-coding-system-name 'symbol-name))) + + (defun vm-get-file-line-ending-coding-system (file) + (if (not (or vm-fsfemacs-mule-p vm-xemacs-mule-p vm-xemacs-file-coding-p)) + nil + (let ((coding-system-for-read (vm-binary-coding-system)) + (work-buffer nil)) + (unwind-protect + (save-excursion + (setq work-buffer (vm-make-work-buffer)) + (set-buffer work-buffer) + (condition-case nil + (insert-file-contents file nil 0 4096) + (error nil)) + (goto-char (point-min)) + (cond ((re-search-forward "[^\r]\n" nil t) + (if vm-fsfemacs-mule-p 'raw-text-unix 'no-conversion-unix)) + ((re-search-forward "\r[^\n]" nil t) + (if vm-fsfemacs-mule-p 'raw-text-mac 'no-conversion-mac)) + ((search-forward "\r\n" nil t) + (if vm-fsfemacs-mule-p 'raw-text-dos 'no-conversion-dos)) + (t (vm-line-ending-coding-system)))) + (and work-buffer (kill-buffer work-buffer)))))) *** dist/vm-reply.el.dist Thu May 16 14:16:58 2002 --- vm-reply.el Mon Jun 3 12:48:20 2002 *************** *** 1166,1167 **** --- 1166,1171 ---- (set-buffer (generate-new-buffer (or buffer-name "mail to ?"))) + ;; FSF Emacs: try to prevent write-region (called to handle FCC) from + ;; asking the user to choose a safe coding system. + (if (and vm-fsfemacs-mule-p (fboundp 'set-buffer-file-coding-system)) + (set-buffer-file-coding-system 'raw-text)) ;; avoid trying to write auto-save files in potentially *** dist/vm-save.el.dist Thu May 16 14:16:58 2002 --- vm-save.el Mon Jun 3 20:20:11 2002 *************** *** 218,219 **** --- 218,221 ---- (let ((mlist (vm-select-marked-or-prefixed-messages count)) + (coding-system-for-write + (vm-get-file-line-ending-coding-system folder)) (oldmodebits (and (fboundp 'default-file-modes) *************** *** 238,248 **** (error "Folder %s's type is unrecognized" folder)))) - ;; if target folder is empty or nonexistent we need to - ;; write out the folder header first. - (if mlist - (let ((attrs (file-attributes folder))) - (if (or (null attrs) (= 0 (nth 7 attrs))) - (if (null folder-buffer) - (vm-write-string folder (vm-folder-header target-type)) - (vm-write-string folder-buffer - (vm-folder-header target-type)))))) (unwind-protect --- 240,241 ---- *************** *** 251,252 **** --- 244,255 ---- vm-default-folder-permission-bits)) + ;; if target folder is empty or nonexistent we need to + ;; write out the folder header first. + (if mlist + (let ((attrs (file-attributes folder))) + (if (or (null attrs) (= 0 (nth 7 attrs))) + (if (null folder-buffer) + (vm-write-string folder + (vm-folder-header target-type)) + (vm-write-string folder-buffer + (vm-folder-header target-type)))))) (while mlist *************** *** 415,416 **** --- 418,421 ---- (default-file-modes))) + (coding-system-for-write + (vm-get-file-line-ending-coding-system file)) (m nil) file-buffer) *** dist/vm-sort.el.dist Thu May 16 14:16:58 2002 --- vm-sort.el Sun Jun 2 16:09:25 2002 *************** *** 285,286 **** --- 285,292 ---- (vm-error-if-folder-read-only)) + + ;; sorting creates a message list from completely new conses so + ;; make sure the numbering and summary redo start points aren't + ;; pointing at the old list before we start. + (vm-update-summary-and-mode-line) + (vm-display nil nil '(vm-sort-messages) '(vm-sort-messages)) *** dist/vm-startup.el.dist Thu May 16 14:16:58 2002 --- vm-startup.el Mon Jun 3 23:19:42 2002 *************** *** 354,356 **** ! This is VM 7.05. --- 354,356 ---- ! This is VM 7.06. *** dist/vm-version.el.dist Thu May 16 14:16:58 2002 --- vm-version.el Mon Jun 3 23:19:42 2002 *************** *** 4,6 **** ! (defconst vm-version "7.05" "Version number of VM.") --- 4,6 ---- ! (defconst vm-version "7.06" "Version number of VM.") *** dist/vm-virtual.el.dist Mon Dec 3 08:03:05 2001 --- vm-virtual.el Wed May 22 05:57:08 2002 *************** *** 315,317 **** (nconc (list 'or) (cdr (car clauses))))))) - (message "%S" (car clauses)) (setq clauses (cdr clauses))) --- 315,316 ----