如何在emacs cperl模式下停止自动格式化?

时间:2009-02-27 00:17:54

标签: perl emacs cperl-mode

当我在cperl-mode中进行缩进区域

if ($x) { next; }

Emacs将其重新格式化为:

if ($x) {
  next;
}

我怎样才能停止这样做?

注意:这个问题最初是说这种重新格式化是在yanking时发生的。我也设置了缩进区域。

5 个答案:

答案 0 :(得分:5)

(setq cperl-break-one-line-blocks-when-indent nil)

答案 1 :(得分:2)

假设您在键入此类代码时不希望自动格式化,只需将{}的绑定更改为self-insert-command而不是perl-electric-terminator

答案 2 :(得分:2)

我在cperl-mode中找不到任何可以执行此操作的内容。尝试启动没有自定义的emacs:

$ emacs -q

然后在 scratch 缓冲区中启用cperl-mode:

M-x cperl-mode

粘贴文字;它应该看起来像原始(即所有在一条线上)。然后开始自定义cperl-mode:

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

仅为当前会话单独设置每个变量,并在每个设置之间尝试粘贴。如果你突然发现你所看到的行为,你就有了一个可以进一步观察的起点(它可能是一系列选项)。

如果你完全自定义cperl并且它仍然没有“错误”行为,那么你需要开始查看其他软件包可能导致它。可能需要一段时间......

答案 3 :(得分:0)

它对我来说不起作用,我只是在Perl菜单下的Toggle ...子菜单中尝试了各种设置。除了Cperl模式之外还有什么能够实现这一目标吗?

答案 4 :(得分:0)

听起来我没有给出一个copout答案,为什么不这样做呢?

next if $x;

相同的代码,相同的效果,以及可读性(至少对我而言),但我打赌emacs不会尝试重新格式化。