Version 11 (modified by iwaim, 15 years ago) (diff) |
---|
このページでは、 次期 5.0 に対応する予定の emacs-23, emacs22-22.x に関する情報を集めています。
このドキュメントは VineSeed:17162 を改編して作成しました。
Vine Linux の Emacs 23 では、 Emacs 上で動作するアプリケーションのパッケージをインストールしたら、 ユーザ初期設定ファイル ~/.emacs.el に何も設定を記述しなくても、 そのアプリケーションがある程度使えるように、 あらかじめ設定を用意し、その設定を自動的に読み込むようにしています。 この Emacs における Vine Linux のデフォルト設定を vine-default と呼ぶことにします。
vine-default は、/usr/share/emacs-23.x/site-lisp 以下に格納されています。
Emacs を起動すると、デフォルトで vine-default の boolean が t になっているので、 vine-default を読み込みます。
もし vine-default をすべて無効にしたい場合は、 ~/.emacs.el に
(setq vine-default nil)
を設定します。 この場合は、メニューバーと言語ロケール以外は何も設定されていません。
vine-default のうち、いくつかの設定を無効にすることができます。 各 vine-default は、vine-default-name の boolean が定義されていて、 デフォルトでは t になっています。
例えば、vine-default-base, vine-default-faces, vine-default-yatex, vine-default-mew を無効にしたい場合は、 ~/.emacs.el に
(setq vine-default-base nil vine-default-faces nil vine-default-yatex nil vine-default-mew nil )
を設定します。
いくつかのEmacs Lispパッケージのみを有効にしたいときは、一旦すべての vine-default を無効にした上で、いくつかの vine-default を有効にしてください。
例えば、vine-default.yatex, vine-default-tamago のみを有効にしたい場合は、 ~/.emacs.el に
(setq vine-default nil) (requires 'vine-default-yatex) (requires 'vine-default-tamago)
を設定します。
Vine Linux の Emacs 上における IME は、 X 上におけるそれと連動して、環境変数 EMACS_IME により設定されます。
もし EMACS_IME と異なる IME を使いたい場合は、 skk を例にすると、~/.emacs.el に
(setq emacs-ime "skk")
を設定します。
vine-default の下での Emacs の設定は、 大きくわけて以下の 3 つの設定パートに分かれています。
(a) vine-default
(b) vine-default に上書きしない設定
(c) vine-default に上書きする設定
(a) は ~/.emacs.el を読み込んだ直後に、 /usr/share/emacs-23.x/site-lisp 以下の vine-default-*.el を然るべき順序で読み込まれます。
(b), (c) は、必要であれば ~/.emacs.el に(あるいは、.emacs.el から読み込む別の *.el に)設定します。
(b) を直接 ~/.emacs.el に設定して構いませんが、 (c) を直接 ~/.emacs.el に設定していると、 (a) により vine-default が優先されてしまいます。
例えば、以下のように ~/.emacs.el にフォントを設定していても、 後から読まれる vine-default-faces.el により Monospace-12 に上書きされていまいます。
(if window-system (set-default-font "Monospace-10"))
このような vine-default を上書きする設定は、after-vine-default-setup-hook にひっかけます。 上記の例だと以下のようになります。
(add-hook 'after-vine-default-setup-hook (lambda () (set-default-font "Monospace-10")))
本当は (b) に属する設定だけれども、(b), (c) のどちらに属するかをよく理解していない設定は、 とりあえず (c) に属すると思って after-vine-default-setup-hook へひっかけてしまっても問題ありません。 このような (b), (c) のどちらに属するかよく理解していない設定は、 例えば、別のファイル .emacs-misc.el にまとめてしまい、 以下のようにして ~/.emacs.el から読み込ませてしまっても良いです。
(add-hook 'after-vine-default-setup-hook (lambda () (load (expand-file-name "~/.emacs.misc.el") nil t nil) ))
Vine Linux 4.2 までの ~/.emacs.el には、 ユーザ用初期化ファイル ~/.emacs.my.el があれば、 それを読み込んでいました。
Vine Linux 5.x では、vine-default に移行したため、.emacs.my.el を旧版にしました。 もし過去の .emacs.my.el を流用したい場合は、 以下のように after-vine-default-setup-hook にひっかけて、 ~/.emacs.my.el を読み込ませることができます。
(add-hook 'after-vine-default-setup-hook (lambda () (if (file-exists-p (expand-file-name "~/.emacs.my.el")) (load (expand-file-name "~/.emacs.my.el") nil t nil)) ))
ただし、Emacs 23 と Emacs 22 以前は随分仕様が変わっているので、 ~/.emacs.my.el をそのまま流用できるとは限りません。
vine-default は、各デフォルト設定を読み込む *-init.el を、 vine-default-setup 内で読まれる vine-default-setup-hook にひっかけて一旦ストックしておき、 after-init-hook にひっかけた vine-default-setup を実行することにより、 Vine Linux のデフォルト設定が読み込まれます。
具体的には、site-start.el と *-init.el に以下のような関数とフックを定義しています。
;;; Emacs default settings for Vine Linux (defcustom emacs-ime (getenv "EMACS_IME") "A variable of default Input Method Editor" :type 'string) (if (null emacs-ime) (setq emacs-ime "scim")) (defcustom vine-default t "A boolean for all Vine Linux default settings" :type 'boolean) (if (equal (getenv "LOGNAME") "root") (setq vine-default nil)) (defcustom vine-default-base t "A boolean for vine-default-base" :type 'boolean) (defcustom vine-default-faces t "A boolean for vine-default-faces" :type 'boolean) (defvar vine-default-setup-hook nil "*List of functions to be called at vine-default-setup") (defvar after-vine-default-setup-hook nil "*List of functions to be called at the end of vine-default-setup") (defun vine-default-setup () "a function for setup to default configurations of Vine Linux." (if vine-default (progn (if vine-default-base (require 'vine-default-base)) (if vine-default-faces (require 'vine-default-faces)) (run-hooks 'vine-default-setup-hook) (run-hooks 'after-vine-default-setup-hook) ) ) ) (add-hook 'after-init-hook 'vine-default-setup) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (mapc 'load (directory-files "/etc/emacs-23.0.92/site-start.d" t "\\.el\\'"))
Emacs の関連パッケージに対しては、 例えば YaTeX の場合は、 50yatex-init.el に以下のような設定を追加しています。
(defcustom vine-default-yatex t "A boolean for vine-default-yatex" :type 'boolean) (add-hook 'vine-default-setup-hook (lambda() (if vine-default-yatex (require 'vine-default-yatex))))
vine-default-yatex.el には、YaTeX のデフォルト設定を記述し、 (provide 'vine-default-yatex) を提供するようにします。 また、addflavor 時に vine-default-*.el はバイトコンパイルをしないようにしています。