4.6. 仕組み

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.1/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) を提供するようにします。