Browse Source

add support for renaming local variables and parameters

pull/80/head
Siegfried Pammer 12 years ago
parent
commit
7aa85871f8
  1. 2
      src/AddIns/Analysis/UnitTesting/Commands/TestableCondition.cs
  2. 7
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlSymbolSearch.cs
  3. 2
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindBaseClasses.cs
  4. 2
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindDerivedClassesOrOverrides.cs
  5. 3
      src/AddIns/DisplayBindings/ILSpyAddIn/LaunchILSpy/OpenInILSpyCommand.cs
  6. 36
      src/Main/Base/Project/Src/Editor/Commands/FindReferencesCommand.cs
  7. 2
      src/Main/Base/Project/Src/Editor/Commands/GoToDefinition.cs
  8. 9
      src/Main/Base/Project/Src/Editor/Commands/SymbolUnderCaretMenuCommand.cs
  9. 3
      src/Main/SharpDevelop/Dom/ClassBrowser/Commands.cs

2
src/AddIns/Analysis/UnitTesting/Commands/TestableCondition.cs

@ -41,7 +41,7 @@ namespace ICSharpCode.UnitTesting
return testTreeView.SelectedTests; return testTreeView.SelectedTests;
} }
if (testSolution != null) { if (testSolution != null) {
IEntity entity = ResolveResultMenuCommand.GetEntity(caller); IEntity entity = ResolveResultMenuCommand.GetSymbol(caller) as IEntity;
return testSolution.GetTestsForEntity(entity); return testSolution.GetTestsForEntity(entity);
} }
return Enumerable.Empty<ITest>(); return Enumerable.Empty<ITest>();

7
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlSymbolSearch.cs

@ -24,7 +24,7 @@ namespace ICSharpCode.XamlBinding
public class XamlSymbolSearch : ISymbolSearch public class XamlSymbolSearch : ISymbolSearch
{ {
ICompilation compilation; ICompilation compilation;
IEntity entity; ISymbol entity;
List<FileName> interestingFileNames; List<FileName> interestingFileNames;
int workAmount; int workAmount;
double workAmountInverse; double workAmountInverse;
@ -32,7 +32,8 @@ namespace ICSharpCode.XamlBinding
public XamlSymbolSearch(IProject project, ISymbol entity) public XamlSymbolSearch(IProject project, ISymbol entity)
{ {
compilation = SD.ParserService.GetCompilation(project); compilation = SD.ParserService.GetCompilation(project);
this.entity = compilation.Import((IEntity)entity); if (entity is IEntity)
this.entity = compilation.Import((IEntity)entity);
interestingFileNames = new List<FileName>(); interestingFileNames = new List<FileName>();
if (this.entity == null) if (this.entity == null)
return; return;
@ -69,7 +70,7 @@ namespace ICSharpCode.XamlBinding
); );
} }
void FindReferencesInFile(SymbolSearchArgs searchArguments, IEntity entity, FileName fileName, Action<SearchedFile> callback, CancellationToken cancellationToken) void FindReferencesInFile(SymbolSearchArgs searchArguments, ISymbol entity, FileName fileName, Action<SearchedFile> callback, CancellationToken cancellationToken)
{ {
ITextSource textSource = searchArguments.ParseableFileContentFinder.Create(fileName); ITextSource textSource = searchArguments.ParseableFileContentFinder.Create(fileName);
if (textSource == null) if (textSource == null)

2
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindBaseClasses.cs

@ -20,7 +20,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
{ {
public override void Run(ResolveResult symbol) public override void Run(ResolveResult symbol)
{ {
IEntity entityUnderCaret = GetEntity(symbol); IEntity entityUnderCaret = GetSymbol(symbol) as IEntity;
if (entityUnderCaret is ITypeDefinition) { if (entityUnderCaret is ITypeDefinition) {
MakePopupWithBaseClasses((ITypeDefinition)entityUnderCaret).OpenAtCaretAndFocus(); MakePopupWithBaseClasses((ITypeDefinition)entityUnderCaret).OpenAtCaretAndFocus();
} else { } else {

2
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindDerivedClassesOrOverrides.cs

@ -20,7 +20,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
{ {
public override void Run(ResolveResult symbol) public override void Run(ResolveResult symbol)
{ {
IEntity entityUnderCaret = GetEntity(symbol); IEntity entityUnderCaret = GetSymbol(symbol) as IEntity;
if (entityUnderCaret is ITypeDefinition && !entityUnderCaret.IsSealed) { if (entityUnderCaret is ITypeDefinition && !entityUnderCaret.IsSealed) {
MakePopupWithDerivedClasses((ITypeDefinition)entityUnderCaret).OpenAtCaretAndFocus(); MakePopupWithDerivedClasses((ITypeDefinition)entityUnderCaret).OpenAtCaretAndFocus();
return; return;

3
src/AddIns/DisplayBindings/ILSpyAddIn/LaunchILSpy/OpenInILSpyCommand.cs

@ -3,6 +3,7 @@
using System; using System;
using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Editor.Commands; using ICSharpCode.SharpDevelop.Editor.Commands;
namespace ICSharpCode.ILSpyAddIn namespace ICSharpCode.ILSpyAddIn
@ -15,7 +16,7 @@ namespace ICSharpCode.ILSpyAddIn
{ {
public override void Run(ResolveResult symbol) public override void Run(ResolveResult symbol)
{ {
var entity = GetEntity(symbol); var entity = GetSymbol(symbol) as IEntity;
if (entity != null) { if (entity != null) {
ILSpyController.OpenInILSpy(entity); ILSpyController.OpenInILSpy(entity);
} }

36
src/Main/Base/Project/Src/Editor/Commands/FindReferencesCommand.cs

@ -4,6 +4,7 @@
using System; using System;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor.Dialogs; using ICSharpCode.SharpDevelop.Editor.Dialogs;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
@ -18,7 +19,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{ {
public override void Run(ResolveResult symbol) public override void Run(ResolveResult symbol)
{ {
var entity = GetEntity(symbol); var entity = GetSymbol(symbol) as IEntity;
if (entity != null) { if (entity != null) {
FindReferencesAndRenameHelper.RunFindReferences(entity); FindReferencesAndRenameHelper.RunFindReferences(entity);
return; return;
@ -36,9 +37,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{ {
public override void Run(ResolveResult symbol) public override void Run(ResolveResult symbol)
{ {
var entity = GetEntity(symbol); var entity = GetSymbol(symbol);
if (entity != null) { if (entity != null) {
var project = entity.ParentAssembly.GetProject(); var project = GetProjectFromSymbol(entity);
if (project != null) { if (project != null) {
var languageBinding = project.LanguageBinding; var languageBinding = project.LanguageBinding;
@ -58,6 +59,35 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
} }
} }
ICSharpCode.SharpDevelop.Project.IProject GetProjectFromSymbol(ISymbol symbol)
{
switch (symbol.SymbolKind) {
case SymbolKind.None:
return null;
case SymbolKind.TypeDefinition:
case SymbolKind.Field:
case SymbolKind.Property:
case SymbolKind.Indexer:
case SymbolKind.Event:
case SymbolKind.Method:
case SymbolKind.Operator:
case SymbolKind.Constructor:
case SymbolKind.Destructor:
case SymbolKind.Accessor:
return ((IEntity)symbol).ParentAssembly.GetProject();
case SymbolKind.Namespace:
return null; // TODO : extend rename on namespaces
case SymbolKind.Variable:
return SD.ProjectService.FindProjectContainingFile(new FileName(((IVariable)symbol).Region.FileName));
case SymbolKind.Parameter:
return ((IParameter)symbol).Owner.ParentAssembly.GetProject();
case SymbolKind.TypeParameter:
return null; // TODO : extend rename on type parameters
default:
throw new ArgumentOutOfRangeException();
}
}
bool CheckName(string name, ILanguageBinding language) bool CheckName(string name, ILanguageBinding language)
{ {
if (string.IsNullOrEmpty(name)) if (string.IsNullOrEmpty(name))

2
src/Main/Base/Project/Src/Editor/Commands/GoToDefinition.cs

@ -31,7 +31,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
DomRegion pos = symbol.GetDefinitionRegion(); DomRegion pos = symbol.GetDefinitionRegion();
if (string.IsNullOrEmpty(pos.FileName)) { if (string.IsNullOrEmpty(pos.FileName)) {
IEntity entity = GetEntity(symbol); IEntity entity = GetSymbol(symbol) as IEntity;
if (entity != null) { if (entity != null) {
NavigationService.NavigateTo(entity); NavigationService.NavigateTo(entity);
} }

9
src/Main/Base/Project/Src/Editor/Commands/SymbolUnderCaretMenuCommand.cs

@ -52,9 +52,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
return GetResolveResult(null, owner); return GetResolveResult(null, owner);
} }
public static IEntity GetEntity(object owner) public static ISymbol GetSymbol(object owner)
{ {
return GetEntity(GetResolveResult(null, owner)); return GetSymbol(GetResolveResult(null, owner));
} }
static ResolveResult GetResolveResult(ITextEditor currentEditor, object owner) static ResolveResult GetResolveResult(ITextEditor currentEditor, object owner)
@ -80,7 +80,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
return ErrorResolveResult.UnknownError; return ErrorResolveResult.UnknownError;
} }
protected static IEntity GetEntity(ResolveResult symbol) protected static ISymbol GetSymbol(ResolveResult symbol)
{ {
TypeResolveResult trr = symbol as TypeResolveResult; TypeResolveResult trr = symbol as TypeResolveResult;
if (trr != null) if (trr != null)
@ -88,6 +88,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
MemberResolveResult mrr = symbol as MemberResolveResult; MemberResolveResult mrr = symbol as MemberResolveResult;
if (mrr != null) if (mrr != null)
return mrr.Member.MemberDefinition; return mrr.Member.MemberDefinition;
LocalResolveResult lrr = symbol as LocalResolveResult;
if (lrr != null)
return lrr.Variable;
return null; return null;
} }
} }

3
src/Main/SharpDevelop/Dom/ClassBrowser/Commands.cs

@ -6,6 +6,7 @@ using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor.Commands; using ICSharpCode.SharpDevelop.Editor.Commands;
using Microsoft.Win32; using Microsoft.Win32;
@ -141,7 +142,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
public override void Run(ResolveResult symbol) public override void Run(ResolveResult symbol)
{ {
var classBrowser = SD.GetService<IClassBrowser>(); var classBrowser = SD.GetService<IClassBrowser>();
var entity = GetEntity(symbol); var entity = GetSymbol(symbol) as IEntity;
if ((classBrowser != null) && (entity != null)) { if ((classBrowser != null) && (entity != null)) {
classBrowser.GoToEntity(entity); classBrowser.GoToEntity(entity);
} }

Loading…
Cancel
Save