Version 33 (modified by munepi, 12 years ago) (diff) |
---|
vine-default の仕組みを新しくしました VineSeed:22246。
vine-default を呼ぶタイミングの改善しました。
これにより、今後は after-vine-default-setup-hook を廃止します。 一部の PACKAGE/vine-default-PACKAGE.el で after-vine-default-setup-hook にひっかけているものがあるので、 しばらくの間は暫定的に残しておきます。
from site-start.el.emacs24 of emacs24-24.0.50-3.20110128vl6.x86_64
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; GNU Emacs EMACS_VERSION 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 "This hook is obsolete! Please do not use this hook. 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" (when vine-default (message "Starting vine-default-setup ...") (when vine-default-base (message "Loading vine-default-base ...") (require 'vine-default-base)) (when vine-default-faces (message "Loading vine-default-faces ...") (require 'vine-default-faces)) (run-hooks 'vine-default-setup-hook) (run-hooks 'after-vine-default-setup-hook);; obsolete ) ) (defun show-vine-default () "A function to show current vine-default configurations" (interactive) (shell-command "/usr/lib/emacsen-common/show-vine-default.sh EMACS_VERSION")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; run functions from the /etc/emacs-EMACS_VERSION/site-start.d directory ;;; Files in this directory ending with ".el" are run on startup (mapc 'load (directory-files "/etc/emacs-EMACS_VERSION/site-start.d" t "\\.el\\'")) ;;; load local configuration (if (file-exists-p (expand-file-name "/etc/emacs/emacs24-local.el")) (load (expand-file-name "/etc/emacs/emacs24-local.el"))) ;;; load vine-default configuration per user before vine-default-setup (if (file-exists-p (expand-file-name "~/.emacs.d/emacs24-vine-default.el")) (load (expand-file-name "~/.emacs.d/emacs24-vine-default.el"))) ;;; run vine-default-setup (vine-default-setup) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Local Variables: ;; mode: emacs-lisp ;; End:
from howm-init.el of howm-1.3.9.1-2vl6.noarch
;; ;; howm-init.el ;; ;; for Vine Linux with emacsen-common ;; Munehiro Yamamoto <munepi@vinelinux.org> (defcustom vine-default-howm t "A boolean for vine-default-howm" :type 'boolean) (add-hook 'vine-default-setup-hook (lambda() (when vine-default-howm (message "Loading vine-default-howm ...") (require 'vine-default-howm)))) ;;; end of file
from emacs24-local.el of emacs24-24.0.50-3.20110128vl6.x86_64
;; ;; GNU Emacs EMACS_VERSION local configuration file ;; ;; This configuration is read at the end of site-start.el. ;; Emacs configuration files are read ;; - distribution wide from site-start.el ;; - system wide from this configuration file ;; - per user from ~/.emacs.d/init.el, ;; where per user settings override system wide settings, ;; and system wide settings override site-start.el. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Local Variables: ;; mode: emacs-lisp ;; End:
Emacs XX を起動して、vine-default-setup が実行される前に、~/.emacs.d/emacsXX-vine-default.el から vine-default に関する設定を読み込みます。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -*- coding: utf-8-unix -*- ;; FSF Emacs 24 用 vine-default 設定ファイル ;; Munehiro Yamamoto <munepi@vinelinux.org> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Vine Linux のデフォルト設定を無効にしたい場合は、 ;; 以下を有効にしてください。 ;; (setq vine-default nil) ;;; 環境変数 EMACS_IME と異なる IME を使いたい場合は、 ;;; 以下を有効にして設定することができます。 ;; (setq emacs-ime "atokx3");; mozc ibus-el scim tamago scim-bridge wnn7egg atokx3 skk anthy-el scim-bridge ;;; マクロサーチパスの追加 ;;; 例えば、~/lib/emacs 以下にユーザ用の *.el, *.elc を置くことができます。 ;; (add-to-list 'load-path "~/lib/emacs") ;; (add-to-list 'load-path "~/.emacs.d/auto-install") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Local Variables: ;; mode: emacs-lisp ;; End:
from vine-default-howm.el of howm-1.3.9.1-2vl6.noarch
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -*- coding: utf-8-unix -*- ;; FSF Emacs 23 用 Vine Linux howm 設定 ;; Munehiro Yamamoto <munepi@vinelinux.org> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; howm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (autoload 'howm-menu "howm-mode" "Hitori Otegaru Wiki Modoki" t) (setq howm-process-coding-system 'utf-8) (setq howm-menu-lang 'ja) ;; (global-set-key "\C-c,," 'howm-menu) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (provide 'vine-default-howm) ;; Local Variables: ;; mode: emacs-lisp ;; End:
Vine Linux 6 では、デフォルトのユーザ初期設定ファイルとして、 ${HOME}/.emacs.d/init.el を推奨します。
Emacs は、~/.emacs, ~/.emacs.el, ~/.emacs.d/init.el の順番に探し、 一番最初に見つけたファイルを「デフォルトのユーザ初期設定ファイル」とする挙動をします。
${HOME}/.emacs.d/init.el は、 例えばこのような感じで良いと考えています。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -*- coding: utf-8-unix -*- ;; FSF Emacs バージョン分岐用ファイル ;; Munehiro Yamamoto <munepi@vinelinux.org> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq user-init-file (concat "~/.emacs.d/emacs" (number-to-string emacs-major-version) "-init.el")) (setq custom-file (concat "~/.emacs.d/emacs" (number-to-string emacs-major-version) "-custom.el")) (if (file-exists-p (expand-file-name user-init-file)) (load-file (expand-file-name user-init-file))) (if (file-exists-p (expand-file-name custom-file)) (load-file (expand-file-name custom-file))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Local Variables: ;; mode: emacs-lisp ;; End: ====================
このようにしておくと、複数のバージョンのユーザ初期設定ファイルと カスタムファイル(M-x customize により書き込まれる設定ファイル)を別々に管理できます。
必要であれば、Emacs バージョン共通の設定ファイルなどを設けて、以下のようにしてもよいでしょう。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -*- coding: utf-8-unix -*- ;; FSF Emacs バージョン分岐用ファイル ;; Munehiro Yamamoto <munepi@vinelinux.org> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ユーザーの初期設定ファイルの指定 (setq user-init-file (concat "~/.emacs.d/emacs" (number-to-string emacs-major-version) "-init.el")) (setq custom-file (concat "~/.emacs.d/emacs" (number-to-string emacs-major-version) "-custom.el")) (if (file-exists-p (expand-file-name user-init-file)) (load (expand-file-name user-init-file))) (if (file-exists-p (expand-file-name custom-file)) (load (expand-file-name custom-file))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 個人的な設定ファイル: Emacs バージョン共通 (setq my-emacs-common-file "~/.emacs.d/emacs-common.el") (if (file-exists-p (expand-file-name my-emacs-common-file)) (load-file (expand-file-name my-emacs-common-file))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Local Variables: ;; mode: emacs-lisp ;; End:
Emacs XX を起動すると、上記の ~/.emacs.d/init.el から ~/.emacs.d/emacsXX-init.el が
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -*- coding: utf-8-unix -*- ;; FSF Emacs 24 用 ユーザ設定ファイル ;; Munehiro Yamamoto <munepi@vinelinux.org> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Local Variables: ;; mode: emacs-lisp ;; End:
Vine Linux 5 までの設定ファイル ~/.emacs.* は、すべて ~/.emacs.d/dot.emacs/ 以下に移すようにするのはどうでしょうか?
Vine Linux 5 に対応する emacs-23, emacs22-22.x に関する情報を集めています。
Emacs を起動すると、site-start.el を読み終われば、 すぐに ~/.emacs.el を読み込みます。 site-start.el は Vine Linux の distribution-wide な設定ファイルのため、 4.2 以前で system-wide な設定を施すためには、 RPMパッケージがアップデートされるたびに site-start.el を編集する必要がありました。
そこで 5.0 では、 直接 site-start.el を変更しなくても、 system-wide な設定をできるようにしました。
system-wide な設定ファイルは、 Emacs のメジャーバージョンが XX の場合、 /etc/emacs/emacs-XX-local.el に配置されています。 Emacs-XX を起動したとき、 もし /etc/emacs/emacs-XX-local.el が存在すれば、 site-start.el の一番最後に読み込まれます。 したがって、distribution-wide な設定よりも emacs-XX-local.el が優先されます。
このドキュメントは 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)
を設定します。
Emacs 上からインストールされている elisp パッケージにあらかじめ設定されている vine-default の設定を閲覧できます。
Emacs 上で
M-x show-vine-default
を実行すると、起動している Emacs のバージョンに対応した vine-default の設定を閲覧できます。
vine-defaultでの設定を上書きしたい場合はフックを使います。
例えば、vine-default で set-frame-font には次のように「Monospace 12」が設定されてたとします。
(if window-system (set-frame-font "Monospace 12"))
これを ~/.emacs.el で変更したい場合は after-vine-default-setup-hook をフックしてください。
(add-hook 'after-vine-default-setup-hook (lambda () (if window-system (set-frame-font "Monospace 10"))))
上記はあくまで一例として紹介しましたが、 フォントの設定を変更したい方は、 現実的には、vine-default-faces 自体を使わないと思われますので、 ~/.emacs.el に
(setq vine-default-faces nil) (unless vine-default-faces (if window-system (set-frame-font "DejaVu Sans Mono 10")))
のように、vine-default-faces を無効にしておいてフォントの設定をしても良いです。
また、各 vine-default で設定されていない項目についてはフックせずに、 そのまま ~/.emacs.el に記述しても有効です。
vine-default で何が設定されているのかをよく理解していない場合は、 とりあえず after-vine-default-setup-hook へフックしてしまっても問題ありません。
そのため、別のファイル .emacs-misc.el にまとめてしまい、 以下のようにして ~/.emacs.el でフックして読み込ませてしまっても良いです。
(add-hook 'after-vine-default-setup-hook (lambda () (load (expand-file-name "~/.emacs.misc.el") nil t nil) ))
この仕組みの詳細については「vine-default の下での ~/.emacs.el の設定」セクションを参照してください。
Vine Linux の Emacs 上における IME は、 X 上におけるそれと連動して、環境変数 EMACS_IME により設定されます。
もし EMACS_IME と異なる IME を使いたい場合は、 skk を例にすると、~/.emacs.el に
(setq emacs-ime "skk")
を設定します。
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 以前は随分仕様が変わっているので、 Vine Linux 4の 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) を提供するようにします。
vine-default の下での Emacs の設定は、 大きくわけて以下の 3 つの設定パートに分かれています。
(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-frame-font "Monospace 10"))
このような vine-default を上書きする設定は、after-vine-default-setup-hook をひっかけます。詳細は「高度な使い方」セクションを参照してください。
ここでは、Emacs Lisp パッケージの作成および emacs flavor の挙動について説明します。
Vine Linux の Emacs は、 Debian で採用している Emacs Lisp パッケージ管理の独自システムを採用しています。
Emacs Lisp パッケージをインストールしたときに、 *.el から現在インストールされている Emacs の flavor に対応した *.elc を 自動的に生成(バイトコンパイル:byte-compile)し、 必要なパスの設定やリソースの読み込みを行います。 さらに、Vine Linux の場合は vine-default の設定も同時に施されます。
逆に、Emacs Lisp パッケージをアンインストールしたときには、 通常のパッケージと同様にパッケージ自体の削除に加えて、 *.elc の削除も同時に行います。
package-init.el は、 site-start.el から然るべき順序で読み込まれるように、addflavor 時に /usr/share/emacs/site-lisp/package/package-init.el から /etc/emacs-flavor/site-start.d/NNpackage-init.el へシンボリックリンクが張られます。
vine-default-package.el は、addflavor 時にバイトコンパイルしません。