字上げと字下げの挙動についてNo.06781
凡人さん さん 11/10/28 09:18
 
ファイルタイプ別の設定で自動インデントとC言語用のインデントが有効な状態のと
き、各パターンの2番目に登場する関数の部分で字下げと字上げの挙動がおかしい気
がするのですがこれはこういう仕様でしょうか?
各パターンはファイルに単独でタイピングしていったときに確認できた結果です。


css用 ------------------------------------
[パターン1]
#a{
 b:c;
}
 #a{
 b:c←字下げされない
}←字下げされない


[パターン1.1]
#a{
 b:c;
}
 #a
 {
  b:c←正常
 }←正常


[パターン2]
 #a{
  b:c;
 }
#a{
  b:c;←字上げされない

[パターン2.2]
 #a{
  b:c;
     }←ここでわざとインデントをたくさん入力する
#a{
      b:c;←インデントが


javascript用 -----------------------------

[パターン1]
function a(){
 // b
}
 function c(){
  // d
}←字下げされない


[パターン1.1]
function a(){
 // b
}
 function c()
 {
  // d
 }←正常


[パターン2]
 function a(){
  // b
 }
function c(){
 // d
 }←字上げされない


[パターン2.1]
 function a(){
  // b
 }
function c()
{
 // d
}←正常


[パターン3]

 function a(){
  // b
 }
 function c(){
  // d
 }←正常


[ ]
RE:06781 字上げと字下げの挙動についてNo.06782
秀丸担当 さん 11/10/28 13:40
 

>ファイルタイプ別の設定で自動インデントとC言語用のインデントが有効な状態のと
>き、各パターンの2番目に登場する関数の部分で字下げと字上げの挙動がおかしい気
>がするのですがこれはこういう仕様でしょうか?
>各パターンはファイルに単独でタイピングしていったときに確認できた結果です。
>

報告ありがとうございます。
いずれも確認することができました。
調べてみたところ、こういうケースでは対象となるべき関数に相当する文字列が
C言語用のキーワード(ifやforなど)であるかどうかを区別して、ifやforなどで
はインデントはうまくいって、それ以外のものは無視してさらに上の関数を検索
するという処理がありました。
とりあえず手元でその処理をやめたら報告いただいた全てのケースで大丈夫にな
りましたが、理由あってそうしているはずなので、これを対策すると別のところ
がうまくいかないということも考えられます。
慎重に検討したいと思います。

[ ]