Emacs Lispコードを編集する際、C-h f (describe-function) および C-h v
(describe-variable)
コマンドを使用すると、使用したいLisp関数や変数の組み込みドキュメントを表示できます。コマンド名または変数名によるヘルプを参照してください。
ElDoc17は、プログラム内のシンボル(関数、メソッド、クラス、変数など)のドキュメント参照を支援するバッファローカルなマイナーモードです。このモードが有効になると、ポイントにドキュメントが存在するシンボルがあるたびに、エコーエリアに有用な情報が表示されます。例えば、Emacs Lispモードのバッファでは、ポイントにある関数の引数リストが表示され、Lisp変数の場合はその変数のドキュメント文字列の1行目が表示されます。
ElDocモードを切り替えるには、M-x eldoc-modeと入力してください。また、デフォルトで有効になっているグローバルElDocモードもあり、メジャーモードが後述の変数を設定しているバッファにおいてElDocモードが有効になります。グローバルに無効にするには、M-x global-eldoc-modeを使用してください。
さまざまな主要なモードが、独自のドキュメント機能を利用するようにGlobal ElDocモードを設定しています。例としては、Emacs Lispモード、Pythonモード、Cfengineモードなどが挙げられます。さらに、複数の主要なモードをサポートするEmacsの機能も、ドキュメント取得にそれらの機能を利用するようElDocを設定しています。例としては、言語サーバーからの情報に基づいてドキュメントを提供するEglot(Eglot: The Emacs LSP ClientのEglot Featuresを参照)、SemanticのIdle Summaryモード(Semantic ManualのIdle Summary Modeを参照)、およびElDocを使用してポイントに診断情報を表示するFlymake(GNU Flymake manualのFinding diagnosticsを参照)などがあります。
ElDocモードは、Emacsが短時間アイドル状態になった後、ポイントにあるシンボルの利用可能なドキュメントを表示するようスケジュールすることで動作します。これにより、素早く入力する際に、エコーエリアやモードラインでドキュメントメッセージが煩わしくちらつくのを防ぐことができます。
また、M-x eldoc-print-current-symbol-info コマンドを使用して、ポイントにあるシンボルのドキュメントを表示させることもできます。
ElDocモードの設定には、以下の変数を使用できます。
eldoc-idle-delay ¶このユーザーオプションの値は、at-point ドキュメントが表示されるまでの待機時間を制御します。待機する秒数を指定してください。値が 0 の場合は、遅延なく表示されます。デフォルトは 0.5 秒です。
eldoc-print-after-edit ¶このユーザーオプションが nil 以外の場合、ElDoc
はテキストの挿入や削除といった編集コマンドを実行した後にのみドキュメントを表示します。これは、Emacs
に入力したシンボルに関するドキュメントのみを表示させ、バッファに既に存在するシンボルについては表示させない(つまり、ソースコードを読むだけではドキュメントが表示されない)ようにしたい場合に便利です。デフォルト値は
nil です。この値を変更する場合は、eldoc-mode を一度オフにしてから再度オンにする必要があります。
eldoc-echo-area-use-multiline-p
¶このユーザーオプションは、ドキュメントのテキストがエコーエリアに1行で表示できる長さを超える場合に、そのテキストを切り捨てるかどうか、およびどのように切り捨てるかを制御します。値が正の数の場合、ElDocがドキュメントを切り詰めずにエコーエリアに表示できる行数を指定します。正の整数は使用する行数の絶対的な最大値を指定し、浮動小数点数はフレームの高さに対する割合として行数を指定します。t の値は、ドキュメントを一切切り詰めないことを意味します(エコーエリアは max-mini-window-height で許可される高さまでリサイズされます。詳細は ミニバッファでの編集 を参照してください)。一方、nil の値は、ドキュメントが1行を超える場合に切り詰めることを意味します。最後に、特殊値 truncate-sym-name-if-fit(デフォルト)は、シンボル名を表すドキュメント部分を、それによってドキュメントを1行に収めることができる場合に切り詰めることを意味します。
eldoc-echo-area-display-truncation-message
¶non-nil(デフォルト)で、echoエリアに表示されるドキュメントが長すぎて省略される場合は、ドキュメントの後に、完全なドキュメントテキストを表示する方法についての指示を記載してください。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 が eldoc-documentation-functions
フック内の関数によって生成された最初のドキュメントテキストを表示するように指定していますが、eldoc-documentation-strategy
をカスタマイズして、すべてのドキュメントテキストを連結して表示するなど、別の動作をさせることも可能です。
eldoc-documentation-functions ¶この異常なフックの値は、現在のバッファのメジャーモードに応じて、ポイントにあるシンボルのドキュメントを生成できる関数のリストです。これらの関数は、ElDocのバックエンド群として機能します。メジャーモードは、この変数のバッファローカル値に関数を追加することで、ドキュメント検索関数をElDocに登録します。