CentOS 4.x / emacs で UTF-8 を使う

(注:私は主にemacsを 端末(Windows上のUTF-8 TeraTerm Pro with TTSSH2)から使っています。日本語入力はWindows上のIMで行っているわけです)
CentOS 4.5 の emacs-21.3-19.EL.4 で UTF-8を使うには、
.emacs に
(set-language-environment “japanese”)
(prefer-coding-system ‘utf-8-unix)
(set-terminal-coding-system ‘utf-8)
(set-keyboard-coding-system ‘utf-8)
(set-buffer-file-coding-system ‘utf-8)
(set-default-coding-systems ‘utf-8)
(setq default-buffer-file-coding-systems ‘utf-8)
と書く。
prefer-coding-system を書かないと、かなはちゃんと表示されるが漢字が化けたりする。なぜだろう?
(長いこと、prefer-coding-system を知らずに、emacs-21で UTF-8はまともに使えないと思っていた…)


前述のように、私はemacs-21では、UTF-8がまともに使えない、と思っていたので、snapshot版のemacs-22(の Fedora Core 用 source rpmをもらってきてビルドしたもの)を使っていた。
しかし、一部の(JIS漢字コードに含まれる)記号(例えば三点リーダ「…」とか)を使うとおかしくなるのが気になっていた。
正式リリースになったemacs-22.1もビルドして使ってみたが、記号がおかしくなるのは変わっていなかった。
これは、
http://nijino.homelinux.net/emacs/utf-cjk.html
デフォルトではCJKにデコードされない記号があるためで、.emacsにでも、utf-translate-cjk-set-unicode-range で、CJKにデコードするように書いておけば大丈夫なことがわかった。
では、emacs-22でいこうかと思ったが、上記ページでは、jisx0213にも対応している Mule-UCSのほうがおすすめであるとのご意見。


そこで、emacs-21.3-19.EL.4 を見てみると、これには Mule-UCS が入れてあるようだ。
だがしかし、なにかおかしい。(require ‘jisx0213) すると、そんなの無いと言われる。
そこで、emacs-21.3-19.EL.4.src.rpm のspecファイルを見たら、ビルドの過程でjisx0213部分がそっくり抜け落ちてしまっているのに気が付いた。
(FecoreCore6 の emacs-21.4-17.3.fc6 でも同様だった。 なお Fedora 7 では emacs-22.0.990 が採用されている)
この点を修正したspecファイルを置いておきます。
emacs.spec.tar.gz (変更した emacs.spec と、 参考のためオリジナルのspecとのdiff)
■ ビルド・インストール手順
1. 理研のミラーあたりから、emacs-21.3-19.EL.4.src.rpm をダウンロードする
2. ソースrpmをインストールする
rpm -ivh emacs-21.3-19.EL.4.src.rpm
3. /usr/src/redhat/SPEC にemacs.specが入るので、これを、上記のものと差し替える
上記specファイルは、emacs-21.3-19.EL.4.1 というバージョンになるようにしてある。
4. ビルドする
cd /usr/src/redhat/SPEC
rpmbuild -ba emacs.spec
(Pentium4 2.8GHz メモリ 1GB のマシンで 5~10分ほどだった)
5. 出来たバイナリrpmをインストールする
cd /usr/src/redhat/RPM/<使ってるCPUアーキテクチャ>
rpm -Uvh emacs*21.3-19.EL.4.1.i386.rpm
6. .emacsにこう書く
;; Mulle-UCS
(require ‘un-define)
(require ‘jisx0213)
(set-language-environment “japanese”)
(prefer-coding-system ‘utf-8-unix)
(set-terminal-coding-system ‘utf-8)
jisx0213はロードできるようになったが、ちゃんと動くのかは、確認していません…。
…わざわざrpmリビルドしなくてもjisx0213使いたかったらMule-UCSのtarballつっこんでバイトコンパイルすればいいんじゃ?と言われれば、それはたしかにそうである。
本当のことを言うと、この記事を書きつつ色々調べていったら結局私の使い方では何もビルドなどせずに(prefer-coding-system ‘utf-8-unix)をするだけでよかったのだけどそれだけでは悔しいのでいろいろやってみました、というお話でした…。

コメント

  1. 夜更け より:

    > (setq default-buffer-file-coding-systems ‘utf-8)
    default-buffer-file-coding-system の間違いでは。
    また、set-default-coding-systems のマニュアルを見てみたところ、set-terminal-coding-system と set-keyboard-coding-system のデフォルト値を設定するとあるので、以下の二つは不要かもしれません。
    > (set-terminal-coding-system ‘utf-8)
    > (set-keyboard-coding-system ‘utf-8)

タイトルとURLをコピーしました