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

Emacs 主模式挂钩配置会影响其他缓冲区,emacs,lisp,elisp,xemacs,major-mode,Emacs,Lisp,Elisp,Xemacs,Major Mode,让我先说我对emacs很陌生 我正在尝试为主要模式创建自定义设置。虽然我的设置功能正常,但我发现当我打开一个新的缓冲区时,缓冲区主模式自定义正在应用于其他不同类型的缓冲区 例如,如果我打开一个名为“Makefile”的文件,将使用Makefile模式并应用我的自定义设置。如果然后打开另一个文件,如“test.c”,则使用c模式,但来自makefile模式的自定义将与来自c模式的自定义合并 my.emacs文件的相关部分如下所示: (defun c-mode-settings () (c-

让我先说我对emacs很陌生

我正在尝试为主要模式创建自定义设置。虽然我的设置功能正常,但我发现当我打开一个新的缓冲区时,缓冲区主模式自定义正在应用于其他不同类型的缓冲区

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

my.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)
如何防止这些模式挂钩影响不同模式下的其他缓冲区

谢谢!
Andrew

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

在某些情况下,可以使用

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

但是您需要小心这一点。

查看描述会有所帮助。有没有办法强制全局次要模式变为本地模式?特别是show paren模式,因为这是导致问题的原因。user1902144:请参阅