在 Emacs 中恢复到全局缓冲寄存器
In Emacs revert to global buffer registers
我将 Emacs 26.3 与 Spacemacs 0.300 一起使用,寄存器不会在缓冲区之间交叉(全局寄存器)。根据我在 EmacsWiki 上阅读的内容,默认情况下这应该是全局的。我的显然不是,我找不到它被设置为本地的任何地方,但它的行为是这样的。然而,尽管如此:
(make-variable-buffer-local 'register-alist)
使变量成为缓冲区的局部变量,我找不到如何使其恢复为全局变量,没有 make-variable-global
函数。
希望有人有建议,插入一个我刚刚保存的寄存器并告诉我那里什么都没有,这很令人沮丧!
您不能创建一个声明为始终是缓冲区局部变量的全局变量。
这就是为什么这个锤子相对不常用的原因 - 当你知道变量应该总是缓冲区本地时。
相反,您通常只需将 setq-local
或 set
与 make-local-variable
一起使用,它们仅为给定的缓冲区分配缓冲区本地值。然后没有什么可以阻止其他缓冲区 not 具有任何缓冲区本地值。
您当然可以使用 makunbound
来实际上从未绑定的变量开始。但是,对于已经声明变量 始终是缓冲区本地 并且您希望它 not 具有某些缓冲区中的缓冲区局部值。
我将 Emacs 26.3 与 Spacemacs 0.300 一起使用,寄存器不会在缓冲区之间交叉(全局寄存器)。根据我在 EmacsWiki 上阅读的内容,默认情况下这应该是全局的。我的显然不是,我找不到它被设置为本地的任何地方,但它的行为是这样的。然而,尽管如此:
(make-variable-buffer-local 'register-alist)
使变量成为缓冲区的局部变量,我找不到如何使其恢复为全局变量,没有 make-variable-global
函数。
希望有人有建议,插入一个我刚刚保存的寄存器并告诉我那里什么都没有,这很令人沮丧!
您不能创建一个声明为始终是缓冲区局部变量的全局变量。
这就是为什么这个锤子相对不常用的原因 - 当你知道变量应该总是缓冲区本地时。
相反,您通常只需将 setq-local
或 set
与 make-local-variable
一起使用,它们仅为给定的缓冲区分配缓冲区本地值。然后没有什么可以阻止其他缓冲区 not 具有任何缓冲区本地值。
您当然可以使用 makunbound
来实际上从未绑定的变量开始。但是,对于已经声明变量 始终是缓冲区本地 并且您希望它 not 具有某些缓冲区中的缓冲区局部值。