Отключить авто-отступ в emacs в Perl-режиме

Когда я использую Emacs, я выключаю любой автоматический отступ и использую собственную схему отступа (сохраняйте отступ предыдущей строки, используя только пробелы).

В с-режиме я просто использовал 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.

Я запускаю Emacs через консоль на Cygwin.

3 ответа

Решение

Мой плохой. Я не осознавал, что в emacs были нормальные переменные и переменные пользовательских опций.

Бег (setq perl-mode-map (make-sparse-keymap)) затем в перезагруженном буфере перезагрузка perl-mode отключила электрические отступы для меня.

Также спасибо за ответ syohex.

РЕДАКТИРОВАТЬ: важно перезагрузить Perl-режим, чтобы это работало.

Добавьте следующий код в ваш файл конфигурации (.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)

Выключи 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)

Вы можете найти похожие посты здесь, здесь и здесь

Другие вопросы по тегам