[Mew-dist 651] patch for mew-1.62 to support gnumule-19.34.91.delta
SAKAI Kiyotaka
ksakai at example.com
1997年 3月 11日 (火) 15:34:59 JST
mew-1.62 で gnumule-19.34.91.delta をサポートするパッチを作りました。
Emacs-20.x になるであろうと決め付けて、勝手に mew-emacs20-p という変数
を定義しています。
最初が mew-e20.el、2番目が mew-e20.el をロードするための mew-env.el に
対するパッチ、3番目が file-coding-system → coding-system-for-write,
file-coding-system-for-read → coding-system-for-read に変数名が変更に
なったことに対応するパッチのです。
--
酒井 清隆 (E-mail: ksakai at example.com)
-------------- next part --------------
;;; mew-e20.el
;;;
;;; Copyright (C) 1997 Kazuhiko Yamamoto
;;;
;;; This emacs lisp library conforms
;;; GNU GENERAL PUBLIC LICENSE Version 2.
;;;
;;; Author: Kazuhiko Yamamoto <kazu at example.com>
;;; Created: March 6, 1997
;;; Revised: March 10, 1997
;;;
(defconst mew-e20-version "mew-e20.el version 0.01")
(require 'mew)
(defvar mew-mule-character-set
(list
(list 'ascii nil "us-ascii")
(list 'latin-1 'iso-8859-1 "iso-8859-1")
(list 'latin-2 'iso-8859-2 "iso-8859-2")
(list 'latin-3 'iso-8859-3 "iso-8859-3")
(list 'latin-4 'iso-8859-4 "iso-8859-4")
(list 'cyrillic 'iso-8859-5 "iso-8859-5")
(list 'arabic 'iso-8859-6 "iso-8859-6")
(list 'greek 'iso-8859-7 "iso-8859-7")
(list 'hebrew 'iso-8859-8 "iso-8859-8")
(list 'latin-5 'iso-8859-9 "iso-8859-9")
(list 'japanese-jisx0208 'iso-2022-jp "iso-2022-jp")
(list t 'iso-2022-int-1 "iso-2022-int-1")
))
(defvar mew-mule-mime-charset
(mapcar (function (lambda (x) (nth 2 x))) mew-mule-character-set))
(defvar mew-cs-noconv 'no-conversion)
(defvar mew-cs-autoconv 'automatic-conversion)
(defvar mew-cs-7bit 'iso-2022-ss2-7)
(defvar mew-cs-7bit-crlf 'iso-2022-ss2-7-dos)
(defvar mew-cs-mime-trans 'iso-2022-ss2-7)
(defvar mew-cs-rfc822-trans 'iso-2022-ss2-7)
(defvar mew-cs-draft 'iso-2022-jp)
(defvar mew-cs-scan 'iso-2022-jp) ;; iso-2022-int-1?
(defvar mew-cs-spool 'no-conversion)
(defvar mew-cs-infile 'automatic-conversion)
(defvar mew-cs-outfile 'iso-2022-jp)
(defvar mew-cs-virtual 'iso-2022-jp-unix)
(defmacro mew-mule-lc-attr (lc alist)
(` (mew-assoc (, lc) (, alist) 0 nil)))
(defmacro mew-mule-lc-attr-by-charset (lc alist)
(` (mew-assoc (, lc) (, alist) 2 t)))
(defmacro mew-mule-lc-content (attr)
(` (car (cdr (cdr (, attr))))))
(defmacro mew-mule-lc-symbol (attr)
(` (car (cdr (, attr)))))
(defun mew-charset-to-symbol (charset)
(if charset
(mew-mule-lc-symbol
(mew-mule-lc-attr-by-charset charset mew-mule-character-set))
nil)
)
(defmacro mew-mule-content-attr (content alist)
(` (mew-assoc2 (, content) (, alist) 2 t)))
(defmacro mew-mule-content-coding (attr)
(` (car (cdr (, attr)))))
(defun mew-charset-guess-region (beg end)
(interactive "r")
"Guess minimum character set name."
(let* ((lc (cdr (find-charset-region beg end))))
(cond
((null lc) "us-ascii")
((equal (length lc) 1)
(mew-mule-lc-content
(mew-mule-lc-attr (car lc) mew-mule-character-set)))
(t "iso-2022-jp-2")
)
))
(defun mew-charset-guess-string (str)
(interactive)
"Guess minimum character set name."
(let* ((lc (find-charset-string str)))
(cond
((null lc) "us-ascii") ;; in case of ""
((equal (length lc) 1)
(mew-mule-lc-content
(mew-mule-lc-attr (car lc) mew-mule-character-set)))
(t "iso-2022-jp-2")
)
))
;; to internal
(defun mew-cs-decode-region (beg end cs &optional charsetp)
(if (null cs)
()
(let ((from (if charsetp
(mew-mule-content-coding
(mew-mule-content-attr (downcase cs)
mew-mule-character-set))
cs)))
(if from (decode-coding-region beg end from))
)
))
;; to extenal
(defun mew-cs-encode-region (beg end cs &optional charsetp)
(let ((to (if charsetp
(mew-mule-content-coding
(mew-mule-content-attr (downcase cs) mew-mule-character-set))
cs)))
(if to (encode-coding-region beg end to))
))
;; to internal
(defun mew-cs-decode-string (str cs &optional charsetp)
(let ((from (if charsetp
(mew-mule-content-coding
(mew-mule-content-attr (downcase cs) mew-mule-character-set))
cs)))
(if from
(decode-coding-string str from)
str)
))
;; to external
(defun mew-cs-encode-string (str cs &optional charsetp)
(let ((to (if charsetp
(mew-mule-content-coding
(mew-mule-content-attr (downcase cs) mew-mule-character-set))
cs)))
(if to
(encode-coding-string str to)
str)
))
(defun mew-set-process-cs (pro from-pro to-pro)
(set-process-coding-system pro from-pro to-pro)
)
(defmacro mew-clet (&rest body)
`(let ((call-process-hook nil)
(default-process-coding-system
(cons 'no-conversion 'no-conversion)))
, at example.com)
)
(provide 'mew-e20)
-------------- next part --------------
===================================================================
RCS file: RCS/mew-env.el,v
retrieving revision 1.1
diff -u -r1.1 mew-env.el
--- mew-env.el 1997/03/11 04:03:26 1.1
+++ mew-env.el 1997/03/11 04:10:20
@@ -15,6 +15,7 @@
(require 'mew)
(defvar mew-emacs-p nil)
+(defvar mew-emacs20-p nil)
(defvar mew-xemacs-p nil)
(defvar mew-mule-p nil)
(defvar mew-icon-p nil)
@@ -25,7 +26,11 @@
(setq mew-xemacs-p t)
(if (and (featurep 'xpm) (eq (console-type) 'x))
(setq mew-icon-p t)))
- (t
+ ((string< "3.0" mule-version)
+ (setq mew-emacs-p t)
+ (setq mew-emacs20-p t)
+ (setq mew-xemacs-p nil))
+ (t
(setq mew-emacs-p t)
(setq mew-xemacs-p nil))
)
@@ -33,6 +38,9 @@
(if (featurep 'mule) (setq mew-mule-p t))
(cond
+ (mew-emacs20-p
+ ;; pure Emacs 20
+ (require 'mew-e20))
((and mew-emacs-p mew-mule-p)
;; pure Emacs 19 + Mule extension
(require 'mew-e19m))
-------------- next part --------------
===================================================================
RCS file: RCS/mew.el,v
retrieving revision 1.1
diff -u -r1.1 mew.el
--- mew.el 1997/03/11 05:52:32 1.1
+++ mew.el 1997/03/11 05:54:16
@@ -1437,7 +1437,8 @@
(defun mew-mime-start-process (begin end program options)
(if (mew-which program exec-path)
(if (or mew-icon-p (mew-y-or-n-p (format "Start %s? " program)))
- (let ((file-coding-system mew-cs-noconv)
+ (let ((file-coding-system mew-cs-noconv)
+ (coding-system-for-write mew-cs-noconv)
(process-connection-type mew-connection-type1)
pro file)
(if (not (file-exists-p mew-temp-dir))
@@ -1468,7 +1469,8 @@
(defun mew-mime-call-process (begin end program options)
(if (mew-which program exec-path)
(if (or mew-icon-p (mew-y-or-n-p (format "Call %s? " program)))
- (let ((file-coding-system mew-cs-noconv)
+ (let ((file-coding-system mew-cs-noconv)
+ (coding-system-for-write mew-cs-noconv)
file)
(message "Calling %s ..." program)
(if (not (file-exists-p mew-temp-dir))
@@ -1536,7 +1538,8 @@
(set-buffer (mew-current-get 'cache))
(let* ((name (mew-syntax-get-member params "name"))
(file (mew-input-filename nil name))
- (file-coding-system mew-cs-noconv))
+ (file-coding-system mew-cs-noconv)
+ (coding-system-for-write mew-cs-noconv))
(if (file-exists-p file)
(if mew-file-append-p
(write-region begin end file t)
===================================================================
RCS file: RCS/mew-attach.el,v
retrieving revision 1.1
diff -u -r1.1 mew-attach.el
--- mew-attach.el 1997/03/11 05:26:35 1.1
+++ mew-attach.el 1997/03/11 05:53:09
@@ -391,7 +391,9 @@
(widen)
(erase-buffer)
(let ((file-coding-system-for-read mew-cs-noconv)
- (file-coding-system mew-cs-noconv))
+ (file-coding-system mew-cs-noconv)
+ (coding-system-for-read mew-cs-noconv)
+ (coding-system-for-write mew-cs-noconv))
(insert-file-contents fromfile)
(write-region (point-min) (point-max)
(expand-file-name efile mimedir))
@@ -451,7 +453,8 @@
(apply (function call-process) mew-prog-audio)
))
(quit (message "Type C-g to finish recording... done.")))
- (let ((file-coding-system mew-cs-noconv))
+ (let ((file-coding-system mew-cs-noconv)
+ (coding-system-for-write mew-cs-noconv))
(write-region (point-min) (point-max)
(expand-file-name efile mimedir)))
)
===================================================================
RCS file: RCS/mew-decode.el,v
retrieving revision 1.1
diff -u -r1.1 mew-decode.el
--- mew-decode.el 1997/03/11 05:26:31 1.1
+++ mew-decode.el 1997/03/11 05:28:26
@@ -240,7 +240,9 @@
(setq opt (cdr (mew-assoc-match enc switch 0)))
;; opt is nil if 7bit, 8bit, and binary
(if opt
- (let ((file-coding-system mew-cs-noconv) file)
+ (let ((file-coding-system mew-cs-noconv)
+ (coding-system-for-write mew-cs-noconv)
+ file)
;; NEVER use call-process-region for privary reasons
(if (not (file-exists-p mew-temp-dir))
(mew-make-directory mew-temp-dir)) ;; just in case
@@ -272,6 +274,7 @@
(widen)
(erase-buffer)
(let ((file-coding-system-for-read mew-cs-noconv)
+ (coding-system-for-read mew-cs-noconv)
(size (mew-file-size file)))
(if (> size mew-file-max-size)
(if (mew-y-or-n-p (format "This mail size is %s. Truncate it? " size))
@@ -551,7 +554,8 @@
(progn
(insert "\n") ;; CT:text/plain; charset=us-ascii
(insert "Multipart/Encrypted could not be decrypted.\n"))
- (let ((file-coding-system-for-read mew-cs-noconv))
+ (let ((file-coding-system-for-read mew-cs-noconv)
+ (coding-system-for-read mew-cs-noconv))
(insert-file-contents file3)
;; because of RICH functionality of RFC1847... Gee dirty!
(mew-decode-crlf-magic)
@@ -632,7 +636,9 @@
))
(defun mew-save-decode-form (beg end)
- (let ((file-coding-system mew-cs-noconv) syntax file)
+ (let ((file-coding-system mew-cs-noconv)
+ (coding-system-for-write mew-cs-noconv)
+ syntax file)
(if (not (file-exists-p mew-temp-dir))
(mew-make-directory mew-temp-dir)) ;; just in case
(setq file (make-temp-name mew-temp-file))
===================================================================
RCS file: RCS/mew-encode.el,v
retrieving revision 1.1
diff -u -r1.1 mew-encode.el
--- mew-encode.el 1997/03/11 05:53:27 1.1
+++ mew-encode.el 1997/03/11 05:57:49
@@ -108,8 +108,9 @@
(if file
;; Even if charset is specified, we need to check the entire
;; text object for cte to escape "\nFrom ".
- (let ((file-coding-system-for-read
- (or (mew-charset-to-symbol charset) mew-cs-infile)))
+ (let* ((file-coding-system-for-read
+ (or (mew-charset-to-symbol charset) mew-cs-infile))
+ (coding-system-for-read file-coding-system-for-read))
;; Input the text file converting its charset to the internel.
;; If charset is specified, use it.
;; If mew-cs-infile is *autoconv*/'autodetect, charset is guessed
@@ -141,8 +142,9 @@
(if (null encopts)
(setq file nil) ;; Not encode a file
(if (not file)
- (let ((file-coding-system
- (if mew-mule-p (mew-charset-to-symbol charset))))
+ (let* ((file-coding-system
+ (if mew-mule-p (mew-charset-to-symbol charset)))
+ (coding-system-for-write file-coding-system))
(if (not (file-exists-p mew-temp-dir))
(mew-make-directory mew-temp-dir)) ;; just in case
(setq file (make-temp-name mew-temp-file))
@@ -320,7 +322,8 @@
;; A cover page exists, so save it.
;; On Mule, from internal to mew-cs-draft.
;; This code may be overhead but makes code simple.
- (let ((file-coding-system mew-cs-draft))
+ (let ((file-coding-system mew-cs-draft)
+ (coding-system-for-write mew-cs-draft))
(write-region beg (point-max) coverfile)
)
;; A cover page doesn't exist
@@ -456,7 +459,9 @@
(defun mew-save-transfer-form (beg end)
;; called in the narrowed region
- (let ((file-coding-system mew-cs-7bit-crlf) file)
+ (let ((file-coding-system mew-cs-7bit-crlf)
+ (coding-system-for-write mew-cs-7bit-crlf)
+ file)
(if mew-cs-7bit-crlf
()
(goto-char (point-min)) ;; just in case
@@ -472,7 +477,9 @@
))
(defun mew-save-signature-form (beg end)
- (let ((file-coding-system mew-cs-7bit) file1 file2)
+ (let ((file-coding-system mew-cs-7bit)
+ (coding-system-for-write mew-cs-7bit)
+ file1 file2)
(save-excursion
(save-restriction
(narrow-to-region beg end)
===================================================================
RCS file: RCS/mew-ext.el,v
retrieving revision 1.1
diff -u -r1.1 mew-ext.el
--- mew-ext.el 1997/03/11 05:54:50 1.1
+++ mew-ext.el 1997/03/11 05:55:06
@@ -474,6 +474,7 @@
(defun mew-ext-include-local-file (params)
(let* ((file (mew-syntax-get-member params "name"))
(file-coding-system-for-read mew-cs-noconv)
+ (coding-system-for-read mew-cs-noconv)
(size (mew-file-size file)))
(if (file-exists-p file)
(if (> size mew-file-max-size)
===================================================================
RCS file: RCS/mew-pgp.el,v
retrieving revision 1.1
diff -u -r1.1 mew-pgp.el
--- mew-pgp.el 1997/03/11 05:54:53 1.1
+++ mew-pgp.el 1997/03/11 05:55:25
@@ -450,7 +450,8 @@
(setq mew-pgp-tmp-file (make-temp-name mew-temp-file))
(save-excursion
(set-buffer (mew-current-get 'cache))
- (let ((file-coding-system mew-cs-noconv))
+ (let ((file-coding-system mew-cs-noconv)
+ (coding-system-for-write mew-cs-noconv))
(write-region begin end mew-pgp-tmp-file)
(message "");; flush write-region message
)
===================================================================
RCS file: RCS/mew-summary.el,v
retrieving revision 1.2
diff -u -r1.2 mew-summary.el
--- mew-summary.el 1997/03/11 05:36:10 1.2
+++ mew-summary.el 1997/03/11 05:30:16
@@ -1780,7 +1780,9 @@
(widen)
(erase-buffer)
(let ((file-coding-system-for-read mew-cs-noconv)
- (file-coding-system mew-cs-noconv))
+ (file-coding-system mew-cs-noconv)
+ (coding-system-for-read mew-cs-noconv)
+ (coding-system-for-write mew-cs-noconv))
(insert-file-contents (mew-expand-file-name msg cbuf))
(if (and mew-mule-p user-coding-system (not append-p))
(progn
@@ -1808,9 +1810,11 @@
(setq end (mew-syntax-get-end
(mew-syntax-get-part syntax)))) ;;; xxxx
(if (mew-member-match ct mew-mime-content-type-binary-list)
- (let ((file-coding-system mew-cs-noconv))
+ (let ((file-coding-system mew-cs-noconv)
+ (coding-system-for-write mew-cs-noconv))
(write-region begin end file append-p))
- (let ((file-coding-system mew-cs-outfile))
+ (let ((file-coding-system mew-cs-outfile)
+ (coding-system-for-write mew-cs-outfile))
(write-region begin end file append-p)
))
)
@@ -2519,6 +2523,8 @@
(mew-summary-folder-name)))
(file-coding-system-for-read mew-cs-noconv)
(file-coding-system mew-cs-noconv)
+ (coding-system-for-read mew-cs-noconv)
+ (coding-system-for-write mew-cs-noconv)
(n 1) (m 1) syntax len entry dir multi)
(message "Bursting ... ")
(set-buffer mew-buffer-tmp)
===================================================================
RCS file: RCS/mew-draft.el,v
retrieving revision 1.1
diff -u -r1.1 mew-draft.el
--- mew-draft.el 1997/03/11 06:20:52 1.1
+++ mew-draft.el 1997/03/11 06:22:35
@@ -315,13 +315,18 @@
(if (featurep 'hilit19)
(hilit-rehighlight-buffer)
(redraw-display))
- (if mew-mule-p
- (progn
- (make-local-variable 'file-coding-system)
- (make-local-variable 'file-coding-system-for-read)
- (setq file-coding-system mew-cs-draft)
- (setq file-coding-system-for-read mew-cs-autoconv)
- ))
+ (cond (mew-emacs20-p
+ (make-local-variable 'coding-system-for-write)
+ (make-local-variable 'coding-system-for-read)
+ (setq coding-system-for-write mew-cs-draft)
+ (setq coding-system-for-read mew-cs-autoconv)
+ )
+ (mew-mule-p
+ (make-local-variable 'file-coding-system)
+ (make-local-variable 'file-coding-system-for-read)
+ (setq file-coding-system mew-cs-draft)
+ (setq file-coding-system-for-read mew-cs-autoconv)
+ ))
(if (and auto-fill-function mew-emacs-p)
(progn
(make-local-variable 'auto-fill-function)
@@ -531,7 +536,8 @@
(process-connection-type mew-connection-type1)
(delete nil))
(set-buffer-modified-p t) ; Make sure buffer is written
- (let ((file-coding-system mew-cs-mime-trans))
+ (let ((file-coding-system mew-cs-mime-trans)
+ (file-coding-system-for-write mew-cs-mime-trans))
(save-buffer)
)
;; make backup folder(s)
Mew-dist メーリングリストの案内