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-20 16:19:48 +0400
committerMike Krüger <mkrueger@novell.com>2009-07-20 16:19:48 +0400
commitfbc289dfcc6a860372a5bc62ab360c37c495e2f2 (patch)
treecd3d2711e73deffe1a20d5c3a858fd26454efbd0 /main/contrib
parent99218313a9230079ccd95dc5ca15d0d4b4bbb6c1 (diff)
* Src/PrettyPrinter/CSharp/PrettyPrintOptions.cs:
* Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs: Added brace forcement pretty print options. svn path=/trunk/monodevelop/; revision=138206
Diffstat (limited to 'main/contrib')
-rw-r--r--main/contrib/NRefactory/Project/ChangeLog6
-rw-r--r--main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs106
-rw-r--r--main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/PrettyPrintOptions.cs71
3 files changed, 158 insertions, 25 deletions
diff --git a/main/contrib/NRefactory/Project/ChangeLog b/main/contrib/NRefactory/Project/ChangeLog
index 5b6ebdacb3..b5a5741acb 100644
--- a/main/contrib/NRefactory/Project/ChangeLog
+++ b/main/contrib/NRefactory/Project/ChangeLog
@@ -1,3 +1,9 @@
+2009-07-20 Mike Krüger <mkrueger@novell.com>
+
+ * Src/PrettyPrinter/CSharp/PrettyPrintOptions.cs:
+ * Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs: Added brace
+ forcement pretty print options.
+
2009-07-17 Mike Krüger <mkrueger@novell.com>
* Src/PrettyPrinter/CSharp/OutputFormatter.cs:
diff --git a/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs b/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs
index a438906c28..f93e73db94 100644
--- a/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs
+++ b/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs
@@ -2,7 +2,7 @@
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
-// <version>$Revision: 4417 $</version>
+// <version>$Revision: 4471 $</version>
// </file>
using System;
@@ -1289,31 +1289,33 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
void PrintIfSection(List<Statement> statements)
{
+ /*
if (statements.Count == 1 && (statements[0] is BlockStatement)) {
- OutputBlock((BlockStatement)statements[0],
- prettyPrintOptions.StatementBraceStyle,
- prettyPrintOptions.PlaceElseOnNewLine);
+ WriteEmbeddedStatement(statements[0],
+ prettyPrintOptions.IfElseBraceForcement,
+ prettyPrintOptions.StatementBraceStyle,
+ prettyPrintOptions.PlaceElseOnNewLine);
return;
- }
+ }*/
/* if (statements.Count != 1 || !(statements[0] is BlockStatement)) {
outputFormatter.Space();
}*/
if (statements.Count != 1) {
outputFormatter.PrintToken(Tokens.OpenCurlyBrace);
- } else {
outputFormatter.NewLine ();
outputFormatter.IndentationLevel++;
outputFormatter.Indent ();
- }
-
- foreach (Statement stmt in statements) {
- TrackVisit(stmt, prettyPrintOptions.StatementBraceStyle);
- }
-
- if (statements.Count == 1) {
+ foreach (Statement stmt in statements) {
+ TrackVisit(stmt, prettyPrintOptions.StatementBraceStyle);
+ }
outputFormatter.IndentationLevel--;
- } else {
outputFormatter.PrintToken(Tokens.CloseCurlyBrace);
+ } else {
+ WriteEmbeddedStatement(statements[0],
+ prettyPrintOptions.IfElseBraceForcement,
+ prettyPrintOptions.StatementBraceStyle,
+ false);
+
}
/* if (statements.Count != 1 || !(statements[0] is BlockStatement)) {
outputFormatter.Space();
@@ -1323,6 +1325,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
public override object TrackedVisitElseIfSection(ElseIfSection elseIfSection, object data)
{
if (prettyPrintOptions.PlaceElseOnNewLine) {
+ outputFormatter.NewLine();
outputFormatter.Indent();
} else {
outputFormatter.Space();
@@ -1343,7 +1346,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
outputFormatter.PrintToken(Tokens.CloseParenthesis);
- WriteEmbeddedStatement(elseIfSection.EmbeddedStatement, prettyPrintOptions.PlaceElseOnNewLine);
+ WriteEmbeddedStatement(elseIfSection.EmbeddedStatement,
+ prettyPrintOptions.IfElseBraceForcement,
+ prettyPrintOptions.StatementBraceStyle,
+ false);
return null;
}
@@ -1401,8 +1407,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.DoNewLine = true;
outputFormatter.DoIndent = true;
- WriteEmbeddedStatement(forStatement.EmbeddedStatement);
-
+ WriteEmbeddedStatement (forStatement.EmbeddedStatement,
+ prettyPrintOptions.ForBraceForcement,
+ prettyPrintOptions.StatementBraceStyle,
+ true);
return null;
}
@@ -1424,6 +1432,42 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
}
+ void WriteEmbeddedStatement (Statement statement, BraceForcement forcement, BraceStyle braceStyle, bool emitEndingNewLine)
+ {
+ if (statement is BlockStatement) {
+ BlockStatement block = (BlockStatement)statement;
+ switch (forcement) {
+ case BraceForcement.RemoveBraces:
+ if (block.Children.Count == 1) {
+ ++outputFormatter.IndentationLevel;
+ outputFormatter.NewLine();
+ outputFormatter.Indent ();
+ TrackVisit(block.Children[0], null);
+ --outputFormatter.IndentationLevel;
+ } else {
+ goto default;
+ }
+ break;
+ case BraceForcement.RemoveBracesForSingleLine:
+ goto case BraceForcement.RemoveBraces;
+ default:
+ OutputBlock((BlockStatement)statement, prettyPrintOptions.StatementBraceStyle, emitEndingNewLine);
+ break;
+ }
+ } else {
+ switch (forcement) {
+ case BraceForcement.AddBraces:
+ BlockStatement blockStatement = new BlockStatement ();
+ blockStatement.AddChild (statement);
+ OutputBlock(blockStatement, braceStyle, true);
+ break;
+ default:
+ WriteEmbeddedStatement (statement, emitEndingNewLine);
+ break;
+ }
+ }
+ }
+
public override object TrackedVisitLabelStatement(LabelStatement labelStatement, object data)
{
outputFormatter.PrintIdentifier(labelStatement.Label);
@@ -1634,7 +1678,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.PrintToken(Tokens.Do);
}
- WriteEmbeddedStatement(doLoopStatement.EmbeddedStatement, prettyPrintOptions.PlaceWhileOnNewLine);
+ WriteEmbeddedStatement(doLoopStatement.EmbeddedStatement,
+ prettyPrintOptions.WhileBraceForcement,
+ prettyPrintOptions.StatementBraceStyle,
+ prettyPrintOptions.PlaceWhileOnNewLine);
if (doLoopStatement.ConditionPosition == ConditionPosition.End) {
if (prettyPrintOptions.PlaceWhileOnNewLine) {
@@ -1672,7 +1719,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
outputFormatter.PrintToken(Tokens.CloseParenthesis);
- WriteEmbeddedStatement(foreachStatement.EmbeddedStatement);
+ WriteEmbeddedStatement(foreachStatement.EmbeddedStatement,
+ prettyPrintOptions.ForEachBraceForcement,
+ prettyPrintOptions.StatementBraceStyle,
+ true);
return null;
}
@@ -1714,8 +1764,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
outputFormatter.PrintToken(Tokens.CloseParenthesis);
- WriteEmbeddedStatement(usingStatement.EmbeddedStatement);
-
+ WriteEmbeddedStatement(usingStatement.EmbeddedStatement,
+ prettyPrintOptions.UsingBraceForcement,
+ prettyPrintOptions.StatementBraceStyle,
+ true);
return null;
}
@@ -1740,7 +1792,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
{
outputFormatter.PrintToken(Tokens.Try);
- WriteEmbeddedStatement (tryCatchStatement.StatementBlock, prettyPrintOptions.PlaceCatchOnNewLine);
+ WriteEmbeddedStatement(tryCatchStatement.StatementBlock, prettyPrintOptions.PlaceCatchOnNewLine);
for (int i = 0 ; i < tryCatchStatement.CatchClauses.Count; i++) {
TrackVisit(tryCatchStatement.CatchClauses[i], i == tryCatchStatement.CatchClauses.Count - 1);
}
@@ -1818,7 +1870,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
outputFormatter.PrintToken(Tokens.CloseParenthesis);
- WriteEmbeddedStatement(fixedStatement.EmbeddedStatement);
+ WriteEmbeddedStatement(fixedStatement.EmbeddedStatement,
+ prettyPrintOptions.FixedBraceForcement,
+ prettyPrintOptions.StatementBraceStyle,
+ true);
return null;
}
@@ -1916,7 +1971,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
outputFormatter.PrintToken(Tokens.CloseParenthesis);
- WriteEmbeddedStatement(forNextStatement.EmbeddedStatement);
+ WriteEmbeddedStatement (forNextStatement.EmbeddedStatement,
+ prettyPrintOptions.ForBraceForcement,
+ prettyPrintOptions.StatementBraceStyle,
+ true);
return null;
}
#endregion
diff --git a/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/PrettyPrintOptions.cs b/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/PrettyPrintOptions.cs
index 9e95d49608..323ca6fe4e 100644
--- a/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/PrettyPrintOptions.cs
+++ b/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/PrettyPrintOptions.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: 4349 $</version>
// </file>
namespace ICSharpCode.NRefactory.PrettyPrinter
@@ -15,6 +15,13 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
NextLineShifted2
}
+ public enum BraceForcement {
+ DoNotChange,
+ RemoveBraces,
+ AddBraces,
+ RemoveBracesForSingleLine
+ }
+
/// <summary>
/// Description of PrettyPrintOptions.
/// </summary>
@@ -224,6 +231,68 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
#endregion
+ #region Force Braces
+ BraceForcement ifElseBraceForcement = BraceForcement.DoNotChange;
+ public BraceForcement IfElseBraceForcement {
+ get {
+ return ifElseBraceForcement;
+ }
+ set {
+ ifElseBraceForcement = value;
+ }
+ }
+
+ BraceForcement forBraceForcement = BraceForcement.DoNotChange;
+ public BraceForcement ForBraceForcement {
+ get {
+ return forBraceForcement;
+ }
+ set {
+ forBraceForcement = value;
+ }
+ }
+
+ BraceForcement foreachBraceForcement = BraceForcement.DoNotChange;
+ public BraceForcement ForEachBraceForcement {
+ get {
+ return foreachBraceForcement;
+ }
+ set {
+ foreachBraceForcement = value;
+ }
+ }
+
+ BraceForcement whileBraceForcement = BraceForcement.DoNotChange;
+ public BraceForcement WhileBraceForcement {
+ get {
+ return whileBraceForcement;
+ }
+ set {
+ whileBraceForcement = value;
+ }
+ }
+
+ BraceForcement usingBraceForcement = BraceForcement.DoNotChange;
+ public BraceForcement UsingBraceForcement {
+ get {
+ return usingBraceForcement;
+ }
+ set {
+ usingBraceForcement = value;
+ }
+ }
+
+ BraceForcement fixedBraceForcement = BraceForcement.DoNotChange;
+ public BraceForcement FixedBraceForcement {
+ get {
+ return fixedBraceForcement;
+ }
+ set {
+ fixedBraceForcement = value;
+ }
+ }
+ #endregion
+
#region Indentation
bool indentNamespaceBody = true;
bool indentClassBody = true;