Consult proporciona comandos de búsqueda y navegación basados en la función de finalización de Emacs para completar y leer. La finalización le permite seleccionar rápidamente un elemento de una lista de candidatos. Consult ofrece comandos asincrónicos e interactivos consult-grep
y consult-ripgrep
, y el comando de búsqueda basado en líneas consult-line
. Además, Consult proporciona un comando avanzado de cambio de búfer consult-buffer
para cambiar entre búferes, archivos abiertos recientemente, marcadores y candidatos similares a búfer de otras fuentes. Algunos de los comandos de Consulta son versiones mejoradas de los comandos integrados de Emacs. Por ejemplo, el comando consult-imenu
presenta una lista plana del Imenu con vista previa en vivo, agrupación y reducción. Eche un vistazo a la lista completa de comandos.
Consult es totalmente compatible con los sistemas de finalización centrados en la API completing-read
estándar de Emacs, en particular el sistema de finalización predeterminado, Vertico, Mct e Icomplete.
Este paquete mantiene los detalles del sistema de finalización al mínimo. La capacidad de los comandos de Consulta para funcionar bien con sistemas de finalización arbitrarios es una de las principales ventajas del paquete. Consult se adapta bien a las configuraciones existentes y le ayuda a crear un entorno completo a partir de componentes pequeños e independientes.
Puedes combinar los paquetes complementarios Marginalia, Embark y Orderless con Consult. Marginalia enriquece la visualización de finalización con anotaciones, por ejemplo, cadenas de documentación o información de archivos. El versátil paquete Embark proporciona acciones locales, comparables a un menú contextual. Estas acciones operan sobre el candidato seleccionado en el minibúfer o en un punto en los búferes normales. Por ejemplo, al seleccionar de una lista de archivos, Embark ofrece una acción para eliminar el archivo. Además, Embark ofrece una función para recopilar candidatos finalizados en un búfer de recopilación. La sección Integración de Embark documenta en detalle cómo Consult y Embark funcionan juntos.
Fig. 1: Comando consult-git-grep
Fig. 2: consult-imenu
de comandos
Fig. 3: consult-line
de comando
La mayoría de los comandos de Consulta siguen el esquema de nomenclatura significativo consult-
. Muchos comandos implementan una característica de Emacs poco conocida pero conveniente llamada “historial futuro”, que adivina qué entrada desea el usuario. En el símbolo del sistema, escriba Mn
y, por lo general, Consultar insertará el símbolo o cosa en el punto en la entrada.
CONSEJO: Si tienes activados los anotadores de Marginalia, escribe Mx ^consult
para ver todos los comandos de Consulta con su descripción abreviada. Alternativamente, escriba Ch a ^consult
para obtener una descripción general de todas las variables y funciones de Consulta con sus descripciones.
consult-buffer
: versión mejorada de switch-to-buffer
con soporte para buffers virtuales. Admite vista previa en vivo de búferes y limitación a los tipos de búfer virtuales. Puede escribir f SPC
para limitarse a archivos recientes. Presione SPC
para mostrar buffers efímeros. Teclas de restricción admitidas: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
restringida a buffers y archivos recientes del proyecto actual. Puede agregar fuentes personalizadas a consult-project-buffer-sources
. El comando puede solicitarle un proyecto si lo invoca desde fuera de un proyecto.consult-bookmark
: seleccione o cree un marcador. Para seleccionar marcadores, puede utilizar el consult-buffer
como alternativa, que puede incluir una fuente de búfer virtual de marcadores. Tenga en cuenta que consult-bookmark
admite la vista previa de marcadores y la reducción.consult-recent-file
: seleccione entre archivos recientes con vista previa. Es posible que prefiera el potente consult-buffer
, que puede incluir archivos recientes como fuente de búfer virtual. El recentf-mode
permite el seguimiento de archivos recientes. consult-yank-from-kill-ring
: versión mejorada de yank
para seleccionar un elemento del kill-ring
. El texto seleccionado se previsualiza como superposición en el búfer.consult-yank-pop
: versión mejorada de yank-pop
con comportamiento DWIM, que reemplaza el último yank
recorriendo el kill-ring
o, si no ha habido un último yank
consulta el kill-ring
. El texto seleccionado se previsualiza como superposición en el búfer.consult-yank-replace
: Como consult-yank-pop
, pero siempre reemplaza el último yank
con un elemento del kill-ring
.consult-kmacro
: Seleccione la macro del anillo de macros y ejecútela. consult-register
: Seleccionar de la lista de registros. El comando admite la reducción de tipos de registros y la vista previa de las posiciones de los marcadores. Este comando es útil para buscar el contenido del registro. Para un acceso rápido, utilice los comandos consult-register-load
, consult-register-store
o los comandos de registro integrados de Emacs.consult-register-format
: establezca register-preview-function
en esta función para mejorar el formato del registro. Vea la configuración de ejemplo.consult-register-window
: Reemplace register-preview
con esta función para obtener una mejor ventana de registro. Vea la configuración de ejemplo.consult-register-load
: Comando de utilidad para cargar rápidamente un registro. El comando salta al valor del registro o lo inserta.consult-register-store
: UI mejorada para almacenar registros según el contexto actual con un menú de acciones. Con una región activa, almacene/añada/anteponga el contenido, eliminando opcionalmente la región cuando se proporciona un argumento de prefijo. Con un argumento de prefijo numérico, almacene/agregue el número. De lo contrario, almacene puntos, conjuntos de marcos, ventanas o kmacro. Ejemplos de uso:M-' x
: si no hay ninguna región activa, almacene el punto en el registro x
. Si una región está activa, almacene la región en el registro x
.M-' Mw x
: Almacenar la configuración de la ventana en el registro x
.Cu 100 M-' x
: Almacenar número en el registro x
. consult-goto-line
: salta al número de línea mejorado con vista previa en vivo. Este es un reemplazo directo de goto-line
. Ingrese un número de línea para saltar a la primera columna de la línea dada. Alternativamente ingrese line:column
para saltar a una columna específica.consult-mark
: salta a un marcador en el mark-ring
. Admite vista previa en vivo y edición recursiva.consult-global-mark
: salta a un marcador en el global-mark-ring
. Admite vista previa en vivo y edición recursiva.consult-outline
: salta a un encabezado del esquema. Admite reducción a un nivel de título, vista previa en vivo y edición recursiva.consult-imenu
: salta al elemento imenu en el búfer actual. Admite vista previa en vivo, edición recursiva y reducción.consult-imenu-multi
: salta al elemento del menú en los buffers del proyecto, con el mismo modo principal que el buffer actual. Admite vista previa en vivo, edición recursiva y reducción. Esta característica se ha inspirado en imenu-anywhere. consult-line
: ingrese la cadena de búsqueda y seleccione entre las líneas coincidentes. Admite vista previa en vivo y edición recursiva. El símbolo en el punto y la cadena Isearch reciente se agregan al “historial futuro” y se puede acceder a ellos presionando Mn
. Cuando consult-line
está vinculada al isearch-mode-map
y se invoca durante un Isearch en ejecución, utilizará la cadena de Isearch actual.consult-line-multi
: busca dinámicamente en múltiples buffers. De forma predeterminada, busca en los buffers del proyecto. Si se invoca con un argumento de prefijo, busque en todos los buffers. Los candidatos se calculan según la demanda en función de la entrada. El comando se comporta como consult-grep
, pero opera en buffers en lugar de archivos.consult-keep-lines
: Reemplazo de keep/flush-lines
que utiliza el estilo de finalización actual para filtrar el búfer. La función actualiza el búfer mientras escribe. En particular, consult-keep-lines
puede reducir aún más un búfer de recopilación de Embark exportado, basándose en el mismo filtrado de finalización que completing-read
. Si la entrada comienza con el operador de negación, es decir, ! SPC
, el filtro coincide con el complemento. Si una región está activa, la región restringe el filtrado.consult-focus-lines
: Oculta temporalmente líneas filtrándolas usando el estilo de finalización actual. Llame con el argumento de prefijo Cu
para mostrar las líneas ocultas nuevamente. Si la entrada comienza con el operador de negación, es decir, ! SPC
, el filtro coincide con el complemento. A diferencia de consult-keep-lines
esta función no edita el búfer. Si una región está activa, la región restringe el filtrado. consult-grep
, consult-ripgrep
, consult-git-grep
: busca expresiones regulares en archivos. Consulta invoca a Grep de forma asincrónica, mientras ingresa el término de búsqueda. Después de al menos consult-async-min-input
, se inicia la búsqueda. Consulta divide la cadena de entrada en dos partes, si el primer carácter es un carácter de puntuación, como #
. Por ejemplo #regexps#filter-string
, se divide en el segundo #
. Las regexps
de la cadena se pasan a Grep. Tenga en cuenta que Consult transforma las expresiones regulares de Emacs en expresiones que comprende el programa de búsqueda. Utilice siempre expresiones regulares de Emacs cuando se le solicite. Si ingresa varias expresiones regulares separadas por espacios, solo se mostrarán las líneas que coincidan con todas las expresiones regulares. Para hacer coincidir el espacio literalmente, escape del espacio con una barra invertida. La filter-string
se pasa al filtrado rápido de Emacs para reducir aún más la lista de coincidencias. Esto es particularmente útil si está utilizando un estilo de finalización avanzado como sin orden. consult-grep
admite vista previa. consult-grep
busca en el directorio del proyecto actual si se encuentra un proyecto. De lo contrario, se busca en el default-directory
. Si se invoca consult-grep
con el argumento de prefijo Cu Ms g
, puede especificar uno o más archivos y directorios separados por comas manualmente. Si se invoca con dos argumentos de prefijo Cu Cu Ms g
, primero puede seleccionar un proyecto si aún no está dentro de un proyecto.consult-find
, consult-fd
, consult-locate
: busque el archivo haciendo coincidir la ruta con una expresión regular. Al igual que con consult-grep
, la raíz del proyecto o el directorio actual es el directorio raíz para la búsqueda. La cadena de entrada se trata de manera similar a consult-grep
, donde la primera parte se pasa para buscar y la segunda parte se usa para el filtrado de Emacs. Prefije argumentos para consult-find
trabajo igual que los de los comandos de consulta grep. consult-compile-error
: salta a un error de compilación. Admite la reducción de vista previa en vivo y la edición recursiva.consult-flymake
: Salta al diagnóstico de Flymake. Admite vista previa en vivo y edición recursiva. El comando admite la reducción. Presione e SPC
, w SPC
, n SPC
para mostrar solo errores, advertencias y notas respectivamente.consult-xref
: Integración con xref. Esta función se puede configurar como xref-show-xrefs-function
y xref-show-definitions-function
. consult-complex-command
: seleccione un comando del command-history
. Este comando es una versión completing-read
del repeat-complex-command
y también es un reemplazo del comando command-history
de chistory.el.consult-history
: inserte una cadena del historial del búfer actual, por ejemplo, el historial de Eshell o Comint. También puedes invocar este comando desde el minibúfer. En ese caso, consult-history
utiliza el historial almacenado en la minibuffer-history-variable
. Si prefiere completion-at-point
, eche un vistazo a cape-history
del paquete Cape.consult-isearch-history
: durante una sesión de Isearch, este comando selecciona una cadena de búsqueda del historial y continúa la búsqueda con la cadena recién seleccionada. Fuera de Isearch, el comando le permite elegir una cadena del historial e inicia una nueva Isearch. consult-isearch-history
actúa como un reemplazo directo de isearch-edit-string
. consult-minor-mode-menu
: Activa/desactiva el modo menor. Admite la reducción a los modos encendido/apagado/local/global presionando i/o/l/g SPC
respectivamente.consult-mode-command
: ejecuta un comando desde los modos menor o mayor actualmente activos. Admite la reducción al modo local-menor/global-menor/mayor mediante las teclas l/g/m
. consult-org-heading
: Variante de consult-imenu
o consult-outline
para buffers de organización. El titular y los titulares de sus antepasados están separados por barras. Admite la limitación por nivel de título, prioridad y palabra clave TODO, así como vista previa en vivo y edición recursiva.consult-org-agenda
: salta al encabezado de la agenda de una organización. Admite la limitación por nivel de título, prioridad y palabra clave TODO, así como vista previa en vivo y edición recursiva. consult-man
: busque la página de manual de Unix, a través de Unix apropos
o man -k
. consult-man
abre la página de manual seleccionada usando el comando man
de Emacs.consult-info
: Búsqueda de texto completo a través de páginas de información. Si el comando se invoca desde un búfer *info*
, buscará en el manual actual. Es posible que desee crear sus propios comandos que busquen en un conjunto predefinido de páginas de información, por ejemplo: ( 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
: seleccione un tema y desactive todos los temas actualmente habilitados. Admite vista previa en vivo del tema mientras se desplaza por los candidatos.consult-preview-at-point
y consult-preview-at-point-mode
: Comando y modo menor que muestra una vista previa del candidato en un punto del búfer *Completions*
. Este modo es relevante si usa Mct o la interfaz de usuario *Completions*
predeterminada.consult-completion-in-region
: en caso de que no utilice Corfú como su interfaz de usuario de finalización en el búfer, esta función se puede configurar como completion-in-region-function
. Luego, la interfaz de usuario de finalización del minibúfer (por ejemplo, Vertico o Icomplete) se utilizará para 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)))
En lugar de consult-completion-in-region
, es posible que prefiera ver las finalizaciones directamente en el búfer como una pequeña ventana emergente. En ese caso, recomiendo el paquete Corfú. Existe una limitación técnica para consult-completion-in-region
en combinación con los modos Lsp. El servidor Lsp se basa en la entrada en el punto para generar cadenas candidatas refinadas. Dado que la finalización se transfiere del búfer original al minibúfer, el servidor no recibe la entrada actualizada. Por el contrario, la finalización de Lsp en el búfer, por ejemplo a través de Corfú, funciona correctamente ya que la finalización se realiza directamente en el búfer original.
Consult mejora completing-read
con vistas previas en vivo de los candidatos, capacidades adicionales de limitación de grupos de candidatos y listas de candidatos generadas de forma asincrónica. La función interna consult--read
, que utilizan la mayoría de los comandos de consulta, es una envoltura delgada para completing-read
y proporciona una funcionalidad especial. Para admitir múltiples fuentes candidatas existe la función de alto nivel consult--multi
. La arquitectura de Consult le permite trabajar con diferentes sistemas de finalización en el backend, sin dejar de ofrecer funciones avanzadas.
Algunos comandos de Consulta admiten vistas previas en vivo. Por ejemplo, cuando se desplaza por los elementos de consult-line
, el búfer se desplazará a la posición correspondiente. Es posible saltar hacia adelante y hacia atrás entre el minibúfer y el búfer para realizar una edición recursiva mientras la búsqueda está en curso.
Consulta habilita vistas previas de forma predeterminada. Puede desactivarlos ajustando la variable consult-preview-key
. Además, es posible especificar combinaciones de teclas que activen la vista previa manualmente, como se muestra en la configuración de ejemplo. La configuración predeterminada de consult-preview-key
es any
, lo que significa que Consulta activa la vista previa inmediatamente al presionar cualquier tecla cuando el candidato seleccionado cambia. Puede configurar cada comando individualmente con su propia :preview-key
. Son posibles las siguientes configuraciones:
'any
(list :debounce 0.5 'any)
"M-."
(list :debounce 0.5 "M-.")
nil
Una recomendación segura es dejar habilitadas las vistas previas automáticas inmediatas en general y deshabilitar la vista previa automática solo para comandos donde la vista previa puede ser costosa debido a la carga de archivos. Internamente, Consult utiliza el valor de this-command
para determinar la :preview-key
personalizada. Esto significa que si incluye un comando consult-*
dentro de su propia función o comando, también deberá agregar el nombre de su comando personalizado a la llamada consult-customize
para que sea considerado.
(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
En este caso, uno podría preguntarse cuál es la diferencia entre usar una acción Embarcar en el candidato actual en comparación con una vista previa activada manualmente. La principal diferencia es que los archivos abiertos mediante vista previa manual se cierran nuevamente después de finalizar la sesión. Durante la vista previa, algunas funciones se desactivan para mejorar el rendimiento; consulte, por ejemplo, las variables de personalización consult-preview-variables
y consult-preview-allowed-hooks
. Solo se ejecutan los ganchos enumerados en consult-preview-allowed-hooks
. Esta variable se aplica a find-file-hook
, change-major-mode-hook
y mode hooks, por ejemplo, prog-mode-hook
. Para habilitar el bloqueo de fuentes adicional durante la vista previa, agregue los ganchos correspondientes a la lista de permitidos. El siguiente código demuestra esto para org-modern y 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 )
Los archivos más grandes que consult-preview-partial-size
se previsualizan parcialmente. Retrasar la vista previa también es útil para consult-theme
, ya que la vista previa del tema es lenta. El retraso da como resultado una experiencia de interfaz de usuario más fluida.
; ; 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 tiene soporte especial para grupos candidatos. Si la interfaz de usuario de finalización admite la funcionalidad de agrupación, la interfaz de usuario separa los grupos con líneas finas y muestra los títulos de los grupos. La agrupación es útil si la lista de candidatos consta de candidatos de varios tipos o candidatos de múltiples fuentes, como el comando consult-buffer
, que muestra tanto los buffers como los archivos abiertos recientemente. Tenga en cuenta que puede deshabilitar los títulos de los grupos estableciendo la propiedad :group
del comando correspondiente en nulo usando la macro consult-customize
.
Al ingresar un prefijo de restricción o presionar una tecla de restricción, es posible restringir los candidatos de finalización a un determinado grupo de candidatos. Cuando utiliza el comando consult-buffer
, puede ingresar el prefijo b SPC
para restringir la lista de candidatos a buffers únicamente. Si presiona DEL
después, se mostrará nuevamente la lista completa de candidatos. Además se puede configurar una tecla de prefijo de estrechamiento y una tecla de ampliación que se pueden presionar para lograr el mismo efecto, consulte las variables de configuración consult-narrow-key
y consult-widen-key
.
Después de presionar consult-narrow-key
, las posibles teclas de restricción se pueden mostrar presionando Ch
. Al presionar Ch
después de alguna tecla de prefijo, se invoca el prefix-help-command
, que muestra la ventana de ayuda de combinación de teclas de forma predeterminada. Como alternativa más compacta, existe el comando consult-narrow-help
que se puede vincular a una clave, por ejemplo ?
o Ch
en consult-narrow-map
, como se muestra en la configuración de ejemplo. Si está instalada la tecla Which, las teclas de restricción se muestran automáticamente en la ventana de tecla después de presionar la consult-narrow-key
.
Consult tiene soporte para la generación asincrónica de listas de candidatos. Esta característica se utiliza para comandos de búsqueda como consult-grep
, donde la lista de coincidencias se genera dinámicamente mientras el usuario escribe una expresión regular. El proceso grep se ejecuta en segundo plano. Al modificar la expresión regular, el proceso en segundo plano finaliza y se inicia un nuevo proceso con la expresión regular modificada.
Las coincidencias encontradas se pueden limitar utilizando el estilo de finalización de Emacs instalado. Esto puede resultar potente si utiliza, por ejemplo, el estilo de finalización orderless
.
Este filtrado de dos niveles es posible dividiendo la cadena de entrada. Parte de la cadena de entrada se trata como entrada para grep y parte de la entrada se utiliza para filtrar. Hay varios estilos de división disponibles, configurados en consult-async-split-styles-alist
: nil
, comma
, semicolon
y coma y perl
. El estilo de división predeterminado se configura con la variable consult-async-split-style
.
Con los estilos de división comma
y semicolon
, la primera palabra antes de la coma o el punto y coma se pasa a grep, la cadena restante se usa para filtrar. El estilo de división nil
no realiza ninguna división, toda la entrada se pasa a grep.
El estilo de división perl
divide la cadena de entrada en un carácter de puntuación, utilizando una sintaxis similar a la de las expresiones regulares de Perl.
Ejemplos:
#defun
: busca "defun" usando grep.#consult embark
: busque “consultar” y “embarcar” usando grep en cualquier orden.#first.*second
: busque "primero" seguido de "segundo" usando grep.#(consult|embark)
: Busque “consultar” o “embarcar” usando grep. Tenga en cuenta el uso de expresiones regulares al estilo de Emacs.#defun#consult
: busque "defun" usando grep, filtre con la palabra "consultar"./defun/consult
: También es posible utilizar otros caracteres de puntuación.#to#
: Fuerza la búsqueda de "a" usando grep, ya que el patrón grep debe ser más largo que los caracteres consult-async-min-input
por defecto.#defun -- --invert-match#
: Pasa el argumento --invert-match
a grep. Los procesos asincrónicos como find
y grep
crean un búfer de registro de errores _*consult-async*
(tenga en cuenta el espacio inicial), que es útil para solucionar problemas. El mensaje tiene un pequeño indicador que muestra el estado del proceso:
:
los dos puntos habituales, antes de proporcionar la entrada.*
con cara de advertencia, el proceso se está ejecutando.:
con cara de éxito, éxito, proceso salió con un código de error de cero.!
con cara de error, falla, proceso cerrado con un código de error distinto de cero.;
con cara de error, interrumpido, por ejemplo, si se proporcionan más entradas. Se pueden combinar múltiples fuentes candidatas sincrónicas. Esta característica es utilizada por el comando consult-buffer
para presentar candidatos similares a búfer en un único menú para un acceso rápido. De forma predeterminada, consult-buffer
incluye búferes, marcadores, archivos recientes y búferes y archivos específicos del proyecto. Es posible configurar la lista de fuentes a través de la variable consult-buffer-sources
. Se pueden definir fuentes personalizadas arbitrarias.
Como ejemplo, la fuente del marcador se define de la siguiente manera:
( defvar consult--source-bookmark
`( :name " Bookmark "
:narrow ?m
:category bookmark
:face consult-bookmark
:history bookmark-history
:items ,# 'bookmark-all-names
:action ,# 'consult--bookmark-action ))
Campos de origen obligatorios:
:category
Categoría de finalización.:items
Lista de cadenas para seleccionar o función que devuelve una lista de cadenas. No se admite una lista de celdas de desventajas.Campos de origen opcionales:
:name
Nombre de la fuente, utilizado para acotar, títulos de grupo y anotaciones.:narrow
Carácter de limitación o par (character . string)
.:preview-key
Tecla o teclas de vista previa que activan la vista previa.:enabled
Función que debe devolver t si la fuente está habilitada.:hidden
Cuando t candidatos de esta fuente están ocultos de forma predeterminada.:face
utilizada para resaltar a los candidatos.:annotate
Función de anotación llamada para cada candidato, devuelve una cadena.:history
Nombre de la variable de historial para agregar el candidato seleccionado.:default
Debe ser t si el primer elemento de la fuente es el valor predeterminado.:action
Función llamada con el candidato seleccionado.:new
Función llamada con el nuevo nombre del candidato, solo si :require-match
es nulo.:state
Constructor de estado para la fuente, debe devolver la función de estado. Los campos :state
y :action
de las fuentes merecen una explicación más extensa. La función :action
toma un solo argumento y solo se llama después de la selección con el candidato seleccionado, si la selección no ha sido abortada. Esta funcionalidad se proporciona para mayor comodidad y fácil definición de fuentes. El campo :state
es más general. La función :state
es una función constructora sin argumentos, que puede realizar algunas configuraciones necesarias para la vista previa. Debe devolver un cierre que requiere una ACCIÓN y un argumento CANDIDATO. Consulte la cadena de documentación de consult--with-preview
para obtener más detalles sobre el argumento ACCIÓN.
De forma predeterminada, consult-buffer
muestra una vista previa de los búferes, marcadores y archivos. Cargar archivos o marcadores recientes puede resultar en operaciones costosas. Sin embargo, es posible configurar una vista previa manual de la siguiente manera.
(consult-customize
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
:preview-key " M-. " )
Las fuentes se pueden agregar directamente a la lista consult-buffer-source
para mayor comodidad. Por ejemplo, la siguiente fuente enumera todos los buffers de organización y le permite crear otros nuevos.
( 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 )
Se pueden crear fuentes similares para otros modos principales. Consulte la wiki de Consulta para obtener muchos ejemplos de fuentes adicionales. Consulte también la documentación de consult-buffer
y de la consult--multi
API. La función consult--multi
se puede utilizar para crear nuevos comandos de múltiples fuentes.
NOTA : Instale el paquete embark-consult
de MELPA, que proporciona acciones de Embarque específicas de Consulta y la exportación del búfer Occur.
Embark es un paquete versátil que ofrece acciones dependientes del contexto, comparables a un menú contextual. Consulte el manual de Embark para obtener una descripción detallada de sus capacidades.
Las acciones son comandos que pueden operar en el candidato actualmente seleccionado (o objetivo en la terminología de Embark). Al completar archivos, se ofrece, por ejemplo, el comando delete-file
. Con Embark puede ejecutar comandos arbitrarios en el candidato seleccionado actualmente a través de Mx
.
Además, Embark proporciona el comando embark-collect
, que recopila candidatos y los presenta en un búfer de recolección de Embark, donde se les pueden aplicar más acciones. Una característica relacionada es el comando embark-export
, que exporta listas de candidatos a un búfer de un tipo especial. Por ejemplo, en el caso de completar el archivo, se abre un búfer Dired.
En el contexto de Consult, particularmente interesante es la posibilidad de exportar las líneas coincidentes de consult-line
, consult-outline
, consult-mark
y consult-global-mark
. Las líneas coincidentes se exportan a un búfer de Occur donde se pueden editar a través del occur-edit-mode
(presione la tecla e
). De manera similar, Embark admite la exportación de las coincidencias encontradas por consult-grep
, consult-ripgrep
y consult-git-grep
a un búfer Grep, donde se pueden editar las coincidencias entre archivos, si el paquete wgrep está instalado. Estos tres flujos de trabajo son simétricos.
consult-line
-> embark-export
al búfer occur-mode
-> occur-edit-mode
para editar coincidencias en el búfer.consult-grep
-> embark-export
al búfer grep-mode
-> wgrep
para editar todas las coincidencias.consult-find
-> embark-export
al búfer dired-mode
-> wdired-change-to-wdired-mode
para editar.Consult se puede instalar desde ELPA o MELPA a través del administrador de paquetes integrado de Emacs. Alternativamente, se puede instalar directamente desde el repositorio de desarrollo a través de otros administradores de paquetes no estándar.
Existe la wiki de Consulta, donde se pueden aportar ejemplos de configuración adicionales.
IMPORTANTE: Se recomienda habilitar el enlace léxico en su configuración. Muchos fragmentos de código relacionados con Consult requieren vinculación léxica, ya que utilizan lambdas y cierres.
El paquete Consult solo proporciona comandos y no agrega combinaciones de teclas ni modos. Por lo tanto, el paquete no es intrusivo pero requiere un pequeño esfuerzo de configuración. Para utilizar los comandos de consulta, se recomienda agregar combinaciones de teclas para los comandos a los que se accede con frecuencia. Los comandos poco utilizados se pueden invocar a través de Mx
. Siéntase libre de vincular solo los comandos que considere útiles para su flujo de trabajo. La configuración que se muestra aquí se basa en la macro use-package
, que es una herramienta conveniente para administrar las configuraciones de los paquetes.
NOTA: Existe la wiki de Consulta, donde puede aportar ejemplos de configuración adicionales.
; ; 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 )