不同模式下的不同选项卡缩进设置

cad*_*ian 7 emacs whitespace indentation

我目前正在使用whitespace-cleanup我的保存钩子.使用indent-tabs-mode,我可以保存文件,没有任何标签.

一切都很好,我不希望我的文件中有标签.但.

Makefile确实需要标签.那是我的问题.如何更改makefile-mode的设置?

我想setq无论是indent-tabs-mode(美国商务部说,它成为缓冲本地)或whitespace-style,这是行不通的.

Art*_*rim 2

我也遇到了同样的问题,这似乎是 Emacs 中的一个错误(截至 24.2)。使用以下命令尝试一下.emacs

(setq-default indent-tabs-mode nil)
(add-hook 'after-save-hook 'whitespace-cleanup)
Run Code Online (Sandbox Code Playgroud)

如果您打开一个文件,保存它,然后打开一个 Makefile,您将遇到您所描述的问题。但如果你先打开一个Makefile,保存它,然后打开另一种类型的文件,你就会遇到相反的问题:8个空格将被制表符取代。

问题是它indent-tabs-mode是缓冲区本地的,但在其中whitespace.el设置为一个名为 的常规变量whitespace-indent-tabs-mode。因此,看到的第一个值才是最重要的。

这是另一种解决方法,也可以解决其他一些问题。将其添加到您的.emacs

(defadvice whitespace-cleanup (around whitespace-cleanup-indent-tab
                                      activate)
  "Fix whitespace-cleanup indent-tabs-mode bug"
  (let ((whitespace-indent-tabs-mode indent-tabs-mode)
        (whitespace-tab-width tab-width))
    ad-do-it))
Run Code Online (Sandbox Code Playgroud)