许多 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-offset
为cperl-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)