大模式挂钩配置会影响其他缓冲区



首先,我要说的是,我对 emacs 很陌生。

我正在尝试为主要模式创建自定义。 虽然我的设置正常运行,但我观察到,当我打开新缓冲区时,该缓冲区主要模式自定义正在应用于不同类型的其他缓冲区。

例如,如果我打开一个名为"Makefile"的文件,则会使用makefile模式并应用我的自定义。 如果我然后打开另一个文件,例如"test.c",则使用 c 模式,但来自 makefile 模式的自定义与来自 c 模式的自定义合并。

我的.emacs文件的相关部分可以在下面看到:

(defun c-mode-settings ()
    (c-set-style                   "bsd")
    (set-buffer-file-coding-system 'utf-8-unix)
    (show-paren-mode               1)
    (setq c-basic-offset        4)
    (setq tab-width             4)
    (setq indent-tabs-mode      nil)
    (setq c-tab-always-indent   t)
    (setq require-final-newline t)
)
(defun makefile-mode-settings ()
    (setq whitespace-style '(tabs spaces space-mark tab-mark face lines-tail))
    (whitespace-mode       t)
    (show-paren-mode       1)
    (setq tab-width             4)
    (setq require-final-newline t)
)
(add-hook 'c-mode-hook        'c-mode-settings)
(add-hook 'makefile-mode-hook 'makefile-mode-settings)

如何防止这些模式挂钩影响不同模式下的其他缓冲区?

谢谢!安德鲁

您需要考虑到,有些变量在设置时会成为局部缓冲区,而有些变量是全局变量。 通常他们在描述中有相应的注释(使用 C-h v var-name 来获取此描述。

在某些情况下,您可以强制任何变量成为缓冲区的局部变量,使用

(set (make-local-variable 'var-name) var-value)

但是你需要小心这一点。

相关内容

  • 没有找到相关文章

最新更新