Spec-Zone.ru › Elisp

Чтение объектов Lisp с помощью минибуфера

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

Функция: read-minibuffer prompt &optional initial

Эта функция читает объект Lisp с помощью минибуфера и возвращает его без оценки. Аргументы prompt и initial используются как в read-from-minibuffer.

Это упрощенный интерфейс к функции read-from-minibuffer:

(read-minibuffer prompt initial)
≡
(let (minibuffer-allow-text-properties)
  (read-from-minibuffer prompt initial nil t))

Вот пример, в котором мы предоставляем строку "(testing)" в качестве начального ввода:

(read-minibuffer
 "Enter an expression: " (format "%s" '(testing)))

;; Here is how the minibuffer is displayed:
---------- Buffer: Minibuffer ----------
Enter an expression: (testing)∗
---------- Buffer: Minibuffer ----------

Пользователь может нажать RET сразу, чтобы использовать начальный ввод в качестве значения по умолчанию, или может отредактировать ввод.

Функция: eval-minibuffer prompt &optional initial

Эта функция читает выражение Lisp с помощью минибуфера, оценивает его и возвращает результат. Аргументы prompt и initial используются как в read-from-minibuffer.

Эта функция просто оценивает результат вызова read-minibuffer:

(eval-minibuffer prompt initial)
≡
(eval (read-minibuffer prompt initial))
Функция: edit-and-eval-command prompt form

Эта функция читает выражение Lisp в минибуфере, оценивает его и возвращает результат. Разница между этой командой и eval-minibuffer заключается в том, что здесь начальное значение form является обязательным и рассматривается как объект Lisp, который необходимо преобразовать в печатное представление, а не как строку текста. Оно выводится с помощью prin1, поэтому, если это строка, в начальном тексте появятся символы двойных кавычек (‘"’). См. Функции вывода.

В следующем примере мы предлагаем пользователю выражение с начальным текстом, который уже является корректным выражением:

(edit-and-eval-command "Please edit: " '(forward-word 1))

;; After evaluation of the preceding expression,
;;   the following appears in the minibuffer:
---------- Buffer: Minibuffer ----------
Please edit: (forward-word 1)∗
---------- Buffer: Minibuffer ----------

Нажатие RET сразу выведет из минибуфера и оценит выражение, тем самым переместив курсор на одно слово вперёд.

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

Spec-Zone.ru

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