4

当我使用 Emacs 时,我会关闭任何自动缩进并使用自定义缩进方案(保持前一行的缩进,仅使用空格)。

在c模式下,我只是用来C-c C-l关闭电动模式。

但在 perl 模式下,我不确定如何实现相同的目标。

查看http://mirror.fraunhofer.de/CPAN/misc/emacs/perl-mode.el。我可以看到

(defvar perl-mode-map ()
  "Keymap used in Perl mode.")
(if perl-mode-map
    ()
  (setq perl-mode-map (make-sparse-keymap))
  (define-key perl-mode-map "{" 'electric-perl-terminator)
  (define-key perl-mode-map "}" 'electric-perl-terminator)
  (define-key perl-mode-map ";" 'electric-perl-terminator)
  ...

所以我尝试M-x set-variable perl-mode-map了,但我只得到[No match]

这是因为我的 perl-mode.el 是预编译的吗?当我尝试M-x find-function perl-mode它时抱怨它找不到它 perl-mode.el 。不过,我确实有一个 perl-mode.elc 文件。

我正在通过 cygwin 上的控制台运行 emacs。

4

3 回答 3

2

在您的配置文件中添加以下代码(.emacs 或 ~/.emacs.d/init.el)

(defun perl-mode-disable-auto-indent ()
  (local-unset-key (kbd "{"))
  (local-unset-key (kbd "}"))
  (local-unset-key (kbd ";"))
  (local-unset-key (kbd ":")))

(add-hook 'perl-mode-hook 'perl-mode-disable-auto-indent)
于 2012-12-25T01:09:01.963 回答
0

我的错。我没有意识到emacs中有普通变量和用户选项变量。

(setq perl-mode-map (make-sparse-keymap))在暂存缓冲区中运行然后重新加载 perl 模式为我禁用了电子缩进。

另外,感谢syohex的回答。

编辑:重要的是重新加载 perl-mode 以使其正常工作。

于 2012-12-25T01:28:48.260 回答
0

关闭electric-indent-modeperl-mode我的做法。我在我的~/.emacs.d/init.el

(defun perl-mode-disable-auto-indent()
    (electric-indent-mode -1))
(add-hook 'perl-mode-hook 'perl-mode-disable-auto-indent)

你可以在这里这里这里找到类似的帖子

于 2016-05-31T05:49:55.557 回答