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@xamarin.com>2011-11-23 17:47:09 +0400
committerMike Krüger <mkrueger@xamarin.com>2011-11-23 17:48:05 +0400
commit0bab6c562f01a3b8dc77d79450d7d50b17a5c384 (patch)
treef560627fc3c4acab533d6d6166db86b8d281fde6
parentd823430f7f983497176c5677e284c88ec41e0304 (diff)
[CSharpBinding] Improved the parameter auto indenting behavior.
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpIndentEngine.cs17
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpIndentEngineStack.cs13
2 files changed, 25 insertions, 5 deletions
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpIndentEngine.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpIndentEngine.cs
index 8e4127e595..13a8cf2ac5 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpIndentEngine.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpIndentEngine.cs
@@ -882,6 +882,18 @@ namespace MonoDevelop.CSharp.Formatting
"pragma",
"line"
};
+
+ void CheckForParentList ()
+ {
+ var after = stack.PeekInside (0);
+ if ((after & Inside.ParenList) == Inside.ParenList && pc == '(') {
+ var indent = stack.PeekIndent (0);
+ var kw = stack.PeekKeyword (0);
+ var line = stack.PeekLineNr (0);
+ stack.Pop ();
+ stack.Push (after, kw, line, 0);
+ }
+ }
// This is the main logic of this class...
public void Push (char c)
@@ -971,10 +983,13 @@ namespace MonoDevelop.CSharp.Formatting
PushCloseBrace (inside);
break;
case '\r':
+ CheckForParentList ();
PushNewLine (inside);
lastChar = c;
return;
case '\n':
+ CheckForParentList ();
+
if (lastChar == '\r') {
cursor++;
} else {
@@ -985,8 +1000,8 @@ namespace MonoDevelop.CSharp.Formatting
default:
break;
}
-
after = stack.PeekInside (0);
+
if ((after & Inside.PreProcessor) == Inside.PreProcessor) {
for (int i = 0; i < preProcessorIndents.Length; i++) {
int len = preProcessorIndents[i].Length - 1;
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpIndentEngineStack.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpIndentEngineStack.cs
index 2299ece776..ca1a17f97d 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpIndentEngineStack.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpIndentEngineStack.cs
@@ -71,6 +71,11 @@ namespace MonoDevelop.CSharp.Formatting
public string indent;
public int nSpaces;
public int lineNr;
+
+ public override string ToString ()
+ {
+ return string.Format ("[Node: inside={0}, keyword={1}, indent={2}, nSpaces={3}, lineNr={4}]", inside, keyword, indent, nSpaces, lineNr);
+ }
};
Node[] stack;
@@ -149,11 +154,11 @@ namespace MonoDevelop.CSharp.Formatting
sp--;
}
}
-// if (PropertyService.Get ("OnTheFlyFormatting", false)) {
+ if (nSpaces - n <= 0) {
indentBuilder.Append ('\t');
-// } else {
-// indentBuilder.Append (' ', nSpaces - n);
-// }
+ } else {
+ indentBuilder.Append (' ', nSpaces - n);
+ }
} else if (inside == Inside.MultiLineComment) {
if (size > 0) {
indentBuilder.Append (stack[sp].indent);