Emacs如何在init配置文件中全局设置buffer变量bidi-display-reordering
Emacs全局设置
bidi-display-reordering的正确方案 配置不生效的原因
bidi-display-reordering是缓冲区局部(buffer-local)变量,你直接用setq赋值只会修改执行语句时当前活跃缓冲区的变量值,不会修改全局默认值,也不会作用到后续新建的所有缓冲区,因此重启后配置不生效。
正确配置步骤
1. 基础全局默认设置
替换你原来的setq语句为setq-default,直接修改该变量的全局默认值,所有新建缓冲区都会默认继承这个配置:
(setq-default bidi-display-reordering nil)
2. 覆盖模式强制修改的场景
如果加了上面的配置后,仍有部分类型的缓冲区(比如org模式、markdown模式等)不生效,是因为对应主模式初始化时主动覆盖了该变量的默认值,可添加全局钩子强制所有缓冲区加载时应用配置:
;; 所有打开的文件缓冲区强制应用配置 (add-hook 'find-file-hook (lambda () (setq bidi-display-reordering nil))) ;; 覆盖所有主模式切换场景,包含临时缓冲区、特殊缓冲区 (add-hook 'after-change-major-mode-hook (lambda () (setq bidi-display-reordering nil)))
验证配置是否生效
重启Emacs后打开任意缓冲区,按M-x执行describe-variable命令,输入bidi-display-reordering回车,即可查看当前缓冲区该变量的实际值、全局默认值是否符合预期。
内容的提问来源于stack exchange,提问作者Arik
相关产品推荐
相关产品推荐

