Если переменная имеет одинаковое значение в каждом буфере, то она, очевидно, должна выжить, когда буфер уничтожен.Он может применяться к другим существующим буферам, и даже если все буферы в этом режиме уничтожены, он будет применяться к новым буферам в этом режиме.Таким образом, этот вопрос относится только к переменным, которые имеют локальное значение, которое может отличаться в каждом буфере.
Для того, чтобы иметь локальное значение в буфере, переменная должна быть явно сделанной локальной ,Обычно это делается либо путем вызова make-local-variable
, если переменная должна быть локальной в данном буфере, либо путем вызова make-variable-buffer-local
сразу после defvar
, чтобы объявить, что все присваивания этой переменной (кроме set-default
и т. П.) будет локальным.
Если буфер похоронен, это никак не повлияет на его переменные.Хоронить буфер - это почти видимость окна, в котором он отображается.
Если буфер уничтожен, все его значения локальной переменной перестают существовать.
Это оставляет только тот случай, когда существующийбуфер меняет свой основной режим.Все функции основного режима должны вызывать kill-all-local-variables
.Это удаляет любое значение локальной переменной, которое имело значение для предыдущего режима.