Next: , Previous: , Up: abbrevとabbrev展開   [Contents][Index]


37.2 abbrevの定義

define-abbrevはabbrevテーブル内にabbrevを定義するための基本的な低レベル関数です。

メジャーモードがシステムabbrevを定義する際には、:systemプロパティにtを指定してdefine-abbrevを呼び出すべきです。すべての保存された非システムabbrevは起動時(何らかのメジャーモードがロードされる前)にリストアされることに注意してください。したがってメジャーモードは最初にそのモードがロードされた際には、それらのモードのabbrevテーブルが空であると仮定するべきではありません。

Function: define-abbrev abbrev-table name expansion &optional hook &rest props

この関数はabbrev-table内にnameという名前でexpansionに展開されて、hookを呼び出すabbrevをプロパティprops (abbrevプロパティーを参照)とともに定義する。リターン値はname。ここではprops内の:systemプロパティは特別に扱われる。このプロパティが値forceをもつなら、たとえ同じ名前の非システムabbrevでも既存の定義を上書きするだろう。

nameは文字列であること。引数expansionは通常は望む展開形(文字列)であり、nilならそのabbrevを未定義とする。これが文字列またはnil以外の何かなら、そのabbrevはhookを実行することにより単に展開される。

引数hookは関数またはnilであること。hookが非nilならabbrevがexpansionに置換された後に引数なしでそれが呼び出される。hook呼び出しの際にはポイントはexpansionの終端に配置される。

hookno-self-insertプロパティが非nilであるような非nilのシンボルなら、hookは展開をトリガーするような自己挿入入力文字を挿入できるかどうかを明示的に制御できる。この場合には、hookが非nilをリターンしたらその文字の挿入を抑止する。対照的にhooknilをリターンしたら、あたかも実際には展開が行われなかったかのようにexpand-abbrev (またはabbrev-insert)もnilをリターンする。

define-abbrevは実際にabbrevを変更した場合には、通常は変数abbrevs-changedtをセットする。これはいくつかのコマンドがabbrevの保存を提案するためである。いずれにせよシステムabbrevは保存されないので、システムabbrevにたいしてこれは行われない。

User Option: only-global-abbrevs

この変数が非nilなら、それはユーザーがグローバルabbrevのみの使用を計画していることを意味する。これはモード固有のabbrevを定義するコマンドにたいして、かわりにグローバルabbrevを定義するよう指示する。この変数はこのセクション内の関数の振る舞いを変更しない。それは呼び出し側により検証される。