21.6.3 Команды минибуфера, выполняющие завершение

В этом разделе описываются сочетания клавиш, команды и опции пользователя, используемые в минибуфере для выполнения завершения.

Переменная: minibuffer-completion-table

Значение этой переменной — это таблица завершения (см. Базовые функции завершения), используемая для завершения в минибуфере. Это переменная, локальная для буфера, которая содержит то, что completing-read передает в try-completion. Она используется командами завершения минибуфера, такими как minibuffer-complete.

Переменная: minibuffer-completion-predicate

Значение этой переменной — это предикат, который completing-read передает в try-completion. Эта переменная также используется другими функциями завершения минибуфера.

Переменная: minibuffer-completion-confirm

Эта переменная определяет, запрашивает ли Emacs подтверждение перед выходом из минибуфера; completing-read устанавливает эту переменную, а функция minibuffer-complete-and-exit проверяет ее значение перед выходом. Если значение равно nil, подтверждение не требуется. Если значение равно confirm, пользователь может выйти с вводом, который не является допустимой альтернативой завершения, но Emacs запрашивает подтверждение. Если значение равно confirm-after-completion, пользователь может выйти с вводом, который не является допустимой альтернативой завершения, но Emacs запрашивает подтверждение, если пользователь ввел ввод сразу после любой из команд завершения в minibuffer-confirm-exit-commands.

Переменная: minibuffer-confirm-exit-commands

Эта переменная содержит список команд, которые заставляют Emacs запрашивать подтверждение перед выходом из минибуфера, если аргумент require-match в completing-read равен confirm-after-completion. Подтверждение запрашивается, если пользователь пытается выйти из минибуфера сразу после вызова любой команды из этого списка.

Команда: minibuffer-complete-word

Эта функция завершает содержимое минибуфера не более чем одним словом. Даже если в минибуфере только одно возможное завершение, minibuffer-complete-word не добавляет символов за пределы первого символа, который не является частью слова. См. Таблицы синтаксиса.

Команда: minibuffer-complete

Эта функция завершает содержимое минибуфера настолько, насколько это возможно.

Команда: minibuffer-complete-and-exit

Эта функция завершает содержимое минибуфера и выходит, если подтверждение не требуется, то есть если minibuffer-completion-confirm равно nil. Если подтверждение требуется, оно предоставляется повторным вызовом этой команды — команда запрограммирована так, чтобы работать без подтверждения при двух последовательных вызовах.

Команда: minibuffer-completion-help

Эта функция создает список возможных завершений текущего содержимого минибуфера. Она работает, вызывая all-completions, используя значение переменной minibuffer-completion-table в качестве аргумента collection, а значение minibuffer-completion-predicate в качестве аргумента predicate. Список завершений отображается в виде текста в буфере с именем *Completions*.

Функция: display-completion-list completions

Эта функция выводит completions в поток standard-output, обычно в буфер. (См. Чтение и вывод Lisp-объектов, для получения больше информации о потоках.) Аргумент completions обычно является списком завершений, возвращенным all-completions, но это не обязательно. Каждый элемент может быть символом или строкой, который просто выводится. Он также может быть списком из двух строк, который выводится так, как если бы строки были конкатенированы. Первая из двух строк — это фактическое завершение, вторая строка служит аннотацией.

Эта функция вызывается minibuffer-completion-help. Распространенный способ ее использования — вместе с with-output-to-temp-buffer, как здесь:

(with-output-to-temp-buffer "*Completions*"
  (display-completion-list
    (all-completions (buffer-string) my-alist)))
Опция пользователя: completion-auto-help

Если эта переменная не равна nil, команды завершения автоматически отображают список возможных завершений всякий раз, когда ничего не может быть завершено, потому что следующий символ не определен однозначно.

Переменная: minibuffer-local-completion-map

completing-read использует это значение как локальное сочетание клавиш, когда не требуется точное совпадение одного из завершений. По умолчанию это сочетание клавиш устанавливает следующие привязки:

?

minibuffer-completion-help

SPC

minibuffer-complete-word

TAB

minibuffer-complete

и использует minibuffer-local-map в качестве родительского сочетания клавиш (см. Определение minibuffer-local-map).

Переменная: minibuffer-local-must-match-map

completing-read использует это значение как локальное сочетание клавиш, когда требуется точное совпадение одного из завершений. Поэтому не привязано ни одно сочетание клавиш к exit-minibuffer, команде, которая безусловно выходит из минибуфера. По умолчанию это сочетание клавиш устанавливает следующие привязки:

C-j

minibuffer-complete-and-exit

RET

minibuffer-complete-and-exit

и использует minibuffer-local-completion-map в качестве родительского сочетания клавиш.

Переменная: minibuffer-local-filename-completion-map

Это разреженное сочетание клавиш, которое просто отвязывает SPC; потому что имена файлов могут содержать пробелы. Функция read-file-name объединяет это сочетание клавиш с либо minibuffer-local-completion-map, либо с minibuffer-local-must-match-map.

Переменная: minibuffer-beginning-of-buffer-movement

Если не nil, команда M-< переместится в конец подсказки, если точка находится после конца подсказки. Если точка находится на или до конца подсказки, переместится в начало буфера. Если эта переменная равна nil, команда ведет себя как beginning-of-buffer.