Consult предоставляет команды поиска и навигации на основе функции завершения чтения Emacs. Завершение позволяет быстро выбрать элемент из списка кандидатов. Consult предлагает асинхронные и интерактивные команды consult-grep
и consult-ripgrep
, а также команду построчного поиска consult-line
. Кроме того, Consult предоставляет расширенную команду переключения буфера consult-buffer
для переключения между буферами, недавно открытыми файлами, закладками и кандидатами, похожими на буфер, из других источников. Некоторые команды Consult представляют собой расширенные версии встроенных команд Emacs. Например, команда consult-imenu
представляет плоский список имен с предварительным просмотром, группировкой и сужением. Пожалуйста, ознакомьтесь с полным списком команд.
Consult полностью совместим с системами завершения, основанными на стандартном API completing-read
Emacs, в частности с системой завершения по умолчанию Vertico, Mct и Icomplete.
Этот пакет сводит к минимуму особенности системы заканчивания. Способность команд Consult хорошо работать с произвольными системами заканчивания — одно из главных преимуществ пакета. Consult хорошо вписывается в существующие системы и помогает создать полную среду завершения из небольших и независимых компонентов.
Вы можете комбинировать дополнительные пакеты Marginalia, Embark и Orderless с Consult. Marginalia дополняет отображение завершения аннотациями, например, строками документации или информацией о файле. Универсальный пакет Embark обеспечивает локальные действия, сравнимые с контекстным меню. Эти действия выполняются над выбранным кандидатом в минибуфере или в определенной точке обычных буферов. Например, при выборе файла из списка Embark предлагает действие по удалению файла. Кроме того, Embark предлагает возможность собирать кандидатов на завершение в буфер сбора. В разделе «Интеграционные документы Embark» подробно описано, как Consult и Embark работают вместе.
Рис. 1: Команда consult-git-grep
Рис. 2: consult-imenu
по командам
Рис. 3: Командная consult-line
Большинство команд Consult следуют значимой схеме именования consult-
. Многие команды реализуют малоизвестную, но удобную функцию Emacs, называемую «будущая история», которая угадывает, какой ввод хочет пользователь. В командной строке введите Mn
, и обычно Consult вставит символ или предмет в указанную точку во входные данные.
СОВЕТ: Если у вас активированы аннотаторы Marginalia, введите Mx ^consult
чтобы просмотреть все команды Consult с их сокращенным описанием. Альтернативно введите Ch a ^consult
, чтобы получить обзор всех переменных и функций Consult с их описаниями.
consult-buffer
: расширенная версия switch-to-buffer
с поддержкой виртуальных буферов. Поддерживает предварительный просмотр буферов в реальном времени и сужение до типов виртуальных буферов. Вы можете ввести f SPC
, чтобы перейти к последним файлам. Нажмите SPC
, чтобы отобразить временные буферы. Поддерживаемые клавиши сужения:recentf-mode
)consult-buffer-sources
.consult-buffer-other-window
, consult-buffer-other-frame
, consult-buffer-other-tab
: Варианты consult-buffer
.consult-project-buffer
: вариант consult-buffer
ограниченный буферами и последними файлами текущего проекта. Вы можете добавить собственные источники в consult-project-buffer-sources
. Команда может запросить проект, если вы вызовете ее вне проекта.consult-bookmark
: выберите или создайте закладку. Для выбора закладок в качестве альтернативы вы можете использовать consult-buffer
, который может включать в себя источник виртуального буфера закладок. Обратите внимание, что consult-bookmark
поддерживает предварительный просмотр закладок и их сужение.consult-recent-file
: выберите из последних файлов с предварительным просмотром. Вместо этого вы можете предпочесть мощный consult-buffer
, который может включать последние файлы в качестве источника виртуального буфера. recentf-mode
позволяет отслеживать последние файлы. consult-yank-from-kill-ring
: Расширенная версия yank
для выбора элемента из kill-ring
. Выделенный текст предварительно просматривается как наложение в буфере.consult-yank-pop
: Расширенная версия yank-pop
с DWIM-поведением, которая либо заменяет последнее yank
, циклически проходя через kill-ring
, либо, если последнего yank
не было, обращается к kill-ring
. Выделенный текст предварительно просматривается как наложение в буфере.consult-yank-replace
: Аналогично consult-yank-pop
, но всегда заменяет последнее yank
элементом из kill-ring
.consult-kmacro
: выберите макрос из кольца макросов и выполните его. consult-register
: выберите из списка регистров. Команда поддерживает сужение по типам регистров и предварительный просмотр положений маркеров. Эта команда полезна для поиска содержимого регистра. Для быстрого доступа используйте команды consult-register-load
, consult-register-store
или встроенные команды Emacs Register.consult-register-format
: Установите для register-preview-function
эту функцию для расширенного форматирования регистра. См. пример конфигурации.consult-register-window
: замените register-preview
этой функцией для лучшего окна регистрации. См. пример конфигурации.consult-register-load
: служебная команда для быстрой загрузки регистра. Команда либо переходит к значению регистра, либо вставляет его.consult-register-store
: улучшен пользовательский интерфейс для хранения регистров в зависимости от текущего контекста с помощью меню действий. В активном регионе сохраните/добавьте/добавьте содержимое в начало, при необходимости удалив регион, когда задан аргумент префикса. С помощью аргумента числового префикса сохраните/добавьте число. В противном случае сохраните точку, набор фреймов, окно или kmacro. Примеры использования:M-' x
: Если ни один регион не активен, сохраните точку в регистре x
. Если регион активен, сохраните его в регистре x
.M-' Mw x
: сохранить конфигурацию окна в регистре x
.Cu 100 M-' x
: Номер ячейки в регистре x
. consult-goto-line
: переход к номеру строки, улучшенный предварительным просмотром в реальном времени. Это замена goto-line
. Введите номер строки, чтобы перейти к первому столбцу данной строки. Альтернативно введите line:column
, чтобы перейти к определенному столбцу.consult-mark
: Перейти к маркеру в mark-ring
. Поддерживает предварительный просмотр в реальном времени и рекурсивное редактирование.consult-global-mark
: Перейти к маркеру в кольце global-mark-ring
. Поддерживает предварительный просмотр в реальном времени и рекурсивное редактирование.consult-outline
: переход к заголовку структуры. Поддерживает сужение до уровня заголовка, предварительный просмотр в реальном времени и рекурсивное редактирование.consult-imenu
: переход к элементу меню в текущем буфере. Поддерживает предварительный просмотр в реальном времени, рекурсивное редактирование и сужение.consult-imenu-multi
: Переход к элементу меню в буферах проекта с тем же основным режимом, что и текущий буфер. Поддерживает предварительный просмотр в реальном времени, рекурсивное редактирование и сужение. Эта функция была вдохновлена imenu-anywhere. consult-line
: введите строку поиска и выберите одну из соответствующих строк. Поддерживает предварительный просмотр в реальном времени и рекурсивное редактирование. Символ в точке и недавняя строка поиска добавляются в «будущую историю», и к ним можно получить доступ, нажав Mn
. Когда consult-line
привязана к isearch-mode-map
и вызывается во время выполнения поиска, она будет использовать текущую строку поиска.consult-line-multi
: динамический поиск по нескольким буферам. По умолчанию поиск по буферам проекта. При вызове с аргументом-префиксом поиск по всем буферам. Кандидаты вычисляются по требованию на основе входных данных. Команда ведет себя как consult-grep
, но работает с буферами, а не с файлами.consult-keep-lines
: замена для keep/flush-lines
, которая использует текущий стиль завершения для фильтрации буфера. Функция обновляет буфер во время набора текста. В частности, consult-keep-lines
могут еще больше сузить экспортируемый буфер сбора Embark, полагаясь на ту же фильтрацию завершения, что и completing-read
. Если ввод начинается с оператора отрицания, т. е ! SPC
, фильтр соответствует дополнению. Если регион активен, он ограничивает фильтрацию.consult-focus-lines
: Временно скройте строки, отфильтровав их с использованием текущего стиля завершения. Вызовите аргумент префикса Cu
, чтобы снова отобразить скрытые строки. Если ввод начинается с оператора отрицания, т. е ! SPC
, фильтр соответствует дополнению. В отличие от consult-keep-lines
эта функция не редактирует буфер. Если регион активен, он ограничивает фильтрацию. consult-grep
, consult-ripgrep
, consult-git-grep
: Поиск регулярного выражения в файлах. Consult вызывает Grep асинхронно, пока вы вводите поисковый запрос. После хотя бы ввода символов consult-async-min-input
начинается поиск. Consult разбивает входную строку на две части, если первый символ является знаком пунктуации, например #
. Например #regexps#filter-string
разделяется по второму #
. regexps
строк передаются в Grep. Обратите внимание, что Consult преобразует регулярные выражения Emacs в выражения, понятные программе поиска. Всегда используйте регулярные выражения Emacs в командной строке. Если вы вводите несколько регулярных выражений, разделенных пробелом, отображаются только строки, соответствующие всем регулярным выражениям. Чтобы буквально соответствовать пробелу, замените пробел обратной косой чертой. filter-string
передается быстрой фильтрации Emacs для дальнейшего сужения списка совпадений. Это особенно полезно, если вы используете расширенный стиль завершения, например, без порядка. consult-grep
поддерживает предварительный просмотр. consult-grep
выполняет поиск в текущем каталоге проекта, если проект найден. В противном случае выполняется поиск default-directory
. Если consult-grep
вызывается с префиксным аргументом Cu Ms g
, вы можете вручную указать один или несколько файлов и каталогов, разделенных запятыми. При вызове с двумя префиксными аргументами Cu Cu Ms g
вы можете сначала выбрать проект, если вы еще не находитесь внутри проекта.consult-find
, consult-fd
, consult-locate
: Найти файл, сопоставив путь с регулярным выражением. Как и в случае с consult-grep
, корневым каталогом для поиска является либо корень проекта, либо текущий каталог. Входная строка обрабатывается аналогично consult-grep
, где первая часть передается для поиска, а вторая часть используется для фильтрации Emacs. Аргументы префикса для consult-find
работают так же, как и для команд Consult Grep. consult-compile-error
: переход к ошибке компиляции. Поддерживает сужение предварительного просмотра в реальном времени и рекурсивное редактирование.consult-flymake
: Перейти к диагностике Flymake. Поддерживает предварительный просмотр в реальном времени и рекурсивное редактирование. Команда поддерживает сужение. Нажмите e SPC
, w SPC
, n SPC
, чтобы отобразить только ошибки, предупреждения и примечания соответственно.consult-xref
: Интеграция с xref. Эту функцию можно установить как xref-show-xrefs-function
и xref-show-definitions-function
. consult-complex-command
: выберите команду из command-history
. Эта команда является версией repeat-complex-command
completing-read
, а также заменой команды command-history
из chistory.el.consult-history
: вставьте строку из текущей истории буфера, например, истории Eshell или Comint. Вы также можете вызвать эту команду из минибуфера. В этом случае consult-history
использует историю, хранящуюся в minibuffer-history-variable
. Если вы предпочитаете completion-at-point
, взгляните на cape-history
из пакета Cape.consult-isearch-history
: во время сеанса поиска эта команда выбирает строку поиска из истории и продолжает поиск с вновь выбранной строкой. За пределами Isearch команда позволяет выбрать строку из истории и запустить новый Isearch. consult-isearch-history
действует как замена isearch-edit-string
. consult-minor-mode-menu
: Включить/выключить второстепенный режим. Поддерживается сужение до режимов включения/выключения/локального/глобального нажатием i/o/l/g SPC
соответственно.consult-mode-command
: Запустите команду из активного в данный момент второстепенного или основного режимов. Поддерживает сужение до режима local-minor/global-minor/major с помощью клавиш l/g/m
. consult-org-heading
: вариант consult-imenu
или consult-outline
для буферов организации. Заголовок и заголовки его предков разделяются косой чертой. Поддерживается сужение по уровню заголовка, приоритету и ключевому слову TODO, а также предварительный просмотр в реальном времени и рекурсивное редактирование.consult-org-agenda
: переход к заголовку повестки дня организации. Поддерживается сужение по уровню заголовка, приоритету и ключевому слову TODO, а также предварительный просмотр в реальном времени и рекурсивное редактирование. consult-man
: Найдите справочную страницу Unix, apropos
, через Unix или man -k
. consult-man
открывает выбранную справочную страницу с помощью команды man
Emacs.consult-info
: Полнотекстовый поиск по информационным страницам. Если команда вызывается из буфера *info*
, она будет искать в текущем руководстве. Возможно, вы захотите создать свои собственные команды для поиска по заранее определенному набору информационных страниц, например: ( defun consult-info-emacs ()
" Search through Emacs info pages. "
( interactive )
(consult-info " emacs " " efaq " " elisp " " cl " " compat " ))
( defun consult-info-org ()
" Search through the Org info page. "
( interactive )
(consult-info " org " ))
( defun consult-info-completion ()
" Search through completion info pages. "
( interactive )
(consult-info " vertico " " consult " " marginalia " " orderless " " embark "
" corfu " " cape " " tempel " ))
consult-theme
: выберите тему и отключите все включенные в данный момент темы. Поддерживает предварительный просмотр темы в реальном времени при прокрутке кандидатов.consult-preview-at-point
и consult-preview-at-point-mode
: командный и второстепенный режим, который просматривает кандидата в определенной точке в буфере *Completions*
. Этот режим актуален, если вы используете Mct или пользовательский интерфейс *Completions*
по умолчанию.consult-completion-in-region
: если вы не используете Corfu в качестве пользовательского интерфейса завершения в буфере, эту функцию можно установить как completion-in-region-function
. Тогда ваш пользовательский интерфейс завершения минибуфера (например, Vertico или Icomplete) будет использоваться для completion-at-point
. ; ; Use `consult-completion-in-region' if Vertico is enabled.
; ; Otherwise use the default `completion--in-region' function.
( setq completion-in-region-function
( lambda ( &rest args )
( apply ( if vertico-mode
# 'consult-completion-in-region
# 'completion--in-region )
args)))
Вместо consult-completion-in-region
вы можете предпочесть видеть завершения непосредственно в буфере в виде небольшого всплывающего окна. В этом случае я рекомендую пакет Корфу. Существует техническое ограничение consult-completion-in-region
в сочетании с режимами Lsp. Сервер Lsp полагается на входные данные в определенной точке, чтобы генерировать уточненные строки-кандидаты. Поскольку завершение переносится из исходного буфера в минибуфер, сервер не получает обновленные входные данные. Напротив, завершение Lsp в буфере, например, через Corfu, работает правильно, поскольку завершение происходит непосредственно в исходном буфере.
Consult расширяет возможности completing-read
за счет предварительного просмотра кандидатов в реальном времени, дополнительных возможностей сужения групп кандидатов и асинхронно создаваемых списков кандидатов. Внутренняя функция consult--read
, которая используется большинством команд Consult, представляет собой тонкую оболочку completing-read
и предоставляет специальные функциональные возможности. Для поддержки нескольких источников-кандидатов существует функция высокого уровня consult--multi
. Архитектура Consult позволяет ему работать с различными системами заканчивания на серверной стороне, сохраняя при этом расширенные функции.
Некоторые команды Consult поддерживают предварительный просмотр в реальном времени. Например, когда вы прокручиваете элементы consult-line
, буфер прокручивается до соответствующей позиции. Можно переключаться между минибуфером и буфером вперед и назад для выполнения рекурсивного редактирования во время поиска.
Consult по умолчанию включает предварительный просмотр. Вы можете отключить их, изменив переменную consult-preview-key
. Кроме того, можно указать сочетания клавиш, которые запускают предварительный просмотр вручную, как показано в примере конфигурации. По умолчанию для параметра consult-preview-key
установлено значение any
, что означает, что Consult запускает предварительный просмотр немедленно при любом нажатии клавиши при изменении выбранного кандидата. Вы можете настроить каждую команду индивидуально, используя свой собственный :preview-key
. Возможны следующие настройки:
'any
(list :debounce 0.5 'any)
"M-."
(list :debounce 0.5 "M-.")
nil
Безопасная рекомендация — оставить автоматический немедленный предварительный просмотр включенным в целом и отключить автоматический предварительный просмотр только для команд, где предварительный просмотр может быть дорогостоящим из-за загрузки файлов. Внутри Consult использует значение this-command
для определения настроенного :preview-key
. Это означает, что если вы включите команду consult-*
в свою собственную функцию или команду, вам также нужно будет добавить имя вашей пользовательской команды в вызов consult-customize
чтобы она была учтена.
(consult-customize
consult-ripgrep consult-git-grep consult-grep
consult-bookmark consult-recent-file consult-xref
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
; ; my/command-wrapping-consult ;; disable auto previews inside my command
:preview-key '( :debounce 0.4 any) ; ; Option 1: Delay preview
; ; :preview-key "M-.") ;; Option 2: Manual preview
В этом случае можно задаться вопросом, в чем разница между использованием действия «Включить» для текущего кандидата и предварительным просмотром, запускаемым вручную. Основное отличие состоит в том, что файлы, открытые при предварительном просмотре вручную, снова закрываются после завершения сеанса. Во время предварительной версии некоторые функции отключены для повышения производительности, см., например, переменные настройки consult-preview-variables
и consult-preview-allowed-hooks
. Выполняются только перехваты, перечисленные в списке consult-preview-allowed-hooks
. Эта переменная применяется к find-file-hook
, change-major-mode-hook
и mode, например, prog-mode-hook
. Чтобы включить дополнительную блокировку шрифтов во время предварительного просмотра, добавьте соответствующие перехватчики в список разрешений. Следующий код демонстрирует это для org-modern и hl-todo.
; ; local modes added to prog-mode hooks
( add-to-list 'consult-preview-allowed-hooks 'hl-todo-mode )
( add-to-list 'consult-preview-allowed-hooks 'elide-head-mode )
; ; enabled global modes
( add-to-list 'consult-preview-allowed-hooks 'global-org-modern-mode )
( add-to-list 'consult-preview-allowed-hooks 'global-hl-todo-mode )
Файлы размером больше consult-preview-partial-size
просматриваются частично. Задержка предварительного просмотра также полезна для consult-theme
, поскольку предварительный просмотр темы происходит медленно. Задержка приводит к более плавному работе пользовательского интерфейса.
; ; 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 оказывает специальную поддержку группам кандидатов. Если пользовательский интерфейс завершения поддерживает функцию группировки, пользовательский интерфейс разделяет группы тонкими линиями и отображает заголовки групп. Группировка полезна, если список кандидатов состоит из кандидатов нескольких типов или кандидатов из нескольких источников, например, команда consult-buffer
, которая показывает как буферы, так и недавно открытые файлы. Обратите внимание, что вы можете отключить заголовки групп, установив для свойства :group
соответствующей команды значение nil с помощью макроса consult-customize
.
Введя префикс сужения или нажав клавишу сужения, можно ограничить кандидатов на завершение определенной группой кандидатов. Когда вы используете команду consult-buffer
, вы можете ввести префикс b SPC
, чтобы ограничить список кандидатов только буферами. Если после этого вы нажмете DEL
, снова отобразится полный список кандидатов. Кроме того, можно настроить сужающую префиксную клавишу и расширяющую клавишу, которые можно нажимать для достижения того же эффекта, см. переменные конфигурации consult-narrow-key
и consult-widen-key
.
После нажатия consult-narrow-key
возможные клавиши сужения можно отобразить, нажав Ch
. При нажатии Ch
после некоторой префиксной клавиши вызывается prefix-help-command
, которая по умолчанию отображает окно справки по привязке клавиш. В качестве более компактной альтернативы существует команда consult-narrow-help
, которую можно привязать к клавише, например ?
или Ch
в consult-narrow-map
, как показано в примере конфигурации. Если установлен ключ, сужающие клавиши автоматически отображаются в окне «Какой ключ» после нажатия consult-narrow-key
.
Consult поддерживает асинхронное создание списков кандидатов. Эта функция используется для команд поиска, таких как consult-grep
, где список совпадений генерируется динамически, пока пользователь вводит регулярное выражение. Процесс grep выполняется в фоновом режиме. При изменении регулярного выражения фоновый процесс завершается и запускается новый процесс с измененным регулярным выражением.
Найденные совпадения затем можно сузить, используя установленный стиль завершения Emacs. Это может оказаться полезным, если вы используете, например, стиль завершения orderless
.
Эта двухуровневая фильтрация возможна путем разделения входной строки. Часть входной строки обрабатывается как входные данные для grep, а часть входных данных используется для фильтрации. Доступно несколько стилей разделения, настроенных в consult-async-split-styles-alist
: nil
, comma
, semicolon
и perl
. Стиль разделения по умолчанию настраивается с помощью переменной consult-async-split-style
.
При использовании стилей разделения comma
и semicolon
первое слово перед запятой или точкой с запятой передается в grep, оставшаяся строка используется для фильтрации. Стиль разделения nil
не выполняет никакого разделения, весь ввод передается в grep.
Стиль разделения perl
разбивает входную строку по знаку пунктуации, используя синтаксис, аналогичный регулярным выражениям Perl.
Примеры:
#defun
: Найдите «defun» с помощью grep.#consult embark
: выполните поиск по словам «consult» и «embark» с помощью grep в любом порядке.#first.*second
: Найдите «первый», а затем «второй», используя grep.#(consult|embark)
: Найдите «консультацию» или «посадка» с помощью grep. Обратите внимание на использование регулярных выражений в стиле Emacs.#defun#consult
: Найдите «defun» с помощью grep, отфильтруйте по слову «consult»./defun/consult
: Также можно использовать другие знаки пунктуации.#to#
: Принудительный поиск «to» с использованием grep, поскольку по умолчанию шаблон grep должен быть длиннее, чем символы consult-async-min-input
.#defun -- --invert-match#
: передать аргумент --invert-match
в grep. Асинхронные процессы, такие как find
и grep
создают буфер журнала ошибок _*consult-async*
(обратите внимание на начальный пробел), который полезен при устранении неполадок. В приглашении есть небольшой индикатор, показывающий состояние процесса:
:
обычное двоеточие перед вводом.*
с предупреждением, процесс запущен.:
с лицом успеха, успех, процесс завершен с нулевым кодом ошибки.!
с лицом ошибки, сбой, процесс завершен с ненулевым кодом ошибки.;
с лицом ошибки, прервано, например, если предоставлено больше входных данных. Можно объединить несколько синхронных источников-кандидатов. Эта функция используется командой consult-buffer
для представления кандидатов, подобных буферу, в одном меню для быстрого доступа. По умолчанию consult-buffer
включает в себя буферы, закладки, последние файлы, а также буферы и файлы, специфичные для проекта. Настроить список источников можно через переменную consult-buffer-sources
. Могут быть определены произвольные пользовательские источники.
Например, источник закладки определяется следующим образом:
( defvar consult--source-bookmark
`( :name " Bookmark "
:narrow ?m
:category bookmark
:face consult-bookmark
:history bookmark-history
:items ,# 'bookmark-all-names
:action ,# 'consult--bookmark-action ))
Обязательные поля источника:
:category
Категория завершения.:items
Список строк для выбора или функция, возвращающая список строк. Список ячеек минусов не поддерживается.Необязательные поля источника:
:name
Имя источника, используемое для сужения, групповых заголовков и аннотаций.:narrow
Сужающийся символ или пара (character . string)
.:preview-key
Клавиша предварительного просмотра или клавиши, запускающие предварительный просмотр.:enabled
Функция, которая должна возвращать t, если источник включен.:hidden
Когда t кандидатов этого источника скрыты по умолчанию.:face
используемое для выделения кандидатов.:annotate
Функция аннотации, вызываемая для каждого кандидата, возвращает строку.:history
Имя переменной истории, в которую нужно добавить выбранного кандидата.:default
Должен быть установлен, если первый элемент источника имеет значение по умолчанию.:action
Функция, вызываемая с выбранным кандидатом.:new
Функция вызывается с новым именем кандидата, только если :require-match
равен нулю.:state
Конструктор состояния для источника должен возвращать функцию состояния. Поля :state
и :action
источников заслуживают более подробного объяснения. Функция :action
принимает один аргумент и вызывается только после выбора выбранного кандидата, если выбор не был прерван. Данная функциональность предусмотрена для удобства и простоты определения источников. Поле :state
является более общим. Функция :state
— это функция-конструктор без аргументов, которая может выполнять некоторые настройки, необходимые для предварительного просмотра. Он должен возвращать замыкание, которое принимает аргумент ДЕЙСТВИЕ и КАНДИДАТ. Дополнительную информацию об аргументе ACTION см. в строке документации consult--with-preview
.
По умолчанию consult-buffer
просматривает буферы, закладки и файлы. Загрузка последних файлов или закладок может привести к дорогостоящим операциям. Однако можно настроить предварительный просмотр вручную следующим образом.
(consult-customize
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
:preview-key " M-. " )
Для удобства источники можно добавлять непосредственно в список consult-buffer-source
. Например, в следующем источнике перечислены все буферы организации, и вы можете создавать новые.
( defvar org-source
( list :name " Org Buffer "
:category 'buffer
:narrow ?o
:face 'consult-buffer
:history 'buffer-name-history
:state # 'consult--buffer-state
:new
( lambda ( name )
( with-current-buffer ( get-buffer-create name)
( insert " #+title: " name " nn " )
( org-mode )
(consult--buffer-action ( current-buffer ))))
:items
( lambda ()
(consult--buffer-query :mode 'org-mode :as # 'consult--buffer-pair ))))
( add-to-list 'consult-buffer-sources 'org-source 'append )
Аналогичные источники можно создать и для других основных мод. См. вики Consult для получения множества дополнительных примеров источников. См. также документацию по consult-buffer
и внутреннему API consult--multi
. Функцию consult--multi
можно использовать для создания новых команд с несколькими источниками.
ПРИМЕЧАНИЕ . Установите пакет embark-consult
из MELPA, который обеспечивает действия Embark, специфичные для Consult, и экспорт буфера Occur.
Embark — это универсальный пакет, который предлагает контекстно-зависимые действия, сравнимые с контекстным меню. Подробное описание его возможностей см. в руководстве Embark.
Действия — это команды, которые могут действовать на текущего выбранного кандидата (или цель в терминологии Embark). При заполнении файлов, например, предлагается команда delete-file
. С помощью Embark вы можете выполнять произвольные команды над выбранным в данный момент кандидатом через Mx
.
Кроме того, Embark предоставляет команду embark-collect
, которая собирает кандидатов и представляет их в буфере сбора посадок, где к ним можно применить дальнейшие действия. Связанная с этим функция — команда embark-export
, которая экспортирует списки кандидатов в буфер специального типа. Например, в случае завершения файла открывается буфер Dired.
В контексте Consult особенно интересной является возможность экспорта совпадающих строк из consult-line
, consult-outline
, consult-mark
и consult-global-mark
. Соответствующие строки экспортируются в буфер событий, где их можно редактировать в occur-edit-mode
(нажмите клавишу e
). Аналогичным образом, Embark поддерживает экспорт совпадений, найденных с помощью consult-grep
, consult-ripgrep
и consult-git-grep
, в буфер Grep, где можно редактировать совпадения между файлами, если установлен пакет wgrep. Эти три рабочих процесса симметричны.
consult-line
-> embark-export
в буфер occur-mode
-> occur-edit-mode
для редактирования совпадений в буфере.consult-grep
-> embark-export
в буфер grep-mode
-> wgrep
для редактирования всех совпадений.consult-find
-> embark-export
в буфер dired-mode
-> wdired-change-to-wdired-mode
для редактирования.Consult можно установить из ELPA или MELPA через встроенный менеджер пакетов Emacs. В качестве альтернативы его можно установить напрямую из репозитория разработки через другие нестандартные менеджеры пакетов.
Существует вики-сайт Consult, где можно добавить дополнительные примеры конфигурации.
ВАЖНО: Рекомендуется включить лексическую привязку в вашей конфигурации. Многие фрагменты кода, связанные с Consult, требуют лексической привязки, поскольку в них используются лямбда-выражения и замыкания.
Пакет Consult предоставляет только команды и не добавляет никаких сочетаний клавиш или режимов. Поэтому пакет ненавязчив, но требует небольших усилий по настройке. Чтобы использовать команды Consult, рекомендуется добавить сочетания клавиш для часто используемых команд. Редко используемые команды можно вызывать через Mx
. Не стесняйтесь привязывать к своему рабочему процессу только те команды, которые вы считаете полезными. Показанная здесь конфигурация основана на макросе use-package
, который является удобным инструментом для управления конфигурациями пакетов.
ПРИМЕЧАНИЕ. Существует вики-сайт Consult, где вы можете предоставить дополнительные примеры конфигурации.
; ; 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 )