| | 1 | [[PageOutline]] |
| | 2 | = Emacs ガイド(案)- vine-default について = |
| | 3 | |
| | 4 | == system-wide な設定 == |
| | 5 | |
| | 6 | Emacs を起動すると、site-start.el を読み終われば、 |
| | 7 | すぐに ~/.emacs.el を読み込みます。 |
| | 8 | site-start.el は Vine Linux の distribution-wide な設定ファイルのため、 |
| | 9 | 4.2 以前で system-wide な設定を施すためには、 |
| | 10 | RPMパッケージがアップデートされるたびに site-start.el を編集する必要がありました。 |
| | 11 | |
| | 12 | そこで 5.0 では、 |
| | 13 | 直接 site-start.el を変更しなくても、 |
| | 14 | system-wide な設定をできるようにしました。 |
| | 15 | |
| | 16 | system-wide な設定ファイルは、 |
| | 17 | Emacs のメジャーバージョンが XX の場合、 |
| | 18 | /etc/emacs/emacs-XX-local.el |
| | 19 | に配置されています。 |
| | 20 | Emacs-XX を起動したとき、 |
| | 21 | もし /etc/emacs/emacs-XX-local.el が存在すれば、 |
| | 22 | site-start.el の一番最後に読み込まれます。 |
| | 23 | したがって、distribution-wide な設定よりも emacs-XX-local.el が優先されます。 |
| | 24 | |
| | 25 | |
| | 26 | == Vine Linux のデフォルト設定:vine-default == |
| | 27 | |
| | 28 | このドキュメントは [http://ml.vinelinux.org/vineseed/msg00320.html VineSeed:17162] を改編して作成しました。 |
| | 29 | |
| | 30 | Vine Linux の Emacs 23 では、 |
| | 31 | Emacs 上で動作するアプリケーションのパッケージをインストールしたら、 |
| | 32 | ユーザ初期設定ファイル ~/.emacs.el に何も設定を記述しなくても、 |
| | 33 | そのアプリケーションがある程度使えるように、 |
| | 34 | あらかじめ設定を用意し、その設定を自動的に読み込むようにしています。 |
| | 35 | この Emacs における Vine Linux のデフォルト設定を vine-default と呼ぶことにします。 |
| | 36 | |
| | 37 | === 使い方 === |
| | 38 | |
| | 39 | vine-default は、/usr/share/emacs-23.x/site-lisp 以下に格納されています。 |
| | 40 | * vine-default-base.el:Emacs の基本的な設定 |
| | 41 | * vine-default-faces.el:Emacs のフォントやカラーの設定 |
| | 42 | * ''package''/vine-default-''package''.el:''package'' の設定 |
| | 43 | |
| | 44 | Emacs を起動すると、デフォルトで vine-default の boolean が t になっているので、 |
| | 45 | vine-default を読み込みます。 |
| | 46 | |
| | 47 | もし vine-default をすべて無効にしたい場合は、 |
| | 48 | ~/.emacs.el に |
| | 49 | {{{ |
| | 50 | (setq vine-default nil) |
| | 51 | }}} |
| | 52 | を設定します。 |
| | 53 | この場合は、メニューバーと言語ロケール以外は何も設定されていません。 |
| | 54 | |
| | 55 | vine-default のうち、いくつかの設定を無効にすることができます。 |
| | 56 | 各 vine-default は、vine-default-''name'' の boolean が定義されていて、 |
| | 57 | デフォルトでは t になっています。 |
| | 58 | |
| | 59 | 例えば、vine-default-base, vine-default-faces, |
| | 60 | vine-default-yatex, vine-default-mew を無効にしたい場合は、 |
| | 61 | ~/.emacs.el に |
| | 62 | {{{ |
| | 63 | (setq vine-default-base nil |
| | 64 | vine-default-faces nil |
| | 65 | vine-default-yatex nil |
| | 66 | vine-default-mew nil |
| | 67 | ) |
| | 68 | }}} |
| | 69 | を設定します。 |
| | 70 | |
| | 71 | いくつかのEmacs Lispパッケージのみを有効にしたいときは、一旦すべての vine-default を無効にした上で、いくつかの vine-default を有効にしてください。 |
| | 72 | |
| | 73 | 例えば、vine-default.yatex, vine-default-tamago のみを有効にしたい場合は、 |
| | 74 | ~/.emacs.el に |
| | 75 | {{{ |
| | 76 | (setq vine-default nil) |
| | 77 | |
| | 78 | (requires 'vine-default-yatex) |
| | 79 | |
| | 80 | (requires 'vine-default-tamago) |
| | 81 | }}} |
| | 82 | を設定します。 |
| | 83 | |
| | 84 | |
| | 85 | === 設定されている vine-default の閲覧 === |
| | 86 | |
| | 87 | Emacs 上からインストールされている elisp パッケージにあらかじめ設定されている vine-default の設定を閲覧できます。 |
| | 88 | |
| | 89 | Emacs 上で |
| | 90 | {{{ |
| | 91 | M-x show-vine-default |
| | 92 | }}} |
| | 93 | を実行すると、起動している Emacs のバージョンに対応した vine-default の設定を閲覧できます。 |
| | 94 | |
| | 95 | |
| | 96 | === 高度な使い方 === |
| | 97 | |
| | 98 | vine-defaultでの設定を上書きしたい場合はフックを使います。 |
| | 99 | |
| | 100 | 例えば、vine-default で set-frame-font には次のように「Monospace 12」が設定されてたとします。 |
| | 101 | {{{ |
| | 102 | (if window-system |
| | 103 | (set-frame-font "Monospace 12")) |
| | 104 | }}} |
| | 105 | |
| | 106 | これを ~/.emacs.el で変更したい場合は after-vine-default-setup-hook をフックしてください。 |
| | 107 | {{{ |
| | 108 | (add-hook 'after-vine-default-setup-hook |
| | 109 | (lambda () |
| | 110 | (if window-system |
| | 111 | (set-frame-font "Monospace 10")))) |
| | 112 | }}} |
| | 113 | |
| | 114 | 上記はあくまで一例として紹介しましたが、 |
| | 115 | フォントの設定を変更したい方は、 |
| | 116 | 現実的には、vine-default-faces 自体を使わないと思われますので、 |
| | 117 | ~/.emacs.el に |
| | 118 | {{{ |
| | 119 | (setq vine-default-faces nil) |
| | 120 | |
| | 121 | (unless vine-default-faces |
| | 122 | (if window-system (set-frame-font "DejaVu Sans Mono 10"))) |
| | 123 | }}} |
| | 124 | のように、vine-default-faces を無効にしておいてフォントの設定をしても良いです。 |
| | 125 | |
| | 126 | |
| | 127 | また、各 vine-default で設定されていない項目についてはフックせずに、 |
| | 128 | そのまま ~/.emacs.el に記述しても有効です。 |
| | 129 | |
| | 130 | vine-default で何が設定されているのかをよく理解していない場合は、 |
| | 131 | とりあえず after-vine-default-setup-hook へフックしてしまっても問題ありません。 |
| | 132 | |
| | 133 | そのため、別のファイル .emacs-misc.el にまとめてしまい、 |
| | 134 | 以下のようにして ~/.emacs.el でフックして読み込ませてしまっても良いです。 |
| | 135 | {{{ |
| | 136 | (add-hook 'after-vine-default-setup-hook |
| | 137 | (lambda () |
| | 138 | (load (expand-file-name "~/.emacs.misc.el") nil t nil) |
| | 139 | )) |
| | 140 | }}} |
| | 141 | |
| | 142 | この仕組みの詳細については「vine-default の下での ~/.emacs.el の設定」セクションを参照してください。 |
| | 143 | |
| | 144 | |
| | 145 | === IME === |
| | 146 | |
| | 147 | Vine Linux の Emacs 上における IME は、 |
| | 148 | X 上におけるそれと連動して、環境変数 EMACS_IME により設定されます。 |
| | 149 | |
| | 150 | もし EMACS_IME と異なる IME を使いたい場合は、 |
| | 151 | skk を例にすると、~/.emacs.el に |
| | 152 | {{{ |
| | 153 | (setq emacs-ime "skk") |
| | 154 | }}} |
| | 155 | を設定します。 |
| | 156 | |
| | 157 | |
| | 158 | === Vine Linux 4 の .emacs.my.el === |
| | 159 | |
| | 160 | Vine Linux 4.2 までの ~/.emacs.el には、 |
| | 161 | ユーザ用初期化ファイル ~/.emacs.my.el があれば、 |
| | 162 | それを読み込む仕組みがありました。 |
| | 163 | |
| | 164 | Vine Linux 5.x では、vine-default に移行したため、.emacs.my.el を読み込む仕組みは廃止しました。 |
| | 165 | |
| | 166 | もし過去の .emacs.my.el を流用したい場合は、 |
| | 167 | 以下のように after-vine-default-setup-hook にフックして、 |
| | 168 | ~/.emacs.my.el を読み込ませることができます。 |
| | 169 | {{{ |
| | 170 | (add-hook 'after-vine-default-setup-hook |
| | 171 | (lambda () |
| | 172 | (if (file-exists-p (expand-file-name "~/.emacs.my.el")) |
| | 173 | (load (expand-file-name "~/.emacs.my.el") nil t nil)) |
| | 174 | )) |
| | 175 | }}} |
| | 176 | ただし、Emacs 23 と Emacs 22 以前は随分仕様が変わっているので、 |
| | 177 | Vine Linux 4の Emacs 22 などで使っていた ~/.emacs.my.el をそのまま流用できるとは限りません。 |
| | 178 | |
| | 179 | |
| | 180 | === 仕組み === |
| | 181 | |
| | 182 | vine-default は、各デフォルト設定を読み込む *-init.el を、 |
| | 183 | vine-default-setup 内で読まれる vine-default-setup-hook にひっかけて一旦ストックしておき、 |
| | 184 | after-init-hook にひっかけた vine-default-setup を実行することにより、 |
| | 185 | Vine Linux のデフォルト設定が読み込まれます。 |
| | 186 | |
| | 187 | 具体的には、site-start.el と *-init.el に以下のような関数とフックを定義しています。 |
| | 188 | {{{ |
| | 189 | ;;; Emacs default settings for Vine Linux |
| | 190 | (defcustom emacs-ime (getenv "EMACS_IME") |
| | 191 | "A variable of default Input Method Editor" |
| | 192 | :type 'string) |
| | 193 | (if (null emacs-ime) |
| | 194 | (setq emacs-ime "scim")) |
| | 195 | |
| | 196 | (defcustom vine-default t |
| | 197 | "A boolean for all Vine Linux default settings" |
| | 198 | :type 'boolean) |
| | 199 | (if (equal (getenv "LOGNAME") "root") |
| | 200 | (setq vine-default nil)) |
| | 201 | |
| | 202 | (defcustom vine-default-base t |
| | 203 | "A boolean for vine-default-base" |
| | 204 | :type 'boolean) |
| | 205 | |
| | 206 | (defcustom vine-default-faces t |
| | 207 | "A boolean for vine-default-faces" |
| | 208 | :type 'boolean) |
| | 209 | |
| | 210 | (defvar vine-default-setup-hook nil |
| | 211 | "*List of functions to be called at vine-default-setup") |
| | 212 | |
| | 213 | (defvar after-vine-default-setup-hook nil |
| | 214 | "*List of functions to be called at the end of vine-default-setup") |
| | 215 | |
| | 216 | (defun vine-default-setup () |
| | 217 | "a function for setup to default configurations of Vine Linux." |
| | 218 | (if vine-default |
| | 219 | (progn |
| | 220 | (if vine-default-base (require 'vine-default-base)) |
| | 221 | (if vine-default-faces (require 'vine-default-faces)) |
| | 222 | (run-hooks 'vine-default-setup-hook) |
| | 223 | (run-hooks 'after-vine-default-setup-hook) |
| | 224 | ) |
| | 225 | ) |
| | 226 | ) |
| | 227 | |
| | 228 | (add-hook 'after-init-hook 'vine-default-setup) |
| | 229 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| | 230 | |
| | 231 | (mapc 'load (directory-files "/etc/emacs-23.0.92/site-start.d" t "\\.el\\'")) |
| | 232 | }}} |
| | 233 | |
| | 234 | Emacs の関連パッケージに対しては、 |
| | 235 | 例えば YaTeX の場合は、 |
| | 236 | 50yatex-init.el に以下のような設定を追加しています。 |
| | 237 | {{{ |
| | 238 | (defcustom vine-default-yatex t |
| | 239 | "A boolean for vine-default-yatex" |
| | 240 | :type 'boolean) |
| | 241 | |
| | 242 | (add-hook 'vine-default-setup-hook |
| | 243 | (lambda() |
| | 244 | (if vine-default-yatex |
| | 245 | (require 'vine-default-yatex)))) |
| | 246 | }}} |
| | 247 | |
| | 248 | vine-default-yatex.el には、YaTeX のデフォルト設定を記述し、 |
| | 249 | (provide 'vine-default-yatex) を提供するようにします。 |
| | 250 | |
| | 251 | |
| | 252 | ==== vine-default の下での ~/.emacs.el の設定 ==== |
| | 253 | |
| | 254 | vine-default の下での Emacs の設定は、 |
| | 255 | 大きくわけて以下の 3 つの設定パートに分かれています。 |
| | 256 | |
| | 257 | a. vine-default |
| | 258 | b. vine-default が上書きしない設定 |
| | 259 | c. vine-default が上書きする設定 |
| | 260 | |
| | 261 | (a) は ~/.emacs.el を読み込んだ直後に、 |
| | 262 | /usr/share/emacs-23.x/site-lisp 以下の vine-default-*.el を然るべき順序で読み込まれます。 |
| | 263 | |
| | 264 | (b), (c) は、必要であれば ~/.emacs.el に(あるいは、.emacs.el から読み込む別の *.el に)設定します。 |
| | 265 | |
| | 266 | (b) を直接 ~/.emacs.el に設定して構いませんが、 |
| | 267 | (c) を直接 ~/.emacs.el に設定していると、 |
| | 268 | (a) により vine-default が優先されてしまいます。 |
| | 269 | |
| | 270 | 例えば、以下のように ~/.emacs.el にフォントを設定していても、 |
| | 271 | 後から読まれる vine-default-faces.el により「Monospace 12」に上書きされていまいます。 |
| | 272 | {{{ |
| | 273 | (if window-system |
| | 274 | (set-frame-font "Monospace 10")) |
| | 275 | }}} |
| | 276 | このような vine-default を上書きする設定は、after-vine-default-setup-hook をひっかけます。詳細は「高度な使い方」セクションを参照してください。 |
| | 277 | |
| | 278 | |
| | 279 | == Emacs Lisp パッケージ == |
| | 280 | |
| | 281 | ここでは、Emacs Lisp パッケージの作成および emacs flavor の挙動について説明します。 |
| | 282 | |
| | 283 | Vine Linux の Emacs は、 |
| | 284 | Debian で採用している Emacs Lisp パッケージ管理の独自システムを採用しています。 |
| | 285 | |
| | 286 | Emacs Lisp パッケージをインストールしたときに、 |
| | 287 | *.el から現在インストールされている Emacs の flavor に対応した *.elc を |
| | 288 | 自動的に生成(バイトコンパイル:byte-compile)し、 |
| | 289 | 必要なパスの設定やリソースの読み込みを行います。 |
| | 290 | さらに、Vine Linux の場合は vine-default の設定も同時に施されます。 |
| | 291 | |
| | 292 | 逆に、Emacs Lisp パッケージをアンインストールしたときには、 |
| | 293 | 通常のパッケージと同様にパッケージ自体の削除に加えて、 |
| | 294 | *.elc の削除も同時に行います。 |
| | 295 | |
| | 296 | === パッケージ構成 === |
| | 297 | |
| | 298 | === spec ファイル === |
| | 299 | |
| | 300 | === ''package''-{install,remove}.sh === |
| | 301 | |
| | 302 | === ''package''-init.el === |
| | 303 | |
| | 304 | ''package''-init.el は、 |
| | 305 | site-start.el から然るべき順序で読み込まれるように、addflavor 時に |
| | 306 | /usr/share/emacs/site-lisp/''package''/''package''-init.el |
| | 307 | から |
| | 308 | /etc/emacs-''flavor''/site-start.d/NN''package''-init.el |
| | 309 | へシンボリックリンクが張られます。 |
| | 310 | |
| | 311 | === vine-default-''package''.el === |
| | 312 | |
| | 313 | vine-default-''package''.el は、addflavor 時にバイトコンパイルしません。 |