【问题标题】:Why does one python file have indent-tabs-mode set?为什么一个 python 文件设置了 indent-tabs-mode ?
【发布时间】:2013-05-08 15:27:49
【问题描述】:

我有一个 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,它是如何设置的?

【问题讨论】:

标签: python emacs


【解决方案1】:

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

请参阅Directory Variables 上的文档。

【讨论】:

    【解决方案2】:

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

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

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

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

    我想 tabnanny 或 pylint 会发现这个。

    【讨论】:

    • 我无法重现这种行为。我猜你的 emacs 配置中有一些炼金术使这种情况发生。 :P
    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    相关资源
    最近更新 更多