Как говорит sds, есть много проблем с этим кодом.
(defun foo (aa)
(interactive)
(progn
(setq aa '(+ aa 1))
))
Эта функция кратко устанавливает переменную aa
(которая является ее собственным аргументом и никогда не видна ничем вне функции) к буквально цитируемой форме (+ aa 1)
.Это также возвращает то же самое значение.Здесь aa
является символом aa
и ничего более.
(defun bar ()
(interactive)
(setq b 6)
(add-hook 'post-self-insert-hook (foo b)))
(foo b)
не является функцией, и поэтому добавление его в ловушку приведет к ошибке.
(lambda () (foo b))
- это функция, которая вызывает (foo b)
elisp выдает ошибку: Неверная функция: 7.
Не с кодом, который вы показали, он выиграл«т.Очевидно, вы оцениваете версию, в которой вы не цитировали (+ aa 1)
, и в этом случае (foo 6)
фактически вернет 7
, и, следовательно, вы пытаетесь сделать это:
(add-hook 'post-self-insert-hook 7)