1

当我在 cperl 模式下缩进区域时

如果 ($x) { 下一个; }

Emacs 将其重新格式化为:

如果($x){
  下一个;
}

我怎样才能让它停止这样做?

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

4

5 回答 5

5
(setq cperl-break-one-line-blocks-when-indent nil)
于 2009-02-27T18:10:45.930 回答
2

假设您也不希望它在键入那种代码时自动格式化,只需将绑定更改为{}toself-insert-command而不是perl-electric-terminator.

于 2009-02-27T00:42:16.777 回答
2

我在 cperl 模式下找不到任何可以做到这一点的东西。尝试在没有自定义的情况下启动 emacs:

$ emacs -q

然后在暂存缓冲区中打开 cperl-mode:

M-x cperl-mode

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

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

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

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

于 2009-02-27T12:47:25.053 回答
0

它对我不起作用,我只是在 Perl 菜单下的 Toggle... 子菜单中尝试了各种设置。除了 Cperl 模式之外,还有其他的东西可以实现吗?

于 2009-02-27T00:39:50.543 回答
0

听起来好像我在给出一个逃避的答案,为什么不这样做呢?

next if $x;

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

于 2009-02-27T18:18:27.720 回答