From aac539edf768f4f6b4a30be85937bbfc09f4e01c Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 27 May 2006 13:36:36 +0000 Subject: [PATCH] Fixed SD2-808: Indenting comment when typing colon character or ( ) git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1430 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Src/FormattingStrategy/CSharpFormattingStrategy.cs | 4 ++-- .../Project/Src/FormattingStrategy/Indentation.cs | 8 +++++++- .../HighlightingStrategy/DefaultHighlightingStrategy.cs | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs index c2ecc02e16..01aaac4b90 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs @@ -417,8 +417,8 @@ namespace CSharpBinding.FormattingStrategy return IndentLine(textArea, lineNr) + "#endregion".Length; } - if (lineAbove.HighlightSpanStack != null && lineAbove.HighlightSpanStack.Count > 0) { - if (!((Span)lineAbove.HighlightSpanStack.Peek()).StopEOL) { // case for /* style comments + if (lineAbove.HighlightSpanStack != null && !lineAbove.HighlightSpanStack.IsEmpty) { + if (!lineAbove.HighlightSpanStack.Peek().StopEOL) { // case for /* style comments int index = lineAboveText.IndexOf("/*"); if (index > 0) { StringBuilder indentation = new StringBuilder(GetIndentation(textArea, lineNr - 1)); diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/Indentation.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/Indentation.cs index 27c3143491..b7262c1a29 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/Indentation.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/Indentation.cs @@ -321,7 +321,8 @@ namespace CSharpBinding.FormattingStrategy // statement). if (!oldBlock.Continuation && !oldBlock.OneLineBlock && oldBlock.StartLine == block.StartLine && - block.StartLine < doc.LineNumber && lastRealChar != ':') { + block.StartLine < doc.LineNumber && lastRealChar != ':') + { // use indent StringBuilder to get the indentation of the current line indent.Length = 0; line = doc.Text; // get untrimmed line @@ -330,6 +331,11 @@ namespace CSharpBinding.FormattingStrategy break; indent.Append(line[i]); } + // /* */ multiline comments have an extra space - do not count it + // for the block's indentation. + if (startInComment && indent.Length > 0 && indent[indent.Length - 1] == ' ') { + indent.Length -= 1; + } block.InnerIndent = indent.ToString(); } return; diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/DefaultHighlightingStrategy.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/DefaultHighlightingStrategy.cs index 1f59e0af41..fe70d27f63 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/DefaultHighlightingStrategy.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/DefaultHighlightingStrategy.cs @@ -452,7 +452,7 @@ namespace ICSharpCode.TextEditor.Document void UpdateSpanStateVariables() { inSpan = (currentSpanStack != null && !currentSpanStack.IsEmpty); - activeSpan = inSpan ? (Span)currentSpanStack.Peek() : null; + activeSpan = inSpan ? currentSpanStack.Peek() : null; activeRuleSet = GetRuleSet(activeSpan); }