J'ai accidentellement exécuté ce qui suit:
(unintern variable)
où variable
était la valeur nil
.
Comment récupérer nil
sans redémarrer Emacs?
elisp
interactive-development
Sean Allred
la source
la source
Réponses:
(defconst nil ())
semble avoir le bon effet; notez que
nil
et une liste vide sont indiscernables dans Emacs Lisp.J'ai regardé
lread.c:4034
pour voir commentnil
est créé dans un fichierobarray
.Notez le commentaire à la ligne 3896 dans
lread.c
:Cela explique pourquoi Emacs ne protège pas contre
(unintern nil)
et(unintern t)
.la source
Stef
celui-ci, en fait :) En bas de cette route se trouve la folie.nil
est une erreur courante facile à protéger. Pourquoi mettre une main courante sur un escalier alors que les gens pouvaient sauter par-dessus?unintern
n'est pas utilisé fréquemment, vraiment. L'utiliser sur le principalobarray
est à peu près toujours une mauvaise idée (c'est pourquoi le compilateur d'octets se plaint lorsque vous ne passez pas le deuxième argument etC-h f unintern
ne vous dit pas que le deuxième argument est en fait toujours facultatif).