Чтение объектов 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