在 emacs 中,如何将右括号与首行的开头对齐?

在 emacs 中,如何将右括号与首行的开头对齐?

许多 emacs 模式下多行函数调用的默认缩进样式是将右圆括号与函数的其他参数对齐,因此:

function_one(
    arg1,
    arg2
    );

我希望结束括号与包含开始括号的行首对齐。例如:

function_one(
    function_two(
        f2_arg1,
        f2_arg2
    ),
    f1_arg2,
    f1_arg3
);

我该怎么做呢?

答案1

  • 对于从 CC 模式派生出来的很多模式(例如 c-mode、java-mode、php-mode),可以进行自定义,c-offsets-alist使其arglist-close设置为c-lineup-close-paren
  • 对于 cperl-mode,自定义cperl-indent-parens-as-block为 true。
  • 对于 cperl 模式,GNU Emacs 24.3+,设置cperl-close-paren-offsetcperl-indent-level
  • 对于 GNU emacs 24.3 及更高版本中的 perl 模式,自定义perl-indent-parens-as-block为 true。
  • 对于 python-mode,此行为出现在 GNU emacs 24.3 及更高版本中。

您可以通过输入来自定义变量M-x customize-variable。或者,将以下几行添加到您的~/.emacs

(add-to-list 'c-offsets-alist '(arglist-close . c-lineup-close-paren))
(setq cperl-indent-parens-as-block t)
(setq perl-indent-parens-as-block t)

相关内容