[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
略語(abbrev)とは、より長い文字列へ展開される文字の列のことです。 ユーザーが略語の文字列を挿入すると、その展開形に自動的に置換されます。 これにより打鍵量を省けます。
現在有効な略語の集まりは、略語表(abbrev table)に記録されています。 各バッファにはローカルな略語表がありますが、 通常、同じメジャーモードのすべてのバッファは1つの略語表を共有します。 グローバルな略語表もあります。 通常、両方を使います。
略語表は、各略語に対するシンボルを収めたオブジェクト配列として表現されます。 シンボルの名前が略語です。 その値は展開形であり、その関数定義は展開を行うフック関数です。 その属性リストのセルには略語を展開した回数である利用回数が入ります。 それらのシンボルは、通常のオブジェクト配列にはインターンされませんから、 Lisp式を読み取った結果には、それらはけっして現れません。 実際、略語を扱うコード以外では、それらはけっして使われません。 したがって、それらをかなり非標準的に使っても安全です。 See 節 7.3 シンボルの作成とインターン。
ユーザーレベルの略語コマンドについては、 節 `略語の利用法' in
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
略語(abbrev)モードは、変数abbrev-mode
の値で制御される マイナモードです。
nil
以外であると、 バッファに略語が挿入されると自動的に展開するようになる。 値がnil
であると、略語を定義することはできるが、 自動的には展開されない。
この変数は設定されると自動的にバッファローカルになる。
abbrev-mode
を上書きしていないバッファ向けの abbrev-mode
の値である。 これは(default-value 'abbrev-mode)
と同じである。[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
本節では、略語表の作成方法と扱い方について述べます。
nil
を返す。(abbrevname expansion hook usecount)
の形の 要素から成るリストである。 戻り値はつねにnil
である。define-abbrev-table
は、新たな略語表の名前をこのリストに追加する。nil
である。
humanがnil
以外であると、この記述は人間向けである。 さもなければ、この記述はLisp式、つまり、 nameの現在の定義どおりにnameを定義するような define-abbrev-table
の呼び出しである。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
これらの関数は、指定した略語表に略語を定義します。 define-abbrev
は下位レベルの基本的な関数ですが、 add-abbrev
はユーザーに情報を問い合わせるコマンドが使います。
"global"
や"mode-specific"
。) この文字列はユーザーへのプロンプトに使われる。 引数argは、展開形の単語数である。
戻り値は、新たな略語を内部的に表現するシンボルであるか、 既存の略語を再定義することをユーザーが拒否したときにはnil
である。
引数nameは文字列であること。 引数expansionは、普通は、目的の展開形(文字列)であるが、 略語を未定義にするにはnil
である。 これが文字列でもnil
でもなければ、 略語を『展開する』ときにはhookだけを実行する。
引数hookは、関数かnil
である。 hookがnil
以外であると、 略語をexpansionに置換し終えてから引数なしで呼ばれる。 hookが呼ばれるときには、 ポイントはexpansionの直後に置かれる。
略語の利用回数は0に初期化される。
nil
以外であると、 ユーザーはグローバルな略語だけを使う意図があることを表す。 モード固有の略語を定義するコマンドに対して、 グローバルな略語を定義するように指示する。 この変数は本節の関数のふるまいを変えることはないが、 それらを呼び出す側でこの変数を検査している。[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
略語定義を保存したファイルは、実際には、Lispコードのファイルです。 略語は、同じ内容の同じ略語表を定義するLispプログラムの形で保存されます。 したがって、ファイルはload
(see 節 14.1 プログラムからのロード方法)で ロードできます。 しかし、関数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のさまざまなコマンドに対するフラグとして働く。nil
を返す。[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
通常、略語は、self-insert-command
を含む特定の対話的なコマンドに よって展開されます。 本節では、データのやりとりに使う変数に加えて、そのようなコマンドを書くために 使用するサブルーティンについて述べます。
nil
である。 省略可能な第2引数tableは、探索対象の略語表である。 tableがnil
であると、 この関数は、まずカレントバッファのローカルな略語表を試し、 つぎにグローバルな略語表を試す。abbrev-symbol
と同様に、 使用する略語表を指定する。t
を返し、 さもなければnil
を返す。expand-abbrev
を呼び出すと、 通常どおりにポイントのまえの単語を使うかわりに、 ここから(その時点での)ポイントまでのテキストを略語として展開する。nil
以外であると、 大文字だけで入力された略語を大文字だけで展開する。 さもなければ、大文字だけで入力された略語は、 展開形の各単語を大文字で始めるように展開される。expand-abbrev
がつぎに展開する略語の開始位置として使う バッファ内位置である。 (nil
であると、そのかわりにポイントのまえの単語を使う意味である。) expand-abbrev
が呼び出されるたびに、 abbrev-start-location
はnil
に設定される。 この変数は、abbrev-prefix-mark
でも設定される。abbrev-start-location
が設定されたバッファである。 別のバッファで略語を展開しようとするとabbrev-start-location
は クリアされる。 この変数はabbrev-prefix-mark
が設定する。abbrev-symbol
(略語を表すシンボル)である。 この情報は、コマンドunexpand-abbrev
向けに expand-abbrev
が残す (see 節 `略語展開の制御' in
unexpand-abbrev
向けに expand-abbrev
が残した情報を保持する。nil
である。 これは、コマンドunexpand-abbrev
向けに expand-abbrev
が残した情報を保持する。以下のコード例は、pre-abbrev-expand-hook
の使い方を示します。 ユーザーが略語を句読点文字で終えると、フック関数が確認を求めます。 したがって、このフックにより、ユーザーは展開の可否を決定でき、 了承しなかったときには展開を止められます。
(add-hook 'pre-abbrev-expand-hook 'query-if-not-space) ;; この関数は、 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
Emacsにあらかじめロードされるメジャーモード向けの 略語表を保持する変数一覧を示します。
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |