Переменные завершения
Ниже приведены некоторые переменные, которые можно использовать для изменения поведения завершения по умолчанию.
- Пользовательская опция: completion-styles
Значение этой переменной представляет собой список стилей завершения (символов), используемых для выполнения завершения. Стиль завершения — это набор правил для генерации завершений. Каждый символ в этом списке должен иметь соответствующую запись в
completion-styles-alist.
- Переменная: completion-styles-alist
-
Эта переменная хранит список доступных стилей завершения. Каждый элемент в списке имеет вид
(style try-completion all-completions doc)
Здесь style — это имя стиля завершения (символ), который может быть использован в переменной
completion-stylesдля ссылки на этот стиль; try-completion — это функция, выполняющая завершение; all-completions — это функция, которая отображает список завершений; и doc — это строка, описывающая стиль завершения.Функции try-completion и all-completions должны принимать четыре аргумента: string, collection, predicate и point. Аргументы string, collection и predicate имеют те же значения, что и в
try-completion(см. Основные завершения), а аргумент point — это позиция точки внутри string. Каждая функция должна возвращать значение, отличное отnil, если она выполнила свою задачу, иnil, если она не выполнила (например, если нет способа завершить string в соответствии со стилем завершения).Когда пользователь вызывает команду завершения, например,
minibuffer-complete(см. Команды завершения), Emacs ищет первый стиль в спискеcompletion-stylesи вызывает его функцию try-completion. Если эта функция возвращаетnil, Emacs переходит к следующему стилю завершения в списке и вызывает его функцию try-completion, и так далее, пока одна из функций try-completion успешно не выполнит завершение и не вернёт значение, отличное отnil. Аналогичная процедура используется для отображения завершений с помощью функций all-completions.См. Стили завершения в Руководстве по GNU Emacs для описания доступных стилей завершения.
- Пользовательская опция: completion-category-overrides
-
Эта переменная определяет специальные стили завершения и другое поведение завершения, которое должно использоваться при завершении определённых типов текста. Её значение должно быть списком ассоциаций со следующей структурой:
(category . alist). category — это символ, описывающий то, что завершается; в настоящее время определены категорииbuffer,file, иunicode-name, но другие могут быть определены с помощью специализированных функций завершения (см. Программируемое завершение). alist — это список ассоциаций, описывающий поведение завершения для соответствующей категории. Поддерживаются следующие ключи списка ассоциаций:styles-
Значение должно быть списком стилей завершения (символов).
cycleЗначение должно быть значением для
completion-cycle-threshold(см. Опции завершения в Руководстве по GNU Emacs) для этой категории.
Дополнительные записи в списке ассоциаций могут быть определены в будущем.
- Переменная: completion-extra-properties
-
Эта переменная используется для указания дополнительных свойств текущей команды завершения. Она предназначена для привязки с помощью специализированных команд завершения. Её значение должно быть списком пар свойство-значение.
:annotation-function-
Значение должно быть функцией добавления аннотаций в буфере завершений. Эта функция должна принимать один аргумент, завершение, и должна возвращать
nilили строку, которая должна отображаться рядом с завершением. Если эта функция не задаёт свой собственный вид для строки аннотации, то по умолчанию добавляется видcompletions-annotationsк этой строке. :affixation-function-
Значение должно быть функцией добавления префиксов и суффиксов к завершениям. Эта функция должна принимать один аргумент, список завершений, и должна возвращать список аннотированных завершений. Каждый элемент возвращаемого списка должен быть списком из трёх элементов: завершение, строка префикса и строка суффикса. Эта функция имеет приоритет над
:annotation-function. :exit-functionЗначение должно быть функцией, которая выполняется после выполнения завершения. Функция должна принимать два аргумента, string и status, где string — это текст, к которому было применено завершение, а status указывает, какой тип операции произошёл:
finished, если текст теперь завершён;sole, если текст больше нельзя завершить, но завершение не закончено; илиexact, если текст является действительным завершением, но может быть дополнительно завершён.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Completion-Variables.html