Next: Completion Variables, Previous: High-Level Completion, Up: Completion [Contents][Index]
高レベル補完関数read-file-name
、read-directory-name
、read-shell-command
はそれぞれ、ファイル名、ディレクトリー名、シェルコマンドを読み取るようデザインされています。これらはデフォルトディレクトリーの自動挿入を含む特別な機能を提供します。
この関数はプロンプトpromptとともに補完つきでファイル名を読み取る。
例外として以下のすべてが真ならば、この関数はミニバッファーのかわりにグラフィカルなファイルダイアログを使用してファイル名を読み取る:
use-dialog-box
が非nil
の場合。Dialog Boxes in The GNU Emacs Manualを参照のこと。
グラフィカルなファイルダイアログを使用したときの正確な振る舞いは、プラットホームに依存する。ここでは単にミニバッファーを使用したときの振る舞いを記す。
read-file-name
はリターンするファイル名を自動的に展開しない。絶対ファイル名が必要ならば、自分でexpand-file-name
を呼び出さなければならない。
オプション引数require-matchは、completing-read
のときと同じ。Minibuffer Completionを参照のこと。
引数directoryは、相対ファイル名の補完に使用するディレクトリーを指定する。値は絶対ディレクトリー名。変数insert-default-directory
が非nil
の場合は、初期入力としてミニバッファーにdirectoryも挿入される。デフォルトはカレントバッファーのdefault-directory
の値。
initialを指定した場合、それはミニバッファーに挿入する初期ファイル名になる(directoryが挿入された場合はその後に挿入される)。この場合、ポイントはinitialの先頭に配される。initialのデフォルト値はnil
(ファイル名を挿入しない)。initialが何を行うか確認するには、ファイルをvisitしているバッファーでC-x
C-vを試すとよい。注意: ほとんどの場合、initialよりもdefaultの使用を推奨する。
defaultが非nil
の場合、ユーザーが最初にread-file-name
が挿入したものと同じ、空以外のコンテンツを残してミニバッファーをexitすると、この関数はdefaultをリターンする。insert-default-directory
が非nil
の場合はそれがデフォルトとなるので、ミニバッファーの初期コンテンツは常に空以外になる。require-matchの値に関わらず、defaultの有効性はチェックされない。とはいえrequire-matchが非nil
の場合、ミニバッファーの初期コンテンツは有効なファイル名(またはディレクトリー名)であるべきだろう。それが有効でない場合、ユーザーがそれを編集せずにexitするとread-file-name
は補完を試み、defaultはリターンされない。defaultはヒストリーコマンドからも利用できる。
defaultがnil
の場合、read-file-name
はその場所に代用するデフォルトを探そうと試みる。この代用デフォルトは、明示的にdefaultにそれが指定されたかのように、defaultとまったく同じ方法で扱われる。defaultがnil
でもinitialが非nil
の場合、デフォルトはdirectoryとinitialから得られる絶対ファイル名になる。defaultとinitialの両方がnil
で、そのバッファーがファイルをvisitしているバッファーの場合、read-file-name
はそのファイルの絶対ファイル名をデフォルトとして使用する。バッファーがファイルをvisitしていなければ、デフォルトは存在しない。この場合、ユーザーが編集せずにRETをタイプすると、read-file-name
は前にミニバッファーに挿入されたコンテンツを単にリターンする。
空のミニバッファー内でユーザーがRETをタイプした場合、この関数はrequire-matchの値に関わらず、空の文字列をリターンする。たとえばユーザーがM-x set-visited-file-nameを使用して、カレントバッファーをファイルをvisitしていないことにするのに、この方法を使用している。
predicateが非nil
の場合、それは補完候補として許容できるファイル名を決定する、1引数の関数である。predicateが関数名にたいして非nil
をリターンすれば、それはファイル名として許容できる値である。
以下はread-file-name
を使用した例である:
(read-file-name "The file is ") ;; 前の式を評価した後に、 ;; ミニバッファーに以下が表示される。:
---------- Buffer: Minibuffer ---------- The file is /gp/gnu/elisp/∗ ---------- Buffer: Minibuffer ----------
manual TABをタイプすると以下がリターンされる:
---------- Buffer: Minibuffer ---------- The file is /gp/gnu/elisp/manual.texi∗ ---------- Buffer: Minibuffer ----------
ここでユーザーがRETをタイプすると、read-file-name
は文字列"/gp/gnu/elisp/manual.texi"
をファイル名としてリターンする。
非nil
の場合は、read-file-name
と同じ引数を受け取る関数である。read-file-name
が呼び出されたとき、read-file-name
は通常の処理を行なうかわりに、与えられた引数でこの関数を呼び出す。
この変数が非nil
の場合、read-file-name
は補完を行なう際に大文字小文字を無視する。
この関数はread-file-name
と似ているが、補完候補としてディレクトリーだけを許す。
defaultがnil
でinitialが非nil
の場合、read-directory-name
はdirectory(directoryがnil
ならカレントバッファーのデフォルトディレクトリー)とinitialを組み合わせて代替えのデフォルトを構築する。defaultとinitialの両方がnil
の場合、この関数はdirectory、directoryもnil
の場合はカレントバッファーのデフォルトディレクトリーを代替えのデフォルトとして使用する。
この変数はread-file-name
により使用されるため、ファイル名を読み取るほとんどのコマンドにより、間接的に使用される。(これらのコマンドにはコマンドのインタラクティブフォームに‘f’や‘F’のコードレター(code
letter))をふくむすべてのコマンドが含まれる。Code Characters for
interactiveを参照のこと。)この変数の値は、(もしあれば)デフォルトディレクトリー名をミニバッファー内に配してread-file-name
を開始するかどうかを制御する。変数の値がnil
の場合、read-file-name
はミニバッファーに初期入力を何も配さない(ただしinitial引数で初期入力を指定しない場合)。この場合、依然としてデフォルトディレクトリーが相対ファイル名の補完に使用されるが、表示はされない。
この変数がnil
でミニバッファーの初期コンテンツが空の場合、ユーザーはデフォルト値にアクセスするために次のヒストリー要素を明示的にフェッチする必要があるだろう。この変数が非nil
ならミニバッファーの初期コンテンツは常に空以外となり、ミニバッファーで編集をおこなわず即座にRETをタイプすることにより、常にデフォルト値を要求できる(上記参照)。
たとえば:
;; デフォルトディレクトリーとともにミニバッファーが開始。
(let ((insert-default-directory t))
(read-file-name "The file is "))
---------- Buffer: Minibuffer ---------- The file is ~lewis/manual/∗ ---------- Buffer: Minibuffer ----------
;; ミニバッファーはプロンプトだけで空。 ;; appears on its line. (let ((insert-default-directory nil)) (read-file-name "The file is "))
---------- Buffer: Minibuffer ---------- The file is ∗ ---------- Buffer: Minibuffer ----------
この関数は、プロンプトpromptと優れた補完を提供して、ミニバッファーからのシェルコマンドを読み取る。これはコマンド名にたいして適切な候補を使用してコマンドの最初の単語を補完する。コマンドの残りの単語はファイル名として補完する。
この関数はミニバッファー入力にたいするキーマップとしてminibuffer-local-shell-command-map
を使用する。history引数は使用するヒストリーリストを指定する。省略、またはnil
の場合のデフォルトはshell-command-history
(shell-command-historyを参照)。オプション引数initialはミニバッファーの初期コンテンツを指定する(Initial Inputを参照)。もしあれば、残りのargsはread-from-minibuffer
内のdefaultおよびinherit-input-methodとして使用される(Text from Minibufferを参照)。
このキーマップはread-shell-command
により、コマンドおよびシェルコマンドの一部となるファイル名の補完のために使用される。これは親キーマップとしてminibuffer-local-map
を使用し、TABをcompletion-at-point
にバインドする。