2011-02-23 58 views
4

我一直在Emacs 23中使用版本为python.elfound here而没有发生事故。我决定尝试股票python.el,跑进一个奇怪的问题:Emacs 23内置python.el缩进使用宽度为4的制表符

当使用缩进选项卡和4个选项卡宽度,股票python.el将缩进两个制表字符,每一个级别的,而不是1。用标签宽度5,缩进将是1个选项卡加3个空格。因此,indent-tabs-modet时,indent-for-tab-command似乎始终强制制表符大小为8,无论tab-width设置为什么。

是否有一些其他与制表符相关的变量可以设置为覆盖此行为?

+0

不是你的问题的答案,只是一个说明:确保硬标签停止总是8个空格。更小的缩进应始终使用空格,永远不要改变硬标签的宽度,否则会导致自己和其他人严重偏头痛。 – 2011-02-24 00:10:20

+0

我不确定我是否遵循。在工作中,Python代码使用制表符缩进(我讨厌这个,但接受它)。我希望Emacs将标签呈现为4格宽。你是说这是不好的? – 2011-02-24 00:15:08

+0

你有没有考虑过使用python模式?它由Python的一些核心开发人员维护:https://launchpad.net/python-mode – 2011-02-24 18:33:55

回答

5

我想通过挖掘股票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-indentpython-indent-offset。我正在使用两种模式的设置都没有问题。

如果有人对此问题有更好的解决方案,请添加它,我很乐意接受它作为正确的答案。

1

卡住使用标签?检查

试用emacs 23与python.el?检查

我最近遇到了同样的墙壁......我学到的是我真的讨厌标签,我发现python的空白意义令人难以置信的烦人。

您是在init中设置制表符宽度还是使用自定义设置?

我不得不作出一定要改变标签宽度的“编辑基础知识”部分中通过自定义获得“4空间”选项卡贴(一些与全球/本地范围做)。但乐趣并不止于此... python.el似乎只想缩进第一个tab-stop(现在是第4列),不管我设置indent-tab-mode还是tab-always-indent至。我终于放弃了,回到使用python-mode.el,它有它自己的一套特性,但至少python代码是“正确地”缩进。

+0

我直接在我的'.emacs'中设置我的制表符宽度,而不是'customize'。事实证明,有一个额外的'python-indent'变量(出现)使股票'python.el'做我想做的事情。 – 2011-02-24 16:54:22