Browse Source

Fixed some bugs.

PropertyCodeGenerator can work with fields like '_fieldname' or 'm_fieldname'.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@85 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
d4b3e2860c
  1. 26
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
  2. 5
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractFieldCodeGenerator.cs
  3. 16
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractPropertyCodeGenerator.cs
  4. 10
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerator.cs
  5. 12
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs
  6. 16
      src/Main/StartUp/Project/SharpDevelopMain.cs

26
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs

@ -212,16 +212,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -212,16 +212,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (name != null && name != "") {
return new NamespaceResolveResult(callingClass, callingMember, name);
}
LocalLookupVariable var = SearchVariable(identifier);
if (var != null) {
IReturnType type = GetVariableType(var);
IField field = new LocalVariableField(FixType(type), identifier, new DefaultRegion(var.StartPos, var.EndPos), callingClass);
return new LocalResolveResult(callingMember, field, false);
}
IParameter para = SearchMethodParameter(identifier);
if (para != null) {
IField field = new LocalVariableField(FixType(para.ReturnType), para.Name, para.Region, callingClass);
return new LocalResolveResult(callingMember, field, true);
if (callingMember != null) { // LocalResolveResult requires callingMember to be set
LocalLookupVariable var = SearchVariable(identifier);
if (var != null) {
IReturnType type = GetVariableType(var);
IField field = new LocalVariableField(FixType(type), identifier, new DefaultRegion(var.StartPos, var.EndPos), callingClass);
return new LocalResolveResult(callingMember, field, false);
}
IParameter para = SearchMethodParameter(identifier);
if (para != null) {
IField field = new LocalVariableField(FixType(para.ReturnType), para.Name, para.Region, callingClass);
return new LocalResolveResult(callingMember, field, true);
}
}
IMember member = GetMember(callingClass, identifier);
if (member != null) {
@ -430,7 +432,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -430,7 +432,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
{
if (curType == null)
return methods;
bool isClassInInheritanceTree = callingClass.IsTypeInInheritanceTree(curType);
bool isClassInInheritanceTree = false;
if (callingClass != null)
isClassInInheritanceTree = callingClass.IsTypeInInheritanceTree(curType);
foreach (IMethod m in curType.Methods) {
if (IsSameName(m.Name, memberName) &&

5
src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractFieldCodeGenerator.cs

@ -37,8 +37,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -37,8 +37,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
public override string ToString()
{
return AmbienceService.CurrentAmbience.Convert(field);
IAmbience ambience = AmbienceService.CurrentAmbience;
ambience.ConversionFlags = ConversionFlags.ShowReturnType | ConversionFlags.ShowModifiers;
return ambience.Convert(field);
}
}
}

16
src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractPropertyCodeGenerator.cs

@ -27,14 +27,24 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -27,14 +27,24 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
}
}
string GetPropertyName(string fieldName)
{
if (fieldName.StartsWith("_") && fieldName.Length > 1)
return Char.ToUpper(fieldName[1]) + fieldName.Substring(2);
else if (fieldName.StartsWith("m_") && fieldName.Length > 2)
return Char.ToUpper(fieldName[2]) + fieldName.Substring(3);
else
return Char.ToUpper(fieldName[0]) + fieldName.Substring(1);
}
protected override void StartGeneration(IList items, string fileExtension)
{
for (int i = 0; i < items.Count; ++i) {
FieldWrapper fw = (FieldWrapper)items[i];
if (fileExtension == ".vb") {
editActionHandler.InsertString("Public " + (fw.Field.IsStatic ? "Shared " : "") + "Property " + (Char.ToUpper(fw.Field.Name[0]) + fw.Field.Name.Substring(1)) + " As " + vba.Convert(fw.Field.ReturnType));
editActionHandler.InsertString("Public " + (fw.Field.IsStatic ? "Shared " : "") + "Property " + GetPropertyName(fw.Field.Name) + " As " + vba.Convert(fw.Field.ReturnType));
} else {
editActionHandler.InsertString("public " + (fw.Field.IsStatic ? "static " : "") + csa.Convert(fw.Field.ReturnType) + " " + Char.ToUpper(fw.Field.Name[0]) + fw.Field.Name.Substring(1));
editActionHandler.InsertString("public " + (fw.Field.IsStatic ? "static " : "") + csa.Convert(fw.Field.ReturnType) + " " + GetPropertyName(fw.Field.Name));
if (StartCodeBlockInSameLine) {
editActionHandler.InsertString(" {");
} else {
@ -85,7 +95,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -85,7 +95,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
} else {
editActionHandler.InsertString("return " + fw.Field.Name+ ";");
}
++numOps;
++numOps;
Return();
if (fileExtension == ".vb") {
editActionHandler.InsertString("End Get");

10
src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerator.cs

@ -29,17 +29,18 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -29,17 +29,18 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
protected TextArea editActionHandler;
public CodeGenerator(IClass currentClass)
{
{
this.currentClass = currentClass;
try {
csa = (IAmbience)AddInTree.GetTreeNode("/SharpDevelop/Workbench/Ambiences").BuildChildItem("C#", this);
csa.ConversionFlags = ConversionFlags.All;
csa.ConversionFlags = ConversionFlags.QualifiedNamesOnlyForReturnTypes | ConversionFlags.ShowReturnType;
} catch (Exception) {
Console.WriteLine("CSharpAmbience not found -- is the C# backend binding loaded???");
}
try {
vba = (IAmbience)AddInTree.GetTreeNode("/SharpDevelop/Workbench/Ambiences").BuildChildItem("VBNET", this);
vba.ConversionFlags = ConversionFlags.QualifiedNamesOnlyForReturnTypes | ConversionFlags.ShowReturnType;
} catch (Exception) {
Console.WriteLine("VBNet ambience not found -- is the VB.NET backend binding loaded???");
}
@ -90,7 +91,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -90,7 +91,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
PropertyService.Set("VBBinding.TextEditor.EnableEndConstructs", false);
editActionHandler.TextEditorProperties.AutoInsertCurlyBracket = false;
editActionHandler.TextEditorProperties.IndentStyle = IndentStyle.Smart;
string extension = Path.GetExtension(editActionHandler.MotherTextEditorControl.FileName).ToLower();
StartGeneration(items, extension);
@ -135,7 +136,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -135,7 +136,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
protected void Return()
{
IndentLine();
new Return().Execute(editActionHandler);++numOps;
new Return().Execute(editActionHandler);
++numOps;
}
protected void IndentLine()

12
src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs

@ -396,7 +396,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -396,7 +396,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
{
textAreaControl.ActiveTextAreaControl.JumpTo(line, column);
}
delegate void VoidDelegate(AbstractMargin margin);
public void ForceFoldingUpdate(string language)
{
@ -417,14 +416,21 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -417,14 +416,21 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
}
}
delegate void ParseInformationDelegate(ParseInformation parseInfo);
public void ParseInformationUpdated(ParseInformation parseInfo)
{
if (textAreaControl.TextEditorProperties.EnableFolding) {
textAreaControl.Document.FoldingManager.UpdateFoldings(TitleName, parseInfo);
textAreaControl.ActiveTextAreaControl.TextArea.Invoke(new VoidDelegate(textAreaControl.ActiveTextAreaControl.TextArea.Refresh), new object[] { textAreaControl.ActiveTextAreaControl.TextArea.FoldMargin});
textAreaControl.ActiveTextAreaControl.TextArea.Invoke(new ParseInformationDelegate(ParseInformationUpdatedInternal), new object[] { parseInfo });
}
}
void ParseInformationUpdatedInternal(ParseInformation parseInfo)
{
textAreaControl.Document.FoldingManager.UpdateFoldings(TitleName, parseInfo);
textAreaControl.ActiveTextAreaControl.TextArea.Refresh(textAreaControl.ActiveTextAreaControl.TextArea.FoldMargin);
}
#region ICSharpCode.SharpDevelop.Gui.IClipboardHandler interface implementation
public bool EnableCut {

16
src/Main/StartUp/Project/SharpDevelopMain.cs

@ -67,7 +67,7 @@ namespace ICSharpCode.SharpDevelop @@ -67,7 +67,7 @@ namespace ICSharpCode.SharpDevelop
"System.Messaging.dll",
"System.Runtime.Remoting.dll",
"System.Runtime.Serialization.Formatters.Soap.dll",
"System.Security.dll",
"System.ServiceProcess.dll",
"System.Web.Services.dll",
@ -82,6 +82,16 @@ namespace ICSharpCode.SharpDevelop @@ -82,6 +82,16 @@ namespace ICSharpCode.SharpDevelop
/// </summary>
[STAThread()]
public static void Main(string[] args)
{
try {
Run(args);
} catch (Exception ex) {
Console.WriteLine(ex);
Application.Run(new ExceptionBox(ex));
}
}
static void Run(string[] args)
{
commandLineArgs = args;
bool noLogo = false;
@ -102,7 +112,7 @@ namespace ICSharpCode.SharpDevelop @@ -102,7 +112,7 @@ namespace ICSharpCode.SharpDevelop
Application.ThreadException += new ThreadExceptionEventHandler(ShowErrorBox);
// TODO:
// TODO:
// bool ignoreDefaultPath = false;
// string [] addInDirs = ICSharpCode.SharpDevelop.AddInSettingsHandler.GetAddInDirectories(out ignoreDefaultPath);
// SetAddInDirectories(addInDirs, ignoreDefaultPath);
@ -162,7 +172,7 @@ namespace ICSharpCode.SharpDevelop @@ -162,7 +172,7 @@ namespace ICSharpCode.SharpDevelop
try {
new ICSharpCode.SharpDevelop.Commands.StartWorkbenchCommand().Run();
} finally {
// unloading
// unloading
ProjectService.CloseSolution();
FileService.Unload();
PropertyService.Save();

Loading…
Cancel
Save