gpt4 book ai didi

c++11 - Emacs 缩进支持 C++11 语法吗?

转载 作者:行者123 更新时间:2023-12-02 22:08:21 24 4
gpt4 key购买 nike

既然 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' }};

我更愿意

std::vector<m> foo { {1, 'a'},
{2, 'b'},
{ 3, 'c'},
{ 4, 'd' }};

甚至

std::vector<m> foo { {1, 'a'},
{2, 'b'},
{ 3, 'c'},
{ 4, 'd' }};

例如。

下一篇:

cout << 5
<< [](int a) {
return 2 * a;
} (5);

我更愿意

cout << 5
<< [](int a) {
return 2 * a;
} (5);

以便 block 相对于 lambda 缩进。

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

是否有任何软件包或自定义项可以帮助缩进现代 C++11 代码?

(旁注:我为 Emacs 设置了 clang-format,但我无法获得现有代码 100% 的兼容性,而且它还不能很好地理解 C++11 语法。有时它仍然很有用,听起来像对于新项目来说是个好主意。)

最佳答案

我刚刚手动安装了最新的CC Mode 5.33 from SourceForge ,这应该涵盖您正在寻找的大部分内容:

C++11 should now be fully supported, along with some features of C++14:

  • Uniform initialisation
  • Lambda functions
  • Parameter packs
  • Raw strings
  • Separators in integer literals
  • ">>" as a double template ender
  • etc.

以下是我为您的示例得到的缩进:

struct m {
int a;
char b;
};

std::vector<m> foo { {1, 'a'},
{2, 'b'},
{ 3, 'c'},
{ 4, 'd' }};

cout << 5
<< [](int a) {
return 2 * a;
} (5);

我还建议按照 MELPA 中的建议安装 modern-c++-font-lock (例如通过 this SO answer ) .

关于c++11 - Emacs 缩进支持 C++11 语法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20060142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com