emacs26 Native display of line numbers 非常快

比如上面这个变量的文档:

Automatically becomes buffer-local when set.

这是个自动buffer-local的变量,setq-default会改变默认值,但是已经打开的buffer里的值不会变,毕竟只改了default。另外用setq只会改当前buffer的变量,default不会变。

而非buffer-local的变量,整个emacs里只有一份,setq当然就直接改了那一份,然后每个buffer看起来都是改了的。

defvar产生的是非buffer-local的,产出上面这样的自动buffer-local变量,据emacs wiki说有两种办法:

Use defvar or defcustom to define the variable, then use make-variable-buffer-local to make it always buffer-local, or
Use defvar or defcustom to define the variable, then write a mode, and in the mode function, use make-local-variable.

作为小白末端用户,第二种会用的多一点,比如一个包给的一个变量是非buffer-local的,我想在,比如,org-mode中改掉它,其他mode都不变,那就可以在org-mode-hook(setq (make-local-variable 'foo) "value")

(setq-local foo "value")
2 个赞