如何让 c-basic-offset 保留在 emacs 中?

如何让 c-basic-offset 保留在 emacs 中?

在切换编码样式时,我需要将一个制表符宽度的 4 个缩进转换为两个空格的缩进。

我在 .emacs 文件的最后添加了以下内容:

(setq indent-tabs-mode nil)
(setq c-basic-offset 2)

不幸的是,这不起作用。我仍然需要 Mx set-variable for c-basic-offset,为每个打开的文件将其设置为 2,才能成功将缩进更改为 2 个空格而不是 1 个制表符。

在这些设置之后我是否需要添加另一个配置设置才能使新的 c-basic-offset 坚持下去?

答案1

c-basic-offset是每个缓冲区的变量,因此在你的文件中设置它是.emacs行不通的。你可以使用(setq-default c-basic-offset 2)或定义一个模式钩子每次启动时都会执行cc-mode

答案2

M-x customize-variable c-basic-offset

来自文档字符串:

This variable automatically becomes buffer-local when set outside Custom.
However, setting it through Custom sets the default value.

答案3

你应该试试(setq-default tab-width 4)

我的文件中有以下设置.emacs,并且对我有用:

(setq-default tab-width 2)
(setq js-indent-level 2)
(setq c-basic-offset 4)
(setq css-indent-offset 2)
(setq sh-basic-offset 2)
(setq-default indent-tabs-mode nil)

答案4

可能的替代方法:使用类似的东西(set-variable 'c-file-style "gnu")来获取您想要的样式。有一个相当全面的内置样式列表,您可以定义自己的样式。

相关内容