configure

某所で書いたメールです。あまり突っ込まないで;; はしょっているので。でも間違ったこと書いてたら僕の無知なんでどうにでもしてください。


Emacs/Mule におけるバッファの文字コード変換についてまとめておきます。 C-, M-, [RET] は適宜「Ctrl を押しながら」「Alt を押しながら / Esc を押して離してそれに続いて」「リターンを押す」に読みかえて下さい。

0. バージョン番号の見分け方

現在主要な Emacs/Mule には、大きく分けて次の2つがあります。

この2つで、文字コードの扱いはだいぶ異なります。(*1) この2つは、 M-x emacs-version[RET] で minibuffer (下の線の下のやつ) に何と出るかで見分ける事ができます。

"GNU Emacs 19.34. ..." <- Mule
"GNU Emacs 20. ... " <- Emacs

1. Mule の場合

C-x C-k f で minibuffer に "File-coding-system:" と出るので、"*euc-japan*", "*junet*", "*sjis*" 等と打ちます。それぞれ、いわゆる EUC, JIS, SJIS のことです。

同時に改行コードも3種類(dos, mac, unix) の中から指定する事ができて、例えば "*euc-japan*unix" のようにあとに続けて書いて、リターンを押します。

2. Emacs の場合

Mule とは、駆動キーシークエンスも指定の文字列も違います。Emacs では C-x C-m f です (*2)。これを打つと、minibuffer に "Coding system for visited file (default, nil): " と出てくるので、"euc-jp", "junet", "shift_jis" と打ちます。それぞれ、いわゆる EUC, JIS, SJIS のことです。

改行コードも同時に指定する事ができて、あとに "-" を続けてから "dos", "mac", "unix" を指定します。"euc-jp-dos" という感じです。


(*1) なぜこのような違いがあるのかというと、歴史的経緯です。(GNU) Emacs の開発元は GNU (FSF) なのですが、 mule (上述の Mule) は Emacs 19 に対する非公式の多言語対応 "パッチ" という形を取っていて、それで Emacs19.(28|34)@Mule2.3 という言い方がされます。対して Emacs20 では、Mule パッチの作者である電総研の半田氏が直接 Emacs 本体の開発に関わり、Mule の形で用意されていた多言語対応を Emacs 本体に組み込むという作業がなされました。その時に、名前やキーストロークの見直しが行われ、大きく変えられてしまったのです。

ちなみに Emacs20 以降において MULE といえば本体に組み込まれた多言語対応部分のことを指すのですが、なぜかこの時 Mule ではなく MULE と表記します。

(*2) ちなみに、[RET] と C-m は等価です。