Browse Source

Included fix for OverrideMethodsCodeGenerator by Yannick Kiekens (purplebox).

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@561 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
fd56108c8c
  1. 13
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
  2. 60
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/OverrideMethodsCodeGenerator.cs

13
src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs

@ -203,8 +203,17 @@ namespace VBNetBinding.FormattingStrategy @@ -203,8 +203,17 @@ namespace VBNetBinding.FormattingStrategy
int indentLength = b.Length;
b.Append(curLineText);
if (b.ToString() != oldLineText)
textArea.Document.Replace(curLine.Offset, curLine.Length, b.ToString());
string newLineText = b.ToString();
if (newLineText != oldLineText) {
textArea.Document.Replace(curLine.Offset, curLine.Length, newLineText);
int newIndentLength = newLineText.Length - newLineText.TrimStart().Length;
int oldIndentLength = oldLineText.Length - oldLineText.TrimStart().Length;
if (oldIndentLength != newIndentLength && lineNr == textArea.Caret.Position.Y) {
// fix cursor position if indentation was changed
int newX = textArea.Caret.Position.X - oldIndentLength + newIndentLength;
textArea.Caret.Position = new Point(Math.Max(newX, 0), lineNr);
}
}
return indentLength;
}

60
src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/OverrideMethodsCodeGenerator.cs

@ -58,37 +58,67 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -58,37 +58,67 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
string parameters = String.Empty;
string paramList = String.Empty;
string returnType = csa.Convert(mw.Method.ReturnType);
string returnType = (fileExtension == ".vb" ? vba : csa).Convert(mw.Method.ReturnType);
for (int j = 0; j < mw.Method.Parameters.Count; ++j) {
paramList += mw.Method.Parameters[j].Name;
parameters += csa.Convert(mw.Method.Parameters[j]);
parameters += (fileExtension == ".vb" ? vba : csa).Convert(mw.Method.Parameters[j]);
if (j + 1 < mw.Method.Parameters.Count) {
parameters += ", ";
paramList += ", ";
}
}
editActionHandler.InsertString(csa.Convert(mw.Method.Modifiers) + "override " + returnType + " " + mw.Method.Name + "(" + parameters + ")");++numOps;
if (StartCodeBlockInSameLine) {
editActionHandler.InsertString(" {");
if (fileExtension == ".vb"){
editActionHandler.InsertString(vba.Convert(mw.Method.Modifiers) + "Overrides ");++numOps;
if (mw.Method.ReturnType.FullyQualifiedName != "System.Void") {
editActionHandler.InsertString("Function ");++numOps;
} else {
editActionHandler.InsertString("Sub ");++numOps;
}
editActionHandler.InsertString(mw.Method.Name + "(" + parameters + ")");++numOps;
if (mw.Method.ReturnType.FullyQualifiedName != "System.Void") {
editActionHandler.InsertString(" As " + returnType);++numOps;
}
} else {
Return();
editActionHandler.InsertString("{");
editActionHandler.InsertString(csa.Convert(mw.Method.Modifiers) + "override " + returnType + " " + mw.Method.Name + "(" + parameters + ")");++numOps;
if (StartCodeBlockInSameLine) {
editActionHandler.InsertString(" {");
} else {
Return();
editActionHandler.InsertString("{");
}
++numOps;
}
++numOps;
Return();
if (returnType != "void") {
Indent();
string str = "return base." + mw.Method.Name + "(" + paramList + ");";
editActionHandler.InsertString(str);++numOps;
if(fileExtension == ".vb") {
if (mw.Method.ReturnType.FullyQualifiedName != "System.Void") {
editActionHandler.InsertString("Return MyBase." + mw.Method.Name + "(" + paramList + ")");++numOps;
Return();
editActionHandler.InsertString("End Function");
} else {
editActionHandler.InsertString("MyBase." + mw.Method.Name + "(" + paramList + ")");++numOps;
Return();
editActionHandler.InsertString("End Sub");
}
} else {
if (mw.Method.ReturnType.FullyQualifiedName != "System.Void") {
string str = "return base." + mw.Method.Name + "(" + paramList + ");";
editActionHandler.InsertString(str);++numOps;
} else {
string str = "base." + mw.Method.Name + "(" + paramList + ");";
editActionHandler.InsertString(str);++numOps;
}
Return();
editActionHandler.InsertChar('}');
}
++numOps;
Return();
// caretPos = editActionHandler.Document.Caret.Offset;
editActionHandler.InsertChar('}');++numOps;
Return();
IndentLine();
}

Loading…
Cancel
Save