Emacs 23内置的python.el缩进使用宽度为4的标签打破

时间:2011-02-23 23:59:22

标签: python emacs tabs indentation

我在Emacs 23中使用python.el found here版本已经使用了几年没有发生任何事故。我决定尝试股票python.el,并遇到一个奇怪的问题:

当使用标签进行缩进并且标签宽度为4时,库存python.el将缩进每个级别的两个标签字符而不是1.标签宽度为5时,缩进将为1个标签加3个空格。因此,当indent-tabs-modet时,indent-for-tab-command似乎总是强制标签大小为8,无论tab-width设置为什么。

我可以设置其他与标签相关的变量来覆盖此行为吗?

2 个答案:

答案 0 :(得分:4)

我想在挖掘了Emacs 23 python.elthe newest python.el on the block股票的源代码后,我已经想到了这一点。

根据python-mode缓冲区中的这些设置,带标签的缩进和标签宽度为4的工作符合库存python.el的预期:

(setq indent-tabs-mode t
      tab-width 4
      python-indent 4)

对于新的python.el,您需要将python-indent更改为python-indent-offset。我正在使用两种模式的两种设置而没有问题。

如果有人能更好地解决这个问题,请添加它,我很乐意接受它作为正确答案。

答案 1 :(得分:1)

使用标签?检查

用python.el试用emacs 23?检查

我和你最近碰到了同样的墙...我所学到的是我真的讨厌标签而且我发现python的空白意义非常令人讨厌。

您是在init中设置tab-width还是使用自定义?

我必须确保在“编辑基础知识”部分中通过自定义更改标签宽度以获得“4空格”标签(与全局/本地范围有关)。但乐趣并没有结束...... python.el似乎只想缩进到第一个制表位(现在是第4列),不管我设置缩进标签模式还是制表符总是缩进至。我终于放弃并回到使用python-mode.el,它有自己的一套特性,但至少python代码是“正确”缩进。