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-modeをリロードすると、電気的インデントが無効になりました。

また、答えsyohexをありがとう。

編集:これが機能するためには、perl-modeをリロードすることが重要です。

于 2012-12-25T01:28:48.260 に答える