【VisualStudio】定義に折りたたむ時にコメントだけを折りたたまないようにする

VisualStudio で C# のコードを開いたとき「アウトラインを定義に折りたたむ」を実行するとXMLコメントまで折りたたまれてしまいますがコメントは折りたたまないでほしいなぁという人向けの設定方法です。エディタ上でコンテキストメニューを表示して以下を実行したときの動きの事です。

  • アウトライン > 定義に折りたたむ (Ctrl + M, O)

この時にコメントとXMLコメントを折りたたまないでメソッドだけ折りたたむようにするには以下の設定OFFにします。

  • ツール > オプション > テキスト エディター > C# > 詳細設定 > [アウトライン]

を選択して設定項目から

  • 「コメントとプリプロセッサ領域のアウトラインを表示する」 > チェックボックスをOFF

します。これでそもそもコメントがアウトラインの対象から外れるので「定義に折りたたむ」を選んでも折りたたまれなくなります。

f:id:Takachan:20200903233049p:plain:h300
設定前の表示

設定するとこんな感じです。

f:id:Takachan:20200903233156p:plain:h300
設定後の表示

この通りコメントはそもそもアウトライン化の対象から外れて意図したとおりの表示になります(コメント先頭の「+」ボタンが消えます)

また、「コメントとプリプロセッサ領域のアウトラインを表示する」がONの状態で、「定義を折りたたむ時に #regions を折りたたむ」のチェックを入れると(当方環境ではデフォルトではOFFでしたが)この「定義に折りたたむ」を実行したときに #region ブロックが折りたたまれるようになります。

VS2012くらいまで?はソリューションエクスプローラーのツリーの折りたたみとかこういったコメントの折りたたみをVBスクリプトで実行してたりしましたが最新環境ではそんなことしないでも大丈夫みたいです。

追記

但しこの方法でコメントのアウトラインを無効化した状態で .NET の API 宣言にジャンプするとコメントが折りたたまれない状態で API の定義が表示されるため一覧性が非常に低下します。

F12で定義に飛んだ時にコメントが折りたたまれていない状態
定義に飛ぶとコメントが折りたたまれていない

というか「関数宣言に折りたたむ」があれば解決なんですよね。何で無いんでしょうね?設定があるから喜んでしまいましたがちょっと微妙ですね…

追記 その2

この問題を解決する拡張機能をストアで見つけました。

marketplace.visualstudio.com

この拡張機能を入れて「Ctrl+M, Ctrl+D」と入力するとメソッドだけが折りたたまれます。拡張機能の名前はコメントの折りたたみとなっていますが実際の挙動は逆ですね(微妙に折りたたまれない or クラスごと折りたたまれる場合がありますが 3rd の拡張機能という事で仕方ないかと。

最初の設定はしないでもよいです。あースッキリした。