Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@novell.com>2009-07-17 21:09:29 +0400
committerMike Krüger <mkrueger@novell.com>2009-07-17 21:09:29 +0400
commit098a6e5338d637743a14522cf07d15d920b5f995 (patch)
tree41be30cf01dd4753003b541e75d261c942e7fe2b /main/contrib
parent1dac076d5ed2cef5b83786d9bc77c79b89f2a028 (diff)
* Src/PrettyPrinter/CSharp/OutputFormatter.cs:
* Src/PrettyPrinter/AbstractOutputFormatter.cs: Comments that start line are no longer indented when outputting them. svn path=/trunk/monodevelop/; revision=138135
Diffstat (limited to 'main/contrib')
-rw-r--r--main/contrib/NRefactory/Project/ChangeLog6
-rw-r--r--main/contrib/NRefactory/Project/Src/PrettyPrinter/AbstractOutputFormatter.cs457
-rw-r--r--main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/OutputFormatter.cs5
3 files changed, 242 insertions, 226 deletions
diff --git a/main/contrib/NRefactory/Project/ChangeLog b/main/contrib/NRefactory/Project/ChangeLog
index 21d22a9497..5b6ebdacb3 100644
--- a/main/contrib/NRefactory/Project/ChangeLog
+++ b/main/contrib/NRefactory/Project/ChangeLog
@@ -1,5 +1,11 @@
2009-07-17 Mike Krüger <mkrueger@novell.com>
+ * Src/PrettyPrinter/CSharp/OutputFormatter.cs:
+ * Src/PrettyPrinter/AbstractOutputFormatter.cs: Comments that
+ start line are no longer indented when outputting them.
+
+2009-07-17 Mike Krüger <mkrueger@novell.com>
+
* Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs: Fixed place
else in new line.
diff --git a/main/contrib/NRefactory/Project/Src/PrettyPrinter/AbstractOutputFormatter.cs b/main/contrib/NRefactory/Project/Src/PrettyPrinter/AbstractOutputFormatter.cs
index 30c750242a..eab0e42302 100644
--- a/main/contrib/NRefactory/Project/Src/PrettyPrinter/AbstractOutputFormatter.cs
+++ b/main/contrib/NRefactory/Project/Src/PrettyPrinter/AbstractOutputFormatter.cs
@@ -1,224 +1,233 @@
-// <file>
-// <copyright see="prj:///doc/copyright.txt"/>
-// <license see="prj:///doc/license.txt"/>
-// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
-// <version>$Revision: 2972M $</version>
-// </file>
-
-using System;
-using System.Collections;
-using System.Text;
-
-namespace ICSharpCode.NRefactory.PrettyPrinter
-{
- /// <summary>
- /// Base class of output formatters.
- /// </summary>
- public abstract class AbstractOutputFormatter : IOutputFormatter
- {
- StringBuilder text = new StringBuilder();
-
- int indentationLevel = 0;
- bool indent = true;
- bool doNewLine = true;
- AbstractPrettyPrintOptions prettyPrintOptions;
-
- public bool IsInMemberBody { get; set; }
-
- public int IndentationLevel {
- get {
- return indentationLevel;
- }
- set {
- indentationLevel = value;
- }
- }
-
- public string Text {
- get {
- return text.ToString();
- }
- }
-
- public int TextLength {
- get {
- return text.Length;
- }
- }
-
-
- public bool DoIndent {
- get {
- return indent;
- }
- set {
- indent = value;
- }
- }
-
- public bool DoNewLine {
- get {
- return doNewLine;
- }
- set {
- doNewLine = value;
- }
- }
-
- protected AbstractOutputFormatter(AbstractPrettyPrintOptions prettyPrintOptions)
- {
- this.prettyPrintOptions = prettyPrintOptions;
- }
-
- internal bool isIndented = false;
- public void Indent()
- {
- if (DoIndent) {
- int indent = 0;
- while (indent < prettyPrintOptions.IndentSize * indentationLevel) {
- char ch = prettyPrintOptions.IndentationChar;
- if (ch == '\t' && indent + prettyPrintOptions.TabSize > prettyPrintOptions.IndentSize * indentationLevel) {
- ch = ' ';
- }
- text.Append(ch);
- if (ch == '\t') {
- indent += prettyPrintOptions.TabSize;
- } else {
- ++indent;
- }
- }
- isIndented = true;
- }
- }
-
- public void Reset ()
- {
- text.Length = 0;
- isIndented = false;
- }
-
- public void Space()
- {
- text.Append(' ');
- isIndented = false;
- }
-
- internal int lastLineStart = 0;
- internal int lineBeforeLastStart = 0;
-
- public bool LastCharacterIsNewLine {
- get {
- return text.Length == lastLineStart;
- }
- }
-
- public bool LastCharacterIsWhiteSpace {
- get {
- return text.Length == 0 || char.IsWhiteSpace(text[text.Length - 1]);
- }
- }
-
- public virtual void NewLine()
- {
- if (DoNewLine) {
- if (!LastCharacterIsNewLine) {
- lineBeforeLastStart = lastLineStart;
- }
- text.AppendLine();
- lastLineStart = text.Length;
- isIndented = false;
- }
- }
-
- public virtual void EndFile()
- {
- }
-
- protected void WriteLineInPreviousLine(string txt, bool forceWriteInPreviousBlock)
- {
- WriteInPreviousLine(txt + Environment.NewLine, forceWriteInPreviousBlock);
- }
-
- protected void WriteInPreviousLine(string txt, bool forceWriteInPreviousBlock)
- {
- if (txt.Length == 0) return;
-
- bool lastCharacterWasNewLine = LastCharacterIsNewLine;
- if (lastCharacterWasNewLine) {
- if (forceWriteInPreviousBlock == false) {
- if (txt != Environment.NewLine) Indent();
- text.Append(txt);
- lineBeforeLastStart = lastLineStart;
- lastLineStart = text.Length;
- return;
- }
- lastLineStart = lineBeforeLastStart;
- }
- string lastLine = text.ToString(lastLineStart, text.Length - lastLineStart);
- text.Remove(lastLineStart, text.Length - lastLineStart);
- if (txt != Environment.NewLine) {
- if (forceWriteInPreviousBlock) ++indentationLevel;
- Indent();
- if (forceWriteInPreviousBlock) --indentationLevel;
- }
- text.Append(txt);
- lineBeforeLastStart = lastLineStart;
- lastLineStart = text.Length;
- text.Append(lastLine);
- if (lastCharacterWasNewLine) {
- lineBeforeLastStart = lastLineStart;
- lastLineStart = text.Length;
- }
- isIndented = false;
- }
-
- /// <summary>
- /// Prints a text that cannot be inserted before using WriteInPreviousLine
- /// into the current line
- /// </summary>
- protected void PrintSpecialText(string specialText)
- {
- lineBeforeLastStart = text.Length;
- text.Append(specialText);
- lastLineStart = text.Length;
- isIndented = false;
- }
-
- public void PrintTokenList(ArrayList tokenList)
- {
- foreach (int token in tokenList) {
- PrintToken(token);
- Space();
- }
- }
-
- public abstract void PrintComment(Comment comment, bool forceWriteInPreviousBlock);
-
- public virtual void PrintPreprocessingDirective(PreprocessingDirective directive, bool forceWriteInPreviousBlock)
- {
- if (!directive.Expression.IsNull) {
- CSharpOutputVisitor visitor = new CSharpOutputVisitor();
- directive.Expression.AcceptVisitor(visitor, null);
- WriteLineInPreviousLine(directive.Cmd + " " + visitor.Text, forceWriteInPreviousBlock);
- } else if (string.IsNullOrEmpty(directive.Arg))
- WriteLineInPreviousLine(directive.Cmd, forceWriteInPreviousBlock);
- else
- WriteLineInPreviousLine(directive.Cmd + " " + directive.Arg, forceWriteInPreviousBlock);
- }
-
- public void PrintBlankLine(bool forceWriteInPreviousBlock)
- {
- WriteInPreviousLine(Environment.NewLine, forceWriteInPreviousBlock);
- }
-
- public abstract void PrintToken(int token);
-
- public void PrintText(string text)
- {
- this.text.Append(text);
- isIndented = false;
- }
-
- public abstract void PrintIdentifier(string identifier);
- }
-}
+// <file>
+// <copyright see="prj:///doc/copyright.txt"/>
+// <license see="prj:///doc/license.txt"/>
+// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
+// <version>$Revision: 4324 $</version>
+// </file>
+
+using System;
+using System.Collections;
+using System.Text;
+
+namespace ICSharpCode.NRefactory.PrettyPrinter
+{
+ /// <summary>
+ /// Base class of output formatters.
+ /// </summary>
+ public abstract class AbstractOutputFormatter : IOutputFormatter
+ {
+ StringBuilder text = new StringBuilder();
+
+ int indentationLevel = 0;
+ bool indent = true;
+ bool doNewLine = true;
+ AbstractPrettyPrintOptions prettyPrintOptions;
+
+ public bool IsInMemberBody { get; set; }
+
+ public int IndentationLevel {
+ get {
+ return indentationLevel;
+ }
+ set {
+ indentationLevel = value;
+ }
+ }
+
+ public string Text {
+ get {
+ return text.ToString();
+ }
+ }
+
+ public int TextLength {
+ get {
+ return text.Length;
+ }
+ }
+
+
+ public bool DoIndent {
+ get {
+ return indent;
+ }
+ set {
+ indent = value;
+ }
+ }
+
+ public bool DoNewLine {
+ get {
+ return doNewLine;
+ }
+ set {
+ doNewLine = value;
+ }
+ }
+
+ protected AbstractOutputFormatter(AbstractPrettyPrintOptions prettyPrintOptions)
+ {
+ this.prettyPrintOptions = prettyPrintOptions;
+ }
+
+ internal bool isIndented = false;
+ public void Indent()
+ {
+ if (DoIndent) {
+ int indent = 0;
+ while (indent < prettyPrintOptions.IndentSize * indentationLevel) {
+ char ch = prettyPrintOptions.IndentationChar;
+ if (ch == '\t' && indent + prettyPrintOptions.TabSize > prettyPrintOptions.IndentSize * indentationLevel) {
+ ch = ' ';
+ }
+ text.Append(ch);
+ if (ch == '\t') {
+ indent += prettyPrintOptions.TabSize;
+ } else {
+ ++indent;
+ }
+ }
+ isIndented = true;
+ }
+ }
+
+ public void Reset ()
+ {
+ text.Length = 0;
+ isIndented = false;
+ }
+
+ public void Space()
+ {
+ text.Append(' ');
+ isIndented = false;
+ }
+
+ internal int lastLineStart = 0;
+ internal int lineBeforeLastStart = 0;
+
+ public bool LastCharacterIsNewLine {
+ get {
+ return text.Length == lastLineStart;
+ }
+ }
+
+ public bool LastCharacterIsWhiteSpace {
+ get {
+ return text.Length == 0 || char.IsWhiteSpace(text[text.Length - 1]);
+ }
+ }
+
+ public virtual void NewLine()
+ {
+ if (DoNewLine) {
+ if (!LastCharacterIsNewLine) {
+ lineBeforeLastStart = lastLineStart;
+ }
+ text.AppendLine();
+ lastLineStart = text.Length;
+ isIndented = false;
+ }
+ }
+
+ public virtual void EndFile()
+ {
+ }
+
+ protected void WriteLineInPreviousLine(string txt, bool forceWriteInPreviousBlock)
+ {
+ WriteInPreviousLine(txt + Environment.NewLine, forceWriteInPreviousBlock);
+ }
+ protected void WriteLineInPreviousLine(string txt, bool forceWriteInPreviousBlock, bool indent)
+ {
+ WriteInPreviousLine(txt + Environment.NewLine, forceWriteInPreviousBlock, indent);
+ }
+
+ protected void WriteInPreviousLine(string txt, bool forceWriteInPreviousBlock)
+ {
+ WriteInPreviousLine(txt, forceWriteInPreviousBlock, true);
+ }
+
+ protected void WriteInPreviousLine(string txt, bool forceWriteInPreviousBlock, bool indent)
+ {
+ if (txt.Length == 0) return;
+
+ bool lastCharacterWasNewLine = LastCharacterIsNewLine;
+ if (lastCharacterWasNewLine) {
+ if (forceWriteInPreviousBlock == false) {
+ if (indent && txt != Environment.NewLine) Indent();
+ text.Append(txt);
+ lineBeforeLastStart = lastLineStart;
+ lastLineStart = text.Length;
+ return;
+ }
+ lastLineStart = lineBeforeLastStart;
+ }
+ string lastLine = text.ToString(lastLineStart, text.Length - lastLineStart);
+ text.Remove(lastLineStart, text.Length - lastLineStart);
+ if (indent && txt != Environment.NewLine) {
+ if (forceWriteInPreviousBlock) ++indentationLevel;
+ Indent();
+ if (forceWriteInPreviousBlock) --indentationLevel;
+ }
+ text.Append(txt);
+ lineBeforeLastStart = lastLineStart;
+ lastLineStart = text.Length;
+ text.Append(lastLine);
+ if (lastCharacterWasNewLine) {
+ lineBeforeLastStart = lastLineStart;
+ lastLineStart = text.Length;
+ }
+ isIndented = false;
+ }
+
+ /// <summary>
+ /// Prints a text that cannot be inserted before using WriteInPreviousLine
+ /// into the current line
+ /// </summary>
+ protected void PrintSpecialText(string specialText)
+ {
+ lineBeforeLastStart = text.Length;
+ text.Append(specialText);
+ lastLineStart = text.Length;
+ isIndented = false;
+ }
+
+ public void PrintTokenList(ArrayList tokenList)
+ {
+ foreach (int token in tokenList) {
+ PrintToken(token);
+ Space();
+ }
+ }
+
+ public abstract void PrintComment(Comment comment, bool forceWriteInPreviousBlock);
+
+ public virtual void PrintPreprocessingDirective(PreprocessingDirective directive, bool forceWriteInPreviousBlock)
+ {
+ if (!directive.Expression.IsNull) {
+ CSharpOutputVisitor visitor = new CSharpOutputVisitor();
+ directive.Expression.AcceptVisitor(visitor, null);
+ WriteLineInPreviousLine(directive.Cmd + " " + visitor.Text, forceWriteInPreviousBlock);
+ } else if (string.IsNullOrEmpty(directive.Arg))
+ WriteLineInPreviousLine(directive.Cmd, forceWriteInPreviousBlock);
+ else
+ WriteLineInPreviousLine(directive.Cmd + " " + directive.Arg, forceWriteInPreviousBlock);
+ }
+
+ public void PrintBlankLine(bool forceWriteInPreviousBlock)
+ {
+ WriteInPreviousLine(Environment.NewLine, forceWriteInPreviousBlock);
+ }
+
+ public abstract void PrintToken(int token);
+
+ public void PrintText(string text)
+ {
+ this.text.Append(text);
+ isIndented = false;
+ }
+
+ public abstract void PrintIdentifier(string identifier);
+ }
+}
diff --git a/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/OutputFormatter.cs b/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/OutputFormatter.cs
index a0b99024e9..d0b0e466d7 100644
--- a/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/OutputFormatter.cs
+++ b/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/OutputFormatter.cs
@@ -2,7 +2,7 @@
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
-// <version>$Revision: 3856 $</version>
+// <version>$Revision: 4324 $</version>
// </file>
using System.Collections;
@@ -154,7 +154,8 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
WriteLineInPreviousLine("///" + comment.CommentText, forceWriteInPreviousBlock);
break;
default:
- WriteLineInPreviousLine("//" + comment.CommentText, forceWriteInPreviousBlock);
+ // 3 because startposition is start of the text (after the tag)
+ WriteLineInPreviousLine("//" + comment.CommentText, forceWriteInPreviousBlock, comment.StartPosition.Column != 3);
break;
}
}