ここに日記はありません
Saturday 31 January, 2015 [長年日記] この日を編集
_ [BSD][Emacs] Emacsの導入
最初にEmacsの名前を知ったのは18.xか19.xのころだったが、実際に自分で使ったのは19.34ベースのMule-2.3が最初だったように思う。FreeBSDを使い始めたのが3.0-RELEASEが出る少し前からで本格的に使い始めたのが3.3-RELEASEあたりだった。そのころからEmacsを使い始めていたかな。もっともエディタとしてではなくてmailやnetnewsを読むためだった。その当時はSunのWSあたりがメールサーバになっていてPOP3プロトコルでメールを読みだしてPCで読むのが主流だった。しかし同じメールを複数のPCで読み込むことは考慮されていないのでいろいろと不都合があった。そこで考えたのがremoteで接続できるサーバーをFreeBSDで立ててそこにメールを集めておくということで、そのときにまずMule+mewを使い始めたのが最初であるように記憶している。そのころ日本語入力に使っていたのがCannaかWnnで、しばらくしてオムロンソフトからWnn6が発売になった時もすぐに購入した。Wnn7も発売になったが確か当時のFreeBSDではかなり工夫しないと使えなかったのでバージョンアップはやめたように思う。その後はこのサイトにも書いているがAnthyを主に使っている。
そういう思い出話はともかくとしてEmacsの導入について。ports treeをみてるとEmacs関連のものはかなり整理されてしまっていた今も有効なのかどうかわからないが、/etc/make.confに
# Emacs Version
EMACS_PORT_NAME=emacs24
と入れた。ports treeにemacs21などがまだ入っていた頃の話なのでもし今でもVerson管理の必要があればDEFAULT_VERSIONSに入るはずのものなので今は必要ないのかもしれない。導入そのものは
# portmaster editors/emacs
とするだけ。現時点で24.4ベースのものが導入される。
Emacsの設定は以前は~/.emacsもしくは~/.emacs.elに記述していたが、現在では設定ファイルを集めた~/.emacs.d/というディレクトリを作り初期設定はinit.elに記述することになっている。ただし優先順位としては~/.emacsと~/.emacs.elの方が高いので~/.emacsに~/.emacs.d/init.elを読み込むように書くといいらしい。ということで~/.emacsは
;; .emacs.el
(load (expand-file-name (concat (getenv "HOME") "/.emacs.d/init")))
とする。
次は.emacs.d/init.elに設定を順々に記述していく。まずは文字コードであるがUnicide (UTF-8)がdefaultになっているし、他のシステムでも困ることもないのでUnicide (UTF-8)とする。
;; -*- mode: emacs-lisp; coding: utf-8; indent-tabs-mode: nil -*-
次に日本語環境の設定をする。もうすでにほとんどのシステムでUTF-8を使うようにしたのですでに必要ないのであるが、以前のEUC環境でのことも考えて
;; Coding system
(setq lang (getenv "LANG"))
(if (or (equal lang "ja_JP.UTF-8")
(equal lang "ja_JP.UTF8")
(equal lang "utf-8"))
(progn
(set-language-environment 'Japanese)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(setq coding-system-for-read 'utf-8)
(prefer-coding-system 'utf-8))
(progn
(set-language-environment 'Japanese)
(set-default-coding-systems 'euc-jp)
(set-terminal-coding-system 'euc-jp)
(set-keyboard-coding-system 'euc-jp)
(set-buffer-file-coding-system 'euc-jp)
(set-selection-coding-system 'euc-jp)
(setq default-buffer-file-coding-system 'euc-jp)
(setq coding-system-for-read 'euc-jp)
))
というように書いている。また同じようにしてEmacsのversionやOSによって一つのinit.elで切り替えるということもできるが私は今のところやっていない。日本語入力に関しては上に書いたように以前であればCannaかWnnであったが今はほとんどのところでAnthyが使われているのではないか。FreeBSDでは
# portmaster japanese/anthy
でinstallすることで、Emacsで変換を行うためのanthy.elも入れてくれる。これを使うためにはinit.elに
;; Anthy.el
(load-library "anthy")
;; set japanese-anthy
(setq default-input-method "japanese-anthy")
と書けば動くはずである。しかしemacs24になっているせいか起動すると
Invalid read syntax: . in wrong context
というエラーが出て正常に動いてくれない。他でも症状は違うがemacs24でanthy.elが動かないという話が出ていたので互換性の問題があるのかもしれない。
そこで違う方法としてtamagoを使うことにした。tamagoは
# portmaster editors/tamago
でinstallされる。このtamagoは4.0.6というバージョンであるが元々はかなり古いもので現行のemacsや漢字変換サーバに対応するためにいろいろなパッチが当てられている。しかし実際にはメンテナンスをする主体が存在せずいつ使えなくなるかわからないものでもある。一方で開発を引き継ごうという話も出ており新しい情報を集めておく必要がある。emacs24+tamagoでanthyを使うにはinit.elに
(set-language-environment "Japanese")
があるのを前提に
(set-input-method 'japanese-egg-anthy)
(push "/usr/local/share/emacs/24.4/site-lisp/egg/egg/" load-path)
と記述すればいい。