当我使用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。
答案 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)