私は、コーディング フローに微妙ではあるが重大な影響を与える IDE 機能の適切な動作を文書化することの大ファンです。オートコンプリートの選択や、コードのコメント化/コメント解除など、利用していることに気付かないかもしれませんが、よりも少し多くのことを成し遂げた日。私が使用しなければならない他の言語サービスにその機能が組み込まれ、その後、日常のコーディング ライフが改善されることを期待してそうしています。「本物の」スマート インデント、つまり Visual Studio 2008 C# エディタは、それらの機能の 1 つです。
基本的なブロックコードのインデントはかなり簡単で、ジョブを完了するのに十分な時間で十分にハッキングできます。一方、True Smart Indent は、これまで IDE に実装しなければならなかった最も技術的に困難なタスクである可能性が非常に高く、公平な分担を実装しました。本格的なオンザフライの自動コード再フォーマットでさえ簡単です。面倒な作業は Smart Indent に任せるだけです。
汎用のスマート インデント アルゴリズムに関するハイレベルな議論を探しています。特に、スマート インデント戦略に関する研究、または反復可能でバグのない結果を保証するためにテストできるすべての通常および「エッジ」ケースの客観的な説明を探しています。最終的には、機能の詳細なワークフロー、機能を実際に実装するための具体的な基盤、そして最終的にそこから言語固有のバージョンを組み立てて言語サービスに統合することの両方を提供したいと考えています。
PS: Visual Studio 2010 の C# エディターには、この機能に小さなバグがいくつかあります。自分で実装したので、それを磨くために必要な作業にまったく新しい敬意を払っています.
編集 (8/25):スマート インデントがコード コメント内にある場合の処理方法について、ルールのドラフトを書き留めることができました。ルールについては、おそらく C++/C# の観点から作業する予定ですが、後で、他の言語の側面のためにパラメーター化できるようになるはずです。