Vscode: インデントされた後続行を使用したコード折り畳みの奇数

作成日 2016年04月10日  ·  3コメント  ·  ソース: microsoft/vscode

  • VSCodeバージョン:0.10.11
  • OSバージョン:Mac OS X El Capitan(10.11.4)

複製の手順:試したのですが、再現できないので、正直なところ

問題:コードのブロック(この場合は行#253)を折りたたむと、写真のブロックが折りたたまれますが、折りたたまれない行(#273)を折りたたむための「マイナス記号」が表示されます。 その後の1行の空白(#274)が折りたたまれているようで、それだけです。 しかし、それは最後のブレースです。

仮説:行番号253で定義しているプロパティの下にインデントされたコードブロック(開始行番号275)があるので、それを閉じることができることを警告しようとしていると思います。 もしそうなら、そして問題がバグではなく機能であるなら、その機能は非常に紛らわしい/不明確です。 (画像4を参照)

実際に私の仮説が正しい場合は、別のアイコンを使用して、オブジェクトの下のインデントされた行を折りたたむ機能を示すことをお勧めします(これは本当に意味がありますが、その上のコードブロックを折りたたむという文脈では不明確です)、崩壊しているのは技術的にはカプセル化されたコードブロックではないからです。

画像1
code folding 1

画像2
code folding 2

画像3
code folding 3

画像4
code folding 4

素晴らしいIDEと素晴らしい仕事の人々! =)

*question

全てのコメント3件

多くのスクリーンショットをありがとう。 あなたのコードで特別なのは、273行目の閉じ括弧のインデントが275行目の次のコードよりも大きいことだと思います。
現在実装されている折りたたみ戦略は、線のインデントのみに注目しています。 折り畳み領域は、行のインデントが1つ以上の後続の行よりも小さい場合に開始し、同じまたは小さいインデントの行がある場合に終了します。 空の行は無視されます。
私の推測では、275行目と416行目の間のインデントを273行目と同じになるように1つずつ減らすと、より正常な動作が見られると思います。 確認できますか?

ここでよりスマートにするには、インデント戦略に言語知識を追加する必要があります。 たとえば、}はブロックの終わりであるが、開始ではないという知識。
これには問題#3422があります。

私の仮定が正しかったと仮定して、閉じます。 そうでない場合はコメントしてください...

@aeschliあなたは正しいです。 返信が遅くなってすみません! 基本的に、これらのプロパティを253-273行で定義されたプロパティのサブプロパティに暗黙的に作成していることを知っていることに基づいて、折りたたまれているように見えました。 あなたの言ったことに基づいて期待通りに機能すると思いますが、それが何をしているのか理解していない人にとっては確かに混乱するでしょう。 暗黙のサブコードを折りたたむことができるので、そのようなブロックをインデントするときに正直にうまく機能します。

また、言語の知識も役立つことには同意します。

ありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価