Ниже приведены некоторые переменные, которые можно использовать для изменения поведения автодополнения по умолчанию.
Значение этой переменной представляет собой список стилей автодополнения (символов),
которые используются для выполнения автодополнения. Стиль автодополнения — это набор
правил для генерации дополнений. Каждый символ, встречающийся в этом списке, должен иметь
соответствующую запись в 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 для описания доступных стилей автодополнения.
Эта переменная указывает специальные стили автодополнения и другое
поведение автодополнения для использования при дополнении определенных типов
текста. Ее значение должно быть alist с элементами вида (category
. alist). category — это символ,
описывающий то, что дополняется; в настоящее время определены категории
buffer, file и unicode-name, но
другие могут быть определены с помощью специализированных функций автодополнения
(см. Программируемое автодополнение).
alist — это ассоциативный список, описывающий, как должно
вести себя автодополнение для соответствующей категории. Поддерживаются следующие
ключи alist:
stylesЗначение должно быть списком стилей автодополнения (символов).
cycleЗначение должно быть значением для completion-cycle-threshold
(см. Параметры автодополнения в Руководство GNU Emacs)
для этой категории.
cycle-sort-functionФункция для сортировки элементов при циклировании.
display-sort-functionФункция для сортировки элементов в буфере *Completions*.
Возможные значения: nil, что означает использование либо
функции сортировки из метаданных, либо, если она nil, откат к
completions-sort; identity, что означает полное
отсутствие сортировки, сохраняя исходный порядок; или любое другое значение,
не входящее в completions-sort (см. Параметры автодополнения в Руководство GNU Emacs).
group-functionФункция для группировки дополнений.
annotation-functionФункция для добавления аннотаций к дополнениям.
affixation-functionФункция для добавления префиксов и суффиксов к дополнениям.
См. Программируемое автодополнение для полного списка записей метаданных.
Эта переменная используется для указания дополнительных свойств текущей команды автодополнения. Она предназначена для установки с помощью специализированных команд автодополнения. Ее значение должно быть списком пар свойство-значение. Поддерживаются следующие свойства:
:categoryЗначение должно быть символом, описывающим, какой тип текста
пытается дополнить функция автодополнения. Если символ соответствует одному
из ключей в completion-category-overrides, описанным выше,
обычное поведение автодополнения переопределяется.
:annotation-functionЗначение должно быть функцией для добавления аннотаций в буфере
дополнений. Эта функция должна принимать один аргумент — дополнение, и
должна либо вернуть nil, либо строку, которая будет
отображена рядом с дополнением. Если эта функция сама не устанавливает
собственный фейс для строки суффикса аннотации, то фейс
completions-annotations по умолчанию добавляется к этой строке.
:affixation-functionЗначение должно быть функцией для добавления префиксов и суффиксов к
дополнениям. Эта функция должна принимать один аргумент — список дополнений,
и должна вернуть список аннотированных дополнений. Каждый элемент возвращаемого
списка должен быть трехэлементным списком: дополнение, строка префикса и
строка суффикса. Эта функция имеет приоритет над :annotation-function.
:group-functionФункция для группировки дополнений.
:display-sort-functionФункция для сортировки элементов в буфере *Completions*.
:cycle-sort-functionФункция для сортировки элементов при циклировании.
:exit-functionЗначение должно быть функцией, которая выполняется после выполнения
автодополнения. Функция должна принимать два аргумента: string и
status, где string — это текст, к которому
было выполнено дополнение, а status указывает, какой тип
операции произошел: finished, если текст теперь завершен;
sole, если текст не может быть дополнительно дополнен, но
дополнение не завершено; или exact, если текст является
действительным дополнением, но может быть дополнительно дополнен.