16

electric-indent-mode が不要な Major モード (Yaml や NXML など) はほとんどありませんが (C のような言語には必要です)、オフの場合は無効にできません。有効にするには:

(electric-indent-mode 1)

ドキュメントから(可変電気インデントモードの場合)

Electric-Indent モードが有効な場合は非 nil。コマンドelectric-indent-mode' for a description of this minor mode. Setting this variable directly does not take effect; either customize it (see the info node「Easy Customization」を参照するか、関数「electric-indent-mode」を呼び出します。

そして機能のために

オンザフライ再インデントを切り替えます (電気インデント モード)。前置引数 ARG を使用すると、ARG が正の場合は電気インデント モードを有効にし、それ以外の場合は無効にします。Lisp から呼び出された場合、ARG が省略されているか nil の場合はモードを有効にします。

だから私はフックでそれをオフにしようとします:

(add-hook 'yaml-mode-hook (lambda ()                        
                             (electric-indent-mode -1)))

(実際には after-change-major-mode-hook を使用(memql major-mode '(yaml-mode python-mode nxml-mode))して、リストにモードを追加できる場所を確認します)。

しかし、うまくいきません。私も試しました:

(set (make-local-variable 'electric-indent-mode) nil)

喜びはありません。しかし(electric-indent-mode -1)、.emacs ファイルから eval すると機能します。

4

3 に答える 3

4

electric-indent-mode24.4 ではデ​​フォルトで有効になります。ローカルでオフにするにはelectric-indent-local-mode、lunaryorn が述べたように使用できます。ただし、24.3 でローカルでオフにするには、次のようにします。

(add-hook 'foo-mode-hook
          (lambda () (set (make-local-variable 'electric-indent-mode) nil)))

最初のフォームはうまくいかなかったとおっしゃいましたが、うまくいくはずです (うまくいかない場合は、他の問題が原因です)。

于 2014-01-17T14:01:09.553 に答える
2

少なくとも emacs 24.3 では、ローカルでエレクトリック インデント モードを無効にすることはできませんglobal-mode。とにかく問題yaml-modeは、electric-indent機能が組み込まれていることです。つまり、なくても有効になりelectric-indent-modeます。このパッケージは、この動作をオフにする方法を提供していません。おそらく、その github リポジトリで問題を報告する必要があります。

の電気インデント機能を無効にするには、これを試してくださいyaml-mode

(define-key yaml-mode-map "|" nil)
(define-key yaml-mode-map ">" nil)
(define-key yaml-mode-map "-" nil)
(define-key yaml-mode-map "." nil)
(define-key yaml-mode-map [backspace] nil)

後で電気インデントの動作を復元するには、次のことができます

(define-key yaml-mode-map "|" 'yaml-electric-bar-and-angle)
(define-key yaml-mode-map ">" 'yaml-electric-bar-and-angle)
(define-key yaml-mode-map "-" 'yaml-electric-dash-and-dot)
(define-key yaml-mode-map "." 'yaml-electric-dash-and-dot)
(define-key yaml-mode-map [backspace] 'yaml-electric-backspace)
于 2014-01-17T10:29:35.387 に答える