[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 メーリングリストの案内