我有一个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,它是如何设置的?
答案 0 :(得分:3)
检查源树中是否有.dir-locals.el
个文件。这些可能会覆盖您的默认python模式设置。
请参阅Directory Variables上的文档。
答案 1 :(得分:0)
if foo:
print "this line is indented with 8 spaces"
并将其保存到foo.py中。再次打开foo.py,转到打印行的末尾,然后按返回创建并自动缩进另一行。那条线用标签缩进!我不知道我最初是如何用8个空格缩进的(我使用4个空格进行缩进),但这似乎是导致这种情况发生的原因。
手动将8空间缩进固定为4个空格并保存文件解决了问题。
我想tabnanny或pylint会找到这个。