[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:14437] Re: emacsでの漢字変換



From: Chisato Yamauchi <cyamauch@hst.phyas.aichi-edu.ac.jp>
Message-Id: <20020628111738I.cyamauch@hst.phyas.aichi-edu.ac.jp>

>   やっぱ全然elispわかってないですね->私(汗;
> すでにある defcustom を .emacs に書くとはタコですね.

いちおう。

defvar: シンボルが定義されていなければ定義する。パッケージとか
        default.el(.emacsの後で読まれるサイト初期化ファイル) とかでの
        初期値用なので、ユーザは普通使わない。

defcustom: custom のエントリを追加する defvar。これもパッケージ用。

setq: 強制代入。

ということで、パッケージで setq を使うと、autoload されるものに関して、
.emacs の設定が効かなくなったり、逆に .emacs で defvar とか defcustom
とかを使うと、ダンプされたものとか site-start.el(.emacsの前に読まれる
サイト初期化ファイル) から呼ばれたものとかの値を上書きしないので、変更
が効かないことがある、とか、いろいろと謎の現象が出ます。

というわけで、パッケージの中で defvar/defcustom されているものを
.emacs で変更したい場合は setq を使いましょう、ということになるわけで
すね。

>       ;;; emcws のCANNAのコマンドを使う
>       (add-hook 'canna-load-hook '(lambda () 
>                                     (load "egg-canna")
>                                     (customize-tamago)))
> ↑========================↑
> フックに登録する(フックって何だかよく知らないですが).

hook ってのは、ただの変数で、昔はここに関数名や lambda 式による無名関
数を setq して、ライブラリ内で eval していました。

最近(emacs19以降?)は、複数の処理を実行できるように、hook の中はリスト
になっているようです。で、hook の追加は add-hook で、hook の実行は
run-hooks で行なうようになっています。確か、単純に append とかするとま
ずかったような気がします。

> #要はegg-cannaをloadした後に実行…たぶん.

canna.el (というか canna() )のどこかで run-hooks してるはずです。
そこが実行のタイミング。

ロードした後で実行、っていうのだと、eval-after-load ってのがあります。
# これも内部的には hook で実装されているのですが。
_______________________________
田原 俊一   jado@flowernet.gr.jp, shunichi_tahara@zenrin.co.jp
                                  http://flowernet.gr.jp/jado/
FingerPrint:  16 9E 70 3B 05 86 5D 08  B8 4C 47 3A E7 E9 8E D9
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

References
[plamo:14420] Re: emacsでの漢字変換, Chisato Yamauchi
[plamo:14425] Re: emacsでの漢字変換, KAWASAKI Masazumi
[plamo:14426] Re: emacsでの漢字変換, Chisato Yamauchi

[検索ページ] [メール一覧]
Plamo ML 公開システム