Emacs缩进支持C++ 11语法?

Phi*_*ßen 20 emacs c++11

既然C++ 11已经出来了,我想知道当越来越多的代码从C++ 98迁移到C++ 11时,是否有任何关于改进Emacs中的缩进支持的技巧.

例子:

以下是我发现自己在努力解决的一些问题:

struct m {
    int a;
    char b;
};

std::vector<m> foo { {1, 'a'},
        {2, 'b'},
            { 3, 'c'},
                { 4, 'd' }};
Run Code Online (Sandbox Code Playgroud)

我更喜欢

std::vector<m> foo { {1, 'a'},
                     {2, 'b'},
                     { 3, 'c'},
                     { 4, 'd' }};
Run Code Online (Sandbox Code Playgroud)

甚至

std::vector<m> foo { {1, 'a'},
        {2, 'b'},
        { 3, 'c'},
        { 4, 'd' }};
Run Code Online (Sandbox Code Playgroud)

例如.

下一个:

cout << 5
     << [](int a) {
    return 2 * a;
} (5);
Run Code Online (Sandbox Code Playgroud)

我更喜欢

cout << 5
     << [](int a) {
            return 2 * a;
        } (5);
Run Code Online (Sandbox Code Playgroud)

这样块就相对于lambda缩进.

我发现自己花了更多时间在缩进上,这很烦人.

是否有任何包或自定义有助于缩进现代C++ 11代码?

(旁注:我为Emacs 设置了clang格式,但是我不能100%兼容现有代码,而且它还不能很好地理解C++ 11语法.有时它仍然很有用,听起来像个好主意新项目.)

tob*_*obe -3

当我使用 emacs 时,以下设置足以让我缩进代码:

; auto indent   
(setq-default indent-tabs-mode nil)
(setq-default tab-width 2)

(define-key global-map (kbd "RET") 'newline-and-indent)
(defun indent-buffer ()
  (interactive)
  (save-excursion
    (indent-region (point-min) (point-max) nil)))
(global-set-key [f12] 'indent-buffer)
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。

  • 我不想表现得粗鲁..但它没有回答这个话题。这个人(像我一样)正在寻求支持所有 C++11 语法,但事实并非如此,对吧? (3认同)