jEditというのはJavaで開発されているオープンソースのエディターです。
名前は似ていますが某Mac OS X向け国産エディタとは別物ですあしからず。
jEditに限りませんが、JavaScriptでコールバック関数を直に書くとき、例えばインデントを 2 に設定していても、
$(function() {
//4つインデントされてる
みたいなことになることがあります。
関数呼び出しの括弧 (
と、 function のブロックの始まりの {
の両方を解釈して、二回分インデントしてくれやがるわけですね。
jEditでこれをどうにかできたので、残しておきます。
方法は簡単です。
jEditをインストールいたディレクトリの modes ディレクトリを開いて、 javascript.xmlを適当なエディタで開いてください。
その javascript.xml の 15-16行目を、下のようにコメントアウトしてください。
javascript.xml
<!-- Auto indent -->
<PROPERTY NAME="indentOpenBrackets" VALUE="{[" />
<PROPERTY NAME="indentCloseBrackets" VALUE="]}" />
<!-- ここをコメントアウトした -->
<!-- <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" /> -->
<!-- <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" /> -->
<PROPERTY NAME="indentNextLine"
VALUE="\s*(((if|while)\s*\(|else\s*|else\s+if\s*\(|for\s*\(.*\))[^{;]*)" />
<PROPERTY NAME="unindentThisLine"
VALUE="^.*(default:\s*|case.*:.*)$" />
このようにすると (
が閉じられていないまま改行してもインデントされなくなり、結果的にコールバック関数を直に書くときや無名関数を利用して変数を隠ぺいするときなどにいい感じにインデントするはずです。
しかし、前述したとおり このようにすると (
が閉じられていないまま改行してもインデントされなくなる ので注意!