Browse Source

Fixed usage of AmbienceService.CurrentAmbience: sometimes the ConversionFlags were not used because the ambience object was recreated.

Fixed page up/page down in text editor: confusion between character and pixel coordinates caused caret to move to the wrong column.
Fixed crash when StartProgram or WorkingDirectory were invalid paths.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2990 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
98b7690971
  1. 4
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooAdvancedHighlighter.cs
  2. 2
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvasItem.cs
  3. 2
      src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.cs
  4. 2
      src/AddIns/DisplayBindings/SettingsEditor/Project/SettingsView.cs
  5. 5
      src/AddIns/Misc/UnitTesting/Test/Utils/MockAmbience.cs
  6. 33
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs
  7. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Caret.cs
  8. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs
  9. 2
      src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/MemberNode.cs
  10. 20
      src/Main/Base/Project/Src/Project/CompilableProject.cs
  11. 51
      src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs
  12. 4
      src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
  13. 6
      src/Main/Base/Project/Src/Services/RefactoringService/LocalVariableRefactoring.cs
  14. 6
      src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs
  15. 4
      src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
  16. 2
      src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs
  17. 5
      src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs
  18. 2
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractFieldCodeGenerator.cs
  19. 2
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/InterfaceImplementorCodeGenerator.cs
  20. 2
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/OnXXXMethodsCodeGenerator.cs
  21. 2
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/OverrideMethodsCodeGenerator.cs
  22. 2
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/OverridePropertiesCodeGenerator.cs
  23. 12
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs
  24. 5
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/OverrideCompletionDataProvider.cs
  25. 11
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs
  26. 20
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs
  27. 24
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Ambience.cs
  28. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/VBNetToCSharpConvertVisitor.cs
  29. 26
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ResolveResult.cs

4
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooAdvancedHighlighter.cs

@ -130,8 +130,8 @@ namespace Grunwald.BooBinding.CodeCompletion
this.Document.TextContent this.Document.TextContent
) as LocalResolveResult; ) as LocalResolveResult;
if (rr != null if (rr != null
&& rr.Field.Region.BeginLine == lineNumber + 1 && rr.VariableDefinitionRegion.BeginLine == lineNumber + 1
&& rr.Field.Region.BeginColumn == word.Offset + 1) && rr.VariableDefinitionRegion.BeginColumn == word.Offset + 1)
{ {
changedLine = true; changedLine = true;
word.SyntaxColor = this.Document.HighlightingStrategy.GetColorFor("LocalVariableCreation"); word.SyntaxColor = this.Document.HighlightingStrategy.GetColorFor("LocalVariableCreation");

2
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvasItem.cs

@ -259,7 +259,7 @@ namespace ClassDiagram
protected IAmbience GetAmbience() protected IAmbience GetAmbience()
{ {
IAmbience ambience = AmbienceService.CurrentAmbience; IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.None; ambience.ConversionFlags = ConversionFlags.None;
return ambience; return ambience;
} }

2
src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.cs

@ -489,7 +489,7 @@ namespace ClassDiagram
protected IAmbience GetAmbience() protected IAmbience GetAmbience()
{ {
IAmbience ambience = AmbienceService.CurrentAmbience; IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.None; ambience.ConversionFlags = ConversionFlags.None;
return ambience; return ambience;
} }

2
src/AddIns/DisplayBindings/SettingsEditor/Project/SettingsView.cs

@ -61,7 +61,7 @@ namespace ICSharpCode.SettingsEditor
InitializeComponent(); InitializeComponent();
ambience = AmbienceService.CurrentAmbience; ambience = AmbienceService.GetCurrentAmbience();
foreach (Type type in defaultAvailableTypes) { foreach (Type type in defaultAvailableTypes) {
types.Add(type); types.Add(type);
typeNames.Add(ambience.GetIntrinsicTypeName(type.FullName)); typeNames.Add(ambience.GetIntrinsicTypeName(type.FullName));

5
src/AddIns/Misc/UnitTesting/Test/Utils/MockAmbience.cs

@ -39,6 +39,11 @@ namespace UnitTesting.Tests.Utils
return String.Empty; return String.Empty;
} }
public string Convert(IEntity entity)
{
return String.Empty;
}
public string Convert(IField field) public string Convert(IField field)
{ {
return String.Empty; return String.Empty;

33
src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs

@ -521,24 +521,23 @@ namespace ICSharpCode.TextEditor.Actions
} }
} }
public override bool Equals(object obj) public override int GetHashCode()
{ {
BlockCommentRegion commentRegion = obj as BlockCommentRegion; int hashCode = 0;
if (commentRegion != null) { unchecked {
if (commentRegion.commentStart == commentStart && if (commentStart != null) hashCode += 1000000007 * commentStart.GetHashCode();
commentRegion.commentEnd == commentEnd && if (commentEnd != null) hashCode += 1000000009 * commentEnd.GetHashCode();
commentRegion.startOffset == startOffset && hashCode += 1000000021 * startOffset.GetHashCode();
commentRegion.endOffset == endOffset) { hashCode += 1000000033 * endOffset.GetHashCode();
return true;
}
} }
return hashCode;
return false;
} }
public override int GetHashCode() public override bool Equals(object obj)
{ {
return commentStart.GetHashCode() & commentEnd.GetHashCode() & startOffset.GetHashCode() & endOffset.GetHashCode(); BlockCommentRegion other = obj as BlockCommentRegion;
if (other == null) return false;
return this.commentStart == other.commentStart && this.commentEnd == other.commentEnd && this.startOffset == other.startOffset && this.endOffset == other.endOffset;
} }
} }
@ -665,7 +664,8 @@ namespace ICSharpCode.TextEditor.Actions
int requestedLineNumber = Math.Min(textArea.Document.GetNextVisibleLineAbove(curLineNr, textArea.TextView.VisibleLineCount), textArea.Document.TotalNumberOfLines - 1); int requestedLineNumber = Math.Min(textArea.Document.GetNextVisibleLineAbove(curLineNr, textArea.TextView.VisibleLineCount), textArea.Document.TotalNumberOfLines - 1);
if (curLineNr != requestedLineNumber) { if (curLineNr != requestedLineNumber) {
textArea.Caret.Position = new TextLocation(textArea.Caret.DesiredColumn, requestedLineNumber); textArea.Caret.Position = new TextLocation(0, requestedLineNumber);
textArea.SetCaretToDesiredColumn();
} }
} }
} }
@ -682,7 +682,8 @@ namespace ICSharpCode.TextEditor.Actions
int requestedLineNumber = Math.Max(textArea.Document.GetNextVisibleLineBelow(curLineNr, textArea.TextView.VisibleLineCount), 0); int requestedLineNumber = Math.Max(textArea.Document.GetNextVisibleLineBelow(curLineNr, textArea.TextView.VisibleLineCount), 0);
if (curLineNr != requestedLineNumber) { if (curLineNr != requestedLineNumber) {
textArea.Caret.Position = new TextLocation(textArea.Caret.DesiredColumn, requestedLineNumber); textArea.Caret.Position = new TextLocation(0, requestedLineNumber);
textArea.SetCaretToDesiredColumn();
} }
} }
} }
@ -691,7 +692,7 @@ namespace ICSharpCode.TextEditor.Actions
/// <remarks> /// <remarks>
/// Executes this edit action /// Executes this edit action
/// </remarks> /// </remarks>
/// <param name="textArea">The <see cref="ItextArea"/> which is used for callback purposes</param> /// <param name="textArea">The <see cref="TextArea"/> which is used for callback purposes</param>
public override void Execute(TextArea textArea) public override void Execute(TextArea textArea)
{ {
if (textArea.Document.ReadOnly) { if (textArea.Document.ReadOnly) {

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Caret.cs

@ -47,7 +47,7 @@ namespace ICSharpCode.TextEditor
/// <value> /// <value>
/// The 'prefered' xPos in which the caret moves, when it is moved /// The 'prefered' xPos in which the caret moves, when it is moved
/// up/down. /// up/down. Measured in pixels, not in characters!
/// </value> /// </value>
public int DesiredColumn { public int DesiredColumn {
get { get {

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs

@ -763,7 +763,7 @@ namespace ICSharpCode.TextEditor
LineSegment caretLine = Document.GetLineSegment(Caret.Line); LineSegment caretLine = Document.GetLineSegment(Caret.Line);
int offset = Caret.Offset; int offset = Caret.Offset;
// use desired column for generated whitespaces // use desired column for generated whitespaces
int dc=Math.Min(Caret.Column,Caret.DesiredColumn); int dc = Caret.Column;
if (caretLine.Length < dc && ch != '\n') { if (caretLine.Length < dc && ch != '\n') {
Document.Insert(offset, GenerateWhitespaceString(dc - caretLine.Length) + ch); Document.Insert(offset, GenerateWhitespaceString(dc - caretLine.Length) + ch);
} else { } else {

2
src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/MemberNode.cs

@ -114,7 +114,7 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser
protected virtual IAmbience GetAmbience() protected virtual IAmbience GetAmbience()
{ {
IAmbience ambience = AmbienceService.CurrentAmbience; IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList;
return ambience; return ambience;
} }

20
src/Main/Base/Project/Src/Project/CompilableProject.cs

@ -205,14 +205,34 @@ namespace ICSharpCode.SharpDevelop.Project
} }
} }
static string RemoveQuotes(string text)
{
if (text.StartsWith("\"") && text.EndsWith("\""))
return text.Substring(1, text.Length - 2);
else
return text;
}
protected void Start(string program, bool withDebugging) protected void Start(string program, bool withDebugging)
{ {
program = RemoveQuotes(program);
if (!FileUtility.IsValidPath(program)) {
MessageService.ShowError(program + " is not a valid path; the process cannot be started.");
return;
}
ProcessStartInfo psi = new ProcessStartInfo(); ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Path.Combine(Directory, program); psi.FileName = Path.Combine(Directory, program);
string workingDir = StringParser.Parse(this.StartWorkingDirectory); string workingDir = StringParser.Parse(this.StartWorkingDirectory);
if (workingDir.Length == 0) { if (workingDir.Length == 0) {
psi.WorkingDirectory = Path.GetDirectoryName(psi.FileName); psi.WorkingDirectory = Path.GetDirectoryName(psi.FileName);
} else { } else {
workingDir = RemoveQuotes(workingDir);
if (!FileUtility.IsValidPath(workingDir)) {
MessageService.ShowError("Working directory " + workingDir + " is invalid; the process cannot be started. You can specify the working directory in the project options.");
return;
}
psi.WorkingDirectory = Path.Combine(Directory, workingDir); psi.WorkingDirectory = Path.Combine(Directory, workingDir);
} }
psi.Arguments = StringParser.Parse(this.StartArguments); psi.Arguments = StringParser.Parse(this.StartArguments);

51
src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs

@ -77,33 +77,36 @@ namespace ICSharpCode.SharpDevelop
static IAmbience defaultAmbience; static IAmbience defaultAmbience;
public static IAmbience CurrentAmbience { /// <summary>
get { /// Gets the current ambience.
Gui.WorkbenchSingleton.AssertMainThread(); /// Might return a new ambience object, or use an existing. Not thread-safe.
/// </summary>
IAmbience ambience; public static IAmbience GetCurrentAmbience()
if (UseProjectAmbienceIfPossible) { {
ICSharpCode.SharpDevelop.Project.IProject p = ICSharpCode.SharpDevelop.Project.ProjectService.CurrentProject; Gui.WorkbenchSingleton.AssertMainThread();
if (p != null) {
ambience = p.GetAmbience(); IAmbience ambience;
if (ambience != null) if (UseProjectAmbienceIfPossible) {
return ambience; ICSharpCode.SharpDevelop.Project.IProject p = ICSharpCode.SharpDevelop.Project.ProjectService.CurrentProject;
} if (p != null) {
ambience = p.GetAmbience();
if (ambience != null)
return ambience;
}
}
if (defaultAmbience == null) {
string language = DefaultAmbienceName;
try {
ambience = (IAmbience)AddInTree.BuildItem("/SharpDevelop/Workbench/Ambiences/" + language, null);
} catch (TreePathNotFoundException) {
ambience = null;
} }
if (defaultAmbience == null) { if (ambience == null && Gui.WorkbenchSingleton.MainForm != null) {
string language = DefaultAmbienceName; MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Services.AmbienceService.AmbienceNotFoundError}");
try {
ambience = (IAmbience)AddInTree.BuildItem("/SharpDevelop/Workbench/Ambiences/" + language, null);
} catch (TreePathNotFoundException) {
ambience = null;
}
if (ambience == null && Gui.WorkbenchSingleton.MainForm != null) {
MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Services.AmbienceService.AmbienceNotFoundError}");
}
defaultAmbience = ambience ?? new NetAmbience();
} }
return defaultAmbience; defaultAmbience = ambience ?? new NetAmbience();
} }
return defaultAmbience;
} }
public static string DefaultAmbienceName { public static string DefaultAmbienceName {

4
src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs

@ -417,7 +417,7 @@ namespace ICSharpCode.SharpDevelop.Debugging
} }
if (result is MixedResolveResult) if (result is MixedResolveResult)
return GetText(((MixedResolveResult)result).PrimaryResult, expression, out debuggerCanShowValue); return GetText(((MixedResolveResult)result).PrimaryResult, expression, out debuggerCanShowValue);
IAmbience ambience = AmbienceService.CurrentAmbience; IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.StandardConversionFlags | ConversionFlags.UseFullyQualifiedMemberNames; ambience.ConversionFlags = ConversionFlags.StandardConversionFlags | ConversionFlags.UseFullyQualifiedMemberNames;
if (result is MemberResolveResult) { if (result is MemberResolveResult) {
return GetMemberText(ambience, ((MemberResolveResult)result).ResolvedMember, expression, out debuggerCanShowValue); return GetMemberText(ambience, ((MemberResolveResult)result).ResolvedMember, expression, out debuggerCanShowValue);
@ -432,7 +432,7 @@ namespace ICSharpCode.SharpDevelop.Debugging
b.Append("local variable "); b.Append("local variable ");
b.Append(ambience.Convert(rr.Field)); b.Append(ambience.Convert(rr.Field));
if (currentDebugger != null) { if (currentDebugger != null) {
string currentValue = currentDebugger.GetValueAsString(rr.Field.Name); string currentValue = currentDebugger.GetValueAsString(rr.VariableName);
if (currentValue != null) { if (currentValue != null) {
debuggerCanShowValue = true; debuggerCanShowValue = true;
b.Append(" = "); b.Append(" = ");

6
src/Main/Base/Project/Src/Services/RefactoringService/LocalVariableRefactoring.cs

@ -19,7 +19,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
LocalResolveResult local = (LocalResolveResult)Owner; LocalResolveResult local = (LocalResolveResult)Owner;
FindReferencesAndRenameHelper.ShowAsSearchResults( FindReferencesAndRenameHelper.ShowAsSearchResults(
StringParser.Parse("${res:SharpDevelop.Refactoring.ReferencesTo}", StringParser.Parse("${res:SharpDevelop.Refactoring.ReferencesTo}",
new string[,] {{ "Name", local.Field.Name }}), new string[,] {{ "Name", local.VariableName }}),
RefactoringService.FindReferences(local, null) RefactoringService.FindReferences(local, null)
); );
} }
@ -34,8 +34,8 @@ namespace ICSharpCode.SharpDevelop.Refactoring
public static void Run(LocalResolveResult local) public static void Run(LocalResolveResult local)
{ {
string newName = MessageService.ShowInputBox("${res:SharpDevelop.Refactoring.Rename}", "${res:SharpDevelop.Refactoring.RenameMemberText}", local.Field.Name); string newName = MessageService.ShowInputBox("${res:SharpDevelop.Refactoring.Rename}", "${res:SharpDevelop.Refactoring.RenameMemberText}", local.VariableName);
if (!FindReferencesAndRenameHelper.CheckName(newName, local.Field.Name)) return; if (!FindReferencesAndRenameHelper.CheckName(newName, local.VariableName)) return;
List<Reference> list = RefactoringService.FindReferences(local, null); List<Reference> list = RefactoringService.FindReferences(local, null);
if (list == null) return; if (list == null) return;

6
src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs

@ -92,7 +92,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
} else if (rr is TypeResolveResult) { } else if (rr is TypeResolveResult) {
item = MakeItem(definitions, ((TypeResolveResult)rr).ResolvedClass); item = MakeItem(definitions, ((TypeResolveResult)rr).ResolvedClass);
} else if (rr is LocalResolveResult) { } else if (rr is LocalResolveResult) {
item = MakeItem((LocalResolveResult)rr, caretLine + 1 == ((LocalResolveResult)rr).Field.Region.BeginLine); item = MakeItem((LocalResolveResult)rr, caretLine + 1 == ((LocalResolveResult)rr).VariableDefinitionRegion.BeginLine);
insertIndex = 0; // Insert local variable menu item at the topmost position. insertIndex = 0; // Insert local variable menu item at the topmost position.
} else if (rr is UnknownIdentifierResolveResult) { } else if (rr is UnknownIdentifierResolveResult) {
item = MakeItemForResolveError((UnknownIdentifierResolveResult)rr, expressionResult.Context, textArea); item = MakeItemForResolveError((UnknownIdentifierResolveResult)rr, expressionResult.Context, textArea);
@ -195,10 +195,10 @@ namespace ICSharpCode.SharpDevelop.Refactoring
ToolStripMenuItem MakeItem(LocalResolveResult local, bool isDefinition) ToolStripMenuItem MakeItem(LocalResolveResult local, bool isDefinition)
{ {
ToolStripMenuItem item = MakeItemInternal(MemberNode.GetText(local.Field), ToolStripMenuItem item = MakeItemInternal(local.VariableName,
local.IsParameter ? ClassBrowserIconService.ParameterIndex : ClassBrowserIconService.LocalVariableIndex, local.IsParameter ? ClassBrowserIconService.ParameterIndex : ClassBrowserIconService.LocalVariableIndex,
local.CallingClass.CompilationUnit, local.CallingClass.CompilationUnit,
isDefinition ? DomRegion.Empty : local.Field.Region); isDefinition ? DomRegion.Empty : local.VariableDefinitionRegion);
string treePath = "/SharpDevelop/ViewContent/DefaultTextEditor/Refactoring/"; string treePath = "/SharpDevelop/ViewContent/DefaultTextEditor/Refactoring/";
treePath += local.IsParameter ? "Parameter" : "LocalVariable"; treePath += local.IsParameter ? "Parameter" : "LocalVariable";
if (isDefinition) treePath += "Definition"; if (isDefinition) treePath += "Definition";

4
src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs

@ -412,8 +412,8 @@ namespace ICSharpCode.SharpDevelop.Refactoring
if (local == null) { if (local == null) {
return false; return false;
} else { } else {
return local.Field.Region.BeginLine == variable.Region.BeginLine return local.VariableDefinitionRegion.BeginLine == variable.Region.BeginLine
&& local.Field.Region.BeginColumn == variable.Region.BeginColumn; && local.VariableDefinitionRegion.BeginColumn == variable.Region.BeginColumn;
} }
} }

2
src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs

@ -274,7 +274,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
void AddImplementInterfaceCommandItems(List<ToolStripItem> subItems, IClass c, bool explicitImpl) void AddImplementInterfaceCommandItems(List<ToolStripItem> subItems, IClass c, bool explicitImpl)
{ {
CodeGenerator codeGen = c.ProjectContent.Language.CodeGenerator; CodeGenerator codeGen = c.ProjectContent.Language.CodeGenerator;
IAmbience ambience = AmbienceService.CurrentAmbience; IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList;
foreach (IReturnType rt in c.BaseTypes) { foreach (IReturnType rt in c.BaseTypes) {
IClass interf = rt.GetUnderlyingClass(); IClass interf = rt.GetUnderlyingClass();

5
src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs

@ -179,12 +179,15 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
IMember member = (IMember)item.Tag; IMember member = (IMember)item.Tag;
IEnumerable<IClass> derivedClasses = RefactoringService.FindDerivedClasses(member.DeclaringType, ParserService.AllProjectContents, false); IEnumerable<IClass> derivedClasses = RefactoringService.FindDerivedClasses(member.DeclaringType, ParserService.AllProjectContents, false);
List<SearchResultMatch> results = new List<SearchResultMatch>(); List<SearchResultMatch> results = new List<SearchResultMatch>();
IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedMemberNames | ConversionFlags.ShowTypeParameterList;
foreach (IClass derivedClass in derivedClasses) { foreach (IClass derivedClass in derivedClasses) {
if (derivedClass.CompilationUnit == null) continue; if (derivedClass.CompilationUnit == null) continue;
if (derivedClass.CompilationUnit.FileName == null) continue; if (derivedClass.CompilationUnit.FileName == null) continue;
IMember m = MemberLookupHelper.FindSimilarMember(derivedClass, member); IMember m = MemberLookupHelper.FindSimilarMember(derivedClass, member);
if (m != null && !m.Region.IsEmpty) { if (m != null && !m.Region.IsEmpty) {
SearchResultMatch res = new SimpleSearchResultMatch(MemberNode.GetText(m), new TextLocation(m.Region.BeginColumn - 1, m.Region.BeginLine - 1)); string matchText = ambience.Convert(m);
SearchResultMatch res = new SimpleSearchResultMatch(matchText, new TextLocation(m.Region.BeginColumn - 1, m.Region.BeginLine - 1));
res.ProvidedDocumentInformation = FindReferencesAndRenameHelper.GetDocumentInformation(derivedClass.CompilationUnit.FileName); res.ProvidedDocumentInformation = FindReferencesAndRenameHelper.GetDocumentInformation(derivedClass.CompilationUnit.FileName);
results.Add(res); results.Add(res);
} }

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

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

2
src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/InterfaceImplementorCodeGenerator.cs

@ -37,7 +37,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
public override string ToString() public override string ToString()
{ {
IAmbience ambience = AmbienceService.CurrentAmbience; IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList;
return ambience.Convert(c); return ambience.Convert(c);
} }

2
src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/OnXXXMethodsCodeGenerator.cs

@ -63,7 +63,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
public override string ToString() public override string ToString()
{ {
IAmbience ambience = AmbienceService.CurrentAmbience; IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.None; ambience.ConversionFlags = ConversionFlags.None;
return ambience.Convert(evt); return ambience.Convert(evt);
} }

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

@ -88,7 +88,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
public override string ToString() public override string ToString()
{ {
if (cachedStringRepresentation == null) { if (cachedStringRepresentation == null) {
IAmbience ambience = AmbienceService.CurrentAmbience; IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.ShowParameterNames; ambience.ConversionFlags = ConversionFlags.ShowParameterNames;
cachedStringRepresentation = ambience.Convert(method); cachedStringRepresentation = ambience.Convert(method);
} }

2
src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/OverridePropertiesCodeGenerator.cs

@ -73,7 +73,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
public override string ToString() public override string ToString()
{ {
IAmbience ambience = AmbienceService.CurrentAmbience; IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.ShowParameterNames; ambience.ConversionFlags = ConversionFlags.ShowParameterNames;
return ambience.Convert(property); return ambience.Convert(property);
} }

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

@ -115,7 +115,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
public CodeCompletionData(string s, int imageIndex) public CodeCompletionData(string s, int imageIndex)
{ {
ambience = AmbienceService.CurrentAmbience; ambience = AmbienceService.GetCurrentAmbience();
description = documentation = String.Empty; description = documentation = String.Empty;
text = s; text = s;
this.imageIndex = imageIndex; this.imageIndex = imageIndex;
@ -124,7 +124,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
public CodeCompletionData(IClass c) public CodeCompletionData(IClass c)
{ {
ambience = AmbienceService.CurrentAmbience; ambience = AmbienceService.GetCurrentAmbience();
// save class (for the delegate description shortcut) // save class (for the delegate description shortcut)
this.c = c; this.c = c;
imageIndex = ClassBrowserIconService.GetIcon(c); imageIndex = ClassBrowserIconService.GetIcon(c);
@ -140,7 +140,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
{ {
member = method; member = method;
imageIndex = ClassBrowserIconService.GetIcon(method); imageIndex = ClassBrowserIconService.GetIcon(method);
ambience = AmbienceService.CurrentAmbience; ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.None; ambience.ConversionFlags = ConversionFlags.None;
text = ambience.Convert(method); text = ambience.Convert(method);
ambience.ConversionFlags = ConversionFlags.StandardConversionFlags; ambience.ConversionFlags = ConversionFlags.StandardConversionFlags;
@ -152,7 +152,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
public CodeCompletionData(IField field) public CodeCompletionData(IField field)
{ {
member = field; member = field;
ambience = AmbienceService.CurrentAmbience; ambience = AmbienceService.GetCurrentAmbience();
imageIndex = ClassBrowserIconService.GetIcon(field); imageIndex = ClassBrowserIconService.GetIcon(field);
ambience.ConversionFlags = ConversionFlags.None; ambience.ConversionFlags = ConversionFlags.None;
text = ambience.Convert(field); text = ambience.Convert(field);
@ -165,7 +165,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
public CodeCompletionData(IProperty property) public CodeCompletionData(IProperty property)
{ {
member = property; member = property;
ambience = AmbienceService.CurrentAmbience; ambience = AmbienceService.GetCurrentAmbience();
imageIndex = ClassBrowserIconService.GetIcon(property); imageIndex = ClassBrowserIconService.GetIcon(property);
ambience.ConversionFlags = ConversionFlags.None; ambience.ConversionFlags = ConversionFlags.None;
text = ambience.Convert(property); text = ambience.Convert(property);
@ -178,7 +178,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
public CodeCompletionData(IEvent e) public CodeCompletionData(IEvent e)
{ {
member = e; member = e;
ambience = AmbienceService.CurrentAmbience; ambience = AmbienceService.GetCurrentAmbience();
imageIndex = ClassBrowserIconService.GetIcon(e); imageIndex = ClassBrowserIconService.GetIcon(e);
ambience.ConversionFlags = ConversionFlags.None; ambience.ConversionFlags = ConversionFlags.None;
text = ambience.Convert(e); text = ambience.Convert(e);

5
src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/OverrideCompletionDataProvider.cs

@ -90,8 +90,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
static string GetName(IMethod method, ConversionFlags flags) static string GetName(IMethod method, ConversionFlags flags)
{ {
AmbienceService.CurrentAmbience.ConversionFlags = flags | ConversionFlags.ShowParameterNames; IAmbience ambience = AmbienceService.GetCurrentAmbience();
return AmbienceService.CurrentAmbience.Convert(method); ambience.ConversionFlags = flags | ConversionFlags.ShowParameterNames;
return ambience.Convert(method);
} }
public OverrideCompletionData(IMethod method) public OverrideCompletionData(IMethod method)

11
src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs

@ -50,17 +50,10 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
public string GetInsightData(int number) public string GetInsightData(int number)
{ {
IMember method = methods[number]; IMember method = methods[number];
IAmbience conv = AmbienceService.CurrentAmbience; IAmbience conv = AmbienceService.GetCurrentAmbience();
conv.ConversionFlags = ConversionFlags.StandardConversionFlags| ConversionFlags.UseFullyQualifiedMemberNames; conv.ConversionFlags = ConversionFlags.StandardConversionFlags| ConversionFlags.UseFullyQualifiedMemberNames;
string documentation = method.Documentation; string documentation = method.Documentation;
string text; string text = conv.Convert(method);
if (method is IMethod) {
text = conv.Convert(method as IMethod);
} else if (method is IProperty) {
text = conv.Convert(method as IProperty);
} else {
text = method.ToString();
}
return text + "\n" + CodeCompletionData.GetDocumentation(documentation); return text + "\n" + CodeCompletionData.GetDocumentation(documentation);
} }

20
src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs

@ -161,22 +161,10 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
string ToStringInternal() string ToStringInternal()
{ {
IAmbience ambience = AmbienceService.CurrentAmbience; IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList | ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames; ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList | ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames;
if (item is IMethod) { if (item is IEntity) {
return ambience.Convert((IMethod)item); return ambience.Convert((IEntity)item);
}
if (item is IProperty) {
return ambience.Convert((IProperty)item);
}
if (item is IField) {
return ambience.Convert((IField)item);
}
if (item is IProperty) {
return ambience.Convert((IProperty)item);
}
if (item is IEvent) {
return ambience.Convert((IEvent)item);
} }
return text; return text;
} }
@ -388,7 +376,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
void AddClasses(ArrayList items, ICollection<IClass> classes) void AddClasses(ArrayList items, ICollection<IClass> classes)
{ {
foreach (IClass c in classes) { foreach (IClass c in classes) {
IAmbience ambience = AmbienceService.CurrentAmbience; IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedMemberNames | ConversionFlags.ShowTypeParameterList; ambience.ConversionFlags = ConversionFlags.UseFullyQualifiedMemberNames | ConversionFlags.ShowTypeParameterList;
items.Add(new ComboBoxItem(c, ambience.Convert(c), ClassBrowserIconService.GetIcon(c), true)); items.Add(new ComboBoxItem(c, ambience.Convert(c), ClassBrowserIconService.GetIcon(c), true));
AddClasses(items, c.InnerClasses); AddClasses(items, c.InnerClasses);

24
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Ambience.cs

@ -87,6 +87,8 @@ namespace ICSharpCode.SharpDevelop.Dom
string Convert(IClass c); string Convert(IClass c);
string ConvertEnd(IClass c); string ConvertEnd(IClass c);
string Convert(IEntity e);
string Convert(IField field); string Convert(IField field);
string Convert(IProperty property); string Convert(IProperty property);
string Convert(IEvent e); string Convert(IEvent e);
@ -212,6 +214,28 @@ namespace ICSharpCode.SharpDevelop.Dom
public abstract string Convert(IParameter param); public abstract string Convert(IParameter param);
public abstract string Convert(IReturnType returnType); public abstract string Convert(IReturnType returnType);
public virtual string Convert(IEntity entity)
{
if (entity == null)
throw new ArgumentNullException("entity");
IClass c = entity as IClass;
if (c != null)
return Convert(c);
IMethod m = entity as IMethod;
if (m != null)
return Convert(m);
IField f = entity as IField;
if (f != null)
return Convert(f);
IProperty p = entity as IProperty;
if (p != null)
return Convert(p);
IEvent e = entity as IEvent;
if (e != null)
return Convert(e);
return entity.ToString();
}
public abstract string WrapAttribute(string attribute); public abstract string WrapAttribute(string attribute);
public abstract string WrapComment(string comment); public abstract string WrapComment(string comment);
public abstract string GetIntrinsicTypeName(string dotNetTypeName); public abstract string GetIntrinsicTypeName(string dotNetTypeName);

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/VBNetToCSharpConvertVisitor.cs

@ -618,7 +618,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
{ {
LocalResolveResult lrr = rr as LocalResolveResult; LocalResolveResult lrr = rr as LocalResolveResult;
if (lrr != null) if (lrr != null)
return lrr.Field.Name; return lrr.VariableName;
MemberResolveResult mrr = rr as MemberResolveResult; MemberResolveResult mrr = rr as MemberResolveResult;
if (mrr != null) if (mrr != null)
return mrr.ResolvedMember.Name; return mrr.ResolvedMember.Name;

26
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ResolveResult.cs

@ -221,7 +221,6 @@ namespace ICSharpCode.SharpDevelop.Dom
public class LocalResolveResult : ResolveResult public class LocalResolveResult : ResolveResult
{ {
IField field; IField field;
bool isParameter;
public LocalResolveResult(IMember callingMember, IField field) public LocalResolveResult(IMember callingMember, IField field)
: base(callingMember.DeclaringType, callingMember, field.ReturnType) : base(callingMember.DeclaringType, callingMember, field.ReturnType)
@ -231,8 +230,7 @@ namespace ICSharpCode.SharpDevelop.Dom
if (field == null) if (field == null)
throw new ArgumentNullException("field"); throw new ArgumentNullException("field");
this.field = field; this.field = field;
this.isParameter = field.IsParameter; if (!field.IsParameter && !field.IsLocalVariable) {
if (!isParameter && !field.IsLocalVariable) {
throw new ArgumentException("the field must either be a local variable-field or a parameter-field"); throw new ArgumentException("the field must either be a local variable-field or a parameter-field");
} }
} }
@ -251,18 +249,28 @@ namespace ICSharpCode.SharpDevelop.Dom
/// Gets the field representing the local variable. /// Gets the field representing the local variable.
/// </summary> /// </summary>
public IField Field { public IField Field {
get { get { return field; }
return field;
}
} }
/// <summary> /// <summary>
/// Gets if the variable is a parameter (true) or a local variable (false). /// Gets if the variable is a parameter (true) or a local variable (false).
/// </summary> /// </summary>
public bool IsParameter { public bool IsParameter {
get { get { return field.IsParameter; }
return isParameter; }
}
/// <summary>
/// Gets the name of the parameter/local variable.
/// </summary>
public string VariableName {
get { return field.Name; }
}
/// <summary>
/// Gets th position where the parameter/local variable is declared.
/// </summary>
public DomRegion VariableDefinitionRegion {
get { return field.Region; }
} }
public override FilePosition GetDefinitionPosition() public override FilePosition GetDefinitionPosition()

Loading…
Cancel
Save