Browse Source

[Completion] Added conditional symbols to the completion engine

context.
newNRvisualizers
Mike Krüger 13 years ago
parent
commit
d2038a429d
  1. 2
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs
  2. 10
      ICSharpCode.NRefactory.CSharp/Completion/ICompletionContextProvider.cs
  3. 2
      ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs

2
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs

@ -682,6 +682,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
wrapper.Append(new string('}', closingBrackets)); wrapper.Append(new string('}', closingBrackets));
} }
var parser = new CSharpParser (); var parser = new CSharpParser ();
foreach (var sym in CompletionContextProvider.ConditionalSymbols)
parser.CompilerSettings.ConditionalSymbols.Add (sym);
parser.InitialLocation = new TextLocation(memberLocation.Line - generatedLines, 1); parser.InitialLocation = new TextLocation(memberLocation.Line - generatedLines, 1);
var result = parser.Parse(wrapper.ToString ()); var result = parser.Parse(wrapper.ToString ());
return result; return result;

10
ICSharpCode.NRefactory.CSharp/Completion/ICompletionContextProvider.cs

@ -35,6 +35,10 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
{ {
public interface ICompletionContextProvider public interface ICompletionContextProvider
{ {
IList<string> ConditionalSymbols {
get;
}
void GetCurrentMembers (int offset, out IUnresolvedTypeDefinition currentType, out IUnresolvedMember currentMember); void GetCurrentMembers (int offset, out IUnresolvedTypeDefinition currentType, out IUnresolvedMember currentMember);
Tuple<string, TextLocation> GetMemberTextToCaret(int caretOffset, IUnresolvedTypeDefinition currentType, IUnresolvedMember currentMember); Tuple<string, TextLocation> GetMemberTextToCaret(int caretOffset, IUnresolvedTypeDefinition currentType, IUnresolvedMember currentMember);
@ -47,6 +51,12 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
readonly IDocument document; readonly IDocument document;
readonly CSharpUnresolvedFile unresolvedFile; readonly CSharpUnresolvedFile unresolvedFile;
public IList<string> ConditionalSymbols {
get {
return new string[0];
}
}
public DefaultCompletionContextProvider (IDocument document, CSharpUnresolvedFile unresolvedFile) public DefaultCompletionContextProvider (IDocument document, CSharpUnresolvedFile unresolvedFile)
{ {
if (document == null) if (document == null)

2
ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs

@ -3765,7 +3765,7 @@ namespace ICSharpCode.NRefactory.CSharp
} }
conversionVisitor.Unit.FileName = fileName; conversionVisitor.Unit.FileName = fileName;
conversionVisitor.Unit.ConditionalSymbols = top.Conditionals.ToArray (); conversionVisitor.Unit.ConditionalSymbols = top.Conditionals.Concat (compilerSettings.ConditionalSymbols).ToArray ();
return conversionVisitor.Unit; return conversionVisitor.Unit;
} }

Loading…
Cancel
Save