gpt4 book ai didi

c++ - C++11 lambda 函数的 Emacs 缩进(cc 模式)

转载 作者:IT老高 更新时间:2023-10-28 22:18:58 25 4
gpt4 key购买 nike

默认的 Emacs C++ 模式 (cc-mode) 仍然无法识别许多 C++11 功能。一个恼人的问题是它对使用的 lambda 函数应用了太多缩进作为函数参数:

std::vector<int> ar(4);
std::generate_n(std::begin(ar), 4, [] {
static int g_i;
return g_i++;
});
std::for_each(std::begin(ar), std::end(ar), [](int i) {
std::cout << " " << i;
});
bool b = std::is_sorted(std::begin(ar), std::end(ar), [&](int l, int r) {
return l<r;
});
std::cout << " " << b << "\n";

理想情况下,人们会更喜欢:

std::vector<int> ar(4);
std::generate_n(std::begin(ar), 4, [] {
static int g_i;
return g_i++;
});
std::for_each(std::begin(ar), std::end(ar), [](int i) {
std::cout << " " << i;
});
bool b = std::is_sorted(std::begin(ar), std::end(ar), [&](int l, int r) {
return l<r;
});
std::cout << " " << b << "\n";

有没有好的解决方案?

最佳答案

在 Emacs26 中,接受的答案不再适合我。我只是将“inlambda”设置为 0。

  (c-offsets-alist . ((case-label . 0)
(inline-open . 0)
(substatement-open . 0)
(inlambda . 0) ; no extra indent for lambda
(block-open . 0) ; no space before {
(knr-argdecl-intro . -)))

关于c++ - C++11 lambda 函数的 Emacs 缩进(cc 模式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23553881/

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