Consult fornece comandos de pesquisa e navegação com base na função de conclusão do Emacs completando-leitura. A conclusão permite selecionar rapidamente um item de uma lista de candidatos. Consult oferece comandos consult-grep
e consult-ripgrep
assíncronos e interativos, e o comando de pesquisa baseado em linha consult-line
. Além disso, o Consult fornece um comando avançado de troca de buffer consult-buffer
para alternar entre buffers, arquivos abertos recentemente, marcadores e candidatos semelhantes a buffer de outras fontes. Alguns dos comandos Consult são versões aprimoradas de comandos integrados do Emacs. Por exemplo, o comando consult-imenu
apresenta uma lista simples do Imenu com visualização ao vivo, agrupamento e estreitamento. Por favor, dê uma olhada na lista completa de comandos.
Consult é totalmente compatível com sistemas de preenchimento centrados na API completing-read
padrão do Emacs, notadamente o sistema de preenchimento padrão, Vertico, Mct e Icomplete.
Este pacote mantém as especificações do sistema de conclusão ao mínimo. A capacidade dos comandos Consult de funcionarem bem com sistemas de completação arbitrários é uma das principais vantagens do pacote. Consult se adapta bem às configurações existentes e ajuda você a criar um ambiente completo a partir de componentes pequenos e independentes.
Você pode combinar os pacotes complementares Marginalia, Embark e Orderless com Consult. Marginalia enriquece a exibição de conclusão com anotações, por exemplo, sequências de documentação ou informações de arquivo. O versátil pacote Embark oferece ações locais, comparáveis a um menu de contexto. Essas ações operam no candidato selecionado no minibuffer ou em um ponto nos buffers normais. Por exemplo, ao selecionar em uma lista de arquivos, o Embark oferece uma ação para excluir o arquivo. Além disso, o Embark oferece um recurso para coletar candidatos concluídos em um buffer de coleta. A seção Integração do Embark documenta detalhadamente como o Consult e o Embark trabalham juntos.
Figura 1: Comando consult-git-grep
Fig. 2: Comando consult-imenu
Fig. 3: consult-line
de comando
A maioria dos comandos Consult segue o esquema de nomenclatura significativo consult-
. Muitos comandos implementam um recurso do Emacs pouco conhecido, mas conveniente, chamado “histórico futuro”, que adivinha qual entrada o usuário deseja. Em um prompt de comando, digite Mn
e normalmente Consult irá inserir o símbolo ou coisa no ponto na entrada.
DICA: Se você tiver os anotadores Marginalia ativados, digite Mx ^consult
para ver todos os comandos Consult com sua descrição abreviada. Como alternativa, digite Ch a ^consult
para obter uma visão geral de todas as variáveis e funções do Consult com suas descrições.
consult-buffer
: versão aprimorada do switch-to-buffer
com suporte para buffers virtuais. Suporta visualização ao vivo de buffers e restrição aos tipos de buffer virtual. Você pode digitar f SPC
para restringir os arquivos recentes. Pressione SPC
para mostrar buffers efêmeros. Chaves de restrição suportadas: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 do consult-buffer
restrita a buffers e arquivos recentes do projeto atual. Você pode adicionar fontes personalizadas a consult-project-buffer-sources
. O comando pode solicitar um projeto se você invocá-lo de fora de um projeto.consult-bookmark
: Selecione ou crie um favorito. Para selecionar marcadores você pode usar o consult-buffer
como alternativa, que pode incluir uma fonte de buffer virtual de marcador. Observe que consult-bookmark
suporta visualização de marcadores e estreitamento.consult-recent-file
: Selecione entre arquivos recentes com visualização. Você pode preferir o poderoso consult-buffer
, que pode incluir arquivos recentes como fonte de buffer virtual. O recentf-mode
permite o rastreamento de arquivos recentes. consult-yank-from-kill-ring
: Versão aprimorada do yank
para selecionar um item do kill-ring
. O texto selecionado é visualizado como sobreposição no buffer.consult-yank-pop
: Versão aprimorada do yank-pop
com comportamento DWIM, que substitui o último yank
percorrendo o kill-ring
ou, se não houve um último yank
consulta o kill-ring
. O texto selecionado é visualizado como sobreposição no buffer.consult-yank-replace
: Como consult-yank-pop
, mas sempre substitui o último yank
por um item do kill-ring
.consult-kmacro
: Selecione a macro no anel de macro e execute-a. consult-register
: selecione na lista de registros. O comando suporta estreitamento para registrar tipos e visualização de posições de marcadores. Este comando é útil para pesquisar o conteúdo do registrador. Para acesso rápido, use os comandos consult-register-load
, consult-register-store
ou os comandos de registro integrados do Emacs.consult-register-format
: Defina register-preview-function
para esta função para uma formatação de registro aprimorada. Veja o exemplo de configuração.consult-register-window
: Substitua register-preview
por esta função para obter uma janela de registro melhor. Veja o exemplo de configuração.consult-register-load
: Comando utilitário para carregar rapidamente um registro. O comando salta para o valor do registro ou o insere.consult-register-store
: UI aprimorada para armazenar registros dependendo do contexto atual com um menu de ação. Com uma região ativa, armazene/anexe/anexe o conteúdo, opcionalmente excluindo a região quando um argumento de prefixo for fornecido. Com um argumento de prefixo numérico, armazene/adicione o número. Caso contrário, armazene ponto, conjunto de quadros, janela ou kmacro. Exemplos de uso:M-' x
: Se nenhuma região estiver ativa, armazena o ponto no registro x
. Se uma região estiver ativa, armazene a região no registro x
.M-' Mw x
: Armazena a configuração da janela no registro x
.Cu 100 M-' x
: Armazena o número no registro x
. consult-goto-line
: pula para o número da linha aprimorado com visualização ao vivo. Este é um substituto imediato para goto-line
. Insira um número de linha para pular para a primeira coluna da linha fornecida. Como alternativa, insira line:column
para pular para uma coluna específica.consult-mark
: Salte para um marcador no mark-ring
. Suporta visualização ao vivo e edição recursiva.consult-global-mark
: salta para um marcador no global-mark-ring
. Suporta visualização ao vivo e edição recursiva.consult-outline
: salta para um título do esboço. Suporta estreitamento para um nível de título, visualização ao vivo e edição recursiva.consult-imenu
: Salta para o item de menu no buffer atual. Suporta visualização ao vivo, edição recursiva e estreitamento.consult-imenu-multi
: Salta para o item do menu nos buffers do projeto, com o mesmo modo principal do buffer atual. Suporta visualização ao vivo, edição recursiva e estreitamento. Este recurso foi inspirado no imenu-anywhere. consult-line
: insira a string de pesquisa e selecione uma das linhas correspondentes. Suporta visualização ao vivo e edição recursiva. O símbolo no ponto e a string Isearch recente são adicionados ao “histórico futuro” e podem ser acessados pressionando Mn
. Quando consult-line
está vinculada ao isearch-mode-map
e é invocada durante um Isearch em execução, ela usará a string Isearch atual.consult-line-multi
: Pesquise dinamicamente em vários buffers. Por padrão, pesquise nos buffers do projeto. Se invocado com um argumento de prefixo, pesquise em todos os buffers. Os candidatos são calculados sob demanda com base na entrada. O comando se comporta como consult-grep
, mas opera em buffers em vez de arquivos.consult-keep-lines
: Substituição para keep/flush-lines
que usa o estilo de conclusão atual para filtrar o buffer. A função atualiza o buffer durante a digitação. Em particular, consult-keep-lines
podem restringir ainda mais um buffer de coleta Embark exportado, contando com a mesma filtragem de conclusão que completing-read
. Se a entrada começar com o operador de negação, ou seja, ! SPC
, o filtro corresponde ao complemento. Se uma região estiver ativa, a região restringirá a filtragem.consult-focus-lines
: Oculte temporariamente as linhas filtrando-as usando o estilo de conclusão atual. Chame com o argumento do prefixo Cu
para mostrar as linhas ocultas novamente. Se a entrada começar com o operador de negação, ou seja, ! SPC
, o filtro corresponde ao complemento. Ao contrário de consult-keep-lines
esta função não edita o buffer. Se uma região estiver ativa, a região restringirá a filtragem. consult-grep
, consult-ripgrep
, consult-git-grep
: Pesquise expressões regulares em arquivos. Consult invoca Grep de forma assíncrona, enquanto você insere o termo de pesquisa. Após pelo menos caracteres consult-async-min-input
, a pesquisa é iniciada. Consult divide a string de entrada em duas partes, se o primeiro caractere for um caractere de pontuação, como #
. Por exemplo #regexps#filter-string
, é dividido no segundo #
. A string regexps
é passada para o Grep. Observe que Consult transforma expressões regulares do Emacs em expressões compreendidas pelo programa de pesquisa. Sempre use expressões regulares do Emacs no prompt. Se você inserir diversas expressões regulares separadas por espaço, apenas as linhas correspondentes a todas as expressões regulares serão mostradas. Para corresponder literalmente ao espaço, escape do espaço com uma barra invertida. A filter-string
é passada para a filtragem rápida do Emacs para restringir ainda mais a lista de correspondências. Isso é particularmente útil se você estiver usando um estilo de conclusão avançado como sem pedido. consult-grep
suporta visualização. consult-grep
pesquisa o diretório atual do projeto se um projeto for encontrado. Caso contrário, o default-directory
será pesquisado. Se consult-grep
for invocado com argumento de prefixo Cu Ms g
, você poderá especificar manualmente um ou mais arquivos e diretórios separados por vírgula. Se invocado com dois argumentos de prefixo Cu Cu Ms g
, você pode primeiro selecionar um projeto se ainda não estiver dentro de um projeto.consult-find
, consult-fd
, consult-locate
: Encontre o arquivo comparando o caminho com um regexp. Assim como para consult-grep
, a raiz do projeto ou o diretório atual é o diretório raiz da pesquisa. A string de entrada é tratada de forma semelhante a consult-grep
, onde a primeira parte é passada para find e a segunda parte é usada para filtragem do Emacs. Argumentos de prefixo para consult-find
funcionam exatamente como aqueles para os comandos consultar grep. consult-compile-error
: salta para um erro de compilação. Suporta estreitamento de visualização ao vivo e edição recursiva.consult-flymake
: Ir para o diagnóstico Flymake. Suporta visualização ao vivo e edição recursiva. O comando oferece suporte ao estreitamento. Pressione e SPC
, w SPC
, n SPC
para mostrar apenas erros, avisos e notas respectivamente.consult-xref
: Integração com refex. Esta função pode ser definida como xref-show-xrefs-function
e xref-show-definitions-function
. consult-complex-command
: Selecione um comando do command-history
. Este comando é uma versão completing-read
do repeat-complex-command
e também é um substituto para o comando command-history
de chistory.el.consult-history
: Insira uma string do histórico do buffer atual, por exemplo, o histórico Eshell ou Comint. Você também pode invocar este comando do minibuffer. Nesse caso, consult-history
usa o histórico armazenado na minibuffer-history-variable
. Se você preferir completion-at-point
, dê uma olhada no cape-history
do pacote Cape.consult-isearch-history
: Durante uma sessão Isearch, este comando escolhe uma string de pesquisa do histórico e continua a pesquisa com a string recém-selecionada. Fora do Isearch, o comando permite escolher uma string do histórico e iniciar um novo Isearch. consult-isearch-history
atua como um substituto imediato para isearch-edit-string
. consult-minor-mode-menu
: Ativa/desativa o modo secundário. Suporta estreitamento para modos liga/desliga/local/global pressionando i/o/l/g SPC
respectivamente.consult-mode-command
: Execute um comando dos modos secundário ou principal atualmente ativos. Suporta estreitamento para o modo local menor/global menor/maior por meio das teclas l/g/m
. consult-org-heading
: variante de consult-imenu
ou consult-outline
para buffers organizacionais. O título e os títulos de seus ancestrais são separados por barras. Suporta estreitamento por nível de título, prioridade e palavra-chave TODO, bem como visualização ao vivo e edição recursiva.consult-org-agenda
: vai para o título da agenda da organização. Suporta estreitamento por nível de título, prioridade e palavra-chave TODO, bem como visualização ao vivo e edição recursiva. consult-man
: Encontre a página de manual do Unix, via Unix apropos
ou man -k
. consult-man
abre a página de manual selecionada usando o comando man
do Emacs.consult-info
: pesquisa de texto completo nas páginas de informações. Se o comando for invocado de dentro de um buffer *info*
, ele pesquisará no manual atual. Você pode querer criar seus próprios comandos que pesquisam um conjunto predefinido de páginas de informações, por exemplo: ( 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
: Selecione um tema e desative todos os temas atualmente habilitados. Suporta visualização ao vivo do tema enquanto percorre os candidatos.consult-preview-at-point
e consult-preview-at-point-mode
: Comando e modo secundário que visualiza o candidato no ponto no buffer *Completions*
. Este modo é relevante se você usar o Mct ou a UI *Completions*
padrão.consult-completion-in-region
: caso você não use Corfu como sua IU de conclusão no buffer, esta função pode ser definida completion-in-region-function
. Em seguida, sua UI de conclusão do minibuffer (por exemplo, Vertico ou Icomplete) será usada 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)))
Em vez de consult-completion-in-region
, você pode preferir ver as conclusões diretamente no buffer como um pequeno pop-up. Nesse caso, recomendo o pacote Corfu. Há uma limitação técnica de consult-completion-in-region
em combinação com os modos Lsp. O servidor Lsp depende da entrada no ponto para gerar strings candidatas refinadas. Como a conclusão é transferida do buffer original para o minibuffer, o servidor não recebe a entrada atualizada. Em contraste, a conclusão Lsp no buffer, por exemplo, via Corfu, funciona corretamente, pois a conclusão ocorre diretamente no buffer original.
O Consult aprimora completing-read
com visualizações ao vivo dos candidatos, recursos adicionais de restrição para grupos de candidatos e listas de candidatos geradas de forma assíncrona. A função interna consult--read
, que é usada pela maioria dos comandos Consult, é um invólucro fino para completing-read
e fornece funcionalidade especial. Para suportar múltiplas fontes candidatas, existe a função de alto nível consult--multi
. A arquitetura do Consult permite trabalhar com diversos sistemas de completação no backend, ao mesmo tempo que oferece recursos avançados.
Alguns comandos Consult suportam visualizações ao vivo. Por exemplo, quando você percorre os itens de consult-line
, o buffer irá rolar para a posição correspondente. É possível alternar entre o minibuffer e o buffer para realizar a edição recursiva enquanto a pesquisa está em andamento.
Consult permite visualizações por padrão. Você pode desativá-los ajustando a variável consult-preview-key
. Além disso, é possível especificar atalhos de teclado que acionam a visualização manualmente, conforme mostrado no exemplo de configuração. A configuração padrão de consult-preview-key
é any
, o que significa que Consult aciona a visualização imediatamente ao pressionar qualquer tecla quando o candidato selecionado muda. Você pode configurar cada comando individualmente com seu próprio :preview-key
. As seguintes configurações são possíveis:
'any
(list :debounce 0.5 'any)
"M-."
(list :debounce 0.5 "M-.")
nil
Uma recomendação segura é deixar as visualizações automáticas imediatas habilitadas em geral e desabilitar a visualização automática apenas para comandos onde a visualização pode ser cara devido ao carregamento do arquivo. Internamente, Consult usa o valor this-command
para determinar o :preview-key
customizado. Isso significa que se você agrupar um comando consult-*
em sua própria função ou comando, também precisará adicionar o nome do seu comando personalizado à chamada consult-customize
para que ele seja 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
Neste caso, pode-se perguntar qual é a diferença entre usar uma ação Embark no candidato atual em comparação com uma visualização acionada manualmente. A principal diferença é que os arquivos abertos pela visualização manual são fechados novamente após a conclusão da sessão. Durante a visualização, algumas funcionalidades são desabilitadas para melhorar o desempenho, veja por exemplo as variáveis de customização consult-preview-variables
e consult-preview-allowed-hooks
. Somente os ganchos listados em consult-preview-allowed-hooks
são executados. Esta variável se aplica a find-file-hook
, change-major-mode-hook
e ganchos de modo, por exemplo, prog-mode-hook
. Para ativar o bloqueio adicional de fontes durante a visualização, adicione os ganchos correspondentes à lista de permissões. O código a seguir demonstra isso para org-modern e 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 )
Arquivos maiores que consult-preview-partial-size
são visualizados parcialmente. Atrasar a visualização também é útil para consult-theme
, pois a visualização do tema é lenta. O atraso resulta em uma experiência de IU mais suave.
; ; 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))
A Consult tem suporte especial para grupos de candidatos. Se a UI de conclusão suportar a funcionalidade de agrupamento, a UI separará os grupos com linhas finas e mostrará os títulos dos grupos. O agrupamento é útil se a lista de candidatos consistir em candidatos de vários tipos ou candidatos de múltiplas fontes, como o comando consult-buffer
, que mostra buffers e arquivos abertos recentemente. Observe que você pode desabilitar os títulos dos grupos definindo a propriedade :group
do comando correspondente como nil usando a macro consult-customize
.
Ao inserir um prefixo de restrição ou ao pressionar uma tecla de restrição é possível restringir os candidatos de conclusão a um determinado grupo de candidatos. Ao usar o comando consult-buffer
, você pode inserir o prefixo b SPC
para restringir a lista de candidatos apenas aos buffers. Se você pressionar DEL
posteriormente, a lista completa de candidatos será mostrada novamente. Além disso, uma chave de prefixo de estreitamento e uma chave de alargamento podem ser configuradas e podem ser pressionadas para obter o mesmo efeito, consulte as variáveis de configuração consult-narrow-key
e consult-widen-key
.
Após pressionar consult-narrow-key
, as possíveis teclas de estreitamento podem ser mostradas pressionando Ch
. Ao pressionar Ch
após alguma tecla de prefixo, o prefix-help-command
é invocado, o que mostra a janela de ajuda de atalho de teclado por padrão. Como alternativa mais compacta, existe o comando consult-narrow-help
que pode ser vinculado a uma chave, por exemplo ?
ou Ch
no consult-narrow-map
, conforme mostrado no exemplo de configuração. Se which-key estiver instalada, as teclas de restrição serão mostradas automaticamente na janela which-key após pressionar a consult-narrow-key
.
Consult possui suporte para geração assíncrona de listas de candidatos. Este recurso é usado para comandos de pesquisa como consult-grep
, onde a lista de correspondências é gerada dinamicamente enquanto o usuário digita uma expressão regular. O processo grep é executado em segundo plano. Ao modificar a expressão regular, o processo em segundo plano é encerrado e um novo processo é iniciado com a expressão regular modificada.
As correspondências encontradas podem então ser reduzidas usando o estilo de conclusão do Emacs instalado. Isso pode ser poderoso se você estiver usando, por exemplo, o estilo de conclusão orderless
.
Essa filtragem de dois níveis é possível dividindo a string de entrada. Parte da string de entrada é tratada como entrada para grep e parte da entrada é usada para filtragem. Existem vários estilos de divisão disponíveis, configurados em consult-async-split-styles-alist
: nil
, comma
, semicolon
e perl
. O estilo de divisão padrão é configurado com a variável consult-async-split-style
.
Com os estilos de divisão comma
e semicolon
, a primeira palavra antes da vírgula ou ponto e vírgula é passada para grep, a string restante é usada para filtragem. O estilo de divisão nil
não realiza nenhuma divisão, toda a entrada é passada para grep.
O estilo de divisão perl
divide a string de entrada em um caractere de pontuação, usando uma sintaxe semelhante às expressões regulares Perl.
Exemplos:
#defun
: Pesquise “defun” usando grep.#consult embark
: pesquise “consultar” e “embarcar” usando grep em qualquer ordem.#first.*second
: Pesquise “primeiro” seguido de “segundo” usando grep.#(consult|embark)
: Pesquise “consultar” ou “embarcar” usando grep. Observe o uso de expressões regulares no estilo Emacs.#defun#consult
: Procure por “defun” usando grep, filtre com a palavra “consult”./defun/consult
: Também é possível usar outros caracteres de pontuação.#to#
: Força a busca por “to” usando grep, já que o padrão grep deve ser maior que os caracteres consult-async-min-input
por padrão.#defun -- --invert-match#
: Passe o argumento --invert-match
para grep. Processos assíncronos como find
e grep
criam um buffer de log de erros _*consult-async*
(observe o espaço à esquerda), que é útil para solução de problemas. O prompt possui um pequeno indicador que mostra o status do processo:
:
os dois pontos do prompt usual, antes que a entrada seja fornecida.*
com cara de aviso, o processo está em execução.:
com cara de sucesso, sucesso, processo encerrado com código de erro zero.!
com face de erro, falha, processo encerrado com um código de erro diferente de zero.;
com face de erro, interrompida, por exemplo, se mais entrada for fornecida. Várias fontes candidatas síncronas podem ser combinadas. Este recurso é usado pelo comando consult-buffer
para apresentar candidatos semelhantes a buffer em um único menu para acesso rápido. Por padrão, consult-buffer
inclui buffers, marcadores, arquivos recentes e buffers e arquivos específicos do projeto. É possível configurar a lista de fontes através da variável consult-buffer-sources
. Fontes personalizadas arbitrárias podem ser definidas.
Por exemplo, a origem do marcador é definida da seguinte forma:
( 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 origem obrigatórios:
:category
Categoria de conclusão.:items
Lista de strings para selecionar ou função que retorna uma lista de strings. Uma lista de células cons não é suportada.Campos de origem opcionais:
:name
Nome da fonte, usado para restringir, agrupar títulos e anotações.:narrow
Caractere de restrição ou par (character . string)
.:preview-key
Chave ou chaves de visualização que acionam a visualização.:enabled
Função que deve retornar t se a fonte estiver habilitada.:hidden
Quando t candidatos desta fonte estão ocultos por padrão.:face
usada para destacar os candidatos.:annotate
Função de anotação chamada para cada candidato, retorna string.:history
Nome da variável histórica para adicionar o candidato selecionado.:default
Deve ser t se o primeiro item da fonte for o valor padrão.:action
Função chamada com o candidato selecionado.:new
Função chamada com novo nome de candidato, somente se :require-match
for nulo.:state
Construtor de estado para a fonte, deve retornar a função de estado. Os campos :state
e :action
das fontes merecem uma explicação mais longa. A função :action
recebe um único argumento e só é chamada após a seleção com o candidato selecionado, se a seleção não tiver sido abortada. Esta funcionalidade é fornecida para conveniência e fácil definição de fontes. O campo :state
é mais geral. A função :state
é uma função construtora sem argumentos, que pode realizar algumas configurações necessárias para a visualização. Deve retornar um encerramento que recebe um argumento ACTION e um CANDIDATE. Consulte a doutrina de consult--with-preview
para obter mais detalhes sobre o argumento ACTION.
Por padrão, consult-buffer
visualiza buffers, marcadores e arquivos. Carregar arquivos ou marcadores recentes pode resultar em operações caras. Contudo é possível configurar uma pré-visualização manual da seguinte forma.
(consult-customize
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
:preview-key " M-. " )
As fontes podem ser adicionadas diretamente à lista consult-buffer-source
por conveniência. Por exemplo, a fonte a seguir lista todos os buffers da organização e permite criar novos.
( 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 )
Pode-se criar fontes semelhantes para outros modos principais. Consulte o wiki Consult para muitos exemplos de fontes adicionais. Veja também a documentação do consult-buffer
e da consult--multi
API. A função consult--multi
pode ser usada para criar novos comandos multi-fonte.
NOTA : Instale o pacote embark-consult
do MELPA, que fornece ações Embark específicas da Consulta e a exportação do buffer Occur.
Embark é um pacote versátil que oferece ações dependentes do contexto, comparáveis a um menu de contexto. Consulte o manual do Embark para uma descrição extensa de suas capacidades.
Ações são comandos que podem operar no candidato atualmente selecionado (ou alvo na terminologia do Embark). Ao completar arquivos, por exemplo, o comando delete-file
é oferecido. Com o Embark você pode executar comandos arbitrários no candidato atualmente selecionado via Mx
.
Além disso, o Embark fornece o comando embark-collect
, que coleta os candidatos e os apresenta em um buffer de coleta do Embark, onde outras ações podem ser aplicadas a eles. Um recurso relacionado é o comando embark-export
, que exporta listas de candidatos para um buffer de tipo especial. Por exemplo, no caso de conclusão do arquivo, um buffer Dired é aberto.
No contexto do Consult, particularmente interessante é a possibilidade de exportar as linhas correspondentes de consult-line
, consult-outline
, consult-mark
e consult-global-mark
. As linhas correspondentes são exportadas para um buffer de ocorrência onde podem ser editadas através do occur-edit-mode
(pressione a tecla e
). Da mesma forma, o Embark suporta a exportação das correspondências encontradas por consult-grep
, consult-ripgrep
e consult-git-grep
para um buffer Grep, onde as correspondências entre arquivos podem ser editadas, se o pacote wgrep estiver instalado. Esses três fluxos de trabalho são simétricos.
consult-line
-> embark-export
para buffer occur-mode
-> occur-edit-mode
para edição de correspondências no buffer.consult-grep
-> embark-export
para grep-mode
buffer -> wgrep
para edição de todas as correspondências.consult-find
-> embark-export
para buffer dired-mode
-> wdired-change-to-wdired-mode
para edição.Consult pode ser instalado a partir do ELPA ou MELPA através do gerenciador de pacotes integrado do Emacs. Alternativamente, ele pode ser instalado diretamente do repositório de desenvolvimento através de outros gerenciadores de pacotes não padrão.
Existe o wiki Consult, onde exemplos de configuração adicionais podem ser contribuídos.
IMPORTANTE: É recomendável ativar a ligação lexical em sua configuração. Muitos trechos de código relacionados à consulta exigem ligação lexical, pois usam lambdas e encerramentos.
O pacote Consult fornece apenas comandos e não adiciona atalhos de teclado ou modos. Portanto, o pacote não é intrusivo, mas requer um pouco de esforço de configuração. Para usar os comandos Consult, é aconselhável adicionar atalhos de teclado para comandos que são acessados com frequência. Comandos raramente usados podem ser invocados via Mx
. Sinta-se à vontade para vincular apenas os comandos que você considera úteis ao seu fluxo de trabalho. A configuração mostrada aqui depende da macro use-package
, que é uma ferramenta conveniente para gerenciar configurações de pacotes.
NOTA: Existe o wiki Consult, onde você pode contribuir com exemplos de configuração adicionais.
; ; 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 )