在 emacs cperl-mode 中,不会对三元运算符进行特殊处理。如果你将它们分成多行,cperl-mode 只是缩进每一行,就像它缩进任何连续的语句一样,如下所示:
$result = ($foo == $bar) ? 'result1' :
($foo == $baz) ? 'result2' :
($foo == $qux) ? 'result3' :
($foo == $quux) ? 'result4' :
'fail_result';
这不是很可读。有什么方法可以说服像这样的 cperl-mode 缩进吗?
$result = ($foo == $bar) ? 'result1' :
($foo == $baz) ? 'result2' :
($foo == $qux) ? 'result3' :
($foo == $quux) ? 'result4' :
'fail_result';
顺便说一下,这个问题的代码示例。
编辑
cperl-mode 对三元运算符的缩进似乎存在错误。以下面的例子为例,它使用 Emacs 23.1.1,cperl-mode 版本 5.23 缩进:
my $result = ($foo == $bar) ? 'result1' :
($foo == $baz) ? 'result2' :
($foo == $qux) ? 'result3' :
($foo == $quux) ? 'result4' :
'fail_result';
{
my $result = ($foo == $bar) ? 'result1' :
($foo == $baz) ? 'result2' :
($foo == $qux) ? 'result3' :
($foo == $quux) ? 'result4' :
'fail_result';
}
请注意,在任何大括号之外,我基本上得到了我想要的缩进。但是在大括号内,三元运算符缩进很糟糕。有解决办法吗?