Previous: , Up: ドキュメントの照会   [Contents][Index]


27.6.3 プログラミング言語のドキュメントの照会

Emacs Lispコードを編集するとき、コマンドC-h f (describe-function)およびC-h v (describe-variable)で、使用したい関数または変数のビルトインドキュメントを閲覧できます。コマンドと変数名のヘルプを参照してください。

ElDoc15はプログラム内のシンボル(関数、メソッド、クラス、変数等)のドキュメントを照会を手助けするための、バッファーローカルなマイナーモードです。このモードが有効だと、ポイント位置にあるシンボルにドキュメントがある際には常にエコーエリアに有益な情報が表示されます。たとえばEmacs Lispモードのバッファーではポイント位置にあるのが関数なら引数リスト、Lisp変数ならドキュメント文字列の1行目が表示されます。

ElDocモードのオンとオフを切り替えるにはM-x eldoc-modeとタイプします。Global ElDocモードも存在します。このモードはデフォルトでオンになっており、以降で説明する変数をセットするようなメジャーモードをもつバッファーでは、ElDocモードがオンに切り替わります。モードをグローバルにオフに切り替えるにはM-x global-eldoc-modeを使用してください。

Global ElDocモードはさまざまなメジャーモードのドキュメント関数を使用するために、それらのモードによって構成されるモードです。含まれるモードとしてはたとえばEmacs Lispモード、Pythonモード、Cfengineモードが挙げられます。更にElDocを構成する複数のメジャーモードにたいするサポートを提供するEmacs機能が挙げられます。このEmacs機能によって、ElDocがドキュメントを取得する際にこれらのモードの機能を使うことができるのです。これらの例には言語サーバーからの情報にもとづきドキュメントを提供するEglot (Eglot Features in Eglot: The Emacs LSP Clientを参照)、SemanticのIdle Summaryモード(Idle Summary Mode in Semantic Manualを参照)、ポイント位置の診断情報を表示するためにElDocを使用するFlymakeが含まれます(Finding diagnostics in GNU Flymake manualを参照)。

ElDocモードはEmacsがしばらくの短い間アイドルになった後に、ポイント位置のシンボルにたいして利用可能なドキュメントの表示をスケジュールすることで機能します。これによってあなたが迅速かつ遅延なしでタイプした際に、エコーエリアやモードラインでドキュメント文字列が煩わしくちらついて表示されるのを防がれるのです。

コマンドM-x eldoc-print-current-symbol-infoを使うことによって、ポイント位置にあるシンボルのドキュメント表示をトリガーすることもできます。

ElDocモードを構成するために、以下の変数を使用することができます:

eldoc-idle-delay

このユーザーオプションの値は、ポイント位置のドキュメントが表示されるまでのアイドル時間の量を制御します。この値には待機する秒数をセットする必要があります。値0は遅延なしで表示を行うことを意味します。デフォルトは0.5秒です。

eldoc-print-after-edit

このユーザーオプションが非nilの場合には、何らかのテキストの挿入や削除といった一部の編集コマンドの後だけElDocはドキュメントを表示します。これはすでにバッファーにあるシンボルではなく、あなたがタイプしたシンボルに関するドキュメントだけをEmacsに表示させたい場合に便利です。デフォルト値はnilです。この値を変更した場合には、もう一度eldoc-modeのオンとオフを切り替える必要があります。

eldoc-echo-area-use-multiline-p

これはエコーエリアで単一のスクリーン行として表示できない長さのドキュメントテキストを切り詰めるかどうか、切り詰めるとしたらどのように切り詰めるかを制御するユーザーオプションです。値が正の数値なら、それはElDocがドキュメントを切り詰めずにエコーエリアに表示できるスクリーン行の行数を指定します。正の整数なら表示に用いるスクリーン行の最大行数の絶対値、正の浮動小数点数ならスクリーン行の行数をフレームの高さにたいする割り合いを指定します。値がtならドキュメントの切り詰めを行わず(エコーエリアはmax-mini-window-heightが許容する高さまでリサイズされる。ミニバッファーでの編集を参照)、値がnilならドキュメントがスクリーン行の1行より長いと切り詰められることを意味します。最後に特別な値truncate-sym-name-if-fit(デフォルト)は、シンボルの名前を表すドキュメント部分を切り詰めればドキュメントがスクリーン行の1行に収まる場合には切り詰めを行うことを意味します。

eldoc-echo-area-display-truncation-message

nil(デフォルト)の場合には、エコーエリアに表示されているドキュメントが長すぎるために切り詰められていれば、完全なドキュメントを閲覧する方法についての手順をドキュメントの後に示します。nilの場合には、単に‘’でドキュメントが切り詰められていることを示します。

eldoc-echo-area-prefer-doc-buffer

このユーザーオプションの値がtなら、ElDocバッファーがどこかのウィンドウでドキュメントを既に表示している場合には、ElDocはドキュメントをエコーエリアに表示しません(コマンドM-x eldoc-doc-bufferを使えば、いつでもElDocバッファーを表示できる)。このオプションの値がシンボルmaybeなら、どこかのウィンドウにElDocバッファーが表示されていて、かつドキュメントをエコーエリアに表示するためには切り詰めが必要な場合には、エコーエリアにドキュメントが表示されることはありません。最後に値がnil(デフォルト)なら、それはドキュメントを常にエコーエリアに表示することを意味します。

eldoc-documentation-strategy

このカスタマイズ可能な変数には、ポイント位置にあるシンボルのドキュメント取得に用いる関数が保持されています。ドキュメントはフックeldoc-documentation-functions内の関数によって生成されます。eldoc-documentation-strategyのデフォルト値では、eldoc-documentation-functionsフックの関数が最初に生成したドキュメントテキストを表示するようElDocに指示することになっていますが、たとえばすべてドキュメントテキストを結合して表示させる等、別の方法によって動作するようeldoc-documentation-strategyをカスタマイズできます。

eldoc-documentation-functions

このアブノーマルフックの値はポイント位置にあるシンボルにたいして、カレントバッファーのメジャーモードに即したドキュメントを生成できる関数のリストです。これらの関数はElDocにたいするバックエンドのコレクションとして動作します。メジャーモードはこの変数のバッファーローカルな値にモードのドキュメント照会用の関数を追加することで、それらの関数をEldocに登録するのです。


Footnotes

(15)

Emacs Lispのバッファーのサポートを起源とすることによる歴史的なアクシデントから、このモードは“ElDoc”と命名されてしまいました。