emacs修复了python的tab缩进

时间:2014-03-07 01:04:55

标签: tabs indentation emacs24 python-mode

python模式下的Emacs选项卡缩进是使用制表符而不是4空格。

我的emacs init.el文件包含:

(setq-default indent-tabs-mode t)
(setq-default tab-width 4)
(setq indent-line-function 'insert-tab)

我试过了:

(setq-default indent-tabs-mode nil)

但它没有任何区别。 在emacs中使用white-space模式,我看到该标签不会缩进4个白色空格,而untabify会将标签修复为4个白色空格。如何使TAB作为四个白色空间工作?

更新 通过将init.el配置更改为:

来修复
(add-hook 'python-mode-hook
      (lambda ()
        (setq-default indent-tabs-mode nil)
        (setq-default tab-width 4)
        (setq-default python-indent 4)))

2 个答案:

答案 0 :(得分:2)

如果要插入TAB,则indent-tabs-mode必须为“t”。改变挂钩显示。 写

(setq indent-tabs-mode t)

看起来python.el有一个bug,当它与模式一起设置为nil时。当钩子在模式init之后运行时,它应该能够纠正它。

如果没有,请尝试python-mode.el,它允许选择。 你也可以在每个缓冲区中设置indent-tabs-mode,它由python.el建立缓冲区本地。

答案 1 :(得分:2)

虽然已经很晚了,但以下的钩子对我有用。 只有空格

int main() {
  constexpr std::uint16_t msg{0xCDEF};
  constexpr auto fid = function_id(CID_SYS, msg);
  std::cout << fid << '\n';
}

仅限标签

(add-hook 'python-mode-hook
      (lambda ()
        (setq indent-tabs-mode nil)
        (setq python-indent 4)
        (setq tab-width 4))
      (untabify (point-min) (point-max)))