Changes between Initial Version and Version 1 of Emacs/Vine5/EmacsGuide


Ignore:
Timestamp:
2011/02/03 01:24:53 (13 years ago)
Author:
munepi
Comment:

Emacs から移しました。

Legend:

Unmodified
Added
Removed
Modified
  • Emacs/Vine5/EmacsGuide

    v1 v1  
     1[[PageOutline]] 
     2= Emacs ガイド(案)- vine-default について = 
     3 
     4== system-wide な設定 == 
     5 
     6Emacs を起動すると、site-start.el を読み終われば、 
     7すぐに ~/.emacs.el を読み込みます。 
     8site-start.el は Vine Linux の distribution-wide な設定ファイルのため、 
     94.2 以前で system-wide な設定を施すためには、 
     10RPMパッケージがアップデートされるたびに site-start.el を編集する必要がありました。 
     11 
     12そこで 5.0 では、 
     13直接 site-start.el を変更しなくても、 
     14system-wide な設定をできるようにしました。 
     15 
     16system-wide な設定ファイルは、 
     17Emacs のメジャーバージョンが XX の場合、 
     18/etc/emacs/emacs-XX-local.el 
     19に配置されています。 
     20Emacs-XX を起動したとき、 
     21もし /etc/emacs/emacs-XX-local.el が存在すれば、 
     22site-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 
     30Vine Linux の Emacs 23 では、 
     31Emacs 上で動作するアプリケーションのパッケージをインストールしたら、 
     32ユーザ初期設定ファイル ~/.emacs.el に何も設定を記述しなくても、 
     33そのアプリケーションがある程度使えるように、 
     34あらかじめ設定を用意し、その設定を自動的に読み込むようにしています。 
     35この Emacs における Vine Linux のデフォルト設定を vine-default と呼ぶことにします。 
     36 
     37=== 使い方 === 
     38 
     39vine-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 
     44Emacs を起動すると、デフォルトで vine-default の boolean が t になっているので、 
     45vine-default を読み込みます。 
     46 
     47もし vine-default をすべて無効にしたい場合は、 
     48~/.emacs.el に 
     49{{{ 
     50(setq vine-default nil) 
     51}}} 
     52を設定します。 
     53この場合は、メニューバーと言語ロケール以外は何も設定されていません。 
     54 
     55vine-default のうち、いくつかの設定を無効にすることができます。 
     56各 vine-default は、vine-default-''name'' の boolean が定義されていて、 
     57デフォルトでは t になっています。 
     58 
     59例えば、vine-default-base, vine-default-faces,  
     60vine-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 
     87Emacs 上からインストールされている elisp パッケージにあらかじめ設定されている vine-default の設定を閲覧できます。 
     88 
     89Emacs 上で 
     90{{{ 
     91M-x show-vine-default 
     92}}} 
     93を実行すると、起動している Emacs のバージョンに対応した vine-default の設定を閲覧できます。 
     94 
     95 
     96=== 高度な使い方 === 
     97 
     98vine-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 
     130vine-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 
     147Vine Linux の Emacs 上における IME は、 
     148X 上におけるそれと連動して、環境変数 EMACS_IME により設定されます。 
     149 
     150もし EMACS_IME と異なる IME を使いたい場合は、 
     151skk を例にすると、~/.emacs.el に 
     152{{{ 
     153(setq emacs-ime "skk") 
     154}}} 
     155を設定します。 
     156 
     157 
     158=== Vine Linux 4 の .emacs.my.el === 
     159 
     160Vine Linux 4.2 までの ~/.emacs.el には、 
     161ユーザ用初期化ファイル ~/.emacs.my.el があれば、 
     162それを読み込む仕組みがありました。 
     163 
     164Vine 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 以前は随分仕様が変わっているので、 
     177Vine Linux 4の Emacs 22 などで使っていた ~/.emacs.my.el をそのまま流用できるとは限りません。 
     178 
     179 
     180=== 仕組み === 
     181 
     182vine-default は、各デフォルト設定を読み込む *-init.el を、 
     183vine-default-setup 内で読まれる vine-default-setup-hook にひっかけて一旦ストックしておき、 
     184after-init-hook にひっかけた vine-default-setup を実行することにより、 
     185Vine 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 
     234Emacs の関連パッケージに対しては、 
     235例えば YaTeX の場合は、 
     23650yatex-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 
     248vine-default-yatex.el には、YaTeX のデフォルト設定を記述し、 
     249(provide 'vine-default-yatex) を提供するようにします。 
     250 
     251 
     252==== vine-default の下での ~/.emacs.el の設定 ==== 
     253 
     254vine-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 
     283Vine Linux の Emacs は、 
     284Debian で採用している Emacs Lisp パッケージ管理の独自システムを採用しています。 
     285 
     286Emacs 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 は、 
     305site-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 
     313vine-default-''package''.el は、addflavor 時にバイトコンパイルしません。