[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
省略あるいは省略形(abbrev)とは、さらに長い文字列へと展開できる 文字列のことです。ユーザは省略した文字列を入力し、それを省略の展開形によっ て自動的に置き換えることができます。このことによりタイプする量を減らせま す。
現在有効な省略形は、省略形テーブル(abbrev table)に保持されてい ます。各バッファはローカルな省略形テーブルを持っていますが、通常同じ主モー ドにあるバッファは一つの省略形テーブルを共有します。また、グローバルな省 略形テーブルも存在します。通常は両方のテーブルを使用します。
省略形テーブルは、各省略形のためのシンボルを含むobarrayとして表現さ れます。このシンボルの名前が省略形であり、シンボルの値が展開形、シンボル の関数定義が省略形を展開するときのフック関数です(see section 省略形の定義)。シンボルの属性リスト・セルには、省略形が展開された回数が入りま す。これらのシンボルは通常のobarrayにはinternされないため、Lisp式を読み 込んだ結果として現れることは決してありません。実際、普通は省略形を操作す るコード以外では決して使われません。そのため、これらのシンボルを極端に通 常とは違う方法で使用しても安全です。See section シンボルの作成と intern。
ユーザレベルでの省略形に関するコマンドは(emacs)Abbrevs section `Abbrev Mode' in The GNU Emacs Manualをご覧ください。
32.1 Emacsで省略形が使えるように準備する | ||
32.2 省略形テーブル | ||
32.3 省略形の定義 | ||
32.4 省略形をファイルにセーブする | ||
32.5 省略形の参照と展開 | ||
32.6 標準的な省略形テーブル |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Abbrevモードは、abbrev-mode
変数の値で制御される副モードです。
この変数の値が非nil
のとき、省略形がバッファに入力されたときの自動
展開が有効になります。値がnil
のときは、省略形が定義されていたとし
ても、それは自動的に展開されません。
この変数はどのような方法で設定しても、自動的にバッファローカル変数になり ます。
これは、abbrev-mode
の、その値が上書きされていないバッファにおける
値です。(default-value 'abbrev-mode)
と同じです。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この節では、省略形テーブルをどのように作成し、操作するのかを説明します。
この関数は、新しい空の省略形テーブル、つまり、何もシンボルを含まない obarrayを作成して返します。これはゼロで埋められたベクトルです。
この関数は、tableのすべての省略形の定義を未定義化しますが、テーブ
ルそのものは空にして残します。戻り値はnil
です。
この関数は、tabname(シンボル)を省略形テーブルとして定義します。つまり、
値に省略形テーブルをもつ変数として定義します。この関数は、
definitionsにしたがって、テーブルのなかの省略形を定義します。
definitionsは、(abbrevname expansion hook
usecount)
形式の要素をもつリストです。戻り値は常にnil
です。
省略形テーブルを値にもつシンボルのリストです。define-abbrev-table
は新しい省略形テーブルの名前をこのリストにつけ加えます。
この関数は、nameと名づけられた省略形テーブルの記述を、ポイントの前に挿
入します。引数nameは、省略形テーブルを値にもつシンボルです。戻り値は、
常にnil
です。
もし、humanが非nil
のとき、記述は人間が読みやすい形でおこなわ
れます。それ以外のばあい、記述はLisp式となります。このLisp式は、現在定義
されているnameを正確に定義するdefine-abbrev-table
の呼び出し
式です。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
以下の関数は、指定した省略形テーブルの中の省略形を定義します。
define-abbrev
が低水準な基本関数であるのに対し、add-abbrev
はユーザに情報を尋ねるコマンドによって使われます。
この関数は、ユーザからの情報に基づいて、省略形テーブルtableに省略形を
追加します。引数typeは、これから定義する省略形の種類に関して英語で記
述した文字列です(典型的な例は"global"
あるいは
"mode-specific"
)。これは、ユーザへのプロンプトに使われます。引数
argは、展開形に使用する単語数です。
戻り値は、新しい省略形を内部的に示すシンボルです。または、すでに存在する省
略形を上書きするかどうかの確認時にユーザが承諾しなかった場合には、
nil
です。
この関数は、tableに、nameという名前の、expansionへと展開さ れ、hookを呼び出す省略形を定義します。戻り値は、Emacs内部で省略形を 表現するinternされていないシンボルです。その名前は、nameです。
引数nameは、文字列であるべきです。引数expansionは、文字列か、あ
るいは省略形を取り消す場合は、nil
であるべきです。
引数hookは、関数またはnil
です。もし、hookが非nil
の
ときは、省略形をexpansionで置き換えたあとに、引数なしでそれが呼ば
れます。hookが呼ばれるとき、ポイントはexpansionの末尾です。
省略形の使用回数はゼロに初期化されます。
この変数の値が非nil
の場合、ユーザはグローバル省略形だけを使うと決
めたことになります。このことはコマンドに、モード特有の省略形を定義するか
わりに、グローバルな省略形を定義するよう示します。この変数は、この節の関数の機
能を変えることはなく、関数の呼びだし側でチェックされます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
省略形の定義が保存されたファイルは、実際にはLispコードのファイルです。
省略形は、同じ内容の省略形テーブルを定義するLispプログラムの形で保存されます。
そのため、load
(see section プログラムでロードする方法)でファイルを読み
込むことが可能です。しかしながら、関数quietly-read-abbrev-file
は、
より便利なインターフェースを提供します。
save-some-buffers
のようなユーザレベルの機能は、以下に示すよう
な変数の制御下で、自動的に省略形をファイルへ保存することがで
きます。
省略形を読み書きするファイル名のデフォルト値です。
この関数は、前にwrite-abbrev-file
で書き込まれたfilenameという
名前のファイルから、省略形の定義を読み込みます。もし、filenameが
nil
のときは、abbrev-file-name
で指定されたファイルが使われ
ます。あとで変更を保存するために、save-abbrevs
はt
にセットさ
れます。
この関数は、メッセージを表示しません。nil
を返します。
変数save-abbrev
が非nil
のとき、Emacsはファイルをセーブする時
に省略形もセーブします。abbrev-file-name
は、省略形をセーブするファ
イル名を指定します。
この変数は、省略形の定義や変更があったときに、非nil
にセットされます。さま
ざまなEmacsコマンドがあなたの省略形を保存するかどうかを判断するフラグの
役目を果たします。
全省略形テーブルのすべての省略形定義を、ファイルfilenameへ、ロードす
ると元と同じ省略形を定義するLispプログラムの形でセーブします。この関数は
nil
を返します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
省略形はたいてい、self-insert-command
を含む対話的に使われるコマ
ンドによって展開されます。この節では、そのような関数を書く時に使うサブルーチン
について説明します。同じく、関数同士がコミュニケーションするために使う変数
についても説明します。
この関数は、abbrevと名づけられた省略形を示すシンボルを返します。省略形
が定義されていない場合は、nil
を返します。二つめのオプション引数
tableは、省略形を探すテーブル名です。tableがnil
のとき、この
関数は、まずカレント・バッファのローカル省略形テーブルを探し、その次にグロー
バル省略形テーブルを探します。
この関数は、abbrevが(カレント・バッファで使われる省略形テーブルの定義に
したがって)展開される文字列を返します。オプション引数tableは、
abbrev-symbol
の場合と同じく、使用するテーブルを指定します。
このコマンドは、ポイントの前の省略形を展開します。もし、ポイントが省略形の後
ろになければ、このコマンドはなにもしません。展開を行なった場合はt
を返し、それ以外はnil
を返します。
現在のポイントを、省略形の始まりとしてマークします。次の
expand-abbrev
の呼び出しでは、通常のようにポイント直前の単語ではな
く、この場所から(そのときの)ポイントまでを、展開するべき省略形として使用
します。
非nil
のとき、すべて大文字で入力された省略形は、すべて大文字で展開さ
れます。それ以外の場合、すべて大文字で入力された省略形は、各単語の先頭の
一文字が大文字で展開されます。
これは、expand-abbrev
のためのバッファ内位置で、次の省略形展開の始ま
りの位置に使われます。(nil
のときは、ポイントの前の単語を代わりに
使う意味になります)。 abbrev-start-location
は、expand-abbrev
が呼び出されるたびにnil
に初期化されます。この変数は、
abbrev-prefix-mark
によってもセットされます。
この変数の値は、abbrev-start-location
がセットされたバッファです。ほ
かのバッファで省略形展開を行なうと、abbrev-start-location
はクリアさ
れます。この変数は、abbrev-prefix-mark
によってセットされます。
これは、最新の省略形の展開のabbrev-symbol
です。この情報は、
unexpand-abbrev
コマンドのために、expand-abbrev
によって設定
されます。
最新の省略形展開が行なわれた場所を示します。この情報は、
unexpand-abbrev
コマンドのために、expand-abbrev
によって設定
されます。
これは、大文字小文字の変換も(もしあった場合は)含めて、最新の省略形展開の正
確な展開形です。もし、展開がすでに逆展開さているならば、この値はnil
と
なります。この情報は、unexpand-abbrev
コマンドのために、
expand-abbrev
によって設定されます。
これは正規フックであり、省略形が展開される直前に、このフックが保持する関数が順番に実行さ れます。See section フック。 正規フックであるため、このフック関数は引数をとり ません。しかしながら、ポイントの直前を調べることで、展開される省略形を見つ けることができます。
以下の例は、pre-abbrev-expand-hook
の簡単な使い方です。もしユー
ザが省略形を句読点で終らせた場合、確認を行なうフック関数が実行されま
す。このため、このフックはユーザに省略形を展開するかどうか決定させ、もし
確認がとれない場合はその展開を中止します。
(add-hook 'pre-abbrev-expand-hook 'query-if-not-space) ;; この関数は |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ここに示す変数は、Emacsでプリロードされる主モードのために用意してい る省略形テーブルです。
モードに依存しない省略形テーブルです。ここで定義された省略形は、全バッファ で有効になります。各バッファは、ローカルな省略形テーブルももつことができ、 そこで定義された省略形は、このグローバル・テーブルのものよりも優先されます。
このバッファローカル変数の値は、カレント・バッファの(モード特有の)省略形テー ブルです。
Fundamentalモードで使われるローカルな省略形テーブルです。全Fundamentalモー ド・バッファのローカル省略形テーブルとなります。
Textモードで使われる省略形テーブルです。
Cモードで使われる省略形テーブルです。
LispモードとEmacs Lispモードで使われる省略形テーブルです。
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Yasutaka SHINDOH on September, 29 2006 using texi2html 1.76.