在perl-mode emacs中关闭自动缩进

时间:2012-12-24 21:36:55

标签: emacs cygwin elisp indentation cperl-mode

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

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

但在perl-mode中我不知道如何实现同样的目标。

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。

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

我的不好。我没有意识到emacs中有正常的变量和用户选项变量。

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

另外,感谢回答syohex。

编辑:重新加载perl模式非常重要。

答案 2 :(得分:0)

关闭electric-indent-mode perl-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)

您可以找到类似的帖子hereherehere