В emacs cperl-mode троичные операторы специально не обрабатываются. Если вы разбиваете их на несколько строк, режим cperl просто вставляет каждую строку так же, как отступает любое дальнейшее утверждение, например:
$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';
Кстати, пример кода из этого вопроса .
EDIT
Кажется, есть ошибка в отступе 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';
}
Обратите внимание, что за пределами скобок я получаю отступ, который хочу. Но внутри фигурных скобок троичный оператор имеет плохой отступ. Есть ли исправление для этого?