如何让Emacs用我的代码缩进我的//注释?

时间:2012-11-26 21:37:49

标签: c++ c emacs

我对Emacs了解不多,但经过一些谷歌搜索,我编辑了我的.emacs文件如下:

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

我的目标是通过4个间距的标签获得Allman风格的缩进。它按预期工作,但现在我的//注释没有缩进我的代码。在我更改之前,当我输入//时,它将自动缩进以与函数中的其余代码一致。如何让Emacs自动缩进//评论?

我已尝试将c-indent-comments-syntactically-p 1添加到上述.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();
    }
}

目前,TAB不会缩进我的//评论,也不会自动缩进。

3 个答案:

答案 0 :(得分:8)

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

这不是永久性的。使用c-set-offset中函数.emacs的直接调用来全局更改。

简单示例:

int main() {
  // 
}

这是我的默认缩进。将光标移动到第2行后,我看到相关符号为comment-intro

使用:

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

我明白了:

int main() {
        //
}

偏移量累积符号:

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果您想将评论放在代码范围的相同路线上,只需将以下行添加到〜/ .emacs 文件中:

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