我是一个emacs新手,我一直在尝试为cc模式设置我的缩进样式 . 我喜欢写这样的代码:

if(true)
{
    foo();
    bar();
}

但默认的缩进样式更像是:

if(true)
  {
    foo();
    bar();
  }

我想要的缩进样式似乎是“bsd”,而默认是“gnu” . 我将以下内容放在init.el文件中以更改设置:

(setq c-default-style "bsd")
(setq c-basic-indent 4)
(setq c-basic-offset 4)

这改变了偏移量和默认样式,但是当我输入一些代码时,它仍然被格式化为gnu样式 . 为了澄清,我会输出 if(true) [ENTER] { [ENTER] foo(); [ENTER] } ,结果将是gnu样式代码 . 我也尝试将它放在我的init.el中,以获得相同的结果:

(defun my-c-mode-hook ()
(setq c-basic-offset 4
    c-indent-level 4
    c-default-style "bsd"))
(add-hook 'c-mode-common-hook 'my-c-mode-hook)

我可以告诉设置肯定已经改变,因为在迷你缓冲区中我评估了这个表达式 (message "%s %s %d" c-default-style c-indentation-style c-basic-offset) 来得到这个结果: "bsd bsd 4"

我正在使用graphene . 它包含的一个软件包(可能是smartparens还是自动完成)可能会干扰我的设置吗?