2

私のemacsは、c-default-styleを「linux」に、c-basic-offsetを4に設定しています。これには本当に満足しており、CとPHPで魅力的に機能します。問題は、Java コードを編集しようとすると、次のようにインデントされることです。

class Main
{
    public static void main(String args[])
        {
            System.out.println("Hello world!");
        }
}

これはどうやら Emacs のインデントのデフォルトの動作であり、CC モードで設定した動作ではありません (気になるのは、メイン関数のブレースのインデントです)。私は数か月前に Emacs を使い始めたばかりで、Emacs Lisp にはあまり慣れていませんが、java-mode が cc-mode のインデント スタイルを採用しない理由がまったくわかりません。誰かがこれについて手がかりを持っていますか? もちろん、indent-tabs-mode を無効にすることは解決策ですが、満足できるものではないと言わざるを得ません。この問題には本当に簡単な解決策があると感じていますが、何時間も探していました...

4

2 に答える 2

2

これが私にとってうまくいくものです:

(require 'google-c-style)
(add-hook 'c-mode-common-hook
      (lambda()
            (subword-mode)
            (google-set-c-style)
            (google-make-newline-indent)
            (setq c-basic-offset 4)))

https://github.com/google/styleguide/blob/gh-pages/google-c-style.elをダウンロード して、ロード パスのどこかに配置する必要があります ~/.emacs.d/

于 2013-09-17T06:30:49.677 に答える
0

「c スタイル」 (C ライクな言語のインデント規則) の設定については、こちらで簡単に説明しています。特に、次のようなものを使用して、Java モードに「linux」を選択できます。

(setq c-default-style
      '((java-mode . "linux")))

各モードのスタイルを個別に選択する必要があると思います。java-mode は、何らかの理由で c-default-style を文字列として認識していない可能性があります。

于 2013-09-17T01:18:53.690 に答える