#8486

chobie
メンバー

インデント開始
^(
.*([|({|do)s*(|.*|)?)s*
|
(s*(module|class|def|unless|if|else|elsif|case|when|begin|rescue|ensure|for|while|until).*)
)$

インデント終了
^s*(
[}]]s*
|
(end|rescue|ensure|else|elsif|when)b
)

こんな形にすれば読みやすいのではないでしょうか?

ステートメント開始のほうはエスケープシーケンスが多いので多少読みにくいかもしれませんが単純なので説明は割愛させていただきます。
構文については下記を参照していただければすぐ読めるかと思いますので参考にしてみてください。
http://jp.emeditor.com/help/howto/search/search_regexp_syntax.htm

version9.06で同じようなタイプをすると

#!/usr/bin/env ruby
$KCODE = “u”
p [0,1,2,3,4,5,6,7,8,9].select do |i|
i%2 == 0
end.collect d o

doのoをタイプした際にインデントされてしまうようです。

EmEditorの自前の自動インデントの構文解析と
正規表現での自動インデントが衝突しているのですかね?

ちなみにruby詳しくないんでよくわからないんですが

p [0,1,2,3,4,5,6,7,8,9].select do |i|
i%2 == 0
end.collect do |i|
i*i
end.each do |i|
p i
end

今回の想定したインデントってこんな感じなのでしょうか?