comparison lisp/vm/vm-mime.el @ 110:fe104dbd9147 r20-1b7

Import from CVS: tag r20-1b7
author cvs
date Mon, 13 Aug 2007 09:19:45 +0200
parents ec9a17fef872
children 8619ce7e4c50
comparison
equal deleted inserted replaced
109:e183fc049578 110:fe104dbd9147
912 ;; scroll in place messes with scroll-up and this loses 912 ;; scroll in place messes with scroll-up and this loses
913 (defvar scroll-in-place) 913 (defvar scroll-in-place)
914 (make-local-variable 'scroll-in-place) 914 (make-local-variable 'scroll-in-place)
915 (setq scroll-in-place nil) 915 (setq scroll-in-place nil)
916 (and (vm-xemacs-mule-p) 916 (and (vm-xemacs-mule-p)
917 (set-file-coding-system 'binary t)) 917 (set-buffer-file-coding-system 'no-conversion t))
918 (cond ((vm-fsfemacs-19-p) 918 (cond ((vm-fsfemacs-19-p)
919 ;; need to do this outside the let because 919 ;; need to do this outside the let because
920 ;; loading disp-table initializes 920 ;; loading disp-table initializes
921 ;; standard-display-table. 921 ;; standard-display-table.
922 (require 'disp-table) 922 (require 'disp-table)
976 (setcar vm-message-pointer mm))))) 976 (setcar vm-message-pointer mm)))))
977 977
978 (fset 'vm-presentation-mode 'vm-mode) 978 (fset 'vm-presentation-mode 'vm-mode)
979 (put 'vm-presentation-mode 'mode-class 'special) 979 (put 'vm-presentation-mode 'mode-class 'special)
980 980
981 (defvar file-coding-system) 981 (defvar buffer-file-coding-system)
982 982
983 (defun vm-determine-proper-charset (beg end) 983 (defun vm-determine-proper-charset (beg end)
984 (save-excursion 984 (save-excursion
985 (save-restriction 985 (save-restriction
986 (narrow-to-region beg end) 986 (narrow-to-region beg end)
990 (let ((charsets (delq 'ascii (charsets-in-region beg end)))) 990 (let ((charsets (delq 'ascii (charsets-in-region beg end))))
991 (cond ((null charsets) 991 (cond ((null charsets)
992 "us-ascii") 992 "us-ascii")
993 ((cdr charsets) 993 ((cdr charsets)
994 (or (car (cdr 994 (or (car (cdr
995 (assoc (coding-system-name file-coding-system) 995 (assq (coding-system-name
996 vm-mime-mule-coding-to-charset-alist))) 996 buffer-file-coding-system)
997 vm-mime-mule-coding-to-charset-alist)))
997 "iso-2022-jp")) 998 "iso-2022-jp"))
998 (t 999 (t
999 (or (car (cdr 1000 (or (car (cdr
1000 (assoc 1001 (assoc
1001 (car charsets) 1002 (car charsets)
1427 (vm-mime-insert-mime-body layout) 1428 (vm-mime-insert-mime-body layout)
1428 (setq end (point-marker)) 1429 (setq end (point-marker))
1429 (vm-mime-transfer-decode-region layout start end) 1430 (vm-mime-transfer-decode-region layout start end)
1430 (setq tempfile (vm-make-tempfile-name)) 1431 (setq tempfile (vm-make-tempfile-name))
1431 (let ((buffer-file-type buffer-file-type) 1432 (let ((buffer-file-type buffer-file-type)
1432 file-coding-system) 1433 buffer-file-coding-system)
1433 ;; Tell DOS/Windows NT whether the file is binary 1434 ;; Tell DOS/Windows NT whether the file is binary
1434 (setq buffer-file-type (not (vm-mime-text-type-p layout))) 1435 (setq buffer-file-type (not (vm-mime-text-type-p layout)))
1435 ;; Tell XEmacs/MULE not to mess with the bits unless 1436 ;; Tell XEmacs/MULE not to mess with the bits unless
1436 ;; this is a text type. 1437 ;; this is a text type.
1437 (if (vm-xemacs-mule-p) 1438 (if (vm-xemacs-mule-p)
1438 (if (vm-mime-text-type-p layout) 1439 (if (vm-mime-text-type-p layout)
1439 (set-file-coding-system 'no-conversion nil) 1440 (set-buffer-file-coding-system 'no-conversion nil)
1440 (set-file-coding-system 'binary t))) 1441 (set-buffer-file-coding-system 'binary t)))
1441 (write-region start end tempfile nil 0)) 1442 (write-region start end tempfile nil 0))
1442 (delete-region start end) 1443 (delete-region start end)
1443 (save-excursion 1444 (save-excursion
1444 (vm-select-folder-buffer) 1445 (vm-select-folder-buffer)
1445 (setq vm-folder-garbage-alist 1446 (setq vm-folder-garbage-alist
2012 (setq buffer-file-type (not (vm-mime-text-type-p layout))) 2013 (setq buffer-file-type (not (vm-mime-text-type-p layout)))
2013 ;; Tell XEmacs/MULE not to mess with the bits unless 2014 ;; Tell XEmacs/MULE not to mess with the bits unless
2014 ;; this is a text type. 2015 ;; this is a text type.
2015 (if (vm-xemacs-mule-p) 2016 (if (vm-xemacs-mule-p)
2016 (if (vm-mime-text-type-p layout) 2017 (if (vm-mime-text-type-p layout)
2017 (set-file-coding-system 'no-conversion nil) 2018 (set-buffer-file-coding-system 'no-conversion nil)
2018 (set-file-coding-system 'binary t))) 2019 (set-buffer-file-coding-system 'binary t)))
2019 (vm-mime-insert-mime-body layout) 2020 (vm-mime-insert-mime-body layout)
2020 (vm-mime-transfer-decode-region layout (point-min) (point-max)) 2021 (vm-mime-transfer-decode-region layout (point-min) (point-max))
2021 (or (not (file-exists-p file)) 2022 (or (not (file-exists-p file))
2022 (y-or-n-p "File exists, overwrite? ") 2023 (y-or-n-p "File exists, overwrite? ")
2023 (error "Aborted")) 2024 (error "Aborted"))
2532 (narrow-to-region (point) (point-max)) 2533 (narrow-to-region (point) (point-max))
2533 (setq charset (vm-determine-proper-charset (point-min) 2534 (setq charset (vm-determine-proper-charset (point-min)
2534 (point-max))) 2535 (point-max)))
2535 (if (vm-xemacs-mule-p) 2536 (if (vm-xemacs-mule-p)
2536 (encode-coding-region (point-min) (point-max) 2537 (encode-coding-region (point-min) (point-max)
2537 file-coding-system)) 2538 buffer-file-coding-system))
2538 (setq encoding (vm-determine-proper-content-transfer-encoding 2539 (setq encoding (vm-determine-proper-content-transfer-encoding
2539 (point-min) 2540 (point-min)
2540 (point-max)) 2541 (point-max))
2541 encoding (vm-mime-transfer-encode-region encoding 2542 encoding (vm-mime-transfer-encode-region encoding
2542 (point-min) 2543 (point-min)
2586 (insert-before-markers " ") 2587 (insert-before-markers " ")
2587 (forward-char -1) 2588 (forward-char -1)
2588 (insert-buffer-substring object) 2589 (insert-buffer-substring object)
2589 (delete-char 1))) 2590 (delete-char 1)))
2590 ((stringp object) 2591 ((stringp object)
2591 (let ((overridding-file-coding-system 'no-conversion)) 2592 (let ((coding-system-for-read 'no-conversion))
2592 (insert-file-contents-literally object)))) 2593 (insert-file-contents-literally object))))
2593 ;; gather information about the object from the extent. 2594 ;; gather information about the object from the extent.
2594 (if (setq already-mimed (vm-extent-property e 'vm-mime-encoded)) 2595 (if (setq already-mimed (vm-extent-property e 'vm-mime-encoded))
2595 (setq layout (vm-mime-parse-entity 2596 (setq layout (vm-mime-parse-entity
2596 nil (list "text/plain" "charset=us-ascii") 2597 nil (list "text/plain" "charset=us-ascii")
2728 nil 2729 nil
2729 (setq charset (vm-determine-proper-charset (point) 2730 (setq charset (vm-determine-proper-charset (point)
2730 (point-max))) 2731 (point-max)))
2731 (if (vm-xemacs-mule-p) 2732 (if (vm-xemacs-mule-p)
2732 (encode-coding-region (point-min) (point-max) 2733 (encode-coding-region (point-min) (point-max)
2733 file-coding-system)) 2734 buffer-file-coding-system))
2734 (setq encoding (vm-determine-proper-content-transfer-encoding 2735 (setq encoding (vm-determine-proper-content-transfer-encoding
2735 (point) 2736 (point)
2736 (point-max)) 2737 (point-max))
2737 encoding (vm-mime-transfer-encode-region encoding 2738 encoding (vm-mime-transfer-encode-region encoding
2738 (point) 2739 (point)