Это довольно странно.Я не могу установить какое-либо значение для переменной, если она называется 's' в интерактивном сеансе:
(setq s 'foo)
=> foo
s
=> nil
Почему?
Обновление 1:
Вотвывод переменной-описания для s:
s is void as a variable.
Documentation:
Not documented as a variable.
Почему в emacs lisp не сохраняется s как глобальная переменная?
Обновление 2:
Включеновне зависимости от того, что это не происходит в ванильном emacs (имеется ввиду один из модулей, которые я загружаю в .emacs или какой-то код в .emacs).Таким образом, вопрос теперь таков:
Как будет выглядеть исходный источник, когда переменная description приводит к «<var>
void как переменная»?
Я попробовал этос setq
, defconst
, defvar
и defcustom
, но ни один из них не выдал сообщение, которое я показываю.
Обновление 3:
Показанное выше сообщениесоздается, когда переменная буквально не связана (хотя это может быть fbound
).
(describe-variable 'non-existent)
=> "non-existent is void as a variable.
Documentation:
Not documented as a variable."
Итак, последний вопрос: Есть ли способ предотвратить привязку определенного имени переменной?