diff --git a/src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs b/src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs index b916b04c6b..cd2d8eeb32 100644 --- a/src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs +++ b/src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs @@ -1,4 +1,4 @@ -// +// // 2002-2005 AlphaSierraPapa // GNU General Public License // @@ -83,10 +83,23 @@ namespace ICSharpCode.Svn.Commands void FileRemoving(object sender, FileCancelEventArgs e) { if (e.Cancel) return; - if (e.IsDirectory) return; - if (!AddInOptions.AutomaticallyDeleteFiles) return; string fullName = Path.GetFullPath(e.FileName); if (!CanBeVersionControlled(fullName)) return; + if (e.IsDirectory) { + Status status = SvnClient.Instance.Client.SingleStatus(fullName); + switch (status.TextStatus) { + case StatusKind.None: + case StatusKind.Unversioned: + break; + default: + MessageService.ShowMessage("SubversionAddIn cannot delete directories, it is only removed from the project."); + e.OperationAlreadyDone = true; + break; + } + return; + } + // show "cannot delete directories" message even if auto-delete files is off! + if (!AddInOptions.AutomaticallyDeleteFiles) return; try { Status status = SvnClient.Instance.Client.SingleStatus(fullName); switch (status.TextStatus) { diff --git a/src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractASTVisitor.cs b/src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractASTVisitor.cs index 35e0f5d327..0f0e245b3b 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractASTVisitor.cs +++ b/src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractASTVisitor.cs @@ -1,4 +1,4 @@ -// +// // 2002-2005 AlphaSierraPapa // GNU General Public License // @@ -480,9 +480,9 @@ namespace ICSharpCode.NRefactory.Parser { Debug.Assert(raiseEventStatement != null); Debug.Assert(raiseEventStatement.Parameters != null); - foreach (ParameterDeclarationExpression p in raiseEventStatement.Parameters) { - Debug.Assert(p != null); - p.AcceptVisitor(this, data); + foreach (Expression e in raiseEventStatement.Parameters) { + Debug.Assert(e != null); + e.AcceptVisitor(this, data); } return data; } diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs index 167b7786da..b49c099668 100644 --- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs +++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs @@ -650,12 +650,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver if (callingClass == null) return null; foreach (IMethod method in callingClass.Methods) { - if (method.BodyRegion.IsInside(caretLine, caretColumn)) { + if (method.Region.IsInside(caretLine, caretColumn) || method.BodyRegion.IsInside(caretLine, caretColumn)) { return method; } } foreach (IProperty property in callingClass.Properties) { - if (property.BodyRegion.IsInside(caretLine, caretColumn)) { + if (property.Region.IsInside(caretLine, caretColumn) || property.BodyRegion.IsInside(caretLine, caretColumn)) { return property; } } diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs b/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs index b74833ea3c..37a3ca53f2 100644 --- a/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs +++ b/src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs @@ -64,17 +64,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands list.Add(cmd); if (member is IField) { - string propertyName = AbstractPropertyCodeGenerator.GetPropertyName(member.Name); - LanguageProperties language = member.DeclaringType.ProjectContent.Language; - IProperty foundProperty = null; - foreach (IProperty prop in member.DeclaringType.Properties) { - if (language.NameComparer.Equals(propertyName, prop.Name)) { - foundProperty = prop; - break; - } - } + IProperty foundProperty = FindProperty(member as IField); if (foundProperty != null) { - cmd = new MenuCommand("${res:SharpDevelop.Refactoring.GoToProperty}", GotoProperty); + cmd = new MenuCommand("${res:SharpDevelop.Refactoring.GoToProperty}", GotoTagMember); cmd.Tag = foundProperty; list.Add(cmd); } else { @@ -92,6 +84,20 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands return list.ToArray(); } + IProperty FindProperty(IField field) + { + string propertyName = AbstractPropertyCodeGenerator.GetPropertyName(field.Name); + LanguageProperties language = field.DeclaringType.ProjectContent.Language; + IProperty foundProperty = null; + foreach (IProperty prop in field.DeclaringType.Properties) { + if (language.NameComparer.Equals(propertyName, prop.Name)) { + foundProperty = prop; + break; + } + } + return foundProperty; + } + void CreateProperty(object sender, EventArgs e) { CreateProperty(sender, e, true); @@ -124,7 +130,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands generator.GenerateCode(textEditor.ActiveTextAreaControl.TextArea, list); } - void GotoProperty(object sender, EventArgs e) + void GotoTagMember(object sender, EventArgs e) { JumpToDefinition((IMember)(sender as MenuCommand).Tag); } @@ -149,6 +155,21 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands List list = RefactoringService.FindReferences(member, null); if (list == null) return; RenameReferences(list, newName); + + if (member is IField) { + IProperty property = FindProperty((IField)member); + if (property != null) { + string newPropertyName = AbstractPropertyCodeGenerator.GetPropertyName(newName); + if (newPropertyName != newName && newPropertyName != property.Name) { + if (MessageService.AskQuestionFormatted("${res:SharpDevelop.Refactoring.Rename}", "${res:SharpDevelop.Refactoring.RenameFieldAndProperty}", property.FullyQualifiedName, newPropertyName)) { + list = RefactoringService.FindReferences(property, null); + if (list != null) { + RenameReferences(list, newPropertyName); + } + } + } + } + } } void FindOverrides(object sender, EventArgs e) diff --git a/src/Main/StartUp/Project/Resources/StringResources.resources b/src/Main/StartUp/Project/Resources/StringResources.resources index 23ca702d83..361fdf8331 100644 Binary files a/src/Main/StartUp/Project/Resources/StringResources.resources and b/src/Main/StartUp/Project/Resources/StringResources.resources differ