diff --git a/src/Main/Base/Project/Src/Editor/IFormattingStrategy.cs b/src/Main/Base/Project/Src/Editor/IFormattingStrategy.cs index 5b5ea746c7..d688dcecdc 100644 --- a/src/Main/Base/Project/Src/Editor/IFormattingStrategy.cs +++ b/src/Main/Base/Project/Src/Editor/IFormattingStrategy.cs @@ -143,8 +143,21 @@ namespace ICSharpCode.SharpDevelop.Editor BlockCommentRegion region = FindSelectedCommentRegion(editor, blockStart, blockEnd); if (region != null) { - editor.Document.Remove(region.EndOffset, region.CommentEnd.Length); - editor.Document.Remove(region.StartOffset, region.CommentStart.Length); + do { + editor.Document.Remove(region.EndOffset, region.CommentEnd.Length); + editor.Document.Remove(region.StartOffset, region.CommentStart.Length); + + int selectionStart = region.EndOffset; + int selectionLength = editor.SelectionLength - (region.EndOffset - editor.SelectionStart); + + if(selectionLength > 0) { + editor.Select(region.EndOffset, selectionLength); + region = FindSelectedCommentRegion(editor, blockStart, blockEnd); + } else { + region = null; + } + } while(region != null); + } else { editor.Document.Insert(endOffset, blockEnd); editor.Document.Insert(startOffset, blockStart);