top page > PC unix > here

FreeBSD における Emacs


概要

FreeBSD 8, 9, 10 系にて emacs を導入する方法を提示します.

検討した環境は次のようなものです.

  1. OS は FreeBSD/i386 8.4, FreeBSD/amd64 9.3, 10.3 です. (比較のために,より古いものにも言及します.)
  2. emacs の version は 24.3, 24.4, 24.5 です. (比較のために,より古いものにも言及します.)

目次

1. 概況
2. FreeBSD/i386
3. FreeBSD/amd64
4. カスタマイズ
4.1 emacs 21
4.2 emacs 24
5. UTF-8 対応

1. 概況

現在,FreeBSD も 8, 9, 10 系となり,xemacs-21.4mew-3.3 を使い続けるのが難儀になってきました. そろそろ新しい emacsmew になじんで行かないと世の中について行けなくなりそうなので,試用レベルですが使い始めました.

私の emacs の使用歴は過去から累計してもわずかですので,当面は「この環境で動作しております」程度の情報でしかありません.

2. FreeBSD/i386

emacs は,次のような手順により容易に導入することができます. 現在の ports における version は 24.3 です.

(1) ports にて導入する.

# cd /usr/ports/editors/emacs
# make
ここで Option の DBUS, GCONF, GSETTINGS をはずす.[1]
# make install

(2) 必要に応じてカスタマイズを行なう. 4 節 を参照.

[1] これは積極的な選択ではなく,未解決の bug を回避するためです.

3. FreeBSD/amd64

FreeBSD/i386 と同一の手順で導入することができます.

emacs 24.3 は i386 と同様に OptionDBUS, GCONF, GSETTINGS をはずす必要がありますが,emacs 24.4 ではその必要はありません. (おそらく i386 でもそうだと思います.)

make config の際に widget として MOTIF を選択したところ,4.2 節にて述べるフォントの変更において,メニューに日本語フォントが現われませんでした. default の GTK2 ならばこの問題は生じません.

emacs 24.4 は起動時に以下のようなメッセージが出ますが,動作に影響はないようです.

(process:48845): GLib-GIO-CRITICAL **: g_settings_schema_source_lookup: assertion 'source != NULL' failed

4. カスタマイズ

4.1  emacs 21

私が使っているのは emcws (ports/japanes/emacs-emcws) ですが,default の font は次のようになっています.

-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso10646-1  ← 1 byte 文字
-misc-fixed-medium-r-normal-ja-13-120-75-75-c-120-iso10646-1  ← 日本語

この場合,前者の文字幅は 7 pt,後者のそれは 12 pt です. したがって,両方の文字が混在する文書を編集する場合,前者の間隔が後者のちょうど半分にならず,文字が縦にきれいに並びません. (もちろん,これは表示だけの問題です.)

この場合,~/.Xresources に次のように書き,文字幅が 6 pt の 1 byte 文字の font を指定して対処します.

Emacs*Font:-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1

これ以外に日本語と 1 byte 文字の間隔が合うのは 14 pt の族だけです. そちらは以下のようにして指定します.

Emacs*Font:-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1

英語と日本語だけならば,文字の間隔が合う組合わせはまだあります. 例えば次のものです.

Emacs*Font:-sony-fixed-medium-r-normal--16-120-100-100-c-80-iso8859-1

しかしこれでロシア語を表示させた場合,その文字間隔は英語のそれとは異なります.

4.2  emacs 24

初期化を制御するファイルは ~/.emacs が優先で,これが存在しなければ ~/.emacs.d/init.el が読み込まれます.
以下の説明には前者しか書きませんが,どちらでも同じことです. 実際,私は後者を使っております.

1. フォント

設定することができるフォントには二体系あります.[1]

(1) fontconfig の管理下にあるフォント
  これらは OptionsSet Default Font... にてメニューから選択します.
  この変更を emacs の次回以降の起動においても保持するためには,OptionsSave Options が必要です.
  これにより,設定した内容が ~/.emacs の末尾に追加されます.

(2) fontconfig の管理下にないフォント
   これらは以下のように指定します.
  この例は,vt driver 用に作成した自前の bdf フォントを pcf に変換して,それを X の FontPath の管理下に置いたものです.

(2.1) ~/.emacs を用いる場合,以下のように記述します.

(add-to-list 'default-frame-alist '(font . "-pc98-fixed-medium-r-normal--16-150-75-75-c-80-iso10646-1"))

(2.2) ~/.Xresources を用いる場合,以下のように記述します.

Emacs*font:-pc98-fixed-medium-r-normal--16-150-75-75-c-80-iso10646-1

(2.3) コマンド行にて以下のように指定します.

% emacs -fn -pc98-fixed-medium-r-normal--16-150-75-75-c-80-iso10646-1

2. フレーム [2]

起動した時のフレームの大きさや X Window 上の位置は以下のように設定します. フォントの設定と同じ方法を採るのが良いでしょう. なお,ウィンドウの行数は height に記した数値よりも 3 少なくなります.

(2.1) ~/.emacs を用いる場合,以下のように記述します.

(add-to-list 'default-frame-alist '(width . 80))
(add-to-list 'default-frame-alist '(height . 50))
(add-to-list 'default-frame-alist '(left . 594))
(add-to-list 'default-frame-alist '(top . 126))

または,以下のように記述します.

(when window-system (set-frame-size (selected-frame) 80 50))
(when window-system (set-frame-position (selected-frame) 594 126))

後者の設定法では,menu bar と tool bar を表示させた場合 (それが default),ウィンドウの行数がさらに 1 づつ少なくなります.

(2.2) ~/.Xresources を用いる場合,以下のように記述します.

Emacs*geometry: 80x50+594+126

ちなみに,私は emacs を画面右下に表示するようにしているのですが,以下のような設定だと上下位置が合いません.

Emacs*geometry: 80x50-0-0

(2.3) コマンド行にて以下のように指定します.

% emacs -g 80x50+594+126

[1] default は fontconfig の管理下にあるフォントです.
  OptionsSet Default Font... にて何も変更せずに OK を押し,さらに Save Options を実行します.
  ~/.emacs の末尾を見ると,"DejaVu Sans Mono" となっています.

[2] Emacs の「フレーム (frame)」とは,X Window System の Window のことです. 一方, Emacs の「ウィンドウ (window)」とは,バッファの内容を表示する領域のことです. 一つのフレームの中に,一つ以上のウィンドウと,モード行とエコー領域が表示されます. また,選択的にですが menu bar や tool bar も表示されます.

5. UTF-8 対応

日本語の場合,少なくとも emcws + Wnn 7 にて UTF-8 での文字の入力ができます. FreeWnn は未確認です.

ただし,(emcws も含む) emacs21 では ports/converters/mule-ucs を導入する必要があります. これを使うには,~/.emacs に次の行を追加します. (不安になるくらいに emcws の起動が遅くなります.)

(require 'un-define)

emacs22 以後に対してはこの設定は不要です.

ロシア語も,キーボードのキーの割り当てを ru_RU.KOI8-R と同じに設定し,UTF-8 での文字の入力ができました. (同一のファイルに日本語,英語,ロシア語が混在できているのが感激です!)