具有模板参数的 return 类型的 C++ lambda 函数的 CC 模式缩进
CC-mode indentation of C++ lambda functions with a return type that has template parameters
我在 Ubuntu 20.04 上使用 apt 安装的 Emacs 中使用 CC 模式。
它格式化代码如下:
#include <vector>
int main() {
auto f1 = [](int a) {
return std::vector<int>({a});
};
auto f2 = [](int a) -> std::vector<int> {
return std::vector<int>({a});
};
}
在我看来,f1
的格式可以接受,但 f2
不行。有没有办法
让它像 f1
一样格式化 f2
?或者,更优选地,如下所示,
这是通过 Ubuntu 16.04.
上安装的 CC 模式实现的
#include <vector>
int main() {
auto f1 = [](int a) {
return std::vector<int>({a});
};
auto f2 = [](int a) -> std::vector<int> {
return std::vector<int>({a});
};
}
我目前的解决方法如下,但并不理想:
using vector_t = std::vector<int>;
auto f2wa = [](int a) -> vector_t {
return vector_t({a});
};
如果您使用来自 melpa 的 google-set-c-style.el
,您将获得您喜欢的格式,
#include <vector>
int main() {
auto f1 = [](int a) {
return std::vector<int>({a});
};
auto f2 = [](int a) -> std::vector<int> {
return std::vector<int>({a});
};
}
一般来说,使用 cc-modes,您可以尝试 c-guess
检查和设置样式规则,直到找到您想要的。
我在 Ubuntu 20.04 上使用 apt 安装的 Emacs 中使用 CC 模式。 它格式化代码如下:
#include <vector>
int main() {
auto f1 = [](int a) {
return std::vector<int>({a});
};
auto f2 = [](int a) -> std::vector<int> {
return std::vector<int>({a});
};
}
在我看来,f1
的格式可以接受,但 f2
不行。有没有办法
让它像 f1
一样格式化 f2
?或者,更优选地,如下所示,
这是通过 Ubuntu 16.04.
#include <vector>
int main() {
auto f1 = [](int a) {
return std::vector<int>({a});
};
auto f2 = [](int a) -> std::vector<int> {
return std::vector<int>({a});
};
}
我目前的解决方法如下,但并不理想:
using vector_t = std::vector<int>;
auto f2wa = [](int a) -> vector_t {
return vector_t({a});
};
如果您使用来自 melpa 的 google-set-c-style.el
,您将获得您喜欢的格式,
#include <vector>
int main() {
auto f1 = [](int a) {
return std::vector<int>({a});
};
auto f2 = [](int a) -> std::vector<int> {
return std::vector<int>({a});
};
}
一般来说,使用 cc-modes,您可以尝试 c-guess
检查和设置样式规则,直到找到您想要的。