GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/High_002dLevel-Completion.html ・ emacs-doc.conao3.com

21.6.4 高レベル完了関数

本節では、補完機能を用いて特定の種類の名称を読み取るための、より高レベルな便利関数について解説します。

ほとんどの場合、Lisp関数の途中でこれらの関数を呼び出すべきではありません。可能な限り、interactive 仕様において、コマンドの引数を読み取る処理の一環として、すべてのミニバッファ入力を行ってください。コマンドの定義を参照してください。

関数: read-buffer prompt &optional default require-match predicate

この関数はバッファ名を読み込み、文字列として返します。プロンプトには prompt が表示されます。引数 default は使用するデフォルト名であり、ユーザーが空のミニバッファで終了した場合に返される値です。nil 以外の場合は、文字列、文字列のリスト、またはバッファである必要があります。リストの場合、デフォルト値はそのリストの最初の要素となります。これはプロンプトに記載されますが、初期入力としてミニバッファに挿入されることはありません。

引数 prompt は、コロンとスペースで終わる文字列である必要があります。default が nil 以外の場合、関数はデフォルト値を用いてミニバッファから読み取るという慣習に従い、コロンの前の prompt にそれを挿入します(Emacs Programming Tips を参照)。

オプション引数 require-match は、completing-read と同様の意味を持ちます。補完とミニバッファを参照してください。

オプション引数 predicate が nil 以外の場合、考慮すべきバッファをフィルタリングする関数を指定します。この関数は、候補となる各バッファを引数として呼び出され、候補を拒否する場合は nil を、受け入れる場合は nil 以外を返す必要があります。

以下の例では、ユーザーが ‘minibuffer.t’ と入力し、次に RET と入力します。引数 require-match は t であり、指定された入力で始まる唯一のバッファ名は ‘minibuffer.texi’ であるため、その名前が値となります。

(read-buffer "Buffer name: " "foo" t)
;; After evaluation of the preceding expression,
;;   the following prompt appears,
;;   with an empty minibuffer:

---------- Buffer: Minibuffer ----------
Buffer name (default foo): ∗
---------- Buffer: Minibuffer ----------

;; The user types minibuffer.t RET.
     ⇒ "minibuffer.texi"
ユーザーオプション: read-buffer-function

この変数が nil 以外の場合、バッファ名を読み取るための関数を指定します。read-buffer は通常の処理を行う代わりにこの関数を呼び出し、read-buffer と同じ引数を渡します。

ユーザーオプション: read-buffer-completion-ignore-case

この変数が nil 以外の場合、read-buffer はバッファ名を読み込む際の補完処理において大文字小文字を区別しません。

関数: read-command prompt &optional default

この関数はコマンド名を読み込み、それをLispシンボルとして返します。引数 prompt は read-from-minibuffer と同様に使用されます。コマンドとは commandp が t を返すあらゆるものを指し、コマンド名とは commandp が t を返すシンボルであることを思い出してください。インタラクティブ呼び出しを参照してください。

引数 default は、ユーザーが null 入力を入力した場合に何を返すかを指定します。これはシンボル、文字列、または文字列のリストのいずれかになります。文字列の場合、read-command は返す前にそれをインターニングします。リストの場合、read-command はこのリストの最初の要素をインターニングします。default が nil である場合は、デフォルトが指定されていないことを意味します。このとき、ユーザーが null 入力を入力した場合の戻り値は (intern "") となります。つまり、名前が空文字列であり、表示形式が ## であるシンボルです(シンボル型 を参照)。

(read-command "Command name? ")

;; After evaluation of the preceding expression,
;;   the following prompt appears with an empty minibuffer:

---------- Buffer: Minibuffer ----------
Command name?
---------- Buffer: Minibuffer ----------

ユーザーが forward-c RET と入力すると、この関数は forward-char を返します。

read-command 関数は、completing-read の簡略化されたインターフェースです。現存する Lisp シンボルの集合内で完結するように変数 obarray を使用し、コマンド名のみを受け付けるように commandp 述語を使用しています:

(read-command prompt)
≡
(intern (completing-read prompt obarray
                         'commandp t nil))
関数: read-variable prompt &optional default

この関数は、カスタマイズ可能な変数の名前を読み込み、それをシンボルとして返します。引数の形式は read-command と同じです。commandp の代わりに述語 custom-variable-p を使用する点を除けば、read-command と同様に動作します。

コマンド: read-color &optional prompt convert allow-empty display foreground face

この関数は、色名または #RRRGGGBBB のようなRGB16進数表記のいずれかである色指定文字列を読み込みます。prompt(デフォルト:"Color (name or #RGB triplet):")でプロンプトを表示し、色名の補完を行いますが、RGB16進数表記の補完は行いません。標準色の名称に加え、補完候補にはポイントにおける前景色と背景色も含まれます。

有効なRGB値については、色名に記載されています。

この関数の戻り値は、ユーザーがミニバッファに入力した文字列です。ただし、対話的に呼び出された場合や、オプション引数 convert が nil 以外である場合は、入力された色名を対応するRGB値の文字列に変換し、代わりにそれを返します。この関数の入力には、有効な色指定が必要です。allow-empty が nil 以外で、ユーザーが空の入力を行った場合は、空の色名も許容されます。

対話的に、あるいは display が nil でない場合、戻り値はエコー領域にも表示されます。

オプション引数 foreground および face は、*Completions* バッファにおける補完候補の表示を制御します。候補は指定された face に表示されますが、色はそれぞれ異なります。foreground が nil 以外の場合、前景色が候補の色に変更され、それ以外の場合は背景色が候補の色に変更されます。

また、ユーザー選択のコーディング体系の関数 read-coding-system および read-non-nil-coding-system、ならびに 入力メソッド の関数 read-input-method-name も参照してください。