为什么一个python文件设置了indent-tabs-mode?

时间:2013-05-14 11:10:29

标签: python emacs

我有一个Python源文件,它以某种方式“记住”了错误的缩进模式。如果我做“emacs foo.py”,然后立即执行“c-h v indent-tabs-mode”,它会说“它的值是t”。所有其他python源文件都提供了indent-tabs-mode nil。

我的文件中没有任何文字标签。如果我插入任何新文本,缩进是使用制表符完成的。在过去的某个时刻,我确实保存了(并检查版本控制)文件的一个版本,其中包含选项卡。

我正在使用python-mode.el,版本5.1.0和GNU Emacs 23.3.1。该文件以Python模式打开。

这里发生了什么? emacs在哪里存储了一些状态,只为这个文件设置了indent-tabs-mode,它是如何设置的?

2 个答案:

答案 0 :(得分:3)

检查源树中是否有.dir-locals.el个文件。这些可能会覆盖您的默认python模式设置。

请参阅Directory Variables上的文档。

答案 1 :(得分:0)

好吧,我想我想出来了。没有.dir-locals.el文件,但我可以重现该行为。从:

开始
if foo:
        print "this line is indented with 8 spaces"

并将其保存到foo.py中。再次打开foo.py,转到打印行的末尾,然后按返回创建并自动缩进另一行。那条线用标签缩进!我不知道我最初是如何用8个空格缩进的(我使用4个空格进行缩进),但这似乎是导致这种情况发生的原因。

手动将8空间缩进固定为4个空格并保存文件解决了问题。

我想tabnanny或pylint会找到这个。