GNU/Linux Debian マシンで、含まれている cc モード (c バージョン 5.32.2) で GNU/Emacs HEAD を使用しています。
Code Conventions for the Java Programming Language、Android の Code Style Guidelines for Contributors、およびいくつかのカスタム ルールを管理するカスタム スタイルを定義しようとしています。
Lisp の初心者として、ゼロから始めるのは賢明ではないようです。結果として、私はgoogle-c-styleを出発点として使用し、ネストされた条件を除いて、ほとんどのインデント ルールに対して意図した動作を得ることができました (以下のコード スニペットを参照)。
その投稿から、カスタム スタイルを定義(arglist-cont-nonempty . ++)
しました (完全なコード: custom-java-style.el )。残念ながら、ほとんどの場合は意図したとおりにインデントされていますが、
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
someMethod(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
}
ネストされた条件が間違ってインデントされています:
if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress)
&& deviceRegistred.getName().equalsIgnoreCase(deviceName))) {
doSomethingAboutIt();
}
Ctrl-c Ctrl+s2行目に報告Syntactic analysis: ((arglist-cont-nonempty 2447 2450) (arglist-cont-nonempty 2447 2452))
すると、明らかに8( )ではなく16スペース(2回++
)のインデントがあり++
ます。
次のインデントを取得したいと思います。
if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress)
&& deviceRegistred.getName().equalsIgnoreCase(deviceName))) {
doSomethingAboutIt();
}
(,(when (fboundp …)))
に使用されたような条件を定義しようとしましstatement-cont
たが、成功しませんでした (私の Lisp 知識の欠如も役に立ちません)。
さて、質問: 私のアプローチは正しいですか、それとも間違っていますか? 意図した動作を実装するにはどうすればよいですか?
(malabar-mode や JDEE は使いたくないので、使用するように言わないでください。)
乾杯、
ルノー
更新 2011/12/06 (コメントへの対応)
ここで聖戦を始めるつもりはありません。自分の理由で Emacs を使いたい人は Emacs に固執することができ、他の人は好きなように使います…</p>
そうは言っても、私は Emacs を使用するのは私だけで、他のメンバーは Eclipse が好きなチームで働いています。私はコーディング規則を担当しているので、同僚と協力して適切な保存アクションを取得し、Eclipse のフォーマッターの構成を支援してきました。私が言えることは、Eclipse の保存アクションとフォーマッターは構成がまったく簡単ではないということです...主な違いは、優れたチェックボックスを備えた優れた GUI を使用できることですが、複雑さを軽減するのにはあまり役立ちません。
私は Emacs を使い続けています…</p>