emacs cperl-mode では、三項演算子は特別に扱われません。それらを複数の行に分割すると、cperl-mode は次のように、継続するステートメントをインデントするのと同じ方法で各行を単にインデントします。
$result = ($foo == $bar) ? 'result1' :
($foo == $baz) ? 'result2' :
($foo == $qux) ? 'result3' :
($foo == $quux) ? 'result4' :
'fail_result';
これは非常に読みにくいです。このようにcperlモードのインデントを納得させる方法はありますか?
$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';
}
中括弧の外側では、基本的に必要なインデントが得られることに注意してください。しかし、中括弧内では、三項演算子がひどくインデントされています。これに対する修正はありますか?