Consult は、Emacs の補完関数 completed-read に基づいた検索およびナビゲーション コマンドを提供します。補完を使用すると、候補のリストから項目をすばやく選択できます。 Consult は、非同期で対話型のconsult-grep
コマンドとconsult-ripgrep
コマンド、および行ベースの検索コマンドconsult-line
提供します。さらに、Consult は、バッファ、最近開いたファイル、ブックマーク、および他のソースからのバッファのような候補を切り替えるための高度なバッファ切り替えコマンドconsult-buffer
を提供します。 Consult コマンドの一部は、組み込み Emacs コマンドの拡張バージョンです。たとえば、 consult-imenu
コマンドは、ライブ プレビュー、グループ化、絞り込みを備えた Imenu のフラット リストを表示します。コマンドの完全なリストをご覧ください。
Consult は、標準の Emacs completing-read
API を中心とした補完システム、特にデフォルトの補完システム、Vertico、Mct、および Icomplete と完全な互換性があります。
このパッケージは、補完システムの仕様を最小限に抑えます。 Consult コマンドが任意の完了システムとうまく連携できることは、このパッケージの主な利点の 1 つです。 Consult は既存のセットアップにうまく適合し、小規模で独立したコンポーネントから完全な環境を作成するのに役立ちます。
補完的なパッケージである Marginalia、Embark、Orderless を Consult と組み合わせることができます。 Marginalia は、ドキュメント文字列やファイル情報などの注釈を使用して完了表示を充実させます。多用途の Embark パッケージは、コンテキスト メニューに相当するローカル アクションを提供します。これらのアクションは、ミニバッファー内の選択された候補、または通常のバッファー内のポイントで動作します。たとえば、ファイルのリストから選択すると、Embark はファイルを削除するアクションを提供します。さらに、Embark は、完了候補を収集バッファに収集する機能を提供します。 「Embark 統合」セクションでは、Consult と Embark がどのように連携するかについて詳しく説明します。
図 1: コマンド
consult-git-grep
図 2: コマンド
consult-imenu
図 3: コマンド
consult-line
ほとんどの Consult コマンドは、意味のある命名スキームconsult-<thing>
に従います。多くのコマンドは、あまり知られていないが、ユーザーが望む入力を推測する「将来の履歴」と呼ばれる便利な Emacs 機能を実装しています。コマンド プロンプトでMn
と入力すると、通常、Consult はポイントに記号または物体を入力に挿入します。
ヒント: Marginalia アノテーターをアクティブにしている場合は、 Mx ^consult
と入力すると、すべての Consult コマンドとその省略された説明が表示されます。あるいは、 Ch a ^consult
と入力すると、すべての Consult 変数と関数の概要とその説明が表示されます。
consult-buffer
: 仮想バッファをサポートするswitch-to-buffer
の拡張バージョン。バッファのライブ プレビューと仮想バッファ タイプへの絞り込みをサポートします。 f SPC
と入力すると、最近のファイルに絞り込むことができます。 SPC
押すと、一時的なバッファーが表示されます。サポートされている絞り込みキー:recentf-mode
が必要)consult-buffer-sources
で構成されたカスタムのその他のソース。consult-buffer-other-window
、 consult-buffer-other-frame
、 consult-buffer-other-tab
: consult-buffer
のバリアント。consult-project-buffer
: 現在のプロジェクトのバッファおよび最近のファイルに制限されたconsult-buffer
のバリアント。カスタム ソースをconsult-project-buffer-sources
に追加できます。コマンドをプロジェクトの外部から呼び出すと、プロジェクトの入力を求めるプロンプトが表示される場合があります。consult-bookmark
: ブックマークを選択または作成します。ブックマークを選択するには、代替としてconsult-buffer
を使用することもできます。これには、ブックマーク仮想バッファ ソースを含めることができます。 consult-bookmark
ブックマークのプレビューと絞り込みをサポートしていることに注意してください。consult-recent-file
: プレビュー付きで最近使用したファイルから選択します。代わりに、仮想バッファ ソースとして最近のファイルを含めることができる強力なconsult-buffer
使用することをお勧めします。 recentf-mode
最近使用したファイルの追跡が可能になります。 consult-yank-from-kill-ring
: kill-ring
から項目を選択するためのyank
の拡張バージョン。選択したテキストがバッファー内でオーバーレイとしてプレビューされました。consult-yank-pop
: DWIM 動作を備えたyank-pop
の拡張バージョン。 kill-ring
を循環することで最後のyank
置き換えるか、最後のyank
がない場合はkill-ring
を参照します。選択したテキストがバッファー内でオーバーレイとしてプレビューされました。consult-yank-replace
: consult-yank-pop
と似ていますが、常に最後のyank
kill-ring
の項目に置き換えます。consult-kmacro
: マクロリングからマクロを選択して実行します。 consult-register
: レジスタのリストから選択します。このコマンドは、登録タイプの絞り込みとマーカー位置のプレビューをサポートしています。このコマンドはレジスタの内容を検索するのに便利です。簡単にアクセスするには、 consult-register-load
コマンド、 consult-register-store
、または組み込みの Emacs register コマンドを使用します。consult-register-format
: レジスタのフォーマットを拡張するには、 register-preview-function
この関数に設定します。設定例を参照してください。consult-register-window
: register-preview
をこの関数に置き換えて、より良い登録ウィンドウを実現します。設定例を参照してください。consult-register-load
: レジスタを迅速にロードするためのユーティリティ コマンド。コマンドはレジスタ値にジャンプするか、レジスタ値を挿入します。consult-register-store
: アクション メニューを使用して現在のコンテキストに応じてレジスタを保存するための UI が改善されました。アクティブな領域を使用すると、コンテンツを保存/追加/先頭に追加し、プレフィックス引数が指定された場合はオプションで領域を削除します。数値プレフィックス引数を使用して、数値を保存/追加します。それ以外の場合は、ポイント、フレームセット、ウィンドウ、または kmacro を保存します。使用例:M-' x
: アクティブな領域がない場合は、ポイントをレジスタx
に保存します。領域がアクティブな場合は、その領域をレジスタx
に保存します。M-' Mw x
: ウィンドウ設定をレジスタx
に保存します。Cu 100 M-' x
: 数値をレジスタx
に保存します。 consult-goto-line
: ライブ プレビューで強化された行番号にジャンプします。これはgoto-line
のドロップイン代替品です。行番号を入力すると、指定した行の最初の列にジャンプします。または、特定の列にジャンプするには、 line:column
と入力します。consult-mark
: mark-ring
内のマーカーにジャンプします。ライブ プレビューと再帰的編集をサポートします。consult-global-mark
: global-mark-ring
内のマーカーにジャンプします。ライブ プレビューと再帰的編集をサポートします。consult-outline
: アウトラインの見出しにジャンプします。見出しレベルへの絞り込み、ライブ プレビュー、再帰的編集をサポートします。consult-imenu
: 現在のバッファー内の imenu 項目にジャンプします。ライブ プレビュー、再帰的編集、絞り込みをサポートします。consult-imenu-multi
: 現在のバッファと同じメジャー モードで、プロジェクト バッファ内の imenu 項目にジャンプします。ライブ プレビュー、再帰的編集、絞り込みをサポートします。この機能は imenu-anywhere からインスピレーションを得たものです。 consult-line
: 検索文字列を入力し、一致する行から選択します。ライブ プレビューと再帰的編集をサポートします。ポイントのシンボルと最近の Isearch 文字列が「将来の履歴」に追加され、 Mn
押すとアクセスできます。 consult-line
isearch-mode-map
にバインドされ、Isearch の実行中に呼び出される場合、現在の Isearch 文字列が使用されます。consult-line-multi
: 複数のバッファーにわたって動的に検索します。デフォルトでは、プロジェクト バッファ全体を検索します。接頭辞引数を指定して呼び出された場合は、すべてのバッファーを検索します。候補は入力に基づいてオンデマンドで計算されます。このコマンドは、 consult-grep
と同様に動作しますが、ファイルではなくバッファーに対して動作します。consult-keep-lines
: バッファのフィルタリングに現在の補完スタイルを使用するkeep/flush-lines
の代替品。この関数は入力中にバッファを更新します。特に、 consult-keep-lines
completing-read
と同じ完了フィルタリングに依存して、エクスポートされた Embark 収集バッファをさらに絞り込むことができます。入力が否定演算子 (つまり! SPC
で始まる場合。 ! SPC
、フィルターは補数と一致します。領域がアクティブな場合、その領域はフィルタリングを制限します。consult-focus-lines
: 現在の補完スタイルを使用して行をフィルタリングすることにより、行を一時的に非表示にします。隠線を再度表示するには、 Cu
プレフィックス引数を指定して呼び出します。入力が否定演算子 (つまり! SPC
で始まる場合。 ! SPC
、フィルターは補数と一致します。 consult-keep-lines
とは対照的に、この関数はバッファを編集しません。領域がアクティブな場合、その領域はフィルタリングを制限します。 consult-grep
、 consult-ripgrep
、 consult-git-grep
: ファイル内の正規表現を検索します。 Consult は、検索語を入力している間、Grep を非同期的に呼び出します。少なくともconsult-async-min-input
文字が入力された後、検索が開始されます。最初の文字が#
などの句読点文字である場合、Consult は入力文字列を 2 つの部分に分割します。たとえば#regexps#filter-string
2 番目の#
で分割されます。文字列regexps
が Grep に渡されます。 Consult は Emacs の正規表現を検索プログラムが理解できる表現に変換することに注意してください。プロンプトでは常に Emacs 正規表現を使用してください。スペースで区切って複数の正規表現を入力すると、すべての正規表現に一致する行のみが表示されます。文字通りスペースを一致させるには、バックスラッシュでスペースをエスケープします。 filter-string
高速Emacs フィルタリングに渡され、一致リストがさらに絞り込まれます。これは、オーダーレスのような高度な補完スタイルを使用している場合に特に便利です。 consult-grep
プレビューをサポートしています。プロジェクトが見つかった場合、 consult-grep
現在のプロジェクト ディレクトリを検索します。それ以外の場合は、 default-directory
が検索されます。 consult-grep
接頭辞引数Cu Ms g
を指定して呼び出された場合は、1 つ以上のカンマ区切りのファイルとディレクトリを手動で指定できます。 2 つの接頭辞引数Cu Cu Ms g
を指定して呼び出した場合、まだプロジェクトに入っていない場合は、最初にプロジェクトを選択できます。consult-find
、 consult-fd
、 consult-locate
: パスを正規表現と照合してファイルを検索します。 consult-grep
の場合と同様、プロジェクトのルートまたは現在のディレクトリが検索のルート ディレクトリになります。入力文字列は、 consult-grep
と同様に処理されます。最初の部分は find に渡され、2 番目の部分は Emacs フィルタリングに使用されます。 consult-find
ファインドのプレフィックス引数は、consult grep コマンドの場合と同様に機能します。 consult-compile-error
: コンパイル エラーにジャンプします。ライブ プレビューの絞り込みと再帰的編集をサポートします。consult-flymake
: Flymake 診断にジャンプします。ライブ プレビューと再帰的編集をサポートします。このコマンドは絞り込みをサポートしています。 e SPC
、 w SPC
、 n SPC
を押すと、それぞれエラー、警告、メモのみが表示されます。consult-xref
: xref との統合。この関数はxref-show-xrefs-function
およびxref-show-definitions-function
として設定できます。 consult-complex-command
: command-history
からコマンドを選択します。このコマンドは、 repeat-complex-command
のcompleting-read
バージョンであり、chistory.el のcommand-history
コマンドの置き換えでもあります。consult-history
: 現在のバッファ履歴 (Eshell や Comint 履歴など) から文字列を挿入します。このコマンドはミニバッファから呼び出すこともできます。その場合、 consult-history
minibuffer-history-variable
に保存されている履歴を使用します。 completion-at-point
を希望する場合は、Cape パッケージのcape-history
を見てください。consult-isearch-history
: Isearch セッション中に、このコマンドは履歴から検索文字列を選択し、新しく選択した文字列で検索を続行します。 Isearch の外部では、このコマンドを使用すると履歴から文字列を選択し、新しい Isearch を開始できます。 consult-isearch-history
isearch-edit-string
のドロップイン代替として機能します。 consult-minor-mode-menu
: マイナー モードを有効/無効にします。 i/o/l/g SPC
それぞれ押すことで、オン/オフ/ローカル/グローバル モードへの絞り込みをサポートします。consult-mode-command
: 現在アクティブなマイナー モードまたはメジャー モードからコマンドを実行します。 l/g/m
キーによるローカル マイナー/グローバル マイナー/メジャー モードへの絞り込みをサポートします。 consult-org-heading
: 組織バッファ用のconsult-imenu
またはconsult-outline
のバリアント。見出しとその祖先の見出しはスラッシュで区切られます。見出しレベル、優先度、TODO キーワードによる絞り込み、ライブ プレビュー、再帰編集をサポートします。consult-org-agenda
: 組織の議題の見出しにジャンプします。見出しレベル、優先度、TODO キーワードによる絞り込み、ライブ プレビュー、再帰編集をサポートします。 consult-man
: Unix apropos
またはman -k
を使用して、Unix のマニュアル ページを検索します。 consult-man
Emacs man
コマンドを使用して、選択された man ページを開きます。consult-info
: 情報ページの全文検索。コマンドが*info*
バッファ内から呼び出された場合、現在のマニュアルを検索します。定義済みの情報ページのセットを検索する独自のコマンドを作成することもできます。次に例を示します。 ( defun consult-info-emacs ()
" Search through Emacs info pages. "
( interactive )
(consult-info " emacs " " efaq " " elisp " " cl " " compat " ))
( defun consult-info-org ()
" Search through the Org info page. "
( interactive )
(consult-info " org " ))
( defun consult-info-completion ()
" Search through completion info pages. "
( interactive )
(consult-info " vertico " " consult " " marginalia " " orderless " " embark "
" corfu " " cape " " tempel " ))
consult-theme
: テーマを選択し、現在有効になっているすべてのテーマを無効にします。候補をスクロールしながらテーマのライブ プレビューをサポートします。consult-preview-at-point
およびconsult-preview-at-point-mode
: *Completions*
バッファー内のポイントで候補をプレビューするコマンドおよびマイナー モード。このモードは、Mct またはデフォルトの*Completions*
UI を使用する場合に関連します。consult-completion-in-region
: バッファ内補完 UI として Corfu を使用しない場合、この関数はcompletion-in-region-function
として設定できます。次に、ミニバッファー補完 UI (Vertico または Icomplete) が、 completion-at-point
に使用されます。 ; ; Use `consult-completion-in-region' if Vertico is enabled.
; ; Otherwise use the default `completion--in-region' function.
( setq completion-in-region-function
( lambda ( &rest args )
( apply ( if vertico-mode
# 'consult-completion-in-region
# 'completion--in-region )
args)))
consult-completion-in-region
の代わりに、バッファ内の完了を小さなポップアップとして直接確認したい場合があります。その場合は、Corfu パッケージをお勧めします。 Lsp モードと組み合わせたconsult-completion-in-region
は技術的な制限があります。 Lsp サーバーは、洗練された候補文字列を生成するために、ポイントでの入力に依存します。完了は元のバッファからミニバッファに転送されるため、サーバーは更新された入力を受け取りません。対照的に、たとえば Corfu を介したバッファ内 Lsp 補完は、補完が元のバッファ内で直接行われるため、適切に機能します。
Consult は、候補のライブ プレビュー、候補グループへの追加の絞り込み機能、および非同期的に生成された候補リストによりcompleting-read
強化します。ほとんどの Consult コマンドで使用される内部consult--read
関数は、 completing-read
薄いラッパーであり、特別な機能を提供します。複数の候補ソースをサポートするために、高レベル関数consult--multi
存在します。 Consult のアーキテクチャにより、高度な機能を提供しながら、バックエンドでさまざまな完了システムと連携できます。
一部のコンサルト コマンドはライブ プレビューをサポートしています。たとえば、 consult-line
の項目をスクロールすると、バッファは対応する位置までスクロールします。検索の進行中に、ミニバッファとバッファの間を行き来して再帰的編集を実行することができます。
Consult では、デフォルトでプレビューが有効になります。これらを無効にするには、 consult-preview-key
変数を調整します。さらに、構成例に示すように、手動でプレビューをトリガーするキーバインドを指定することもできます。 consult-preview-key
のデフォルト設定はany
です。これは、選択した候補が変更されたときにキーを押すとすぐにConsult がプレビューをトリガーすることを意味します。各コマンドは、独自の:preview-key
を使用して個別に設定できます。次の設定が可能です。
'any
(list :debounce 0.5 'any)
"M-."
(list :debounce 0.5 "M-.")
nil
なし安全な推奨事項は、通常は自動即時プレビューを有効のままにし、ファイルの読み込みによりプレビューに負荷がかかる可能性があるコマンドについてのみ自動プレビューを無効にすることです。内部的には、Consult はthis-command
の値を使用して、カスタマイズされた:preview-key
を決定します。つまり、 consult-*
コマンドを独自の関数またはコマンド内でラップする場合、考慮されるようにするには、カスタム コマンドの名前をconsult-customize
呼び出しに追加する必要もあります。
(consult-customize
consult-ripgrep consult-git-grep consult-grep
consult-bookmark consult-recent-file consult-xref
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
; ; my/command-wrapping-consult ;; disable auto previews inside my command
:preview-key '( :debounce 0.4 any) ; ; Option 1: Delay preview
; ; :preview-key "M-.") ;; Option 2: Manual preview
この場合、現在の候補に対して開始アクションを使用する場合と、手動でトリガーされるプレビューを使用する場合の違いは何なのか疑問に思うかもしれません。主な違いは、手動プレビューで開かれたファイルは完了セッション後に再び閉じられることです。プレビュー中は、パフォーマンスを向上させるために一部の機能が無効になります。たとえば、カスタマイズ変数consult-preview-variables
およびconsult-preview-allowed-hooks
を参照してください。 consult-preview-allowed-hooks
にリストされているフックのみが実行されます。この変数はfind-file-hook
、 change-major-mode-hook
、およびモード フック ( prog-mode-hook
など) に適用されます。プレビュー中に追加のフォント ロックを有効にするには、対応するフックを許可リストに追加します。次のコードは、org-modern と hl-todo についてこれを示しています。
; ; local modes added to prog-mode hooks
( add-to-list 'consult-preview-allowed-hooks 'hl-todo-mode )
( add-to-list 'consult-preview-allowed-hooks 'elide-head-mode )
; ; enabled global modes
( add-to-list 'consult-preview-allowed-hooks 'global-org-modern-mode )
( add-to-list 'consult-preview-allowed-hooks 'global-hl-todo-mode )
consult-preview-partial-size
より大きいファイルは部分的にプレビューされます。テーマのプレビューは遅いため、 consult-theme
の場合はプレビューを遅らせると便利です。遅延により、UI エクスペリエンスがよりスムーズになります。
; ; Preview on any key press, but delay 0.5s
(consult-customize consult-theme :preview-key '( :debounce 0.5 any))
; ; Preview immediately on M-., on up/down after 0.5s, on any other key after 1s
(consult-customize consult-theme
:preview-key
'( " M-. "
:debounce 0.5 " <up> " " <down> "
:debounce 1 any))
Consult は候補者グループに対して特別なサポートを提供します。完了 UI がグループ化機能をサポートしている場合、UI はグループを細い線で区切って、グループのタイトルを表示します。グループ化は、候補リストが複数のタイプの候補または複数のソースからの候補で構成されている場合に便利です。たとえば、バッファと最近開いたファイルの両方を表示するconsult-buffer
コマンドです。グループタイトルを無効にするには、 consult-customize
マクロを使用して、対応するコマンドの:group
プロパティを nil に設定することができます。
絞り込みプレフィックスを入力するか絞り込みキーを押すことにより、補完候補を特定の候補グループに限定することができます。 consult-buffer
コマンドを使用する場合は、プレフィックスb SPC
を入力して、候補のリストをバッファのみに制限できます。その後DEL
押すと、完全な候補リストが再度表示されます。さらに、縮小プレフィックス キーと拡大キーを設定して、同じ効果を達成するために押すことができます。設定変数consult-narrow-key
とconsult-widen-key
参照してください。
consult-narrow-key
を押した後、 Ch
押すと、使用可能な絞り込みキーが表示されます。プレフィックス キーの後にCh
押すと、 prefix-help-command
が呼び出され、デフォルトでキーバインドのヘルプ ウィンドウが表示されます。よりコンパクトな代替手段として、キーにバインドできるconsult-narrow-help
コマンドがあります?
または、設定例に示すように、 consult-narrow-map
のCh
参照してください。 what-key がインストールされている場合、 consult-narrow-key
押した後、what-key ウィンドウに絞り込みキーが自動的に表示されます。
Consult は、候補リストの非同期生成をサポートしています。この機能は、 consult-grep
などの検索コマンドに使用され、ユーザーが正規表現を入力している間に一致リストが動的に生成されます。 grep プロセスはバックグラウンドで実行されます。正規表現を変更すると、バックグラウンド プロセスが終了し、変更された正規表現を使用して新しいプロセスが開始されます。
見つかった一致は、インストールされている Emacs の補完スタイルを使用して絞り込むことができます。これは、たとえばorderless
補完スタイルを使用している場合に強力です。
この 2 レベルのフィルタリングは、入力文字列を分割することで可能になります。入力文字列の一部は grep への入力として扱われ、入力の一部はフィルタリングに使用されます。複数の分割スタイルが利用可能で、 consult-async-split-styles-alist
で構成されます: nil
、 comma
、 semicolon
、およびperl
。デフォルトの分割スタイルは、変数consult-async-split-style
で構成されます。
comma
とsemicolon
分割スタイルでは、カンマまたはセミコロンの前の最初の単語が grep に渡され、残りの文字列がフィルタリングに使用されます。 nil
分割スタイルは分割を実行せず、入力全体が grep に渡されます。
perl
分割スタイルは、Perl 正規表現と同様の構文を使用して、入力文字列を句読点で分割します。
例:
#defun
: grep を使用して「defun」を検索します。#consult embark
: grep を任意の順序で使用して、「consult」と「embark」の両方を検索します。#first.*second
: grep を使用して、「first」に続いて「next」を検索します。#(consult|embark)
: grep を使用して「consult」または「embark」を検索します。 Emacs スタイルの正規表現の使用に注意してください。#defun#consult
: grep を使用して「defun」を検索し、「consult」という単語でフィルターします。/defun/consult
: 他の句読点文字を使用することも可能です。#to#
: grep パターンはデフォルトでconsult-async-min-input
文字よりも長くなければならないため、grep を使用して「to」を強制的に検索します。#defun -- --invert-match#
: 引数--invert-match
grep に渡します。 find
やgrep
などの非同期プロセスは、トラブルシューティングに役立つエラー ログ バッファ_*consult-async*
(先頭のスペースに注意してください) を作成します。プロンプトには、プロセスのステータスを示す小さなインジケーターがあります。
:
入力が提供される前の通常のプロンプトコロン。*
警告の顔が表示され、プロセスは実行中です。:
成功の顔、成功、プロセスはエラー コード 0 で終了しました。!
エラーフェイス、失敗、プロセスがゼロ以外のエラーコードで終了しました。;
エラーが発生し、追加の入力が提供された場合などに中断されます。 複数の同期候補ソースを組み合わせることができます。この機能は、 consult-buffer
コマンドで使用され、バッファーのような候補を 1 つのメニューに表示して、迅速にアクセスできるようにします。デフォルトでは、 consult-buffer
にはバッファ、ブックマーク、最近のファイル、プロジェクト固有のバッファとファイルが含まれます。ソースのリストはconsult-buffer-sources
変数を介して構成できます。任意のカスタム ソースを定義できます。
例として、ブックマーク ソースは次のように定義されます。
( defvar consult--source-bookmark
`( :name " Bookmark "
:narrow ?m
:category bookmark
:face consult-bookmark
:history bookmark-history
:items ,# 'bookmark-all-names
:action ,# 'consult--bookmark-action ))
必須のソースフィールド:
:category
完了カテゴリ。:items
選択する文字列のリスト、または文字列のリストを返す関数。コンスセルのリストはサポートされていません。オプションのソースフィールド:
:name
ソースの名前。絞り込み、グループのタイトル、および注釈に使用されます。:narrow
絞り込み文字または(character . string)
ペア。:preview-key
プレビュー キー、またはプレビューをトリガーするキー。:enabled
ソースが有効な場合に t を返さなければならない関数。:hidden
このソースの t 個の候補がデフォルトで非表示になる場合。:face
候補を強調表示するために使用される顔。:annotate
各候補に対して呼び出される注釈関数は、文字列を返します。:history
選択した候補を追加する履歴変数の名前。:default
ソースの最初の項目がデフォルト値の場合は t でなければなりません。:action
選択された候補で呼び出される関数。:new
:require-match
が nil の場合にのみ、新しい候補名で呼び出される関数。:state
ソースの状態コンストラクター。状態関数を返す必要があります。ソースの:state
と:action
フィールドについては、さらに詳しく説明する価値があります。 :action
関数は 1 つの引数を取り、選択が中止されていない場合、選択された候補での選択後にのみ呼び出されます。この機能は、ソースを便利かつ簡単に定義できるようにするために提供されています。 :state
フィールドはより一般的です。 :state
関数は引数のないコンストラクター関数で、プレビューに必要なセットアップを実行できます。 ACTION と CANDIDATE 引数を取るクロージャを返す必要があります。 ACTION 引数の詳細についてはconsult--with-preview
の docstring を参照してください。
デフォルトでは、 consult-buffer
バッファー、ブックマーク、およびファイルをプレビューします。最近のファイルやブックマークをロードすると、操作に負荷がかかる可能性があります。ただし、次のように手動プレビューを設定することは可能です。
(consult-customize
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
:preview-key " M-. " )
ソースは便宜上、 consult-buffer-source
リストに直接追加できます。たとえば、次のソースはすべての組織バッファをリストし、新しい組織バッファを作成できるようにします。
( defvar org-source
( list :name " Org Buffer "
:category 'buffer
:narrow ?o
:face 'consult-buffer
:history 'buffer-name-history
:state # 'consult--buffer-state
:new
( lambda ( name )
( with-current-buffer ( get-buffer-create name)
( insert " #+title: " name " nn " )
( org-mode )
(consult--buffer-action ( current-buffer ))))
:items
( lambda ()
(consult--buffer-query :mode 'org-mode :as # 'consult--buffer-pair ))))
( add-to-list 'consult-buffer-sources 'org-source 'append )
他のメジャー モードでも同様のソースを作成できます。その他の多くのソース例については、Consult wiki を参照してください。 consult-buffer
と内部consult--multi
API のドキュメントも参照してください。関数consult--multi
使用して、新しいマルチソースコマンドを作成できます。
注: MELPA からembark-consult
パッケージをインストールします。このパッケージは、Consult 固有の Embark アクションと Occur バッファのエクスポートを提供します。
Embark は、コンテキスト メニューに相当する、コンテキスト依存のアクションを提供する多用途のパッケージです。その機能の詳細な説明については、Embark マニュアルを参照してください。
アクションは、現在選択されている候補 (Embark 用語ではターゲット) に対して操作できるコマンドです。ファイルを完成させるとき、たとえばdelete-file
コマンドが提供されます。 Embark を使用すると、 Mx
介して現在選択されている候補に対して任意のコマンドを実行できます。
さらに、Embark はembark-collect
コマンドを提供します。このコマンドは候補を収集し、それらを Embark 収集バッファに表示し、候補にさらなるアクションを適用できます。関連する機能はembark-export
コマンドで、候補リストを特別なタイプのバッファにエクスポートします。たとえば、ファイル完了の場合、Dired バッファが開きます。
Consult のコンテキストで特に興味深いのはconsult-line
、 consult-outline
、 consult-mark
およびconsult-global-mark
から一致する行をエクスポートできることです。一致する行は Occur バッファにエクスポートされ、 occur-edit-mode
(キーe
を押す) を介して編集できます。同様に、Embark は、 consult-grep
、 consult-ripgrep
、およびconsult-git-grep
によって検出された一致を Grep バッファにエクスポートすることをサポートしています。wgrep パッケージがインストールされている場合、ファイル全体の一致を編集できます。これら 3 つのワークフローは対称的です。
consult-line
-> occur-mode
バッファへのembark-export
-> バッファ内の一致をoccur-edit-mode
。consult-grep
-> embark-export
to grep-mode
-> すべての一致を編集するためのwgrep
。consult-find
-> embark-export
to dired-mode
バッファ -> 編集のためにwdired-change-to-wdired-mode
実行します。Consult は、Emacs 組み込みパッケージ マネージャーを介して ELPA または MELPA からインストールできます。あるいは、他の非標準パッケージ マネージャーを介して開発リポジトリから直接インストールすることもできます。
追加の構成例を提供できる Consult wiki があります。
重要:構成で字句バインディングを有効にすることをお勧めします。コンサルト関連のコード スニペットの多くは、ラムダとクロージャを使用するため、字句バインディングを必要とします。
Consult パッケージはコマンドのみを提供し、キーバインドやモードは追加しません。したがって、このパッケージは非侵入的ですが、セットアップに少し手間がかかります。 Consult コマンドを使用するには、頻繁にアクセスされるコマンドのキーバインドを追加することをお勧めします。めったに使用されないコマンドはMx
経由で呼び出すことができます。ワークフローに役立つと思われるコマンドのみを自由にバインドしてください。ここに示す構成は、パッケージ構成を管理するための便利なツールであるuse-package
マクロに依存しています。
注:追加の構成例を投稿できる Consult wiki があります。
; ; Example configuration for Consult
( use-package consult
; ; Replace bindings. Lazily loaded by `use-package' .
:bind ( ; ; C-c bindings in `mode-specific-map'
( " C-c M-x " . consult-mode-command)
( " C-c h " . consult-history)
( " C-c k " . consult-kmacro)
( " C-c m " . consult-man)
( " C-c i " . consult-info)
([remap Info-search] . consult-info)
; ; C-x bindings in `ctl-x-map'
( " C-x M-: " . consult-complex-command) ; ; orig. repeat-complex-command
( " C-x b " . consult-buffer) ; ; orig. switch-to-buffer
( " C-x 4 b " . consult-buffer-other-window) ; ; orig. switch-to-buffer-other-window
( " C-x 5 b " . consult-buffer-other-frame) ; ; orig. switch-to-buffer-other-frame
( " C-x t b " . consult-buffer-other-tab) ; ; orig. switch-to-buffer-other-tab
( " C-x r b " . consult-bookmark) ; ; orig. bookmark-jump
( " C-x p b " . consult-project-buffer) ; ; orig. project-switch-to-buffer
; ; Custom M-# bindings for fast register access
( " M-# " . consult-register-load)
( " M-' " . consult-register-store) ; ; orig. abbrev-prefix-mark (unrelated)
( " C-M-# " . consult-register)
; ; Other custom bindings
( " M-y " . consult-yank-pop) ; ; orig. yank-pop
; ; M-g bindings in `goto-map'
( " M-g e " . consult-compile-error)
( " M-g f " . consult-flymake) ; ; Alternative: consult-flycheck
( " M-g g " . consult-goto-line) ; ; orig. goto-line
( " M-g M-g " . consult-goto-line) ; ; orig. goto-line
( " M-g o " . consult-outline) ; ; Alternative: consult-org-heading
( " M-g m " . consult-mark)
( " M-g k " . consult-global-mark)
( " M-g i " . consult-imenu)
( " M-g I " . consult-imenu-multi)
; ; M-s bindings in `search-map'
( " M-s d " . consult-find) ; ; Alternative: consult-fd
( " M-s c " . consult-locate)
( " M-s g " . consult-grep)
( " M-s G " . consult-git-grep)
( " M-s r " . consult-ripgrep)
( " M-s l " . consult-line)
( " M-s L " . consult-line-multi)
( " M-s k " . consult-keep-lines)
( " M-s u " . consult-focus-lines)
; ; Isearch integration
( " M-s e " . consult-isearch-history)
:map isearch-mode-map
( " M-e " . consult-isearch-history) ; ; orig. isearch-edit-string
( " M-s e " . consult-isearch-history) ; ; orig. isearch-edit-string
( " M-s l " . consult-line) ; ; needed by consult-line to detect isearch
( " M-s L " . consult-line-multi) ; ; needed by consult-line to detect isearch
; ; Minibuffer history
:map minibuffer-local-map
( " M-s " . consult-history) ; ; orig. next-matching-history-element
( " M-r " . consult-history)) ; ; orig. previous-matching-history-element
; ; Enable automatic preview at point in the *Completions* buffer. This is
; ; relevant when you use the default completion UI.
:hook ( completion-list-mode . consult-preview-at-point-mode)
; ; The :init configuration is always executed (Not lazy)
:init
; ; Optionally configure the register formatting. This improves the register
; ; preview for `consult-register' , `consult-register-load' ,
; ; `consult-register-store' and the Emacs built-ins.
( setq register-preview-delay 0.5
register-preview-function # 'consult-register-format )
; ; Optionally tweak the register preview window.
; ; This adds thin lines, sorting and hides the mode line of the window.
( advice-add # 'register-preview :override # 'consult-register-window )