5

まず、私はemacsを初めて使用するということから始めましょう。

メジャーモードのカスタマイズを作成しようとしています。設定が正しく機能している間、新しいバッファーを開くと、そのバッファーのメジャーモードのカスタマイズが別のタイプの他のバッファーに適用されていることを確認しています。

たとえば、「Makefile」という名前のファイルを開くと、makefile-modeが使用され、カスタマイズが適用されます。次に、「test.c」などの別のファイルを開くと、c-modeが使用されますが、makefile-modeからのカスタマイズはc-modeからのカスタマイズとマージされます。

私の.emacsファイルの関連部分を以下に示します。

(defun c-mode-settings ()
    (c-set-style                   "bsd")
    (set-buffer-file-coding-system 'utf-8-unix)
    (show-paren-mode               1)

    (setq c-basic-offset        4)
    (setq tab-width             4)
    (setq indent-tabs-mode      nil)
    (setq c-tab-always-indent   t)
    (setq require-final-newline t)
)

(defun makefile-mode-settings ()
    (setq whitespace-style '(tabs spaces space-mark tab-mark face lines-tail))
    (whitespace-mode       t)
    (show-paren-mode       1)

    (setq tab-width             4)
    (setq require-final-newline t)
)

(add-hook 'c-mode-hook        'c-mode-settings)
(add-hook 'makefile-mode-hook 'makefile-mode-settings)

これらのモードフックが異なるモードの他のバッファーに影響を与えないようにするにはどうすればよいですか?

ありがとう!アンドリュー

4

1 に答える 1

4

一部の変数は設定時にバッファに対してローカルになり、一部の変数はグローバルになることを考慮する必要があります。通常、説明には対応するコメントがあります(C-h v var-nameこの説明を取得するために使用します。

場合によっては、を使用して、任意の変数がバッファに対してローカルになるように強制できます。

(set (make-local-variable 'var-name) var-value)

しかし、これには注意する必要があります。

于 2012-12-13T20:11:51.263 に答える