Emacs 缩进与 C++ 中的连续括号

Emacs indentation with sequential parenthesis in C++

Emacs 在顺序括号上自动缩进不能正常工作:

int main() {
    something(int i)(
        "test", "something"
                    );
}

如何修复此缩进使其与正常缩进一样:

int main() {
  something(int i)(
      "test", "something"
  );
}

主要模式信息:

解决方案:

谢谢@pickle rick,还有@0x5453,

(c-add-style "cc-style"
         '("linux"  ;; it can be google or k&r or other c-style.
           (c-basic-offset . 2)
           (c-offsets-alist
        (arglist-close . c-lineup-close-paren))))
(add-hook 'c++-mode-hook
      (lambda()
        (c-set-style "cc-style")))

cc-mode 能够根据缓冲区中的缩进智能猜测您想要 c-offsets-alist 的设置。为此,请根据需要对齐缓冲区中的代码,然后计算 M-xc-guess.

缩进缓冲区,假设它看起来没问题,你可以用M-xc-guess-view看到猜测的设置。然后,您可以将整个样式复制到某个地方的 init 中,或者挑选相关设置。

此外,您可以通过 运行 M-xc-show-syntactic-information 将点定位在那里,了解哪些规则适用于给定的行。但是请注意,这不会提供所有相关信息,因为其他 rules/styles 会相互影响,但会告诉 identify arglist-close 作为您示例中的相关规则。