【问题标题】:Emacs 23 built-in python.el indentation broken using tabs with width 4使用宽度为 4 的制表符破坏 Emacs 23 内置 python.el 缩进
【发布时间】:2011-02-23 23:59:22
【问题描述】:

我已经在 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 设置为什么。

我可以设置其他一些与选项卡相关的变量来覆盖此行为吗?

【问题讨论】:

  • 不是您问题的答案,只是一个说明:确保硬制表位始终为 8 个空格。较小的缩进应始终使用空格,切勿更改硬制表符宽度,否则您以后会导致自己和他人严重偏头痛。
  • 我不确定我是否跟随。在工作中,Python 代码使用制表符进行缩进(我讨厌这个,但接受它)。我希望 Emacs 将选项卡呈现为 4 个空格宽。你是说这很糟糕吗?
  • 你考虑过使用python-mode吗?它由 Python 的一些核心开发人员维护:launchpad.net/python-mode
  • 我确定我有,在某些时候。我已经尝试了各种非内置的 Python 模式……我想我现在可以看看是否可以使用内置的模式。不过,感谢您的指点!

标签: python emacs tabs indentation


【解决方案1】:

我想我是在挖掘了 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。我在两种模式下都使用了这两种设置,没有问题。

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

【讨论】:

    【解决方案2】:

    卡住使用标签?检查

    用 python.el 试用 emacs 23?检查

    我最近和你遇到了同样的问题……我了解到我真的很讨厌标签,而且我发现 python 的空白意义非常烦人。

    您是在初始化中设置制表符宽度还是自定义?

    我必须确保通过自定义更改“编辑基础”部分中的制表符宽度,以便粘贴“4 个空格”标签(与全局/本地范围有关)。但乐趣并没有就此结束...... python.el 似乎只想缩进到第一个制表位(现在是第 4 列)并且无论我设置什么 indent-tab-mode 或 tab-always-indent 都没有进一步到。我最终放弃并重新使用 python-mode.el,它有自己的一套特质,但至少 python 代码“正确”缩进。

    【讨论】:

    • 我直接在.emacs 中设置制表符宽度,而不是使用customize。事实证明,有一个额外的 python-indent 变量(似乎)可以让股票 python.el 做我想做的事情。
    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2011-05-14
    • 1970-01-01
    相关资源
    最近更新 更多