Estaba experimentando con variables locales y establecí:
(defvar-local foo nil "Buffer local foo")
Luego rediseñé mi programa para usar una variable global en su lugar usando:
(defvar foo nil "Not buffer local foo")
pero la variable todavía es local de búfer e incluso (kill-local-variable 'foo)
no la eliminó.
Básicamente, ¿cómo puedo "deshacer" make-local-variable
?
elisp
local-variables
buffer-local
Maciej Goszczycki
fuente
fuente
make-variable-buffer-local
nomake-local-variable
.Respuestas:
El comentario de @Malabarba explica su problema.
kill-local-variable
no deshacerse de la unión variable local. Pero como en su caso la variable es automáticamente local en cualquier búfer, cuando le reasigna un valor, ese valor es local.AFAIK, no hay forma de contrarrestar
make-variable-buffer-local
, excepto para usarunintern
en el símbolo. (makunbound
no ayuda)Si usa unintern, entonces está bien. Pero tenga en cuenta que la desconexión elimina el símbolo por completo, por lo que si utilizó el símbolo para otra cosa, además de una variable, entonces podría haber consecuencias negativas.
Entonces, la única respuesta que tengo es usar
unintern
y luego reasignar la variable al valor que desee: será un valor global.fuente