如何让Emacs与我的代码一起缩进我的//注释?

11

我不太了解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个回答

8

您可以将光标停留在相关行上,按下C-c C-o键,以检查并更改当前缩进的值。请根据您的喜好调整相关符号。

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

以下是一个简单的示例:

int main() {
  // 
}

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

使用:

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

I get:

int main() {
        //
}

Offset在符号之间累积:

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

但如果它是一个嵌套块呢? - Cornstalks
1
@Cornstalks 偏移量是相对于周围偏移量的。我添加了一个例子。 - pmr
太棒了。根据我之前提供的.emacs文件,应该如何添加这个呢?将(setq c-default-style "bsd" c-basic-offset 4 (c-set-offset 'comment-intro 4))放入我的.emacs文件中会导致Emacs报错:Wrong type argument: symbolp, (c-set-offset (quote comment-intro) 4) - Cornstalks
2
setqc-set-offset应该是两个不同的LISP表达式,在同一级别上,像这样:(setq c-default-style "bsd" c-basic-offset 4)(c-set-offset 'comment-intro 4) - François Févotte
@Francesco:太好了,谢谢!我添加了(c-set-offset 'comment-intro 0),现在它可以正常工作了。 - Cornstalks

1
按下TAB键仍然可以缩进您的注释行,对吧?那么您缺少的是自动识别双斜杠触发自动缩进的功能。这是通过(c-electric-slash)实现的。首先确保斜杠仍绑定到该命令: C-h k /(关于按键斜杠的帮助)。然后,假设c-electric-slash的文档出现了,请阅读它以确定在什么条件下它被禁用。

不是的。TAB键不再缩进注释了。我会编辑我的问题提到这一点。 - Cornstalks

0
如果您想将注释放置在代码范围的相同对齐方式上,请将以下行添加到您的~/.emacs文件中:
(c-set-offset 'comment-intro 0)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接