Как мне остановить автоформатирование в режиме emacs cperl?

Когда я делаю отступ-регион в режиме cperl

if ($x) {следующий; }

Emacs переформатирует его так:

if ($x) {
  следующий;
}

Как я могу заставить это прекратить делать это?

Примечание: в вопросе изначально говорилось, что это переформатирование происходит при дергании. У меня есть настройки янки для отступа региона.

5 ответов

Решение
(setq cperl-break-one-line-blocks-when-indent nil)

Предполагая, что вы не хотите, чтобы он автоматически форматировался при вводе такого рода кода, просто измените привязки {} в self-insert-command вместо perl-electric-terminator,

Я не могу найти ничего в cperl-mode, который бы делал это. Попробуйте запустить emacs без настроек:

$ emacs -q

и затем включите cperl-mode в чистом буфере:

M-x cperl-mode

Вставьте свой текст; это должно выглядеть как оригинал (то есть все в одной строке). Затем начните настраивать режим cperl:

M-x customize-group<RET>cperl<RET>

устанавливая каждую переменную индивидуально только для текущего сеанса, и пробуя вставку между каждым параметром. Если вы вдруг обнаружите поведение, которое вы видите, у вас есть отправная точка, чтобы посмотреть дальше (это может быть комбинация опций).

Если вы полностью настроили cperl и он по-прежнему не ведет себя "неправильно", вам нужно начать искать причины, по которым другие пакеты могут его вызывать. Это может занять некоторое время....

Это не работает для меня, я просто попробовал это с различными настройками в подменю Toggle... в меню Perl. Может ли быть что-то еще, кроме режима Cperl, что делает это возможным?

Не говоря уже о том, что я даю ответный ответ, почему бы просто не сделать это?

next if $x;

Тот же код, тот же эффект и такой же читабельный (по крайней мере для меня), но я уверен, что emacs не будет пытаться его переформатировать.

Другие вопросы по тегам