如何为.py文件将Emacs选项卡大小设置为4个字符宽?

时间:2010-09-10 12:52:09

标签: emacs

我尝试过使用以下内容:

(setq-default tab-width 4)
(setq-default tab-stop-list (list 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60))

但是编辑.py文件时标签的大小仍然是8个字符宽。在其他文件中它已经下降到4,所以我认为Python主要模式以某种方式覆盖了它。我看到我可以将python-indent设置为4,但这会导致插入空格(这违反了我们的代码样式指南)。

如何使标签4个字符宽?

更新

我也试过这个,但它没有做任何事情:

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

4 个答案:

答案 0 :(得分:43)

(add-hook 'python-mode-hook
      (lambda ()
        (setq indent-tabs-mode t)
        (setq tab-width 4)
        (setq python-indent-offset 4)))

答案 1 :(得分:2)

钩子的正确形式是:

(add-hook 'python-mode-hook
          (lambda ()
            (setq indent-tabs-mode t)
            (setq tab-width 4)))

您需要将命令性语句放在函数(lambda)中。

答案 2 :(得分:0)

(setq indent-tabs-mode t)
(setq python-indent-offset 4)

答案 3 :(得分:0)

我遇到了同样的问题,但是使用了C ++文件。最终为我做的是我的.emacs中的以下内容。

(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(c-basic-offset 4 t)
)

实际上我当然是从Customize Emacs菜单的C ++模式区域设置它,但这就是结果。我会看看python模式是否有类似的东西。 py-basic-offset还是什么?浏览pyton的模式设置。