[mew-dist 18204] Re: C-cC-l vs file-coding-system

Shun-ichi TAHARA ( 田原 俊一 ) jado at example.com
2001年 7月 25日 (水) 03:07:52 JST


From: Kazu Yamamoto (山本和彦) <kazu at example.com>
Message-Id: <20010725.002555.86408287.kazu at example.com>

> > set-language-environment-coding-systems() から必要な部分だけ抜き出して、
> > mew-set-language-environment-coding-systems() とか作って実験してもらえ
> > ませんか? (結構簡単そうです。)
> 
> 時間ができたので作ってみました。anon cvs で、お試しあれ。

XEmacsでは、[mew-dist 18202] のようにしないとダメですね。
# このへん関数構成が全然違う…

さて、

From: Shun-ichi TAHARA (田原 俊一) <jado at example.com>
Message-Id: <20010725.011813.846937928.jado at example.com>

> ただし、これでは、ユーザがcoding-priorityを設定しているとまずいですの
> で、上記設定を保存して復元する枠組みが欲しいところですが、取り急ぎとい
> うことでこれは保留。

実際にここまでやる必要があるかどうかはともかくとして、これもやってみま
した。

(setq lenv (mew-set-language-environment-coding-systems lang))

で、元の priority を保存した後で切り替え

(when (and (not askcs) lenv)
  (mew-reset-coding-systems (car lenv) (cdr lenv)))

で、元に戻します。


XEmacs21用のコード (XEmacs-21.4.3 で確認):

(defun mew-reset-coding-systems (priority categories)
  (let (category checked-categories)
    (while priority
      (unless (memq (setq category (car categories)) checked-categories)
	(set-coding-category-system category (car priority))
	(setq checked-categories (cons category checked-categories)))
      (setq priority (cdr priority)
	    categories (cdr categories)))
    (set-coding-priority-list (nreverse checked-categories))))

(defun mew-set-language-environment-coding-systems (language-name)
  (let ((priority (get-language-info language-name 'coding-priority)))
    (if priority
	(let* ((categories (mapcar 'coding-system-category priority))
	       (orig-categories (coding-priority-list))
	       (orig-priority (mapcar 'coding-category-system orig-categories)))
	  (mew-reset-coding-systems priority categories)
	  (cons orig-priority orig-categories)))))


Emacs-20.7用のコード(例によって未確認 (__)):

(defun mew-reset-coding-systems (priority categories)
  (set-coding-priority categories)
  (while priority
    (set (car categories) (car priority))
    (setq priority (cdr priority) categories (cdr categories)))
  (update-coding-systems-internal))

(defun mew-set-language-environment-coding-systems (language-name)
  (let ((priority (get-language-info language-name 'coding-priority)))
    (if priority
	(let* ((categories (mapcar 'coding-system-category priority))
	       (orig-categories coding-category-list)
	       (orig-priority (mapcar 'eval orig-categories)))
	  (mew-reset-coding-systems priority categories)
	  (cons orig-property orig-categories)))))
_______________________________
田原 俊一   jado at example.com, shunichi_tahara at example.com
                                  http://flowernet.gr.jp/jado/
FingerPrint:  16 9E 70 3B 05 86 5D 08  B8 4C 47 3A E7 E9 8E D9
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄



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