高レベル補完関数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
のときと同じ。補完とミニバッファーを参照のこと。
引数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
は補完を行なう際にcaseを無視する。
この関数は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はミニバッファーの初期コンテンツを指定する(入力の初期値を参照)。もしあれば残りのargsはread-from-minibuffer
内のdefaultとinherit-input-methodとして使用される(ミニバッファーでのテキスト文字列の読み取りを参照)。
このキーマップはread-shell-command
により、コマンドとシェルコマンドの一部となるファイル名の補完のために使用される。これは親キーマップとしてminibuffer-local-map
を使用して、TABをcompletion-at-point
にバインドする。