在perl模式的emacs中关闭自动缩进



当我使用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模式。El是预编译的?当我尝试M-x find-function perl-mode时,它抱怨它找不到perl模式。埃尔。然而,我确实有一个perl模式。

将以下代码添加到配置文件(~/.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)

我的错。我不知道在emacs中有普通变量和用户选项变量。

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

还有,谢谢你的回答syohex。

EDIT: 重新加载perl模式是很重要的。

关闭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)

你可以在这里、这里和这里找到类似的文章

最新更新