2

我有一个 Python 源文件,它以某种方式“记住”了错误的缩进模式。如果我执行“emacs foo.py”,然后立即执行“ch 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,它是如何设置的?

4

2 回答 2

3

检查任何.dir-locals.el文件的源代码树。这些可能会覆盖您的默认 python 模式设置。

请参阅有关目录变量的文档。

于 2013-05-14T11:31:38.420 回答
0

好的,我想我想通了。没有 .dir-locals.el 文件,但我可以重现该行为。从...开始:

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

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

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

我想 tabnanny 或 pylint 会发现这个。

于 2013-05-15T12:39:58.207 回答