Emacs 23.2には、名前が変更されたエスプレッソであるjsモードが含まれています。私はちょうどあなたのredunkulousコードの「インデント領域」を行なったし、この得た:私はそれが正確に何をしたいではないですね
var o = { foo : 'bar'
, baz : 'foo'
}
, p
, q = new Squash(o
, { start: 0
, limit: 50
}
)
を。カンマはおそらくあなたと違って相殺されます。私はJS-モードとインデントに見えた
(おやっそれは醜いです。)
EDIT
OK]をクリックしてjs--proper-indentation
によって行われるようです。現在の行を見て、インデントする方法を決定しようとします。
さまざまな構文パターンに対して、テストする条件がたくさんあります。私はカンマで始まる行のチェックを入れて、これらの結果を得た:
var o = { foo : 'bar'
, baz : 'foo'
}
, p
, q = new Squash(o
, { start: 0
, limit: 50
}
)
私はそれはあなたが欲しいものだと思うが、それはまだ私には全く壊れて見えます。とにかくこれは私がそれをした方法です。
js--proper-indentation
ためのリストの一番上にこの指揮を注入:
(defun js--proper-indentation (parse-status)
"Return the proper indentation for the current line."
(save-excursion
(back-to-indentation)
(cond
((looking-at ",")
(let ((spos
(save-excursion
(while (looking-back "}[\t\n ]*")
(backward-sexp)
(if (looking-back ",[\t\n ]*")
(re-search-backward ",[\t\n ]*")))
(cond
((looking-back "\\(,\\|(\\)[ \t]*\\<\\([^:=\n\t ]+\\)[ \t\n]*")
(re-search-backward "\\(,\\|(\\)[ \t]*\\<\\([^:=\n\t ]+\\)[ \t\n]*" (point-min) t)
(+ (current-column) 2))
((re-search-backward "\\<\\([^:=\n\t ]+\\)[ \t]*\\(:\\|=\\)" (point-min) t)
(current-column))
(t
nil)))))
(if spos
(- spos 2)
(+ js-indent-level js-expr-indent-offset))))
....
は、その関数定義における条件の残りの部分を保つようにしてください - 私は彼らが何をすべきか分からないけどthe'reはおそらく重要。
これが堅牢であるかどうかは分かりませんが、あなたのテストケースを除いてテストしていません。しかし、これはあなたを始めることになります。
JS3モードと呼ばれるうん、人々はしばしば、エスプレッソ(JS-モード)からインデントを含むことにより、JS2モードを強化します。しかし、エスプレッソは私が解決しようとしている問題を正確に持っています。 –
Re:EDITありがとう、とても役に立ちます。私はいくつかのテストをして、これに戻る必要があります。 –