Go to the first, previous, next, last section, table of contents.

Completion

(Emacs の)いくつかのコマンドは、名前の completion で(ユーザーを) 助けたり/導く ことで、ユーザーの手間を省くようになっています。 describe-function や switch- to-buffer といったコマンドは、定義された関数や既存のバッファという (ストリング の全ての集合と比べると)ずっと小さな集合から名前を選びます。

以下の関数は、(かなり)一般的な形で completion を扱います。 try-completion はこ れら completion ルーチンの中心となります。これは、与えられた初期ストリングに対 し(可能な)最も長いサブストリングを返します。他の関数は、この他の様々な指示に対 応した completion を行ないます。

completion 中のミニバッファの操作は、ローカルキーマップを用いた場合の(通常の) 操作と整合が取れています。関数 completing-read が、completion を行なう場合の (通常の)インタフェースとなります。これは、何をどのように complete すべきかを示 す指示を持って呼ばれます。これは、ミニバッファにスイッチし、(その complerion で用いられる関数にバインドされた)キー (通常 RET, LFD, TAB, SPC, と ?) を定義す るローカルキーマップを用います。

Function: try-completion string alist &optional predicate

この関数は、 alist 中の string の可能な(全ての) completion の(最大の)共通 サブストリングを返します。

association リスト alist (セクション 6.6 [association リスト]、ページ 56 参照) 中の各 pair の最初の要素が string で始まっているか否かを調べます。次 に、マッチした全ての要素を比較します。マッチしたものの全てに共通する最も長 いシーケンスをストリングとして返します。マッチするものが存在しない場合、 nil を返します。 1 つだけマッチする場合、マッチは厳密(訳注:exact)で t を 返します。

alist は association リストでなく obarray であってもかまいません。この場 合、obarray 中の(全ての) print 名がマッチングの対象となります。グローバル 変数 obarray は、(全ての) Lisp シンボルの名前を持ちます。セクション 8.4 [obarray]、ページ 68 参照。

predicate が与えられた場合、これはアーギュメントを 1つ持つ関数でなくてはい けません。これは可能なマッチ(の各々)を調べる際に用いられ、 predicate が non-nil を返す時のみそのマッチを候補とします。 predicate に与えられるアー ギュメントは alist の要素(ストリングでなくてはいけない) か obarray からの シンボル(シンボル名であってはいけない)になります。

以下に示した例において、ストリング foo は alist の 3 つの pair にマッチし ます。これらは全て文字 fooba で始まっています。このためそれ (訳注:fooba) が結果となります。 2 番目の例では 1 つだけマッチするものが存在し、厳密に マッチするため t が返されます。

3 番目の例では、いくつものシンボルが forw で始まっており、それらは(全て)

word である forward を含んでいますが、それに続く文字 - を含まないものが 1 つ存在しています。

最後の例では、3 つの可能なマッチのうち 2 つだけがプレディケート test をパ スします(ストリング foobaz は短かすぎます)。それらはみなストリング `foobar' で始まっています。

  (try-completion "foo"
       '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4)))
  => "fooba"
  (try-completion "foo" '(("barfoo" 2) ("foo" 3)))
  => t
  (try-completion "forw" obarray)
  => "forward"
  (defun test (s) (> (lentgh (car s)) 6))
  => test
  (try-completion "foo"
       '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4))
       (function test))   ; xx なぜ function がここに?
  => "foobar"

Function: all-completions string alist &optional predicate

この関数は、try-completion に似ています。これは最も長いサブストリングのか わりに、可能な(全ての) completion のリストを返します。

次の例では test は try-completion の例で示したように定義されています。

  (all-completion "foo"
       '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4))
       (function test))   ; xx なぜ function がここに?
  => ("foobar1" "foobar2")

Function: completion-read prompt alist &optional predicate require-match initial

この primitive 関数は、ミニバッファにストリングを読み込み、 completion で ユーザーを助けます。最初 (ストリングでなくてはいけない) prompt を表示しま す。 initial が non-nil の場合、completing-read はそれを(入力の一部として) ミニバッファに挿入します。この後、 (completion を試みるいくつかのコマンド を提供し) ユーザーがその入力をエディットできるようにします。

これは (try-completion 同様) alist と predicate を用いて completion を行な います。

require-match が t の場合、入力が alist の要素に complete しない限り exit しません。 nil でも t でもない場合、completing-read はタイプされたもの自体 が alist の要素でない限り exit しません。

変数 completion-ignore-case の値が non-nil の場合、大文字/小文字の区別は無 視します。 completing-read は (require-match が nil か否かに従い) minibuffer-local-completion-map か minibuffer-local-must-match-map を持ち read-minibuffer を呼びます。これはまた特別な変数 minibuffer-completion- table, minibuffer-completion-predicate, minibuffer-completion-confirm を適 切なアーギュメントにバインドします。

  (completing-read "Complete a foo: "
       '(("foobar1" 1) ("barfoo" 2) ("foobaz" 2) ("foobar2" 4))
       nil t "fo")
  => "barfoo"
  ---------- Buffer: Minibuffer ----------
  Complete a foo: fo DEL DEL RET
  ---------- Buffer: Minibuffer ----------

Variable: minibuffer-local-completion-map

このグローバル変数の値は、(completionを用いてミニバッファから読み込み)その completionのどれかに正確にマッチすることを要求しない場合、用いるキーマップ

です。

これは(デフォルトで)以下のコマンドを定義します。

? minibuffer-completion-help SPC minibuffer-completion-word TAB minibuffer-complete LFD exit-minibuffer RET exit-minibuffer C-g abort-recursive-edit

Variable: minibuffer-local-must-match-map

このグローバル変数の値は、(completionを用いてミニバッファから読み込み)その completionの 1 つが正確にマッチすることを要求する場合、用いるキーマップで す。

これは(デフォルトで)以下のコマンドを定義します。

? minibuffer-completion-help SPC minibuffer-completion-word TAB minibuffer-complete LFD minibuffer-complete-and-exit RET minibuffer-complete-and-exit C-g abort-recursive-edit

Command: minibuffer-complete-word

この関数は、ミニバッファの内容を部分的に(訳注:partially) complete しま す。これは最大 1 word を complete します。ミニバッファの内容が 1 つしか completion を持たない場合(も) minibuffer-complete-word は word の構成要素 でない最初の文字を越えて文字を追加することはありません。

Command: minibuffer-complete

この関数は、ミニバッファの内容を(可能な限り) complete します。

Command: minibuffer-complete-and-exit

この関数は、ミニバッファの内容を complete し、その名前が completion の必要 なく有効(訳注:valid)である場合 exit します。名前が有効にマッチするまで complete されてある場合、このコマンドを繰り返すと exit します。

Command: minibuffer-completion-help

この関数は、カレントなミニバッファの内容に対する(可能な) completion のリス トを表示します。このためのバッファ *Completions* を表示するための新しい ウィンドウをポップアップします。

Function: display-completion-list completions

この関数は、変数 completions をストリーム standard-output にコネクトされた バッファに表示します。 completions は通常、(作られた) completion のリスト です。各要素は、そのまま print されるシンボルやストリングか、(あたかも)繋 げ(訳注:concatenate)られているかのように print される 2 つのストリングの リストです。

この関数は、minibuffer-completion-help から呼ばれます。

Variable: completion-ignore-case

non-nil は、completion において大文字/小文字の違いを考慮しないことを示しま す。

User Option: completion-ignored-extensions

completion は、このリスト中(訳注:??)のストリングで終っているファイル名を 無視します。

Variable: minibuffer-completion-table

ミニバッファでの completion に用いる alist か obarray。これは completing- read が read-minibuffer に渡すグローバル変数です。

Variable: minibuffer-completion-predicate

(minibuffer-completion-table のように) これは completing-read が read- minibuffer に渡すグローバル変数。

Variable: minibuffer-completion-confirm

non-nil は、ミニバッファを出る(訳注:exit)前に確認を要求することを示しま す。

Function: file-name-all-completions partial-filename directory

この関数は、名前が partial-filaname で始まる(ディレクトリ directory 中の) ファイルの、可能な(全ての) completion のリストを返します。

partial-filename は単純なファイル名でなくてはいけません。 ( directory が絶 対パス名でない場合) directory の前にカレントバッファのデフォルトのディレク トリを付加します。

  (file-name-all-completions "f" "~rms/lewis")
  => ("foo" "file.texinfo.~2~" "file.texinfo.~1~" "file.texinfo")
  (file-name-all-completions "fo" "")
  => ("foo")

Function: file-name-completion filename directory

この関数は、 (ディレクトリ directory 中の) ファイル名 filaname を complete します。これは (directory 中の) filename で始まる(全ての)ファイル名に共通 する最も長いプレフィックスを返します。

マッチするものが 1つだけ存在する場合、 filename はそれに厳密に(訳注: exactly) マッチし t を返します。 directory が filename で始まる名前を持た ない場合、nil を返します。

  (file-name-completions "fi" "")
  => "file.texinfo"
  (file-name-completions "file.texinfo" "")
  => "file.texinfo"
  (file-name-completions "file.texinfo.~1" "")
  => "file.texinfo.~1~"
  (file-name-completions "file.texinfo.~1~" "")
  => t
  (file-name-completions "file.texinfo.~3" "")
  => nil

Command: lisp-complete-symbol

この関数は、ポイントの前のシンボルの completion を行ないます。このシンボル はグローバル変数 obarray 中の(全ての) シンボルと比較され、可能なだけ complete されます。 (xx 何?? さらに completion が可能な場合、それらの文字 をバッファに挿入し、そのシンボルを complete します)。

シンボルが開き括弧のすぐ後から始まっている場合、関数定義を持つシンボルのみ を考慮します。そうでない場合、関数定義や、値や、プロパティーを持つ(全ての) シンボルを考慮します。xx 常に nil を返す?

この関数は理解できない。(訳注:??)

  ---------- Buffer: foo.el ----------
  (forwa
  ---------- Buffer: foo.el ----------
  (lisp-complete-symbol)
  => nil
  ---------- Buffer: foo.el ----------
  (forward-
  ---------- Buffer: foo.el ----------


Go to the first, previous, next, last section, table of contents.