Spec-Zone.ru › Elisp

История минибуфера

Список истории минибуфера записывает предыдущие вводы минибуфера, чтобы пользователь мог удобно их повторно использовать. Это переменная, значение которой является списком строк (предыдущих вводов), от последних к первым.

Существует множество отдельных списков истории минибуфера, используемых для различных типов вводов. Задача программиста на Lisp — указать правильный список истории для каждого использования минибуфера.

Вы указываете список истории минибуфера с необязательным аргументом history для read-from-minibuffer или completing-read. Вот возможные значения для него:

variable

Используйте variable (символ) в качестве списка истории.

(variable . startpos)

Используйте variable (символ) в качестве списка истории, и предполагайте, что начальная позиция истории — startpos (неотрицательное целое число).

Указание 0 для startpos эквивалентно указанию только символа variable. previous-history-element отобразит самый последний элемент списка истории в минибуфере. Если вы укажете положительное значение startpos, функции истории минибуфера будут работать так, как будто (elt variable (1- startpos)) был элементом истории, который в данный момент отображается в минибуфере.

Для согласованности вы также должны указать этот элемент истории в качестве начального содержимого минибуфера, используя аргумент initial для функции ввода в минибуфер (см. Начальный ввод).

Если вы не указываете history, то используется список истории по умолчанию minibuffer-history. Для других стандартных списков истории см. ниже. Вы также можете создать свой собственный список истории; просто инициализируйте его значением nil перед первым использованием. Если переменная является локальной для буфера, каждый буфер будет иметь свой собственный список истории ввода.

Как read-from-minibuffer, так и completing-read автоматически добавляют новые элементы в список истории и предоставляют команды, позволяющие пользователю повторно использовать элементы из списка. Всё, что вашей программе нужно для использования списка истории, это инициализировать его и передать его имя функциям ввода, когда вам это необходимо. Но безопасно изменять список вручную, когда функции ввода минибуфера им не пользуются.

Функции Emacs, которые добавляют новый элемент в список истории, также могут удалять старые элементы, если список становится слишком длинным. Переменная history-length определяет максимальную длину для большинства списков истории. Чтобы указать другую максимальную длину для определённого списка истории, поместите длину в свойство history-length символа списка истории. Переменная history-delete-duplicates определяет, нужно ли удалять дубликаты в истории.

Функция: add-to-history history-var newelt &optional maxelt keep-all

Эта функция добавляет новый элемент newelt, если он не пустая строка, в список истории, хранящийся в переменной history-var, и возвращает обновлённый список истории. Она ограничивает длину списка значением maxelt (если оно не nil) или history-length (описано ниже). Возможные значения maxelt имеют такое же значение, как значения history-length. history-var не может ссылаться на локальную переменную.

Обычно add-to-history удаляет дублирующиеся члены из списка истории, если history-delete-duplicates не nil. Однако, если keep-all не nil, это означает, что не следует удалять дубликаты и добавить newelt в список даже если он пустой.

Переменная: history-add-new-input

Если значение этой переменной равно nil, стандартные функции, которые читают из минибуфера, не добавляют новые элементы в список истории. Это позволяет программам Lisp явно управлять историей ввода, используя add-to-history. Значение по умолчанию — t.

Пользовательский параметр: history-length

Значение этой переменной определяет максимальную длину для всех списков истории, которые не указывают собственной максимальной длины. Если значение равно t, это означает, что максимальной длины нет (не удалять старые элементы). Если символ переменной списка истории имеет не-nil history-length свойство, оно переопределяет эту переменную для этого конкретного списка истории.

Пользовательский параметр: history-delete-duplicates

Если значение этой переменной равно t, это означает, что при добавлении нового элемента истории все предыдущие идентичные элементы удаляются.

Вот некоторые стандартные переменные списка истории минибуфера:

Переменная: minibuffer-history

Список истории по умолчанию для ввода в минибуфер.

Переменная: query-replace-history

Список истории для аргументов query-replace (и аналогичных аргументов других команд).

Переменная: file-name-history

Список истории для аргументов имён файлов.

Переменная: buffer-name-history

Список истории для аргументов имён буферов.

Переменная: regexp-history

Список истории для аргументов регулярных выражений.

Переменная: extended-command-history

Список истории для аргументов, которые являются именами расширенных команд.

Переменная: shell-command-history

Список истории для аргументов, которые являются командами оболочки.

Переменная: read-expression-history

Список истории для аргументов, которые являются выражениями Lisp для вычисления.

Переменная: face-name-history

Список истории для аргументов, которые являются стилями.

Переменная: custom-variable-history

Список истории для аргументов имён переменных, считываемых read-variable.

Переменная: read-number-history

Список истории для чисел, считываемых read-number.

Переменная: goto-line-history

Список истории для аргументов команды goto-line. Эту переменную можно сделать локальной в каждом буфере, настроив пользовательский параметр goto-line-history-local.

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/Minibuffer-History.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API