C++ 如何让Emacs用代码缩进//注释?

C++ 如何让Emacs用代码缩进//注释?,c++,c,emacs,C++,C,Emacs,我对Emacs了解不多,但在谷歌搜索了几次之后,我将我的.Emacs文件编辑为: (setq c-default-style "bsd" c-basic-offset 4) 我的目标是使用4个间隔的制表符进行Allman样式的缩进。它按预期工作,但现在我的/注释没有与我的代码缩进。在我更改此项之前,当我键入/时,它会自动缩进,以便与函数中的其余代码保持一致。如何让Emacs自动缩进/注释 我已经尝试将c-indent-comments-syntactically-p1添加到上面的.emacs文

我对Emacs了解不多,但在谷歌搜索了几次之后,我将我的
.Emacs
文件编辑为:

(setq c-default-style "bsd" c-basic-offset 4)
我的目标是使用4个间隔的制表符进行Allman样式的缩进。它按预期工作,但现在我的
/
注释没有与我的代码缩进。在我更改此项之前,当我键入
/
时,它会自动缩进,以便与函数中的其余代码保持一致。如何让Emacs自动缩进
/
注释

我已经尝试将
c-indent-comments-syntactically-p1
添加到上面的
.emacs
文件中,但这并没有改变它

例如:

int main()
{
    // I'd like this line to be auto-indented to match the block
    for (int i = 0; i < 10; ++i)
    {
        // And this line to be auto-indented to match the block
        doStuff();
    }
}
intmain()
{
//我希望这一行自动缩进以匹配块
对于(int i=0;i<10;++i)
{
//该行将自动缩进以匹配块
doStuff();
}
}

当前,
选项卡
不会缩进我的
/
注释,也不会自动缩进。

您可以通过将点放在相关行上并按
C-C-o
来检查和更改当前缩进的值。根据您的喜好调整相关符号

这不会是永久的。在
.emacs
中直接调用函数
c-set-offset
,进行全局更改

简单的例子:

int main() {
  // 
}
这是我的默认缩进。将光标移动到第2行后,我看到相关的符号是
注释简介

使用:

(c-set-offset 'comment-intro 6)
我得到:

int main() {
        //
}
偏移量在符号之间累积:

int main() {
        //
  {
          //
  }
}

点击TAB仍然会缩进你的评论行,对吗?那么您缺少的是自动识别触发自动缩进的双斜杠。这是通过(c-electric-slash)实现的。首先确保slash仍然绑定到该命令:
C-hk/
(关于击键斜杠的帮助)。然后,假设显示了c-electric-slash的文档,阅读它以了解在什么条件下它被禁用。

如果您想将注释放在代码范围的同一对齐上,只需将以下行添加到~/.emacs文件中:

(c-set-offset 'comment-intro 0)

但是如果是嵌套块呢?@Cornstalks偏移量相对于周围偏移量。我加了一个例子。太棒了。考虑到我上面的
.emacs
小文件,什么是正确的添加方法?将
(setq c-default-style“bsd”c-basic-offset 4(c-set-offset“comment intro 4))
放在我的
文件中。emacs
文件会使emacs带着错误呕吐:
错误类型参数:symbolp,(c-set-offset(引用comment intro)4)
setq
c-set-offset
应该是同一级别的两个单独的LISP表达式,像这样:
(setq c-default-style“bsd”c-basic-offset 4)(c-set-offset注释介绍4)
@Francesco:太好了,谢谢!我添加了
(c-set-offset'comment intro 0)
,现在效果很好。不。选项卡不再缩进注释。我将编辑我的问题以提及这一点。