Consult fournit des commandes de recherche et de navigation basées sur la fonction de complétion-lecture d'Emacs. L'achèvement vous permet de sélectionner rapidement un élément dans une liste de candidats. Consult propose des commandes consult-grep
et consult-ripgrep
asynchrones et interactives, ainsi que la commande de recherche par ligne consult-line
. De plus, Consult fournit une commande avancée de commutation de tampon consult-buffer
pour basculer entre les tampons, les fichiers récemment ouverts, les signets et les candidats de type tampon provenant d'autres sources. Certaines des commandes Consult sont des versions améliorées des commandes Emacs intégrées. Par exemple, la commande consult-imenu
présente une liste plate des Imenu avec aperçu en direct, regroupement et rétrécissement. Veuillez jeter un œil à la liste complète des commandes.
Consult est entièrement compatible avec les systèmes de complétion centrés sur l'API completing-read
standard d'Emacs, notamment le système de complétion par défaut, Vertico, Mct et Icomplete.
Ce package réduit au minimum les spécificités du système de complétion. La capacité des commandes Consult à bien fonctionner avec des systèmes de complétion arbitraires est l'un des principaux avantages du package. Consult s'intègre bien dans les configurations existantes et vous aide à créer un environnement complet à partir de composants petits et indépendants.
Vous pouvez combiner les packages complémentaires Marginalia, Embark et Orderless avec Consult. Marginalia enrichit l'affichage de complétion avec des annotations, par exemple des chaînes de documentation ou des informations sur les fichiers. Le package polyvalent Embark fournit des actions locales, comparables à un menu contextuel. Ces actions opèrent sur le candidat sélectionné dans le mini-tampon ou à un point dans les tampons normaux. Par exemple, lors d'une sélection dans une liste de fichiers, Embark propose une action pour supprimer le fichier. De plus, Embark offre une fonctionnalité permettant de collecter les candidats à l'achèvement dans un tampon de collecte. La section Intégration d'Embark documente en détail comment Consult et Embark fonctionnent ensemble.
Fig.1 : Commande consult-git-grep
Fig. 2 : Commande consult-imenu
Fig. 3 : consult-line
des commandes
La plupart des commandes Consult suivent le schéma de dénomination significatif consult-
. De nombreuses commandes implémentent une fonctionnalité Emacs peu connue mais pratique appelée « historique futur », qui devine quelle entrée souhaite l'utilisateur. À une invite de commande, tapez Mn
et généralement Consult insérera le symbole ou l'objet au point dans l'entrée.
CONSEIL : Si les annotateurs Marginalia sont activés, tapez Mx ^consult
pour voir toutes les commandes Consult avec leur description abrégée. Vous pouvez également saisir Ch a ^consult
pour obtenir un aperçu de toutes les variables et fonctions Consult avec leurs descriptions.
consult-buffer
: Version améliorée de switch-to-buffer
avec prise en charge des tampons virtuels. Prend en charge l’aperçu en direct des tampons et se limite aux types de tampons virtuels. Vous pouvez taper f SPC
afin de vous limiter aux fichiers récents. Appuyez sur SPC
pour afficher les tampons éphémères. Clés de restriction prises en charge :recentf-mode
)consult-buffer-sources
.consult-buffer-other-window
, consult-buffer-other-frame
, consult-buffer-other-tab
: Variantes de consult-buffer
.consult-project-buffer
: Variante de consult-buffer
restreinte aux buffers et fichiers récents du projet en cours. Vous pouvez ajouter des sources personnalisées à consult-project-buffer-sources
. La commande peut vous demander un projet si vous l'appelez depuis l'extérieur d'un projet.consult-bookmark
: Sélectionnez ou créez un signet. Pour sélectionner des signets, vous pouvez utiliser le consult-buffer
comme alternative, qui peut inclure une source de tampon virtuel de signet. Notez que consult-bookmark
prend en charge l'aperçu des signets et le rétrécissement.consult-recent-file
: Sélectionnez parmi les fichiers récents avec aperçu. Vous préférerez peut-être plutôt le puissant consult-buffer
, qui peut inclure des fichiers récents comme source de tampon virtuel. Le recentf-mode
permet le suivi des fichiers récents. consult-yank-from-kill-ring
: Version améliorée de yank
pour sélectionner un élément du kill-ring
. Le texte sélectionné est prévisualisé en superposition dans le tampon.consult-yank-pop
: version améliorée de yank-pop
avec le comportement DWIM, qui soit remplace le dernier yank
en parcourant le kill-ring
, soit s'il n'y a pas eu de dernier yank
consulte le kill-ring
. Le texte sélectionné est prévisualisé en superposition dans le tampon.consult-yank-replace
: Comme consult-yank-pop
, mais remplace toujours le dernier yank
par un élément du kill-ring
.consult-kmacro
: Sélectionnez la macro dans l'anneau de macro et exécutez-la. consult-register
: Sélectionnez dans la liste des registres. La commande prend en charge le rétrécissement pour enregistrer les types et prévisualiser les positions des marqueurs. Cette commande est utile pour rechercher le contenu du registre. Pour un accès rapide, utilisez les commandes consult-register-load
, consult-register-store
ou les commandes de registre Emacs intégrées.consult-register-format
: Définissez register-preview-function
sur cette fonction pour un formatage de registre amélioré. Voir l'exemple de configuration.consult-register-window
: Remplacez register-preview
par cette fonction pour une meilleure fenêtre d'enregistrement. Voir l'exemple de configuration.consult-register-load
: Commande utilitaire pour charger rapidement un registre. La commande saute à la valeur du registre ou l'insère.consult-register-store
: Amélioration de l'interface utilisateur pour stocker les registres en fonction du contexte actuel avec un menu d'action. Avec une région active, stockez/ajoutez/ajoutez le contenu, en supprimant éventuellement la région lorsqu'un argument de préfixe est donné. Avec un argument de préfixe numérique, stockez/ajoutez le numéro. Sinon, stockez le point, le frameset, la fenêtre ou le kmacro. Exemples d'utilisation :M-' x
: Si aucune région n'est active, stockez le point dans le registre x
. Si une région est active, stockez la région dans le registre x
.M-' Mw x
: Stocker la configuration de la fenêtre dans le registre x
.Cu 100 M-' x
: Stocker le numéro dans le registre x
. consult-goto-line
: Accédez au numéro de ligne amélioré avec un aperçu en direct. Il s'agit d'un remplacement instantané de goto-line
. Entrez un numéro de ligne pour accéder à la première colonne de la ligne donnée. Vous pouvez également saisir line:column
afin d'accéder à une colonne spécifique.consult-mark
: Sauter à un marqueur dans l' mark-ring
. Prend en charge l'aperçu en direct et l'édition récursive.consult-global-mark
: Accédez à un marqueur dans le global-mark-ring
. Prend en charge l'aperçu en direct et l'édition récursive.consult-outline
: Accédez à un en-tête du plan. Prend en charge le rétrécissement à un niveau de titre, l'aperçu en direct et l'édition récursive.consult-imenu
: Passer à l'élément imenu dans le tampon actuel. Prend en charge l'aperçu en direct, l'édition récursive et le rétrécissement.consult-imenu-multi
: Passer à l'élément imenu dans les tampons du projet, avec le même mode majeur que le tampon actuel. Prend en charge l'aperçu en direct, l'édition récursive et le rétrécissement. Cette fonctionnalité a été inspirée par imenu-anywhere. consult-line
: saisissez la chaîne de recherche et sélectionnez parmi les lignes correspondantes. Prend en charge l'aperçu en direct et l'édition récursive. Le symbole au point et la chaîne Isearch récente sont ajoutés à « l'historique futur » et sont accessibles en appuyant sur Mn
. Lorsque consult-line
est lié au isearch-mode-map
et est invoqué lors d'un Isearch en cours d'exécution, il utilisera la chaîne Isearch actuelle.consult-line-multi
: recherche dynamique dans plusieurs tampons. Par défaut, recherchez dans les tampons du projet. S'il est invoqué avec un argument de préfixe, recherchez dans tous les tampons. Les candidats sont calculés sur demande en fonction des entrées. La commande se comporte comme consult-grep
, mais fonctionne sur des tampons plutôt que sur des fichiers.consult-keep-lines
: Remplacement de keep/flush-lines
qui utilise le style de complétion actuel pour filtrer le tampon. La fonction met à jour le tampon lors de la frappe. En particulier, consult-keep-lines
peut affiner davantage un tampon de collecte Embark exporté, en s'appuyant sur le même filtrage d'achèvement que completing-read
. Si l'entrée commence par l'opérateur de négation, c'est-à-dire ! SPC
, le filtre correspond au complément. Si une région est active, elle restreint le filtrage.consult-focus-lines
: masquez temporairement les lignes en les filtrant en utilisant le style de complétion actuel. Appelez avec l'argument de préfixe Cu
afin d'afficher à nouveau les lignes cachées. Si l'entrée commence par l'opérateur de négation, c'est-à-dire ! SPC
, le filtre correspond au complément. Contrairement à consult-keep-lines
cette fonction ne modifie pas le tampon. Si une région est active, elle restreint le filtrage. consult-grep
, consult-ripgrep
, consult-git-grep
: Recherche d'expression régulière dans les fichiers. Consult appelle Grep de manière asynchrone pendant que vous saisissez le terme de recherche. Après au moins consult-async-min-input
, la recherche commence. Consult divise la chaîne d'entrée en deux parties, si le premier caractère est un caractère de ponctuation, comme #
. Par exemple, #regexps#filter-string
, est divisé à la seconde #
. Les regexps
de chaîne sont transmises à Grep. Notez que Consult transforme les expressions régulières d'Emacs en expressions comprises par le programme de recherche. Utilisez toujours les expressions régulières Emacs à l'invite. Si vous saisissez plusieurs expressions régulières séparées par un espace, seules les lignes correspondant à toutes les expressions régulières sont affichées. Afin de faire correspondre l'espace littéralement, échappez à l'espace avec une barre oblique inverse. La filter-string
est transmise au filtrage rapide d'Emacs pour affiner davantage la liste des correspondances. Ceci est particulièrement utile si vous utilisez un style de complétion avancé comme sans ordre. consult-grep
prend en charge l'aperçu. consult-grep
recherche dans le répertoire du projet actuel si un projet est trouvé. Sinon, le default-directory
est recherché. Si consult-grep
est invoqué avec l'argument de préfixe Cu Ms g
, vous pouvez spécifier manuellement un ou plusieurs fichiers et répertoires séparés par des virgules. S'il est invoqué avec deux arguments de préfixe Cu Cu Ms g
, vous pouvez d'abord sélectionner un projet si vous n'êtes pas encore dans un projet.consult-find
, consult-fd
, consult-locate
: recherchez le fichier en faisant correspondre le chemin avec une expression rationnelle. Comme pour consult-grep
, la racine du projet ou le répertoire actuel est le répertoire racine de la recherche. La chaîne d'entrée est traitée de la même manière que consult-grep
, où la première partie est transmise à find et la deuxième partie est utilisée pour le filtrage Emacs. Les arguments de préfixe pour consult-find
fonctionnent exactement comme ceux des commandes consult grep. consult-compile-error
: Accédez à une erreur de compilation. Prend en charge le rétrécissement de l'aperçu en direct et l'édition récursive.consult-flymake
: Accédez au diagnostic Flymake. Prend en charge l'aperçu en direct et l'édition récursive. La commande prend en charge le rétrécissement. Appuyez sur e SPC
, w SPC
, n SPC
pour afficher respectivement uniquement les erreurs, les avertissements et les notes.consult-xref
: Intégration avec xref. Cette fonction peut être définie comme xref-show-xrefs-function
et xref-show-definitions-function
. consult-complex-command
: sélectionnez une commande dans l' command-history
. Cette commande est une version completing-read
de repeat-complex-command
et remplace également la commande command-history
de chistory.el.consult-history
: Insérez une chaîne de l'historique actuel du tampon, par exemple l'historique Eshell ou Comint. Vous pouvez également appeler cette commande depuis le mini-tampon. Dans ce cas, consult-history
utilise l'historique stocké dans la minibuffer-history-variable
. Si vous préférez completion-at-point
, jetez un œil à cape-history
du package Cape.consult-isearch-history
: Lors d'une session Isearch, cette commande sélectionne une chaîne de recherche dans l'historique et continue la recherche avec la chaîne nouvellement sélectionnée. En dehors d'Isearch, la commande vous permet de sélectionner une chaîne dans l'historique et de lancer une nouvelle Isearch. consult-isearch-history
agit en remplacement de isearch-edit-string
. consult-minor-mode-menu
: Activer/désactiver le mode mineur. Prend en charge le rétrécissement aux modes marche/arrêt/local/global en appuyant respectivement sur i/o/l/g SPC
.consult-mode-command
: Exécutez une commande à partir des modes mineurs ou majeurs actuellement actifs. Prend en charge le rétrécissement au mode local-mineur/global-mineur/majeur via les touches l/g/m
. consult-org-heading
: Variante de consult-imenu
ou consult-outline
pour les tampons d'organisation. Le titre et les titres de ses ancêtres sont séparés par des barres obliques. Prend en charge le rétrécissement par niveau de titre, priorité et mot-clé TODO, ainsi que l'aperçu en direct et l'édition récursive.consult-org-agenda
: Accédez à l'en-tête de l'agenda d'une organisation. Prend en charge le rétrécissement par niveau de titre, priorité et mot-clé TODO, ainsi que l'aperçu en direct et l'édition récursive. consult-man
: Recherchez la page de manuel Unix, via Unix apropos
ou man -k
. consult-man
ouvre la page de manuel sélectionnée à l'aide de la commande Emacs man
.consult-info
: Recherche en texte intégral à travers les pages d'informations. Si la commande est invoquée depuis un tampon *info*
, elle effectuera une recherche dans le manuel actuel. Vous souhaiterez peut-être créer vos propres commandes qui effectuent une recherche dans un ensemble prédéfini de pages d'informations, par exemple : ( 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
: Sélectionnez un thème et désactivez tous les thèmes actuellement activés. Prend en charge l'aperçu en direct du thème lors du défilement des candidats.consult-preview-at-point
et consult-preview-at-point-mode
: Commande et mode mineur qui prévisualise le candidat à un point donné dans le tampon *Completions*
. Ce mode est pertinent si vous utilisez Mct ou l'interface utilisateur *Completions*
par défaut.consult-completion-in-region
: Si vous n'utilisez pas Corfou comme interface utilisateur d'achèvement dans le tampon, cette fonction peut être définie comme completion-in-region-function
. Ensuite, votre interface utilisateur d'achèvement de mini-tampon (par exemple, Vertico ou Icomplete) sera utilisée pour 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)))
Au lieu de consult-completion-in-region
, vous préférerez peut-être voir les complétions directement dans le tampon sous la forme d'une petite fenêtre contextuelle. Dans ce cas, je recommande le forfait Corfou. Il existe une limitation technique de consult-completion-in-region
en combinaison avec les modes Lsp. Le serveur Lsp s'appuie sur l'entrée au point, afin de générer des chaînes candidates affinées. Puisque la complétion est transférée du tampon d'origine vers le mini-tampon, le serveur ne reçoit pas l'entrée mise à jour. En revanche, la complétion Lsp dans le tampon, par exemple via Corfou, fonctionne correctement puisque la complétion a lieu directement dans le tampon d'origine.
Consult améliore completing-read
avec des aperçus en direct des candidats, des capacités supplémentaires de réduction des groupes de candidats et des listes de candidats générées de manière asynchrone. La fonction interne consult--read
, qui est utilisée par la plupart des commandes Consult, est un mince wrapper autour de completing-read
et fournit la fonctionnalité spéciale. Afin de prendre en charge plusieurs sources de candidats, il existe la fonction de haut niveau consult--multi
. L'architecture de Consult lui permet de fonctionner avec différents systèmes de complétion dans le backend, tout en offrant des fonctionnalités avancées.
Certaines commandes Consult prennent en charge les aperçus en direct. Par exemple, lorsque vous faites défiler les éléments de consult-line
, le tampon défilera jusqu'à la position correspondante. Il est possible de faire des allers-retours entre le mini-tampon et le tampon pour effectuer une édition récursive pendant que la recherche est en cours.
Consult active les aperçus par défaut. Vous pouvez les désactiver en ajustant la variable consult-preview-key
. De plus, il est possible de spécifier des raccourcis clavier qui déclenchent manuellement l'aperçu, comme indiqué dans l'exemple de configuration. Le paramètre par défaut de consult-preview-key
est any
, ce qui signifie que Consult déclenche l'aperçu immédiatement à chaque pression sur une touche lorsque le candidat sélectionné change. Vous pouvez configurer chaque commande individuellement avec son propre :preview-key
. Les réglages suivants sont possibles :
'any
(list :debounce 0.5 'any)
"M-."
(list :debounce 0.5 "M-.")
nil
Une recommandation sûre consiste à laisser les aperçus immédiats automatiques activés en général et à désactiver l'aperçu automatique uniquement pour les commandes pour lesquelles l'aperçu peut être coûteux en raison du chargement des fichiers. En interne, Consult utilise la valeur de this-command
pour déterminer la :preview-key
personnalisée. Cela signifie que si vous encapsulez une commande consult-*
dans votre propre fonction ou commande, vous devrez également ajouter le nom de votre commande personnalisée à l'appel consult-customize
pour qu'elle soit prise en compte.
(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
Dans ce cas, on peut se demander quelle est la différence entre l'utilisation d'une action Embark sur le candidat actuel et un aperçu déclenché manuellement. La principale différence est que les fichiers ouverts par aperçu manuel sont refermés après la session de complétion. Pendant la préversion, certaines fonctionnalités sont désactivées pour améliorer les performances, voir par exemple les variables de personnalisation consult-preview-variables
et consult-preview-allowed-hooks
. Seuls les hooks répertoriés dans consult-preview-allowed-hooks
sont exécutés. Cette variable s'applique aux hooks find-file-hook
, change-major-mode-hook
et mode , par exemple prog-mode-hook
. Afin d'activer un verrouillage supplémentaire des polices lors de l'aperçu, ajoutez les hooks correspondants à la liste verte. Le code suivant le démontre pour org-modern et 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 )
Les fichiers plus grands que consult-preview-partial-size
sont partiellement prévisualisés. Retarder l'aperçu est également utile pour consult-theme
, car l'aperçu du thème est lent. Le délai se traduit par une expérience d’interface utilisateur plus fluide.
; ; 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 " " " "
:debounce 1 any))
Consult propose un support spécial pour les groupes de candidats. Si l'interface utilisateur de complétion prend en charge la fonctionnalité de regroupement, elle sépare les groupes par des lignes fines et affiche les titres des groupes. Le regroupement est utile si la liste des candidats est composée de candidats de plusieurs types ou de candidats provenant de plusieurs sources, comme la commande consult-buffer
, qui affiche à la fois les tampons et les fichiers récemment ouverts. Notez que vous pouvez désactiver les titres de groupe en définissant la propriété :group
de la commande correspondante sur nil à l'aide de la macro consult-customize
.
En saisissant un préfixe de restriction ou en appuyant sur une touche de restriction, il est possible de restreindre les candidats à l'achèvement à un certain groupe de candidats. Lorsque vous utilisez la commande consult-buffer
, vous pouvez saisir le préfixe b SPC
pour limiter la liste des candidats aux tampons uniquement. Si vous appuyez ensuite sur DEL
, la liste complète des candidats s'affichera à nouveau. De plus, une touche de préfixe de rétrécissement et une touche d'élargissement peuvent être configurées sur lesquelles vous pouvez appuyer pour obtenir le même effet, voir les variables de configuration consult-narrow-key
et consult-widen-key
.
Après avoir appuyé sur consult-narrow-key
, les touches de restriction possibles peuvent être affichées en appuyant sur Ch
. Lorsque vous appuyez sur Ch
après une touche de préfixe, la prefix-help-command
est invoquée, ce qui affiche la fenêtre d'aide de liaison de touches par défaut. Comme alternative plus compacte, il existe la commande consult-narrow-help
qui peut être liée à une clé, par exemple ?
ou Ch
dans le consult-narrow-map
, comme indiqué dans l'exemple de configuration. Si which-key est installé, les touches de restriction sont automatiquement affichées dans la fenêtre which-key après avoir appuyé sur la consult-narrow-key
.
Consult prend en charge la génération asynchrone de listes de candidats. Cette fonctionnalité est utilisée pour les commandes de recherche telles que consult-grep
, où la liste des correspondances est générée dynamiquement pendant que l'utilisateur tape une expression régulière. Le processus grep est exécuté en arrière-plan. Lors de la modification de l'expression régulière, le processus en arrière-plan est terminé et un nouveau processus est démarré avec l'expression régulière modifiée.
Les correspondances trouvées peuvent ensuite être affinées à l'aide du style de complétion Emacs installé. Cela peut être puissant si vous utilisez par exemple le style de complétion orderless
.
Ce filtrage à deux niveaux est possible en divisant la chaîne d'entrée. Une partie de la chaîne d'entrée est traitée comme une entrée dans grep et une partie de l'entrée est utilisée pour le filtrage. Il existe plusieurs styles de fractionnement disponibles, configurés dans consult-async-split-styles-alist
: nil
, comma
, semicolon
et perl
. Le style de fractionnement par défaut est configuré avec la variable consult-async-split-style
.
Avec les styles de séparation comma
et semicolon
, le premier mot avant la virgule ou le point-virgule est transmis à grep, la chaîne restante est utilisée pour le filtrage. Le style de fractionnement nil
n'effectue aucun fractionnement, l'intégralité de l'entrée est transmise à grep.
Le style de fractionnement perl
divise la chaîne d'entrée en un caractère de ponctuation, en utilisant une syntaxe similaire à celle des expressions régulières Perl.
Exemples :
#defun
: recherchez « defun » en utilisant grep.#consult embark
: recherchez à la fois « consulter » et « embarquer » en utilisant grep dans n'importe quel ordre.#first.*second
: Recherchez « first » suivi de « second » à l'aide de grep.#(consult|embark)
: Recherchez « consulter » ou « embarquer » à l'aide de grep. Notez l'utilisation d'expressions régulières de style Emacs.#defun#consult
: Recherchez « defun » en utilisant grep, filtrez avec le mot « consulter »./defun/consult
: Il est également possible d'utiliser d'autres caractères de ponctuation.#to#
: Forcer la recherche de « to » à l'aide de grep, car le modèle grep doit être plus long que les caractères consult-async-min-input
par défaut.#defun -- --invert-match#
: Passez l'argument --invert-match
à grep. Les processus asynchrones comme find
et grep
créent un tampon de journal d'erreurs _*consult-async*
(notez l'espace de début), ce qui est utile pour le dépannage. L'invite comporte un petit indicateur indiquant l'état du processus :
:
les deux points d'invite habituels, avant que la saisie ne soit fournie.*
avec visage d'avertissement, le processus est en cours.:
avec succès face, succès, processus terminé avec un code d'erreur de zéro.!
avec visage d'erreur, échec, processus terminé avec un code d'erreur différent de zéro.;
avec face d'erreur, interrompue, par exemple si davantage d'entrées sont fournies. Plusieurs sources candidates synchrones peuvent être combinées. Cette fonctionnalité est utilisée par la commande consult-buffer
pour présenter des candidats de type tampon dans un menu unique pour un accès rapide. Par défaut, consult-buffer
inclut des tampons, des signets, des fichiers récents et des tampons et fichiers spécifiques au projet. Il est possible de configurer la liste des sources via la variable consult-buffer-sources
. Des sources personnalisées arbitraires peuvent être définies.
À titre d'exemple, la source du signet est définie comme suit :
( defvar consult--source-bookmark
`( :name " Bookmark "
:narrow ?m
:category bookmark
:face consult-bookmark
:history bookmark-history
:items ,# 'bookmark-all-names
:action ,# 'consult--bookmark-action ))
Champs sources obligatoires :
:category
Catégorie d’achèvement.:items
Liste de chaînes à sélectionner ou fonction renvoyant une liste de chaînes. Une liste de cellules contre n'est pas prise en charge.Champs source facultatifs :
:name
Nom de la source, utilisé pour le rétrécissement, les titres de groupe et les annotations.:narrow
Caractère de rétrécissement ou paire (character . string)
.:preview-key
Touche ou touches d'aperçu qui déclenchent l'aperçu.:enabled
Fonction qui doit retourner t si la source est activée.:hidden
Lorsque les candidats de cette source sont masqués par défaut.:face
utilisé pour mettre en valeur les candidats.:annotate
Fonction d'annotation appelée pour chaque candidat, renvoie une chaîne.:history
Nom de la variable historique pour ajouter le candidat sélectionné.:default
Doit être t si le premier élément de la source est la valeur par défaut.:action
Fonction appelée avec le candidat sélectionné.:new
Fonction appelée avec le nouveau nom du candidat, uniquement si :require-match
est nul.:state
Constructeur d'état pour la source, doit renvoyer la fonction d'état. Les champs :state
et :action
des sources méritent une explication plus longue. La fonction :action
prend un seul argument et n'est appelée qu'après sélection avec le candidat sélectionné, si la sélection n'a pas été abandonnée. Cette fonctionnalité est fournie pour plus de commodité et une définition facile des sources. Le champ :state
est plus général. La fonction :state
est une fonction constructeur sans arguments, qui peut effectuer certaines configurations nécessaires à l'aperçu. Il doit renvoyer une fermeture qui prend une ACTION et un argument CANDIDATE. Voir la docstring de consult--with-preview
pour plus de détails sur l'argument ACTION.
Par défaut, consult-buffer
prévisualise les tampons, les signets et les fichiers. Le chargement de fichiers ou de signets récents peut entraîner des opérations coûteuses. Il est cependant possible de configurer un aperçu manuel comme suit.
(consult-customize
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
:preview-key " M-. " )
Les sources peuvent être ajoutées directement à la liste consult-buffer-source
pour plus de commodité. Par exemple, la source suivante répertorie tous les tampons d'organisation et vous permet d'en créer de nouveaux.
( 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 )
On peut créer des sources similaires pour d’autres modes majeurs. Consultez le wiki Consult pour de nombreux exemples de sources supplémentaires. Voir aussi la documentation de consult-buffer
et de l'API interne consult--multi
. La fonction consult--multi
peut être utilisée pour créer de nouvelles commandes multi-sources.
REMARQUE : installez le package embark-consult
à partir de MELPA, qui fournit des actions Embark spécifiques à Consult et l'exportation du tampon Occur.
Embark est un package polyvalent qui propose des actions dépendantes du contexte, comparables à un menu contextuel. Consultez le manuel Embark pour une description détaillée de ses capacités.
Les actions sont des commandes qui peuvent opérer sur le candidat actuellement sélectionné (ou la cible dans la terminologie Embark). Lors de la complétion de fichiers, par exemple la commande delete-file
est proposée. Avec Embark, vous pouvez exécuter des commandes arbitraires sur le candidat actuellement sélectionné via Mx
.
De plus, Embark fournit la commande embark-collect
, qui collecte les candidats et les présente dans un tampon de collecte Embark, où d'autres actions peuvent leur être appliquées. Une fonctionnalité connexe est la commande embark-export
, qui exporte les listes de candidats vers un tampon d'un type spécial. Par exemple en cas de complétion de fichier, un tampon Dired est ouvert.
Dans le contexte de Consult, la possibilité d'exporter les lignes correspondantes de consult-line
, consult-outline
, consult-mark
et consult-global-mark
. Les lignes correspondantes sont exportées vers un tampon Occur où elles peuvent être modifiées via le occur-edit-mode
(appuyez sur la touche e
). De même, Embark prend en charge l'exportation des correspondances trouvées par consult-grep
, consult-ripgrep
et consult-git-grep
vers un tampon Grep, où les correspondances entre les fichiers peuvent être modifiées, si le package wgrep est installé. Ces trois flux de travail sont symétriques.
consult-line
-> embark-export
vers le tampon occur-mode
-> occur-edit-mode
pour l'édition des correspondances dans le tampon.consult-grep
-> embark-export
vers le tampon grep-mode
-> wgrep
pour l'édition de toutes les correspondances.consult-find
-> embark-export
vers le tampon dired-mode
-> wdired-change-to-wdired-mode
pour l'édition.Consult peut être installé depuis ELPA ou MELPA via le gestionnaire de packages intégré à Emacs. Alternativement, il peut être installé directement à partir du référentiel de développement via d'autres gestionnaires de packages non standard.
Il existe le wiki Consult, où des exemples de configuration supplémentaires peuvent être fournis.
IMPORTANT : Il est recommandé d'activer la liaison lexicale dans votre configuration. De nombreux extraits de code liés à Consult nécessitent une liaison lexicale, car ils utilisent des lambdas et des fermetures.
Le package Consult fournit uniquement des commandes et n’ajoute aucune combinaison de touches ni mode. Par conséquent, le package est non intrusif mais nécessite un petit effort de configuration. Afin d'utiliser les commandes Consulter, il est conseillé d'ajouter des raccourcis clavier pour les commandes fréquemment utilisées. Les commandes rarement utilisées peuvent être invoquées via Mx
. N'hésitez pas à lier uniquement les commandes que vous jugez utiles à votre flux de travail. La configuration présentée ici repose sur la macro use-package
, qui est un outil pratique pour gérer les configurations des packages.
REMARQUE : Il existe le wiki Consult, où vous pouvez contribuer à des exemples de configuration supplémentaires.
; ; 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 )