[Mew-dist 06445] Re: JIS の Subject への返信

SAKAI Kiyotaka ksakai at example.com
1998年 9月 18日 (金) 10:21:58 JST


>> In article <19980917112946C.sugimori at example.com>, SUGIMORI (杉森 隆行) <sugimori at example.com> writes:

> Subject: Re: $ B # J # I # S ( B

> となってしまい、ESCがなくなってしまうようです。

仕様変更です。ESC は送信するのに不正なコードであるとして、削ってから送
信するようになりました。

ちなみに、僕はこういうプログラムを書いて、message buffer を convert し
てから reply するようにしています。

・header を undecided でコンバート
・body も undecided でコンバート
・"" で囲まれた MIME encode 文字列も強制デコード

を行ないます。Emacs-20.3 用です。
-- 
酒井 清隆 (E-mail: ksakai at example.com)


(add-hook
 'mew-summary-mode-hook
 '(lambda ()
    (define-key mew-summary-mode-map "\C-cl" 'mew-summary-convert-undecided)))

(defun mew-summary-convert-undecided ()
  (interactive)
  (save-excursion
    (set-buffer (mew-buffer-message))
    (let* ((win (get-buffer-window (current-buffer)))
	   (start (window-start win))
	   (pos (if (mew-header-p) (mew-header-end) (point-max)))
	   (coding-category-list
	    (cons 'coding-category-emacs-mule coding-category-list))
	   (buffer-read-only nil))
      (set-coding-priority-internal)
      (widen)
      (mew-cs-decode-region (point-min) pos 'undecided)
      (mew-cs-decode-region pos (point-max) 'undecided)
      (goto-char (point-min))
      (while (re-search-forward mew-header-decode-regex pos t)
	(let* ((s (match-beginning 0)) (e (match-end 0))
	       (str (mew-decode-string (buffer-substring s e))))
	  (delete-region s e)
	  (insert str)))
      (set-window-start win start)
      (set-buffer-modified-p nil))
    (set-coding-priority-internal)))

(defun mew-decode-string (str)
  (let (c1 c2 c3 c4 charset b-or-q cs-str)
    (setq c1 (string-match "=\\?" str))
    (if c1 (setq c2 (string-match "\\?" str (+ c1 2))))
    (if c2 (setq c3 (string-match "\\?" str (+ c2 1))))
    (if c3 (setq c4 (string-match "\\?=" str (+ c3 1))))
    (if c4
	(progn
	  (setq charset (substring str (+ c1 2) c2))
	  (setq b-or-q (substring str (1+ c2) c3))
	  (setq cs-str (substring str (1+ c3) c4))
	  (concat (substring str 0 c1)
		  (mew-header-decode charset b-or-q cs-str)
		  (mew-decode-string (substring str (+ c4 2)))))
      str)))



Mew-dist メーリングリストの案内