В этом разделе описываются функции для чтения объектов Lisp с помощью minibuffer.
Эта функция считывает объект Lisp с помощью minibuffer и возвращает его
без вычисления. Аргументы 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
"Введите выражение: " (format "%s" '(testing)))
;; Вот как отображается minibuffer:
---------- Буфер: Minibuffer ---------- Введите выражение: (testing)∗ ---------- Буфер: Minibuffer ----------
Пользователь может нажать RET немедленно, чтобы использовать начальный ввод в качестве значения по умолчанию, или может отредактировать ввод.
Эта функция считывает выражение Lisp с помощью minibuffer, вычисляет его,
а затем возвращает результат. Аргументы prompt и
initial используются так же, как в read-from-minibuffer.
Эта функция просто вычисляет результат вызова
read-minibuffer:
(eval-minibuffer prompt initial) ≡ (eval (read-minibuffer prompt initial))
Эта функция считывает выражение Lisp в minibuffer, вычисляет его,
а затем возвращает результат. Разница между этой командой и
eval-minibuffer в том, что здесь начальный form
не является необязательным и рассматривается как объект Lisp, который должен быть
преобразован в представленное для печати представление, а не как текстовая строка.
Он печатается с помощью prin1, поэтому, если это строка,
символы двойных кавычек (‘"’) появляются в
начальном тексте. См. Функции вывода.
В следующем примере мы предлагаем пользователю выражение с начальным текстом, который уже является допустимой формой:
(edit-and-eval-command "Пожалуйста, отредактируйте: " '(forward-word 1)) ;; После вычисления предыдущего выражения, ;; в minibuffer появляется следующее:
---------- Буфер: Minibuffer ---------- Пожалуйста, отредактируйте: (forward-word 1)∗ ---------- Буфер: Minibuffer ----------
Нажатие RET сразу же выведет minibuffer и вычислит выражение, тем самым перемещая точку вперед на одно слово.