Mercurial > hg > xemacs-beta
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) |