Miałem błąd w jednym z moich rozszerzeń, które ostatecznie okazało się być spowodowane set
niedziałaniem zgodnie z oczekiwaniami:
;; -*- lexical-binding: t -*-
(let ((a nil))
(setq a t)
(print a))
(let ((a nil))
(set 'a t)
(print a))
po uruchomieniu z emacs -Q --batch -l temp.el
wydrukami:
t
nil
Wydaje mi się to bardzo dziwne. Miałem wrażenie, że (setq a b)
jest to skrót (set 'a b)
. Co się dzieje?
źródło