Browse Source

[Completion] Added GetMemberTextToCaret interface method.

newNRvisualizers
Mike Krüger 13 years ago
parent
commit
c9d2776522
  1. 24
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs
  2. 25
      ICSharpCode.NRefactory.CSharp/Completion/IMemberProvider.cs

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

@ -699,34 +699,16 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -699,34 +699,16 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
}
}
string cachedText = null;
// string cachedText = null;
protected virtual void Reset ()
{
cachedText = null;
// cachedText = null;
}
protected Tuple<string, TextLocation> GetMemberTextToCaret()
{
int startOffset;
if (currentMember != null && currentType != null && currentType.Kind != TypeKind.Enum) {
startOffset = document.GetOffset(currentMember.Region.Begin);
} else if (currentType != null) {
startOffset = document.GetOffset(currentType.Region.Begin);
} else {
startOffset = 0;
}
while (startOffset > 0) {
char ch = document.GetCharAt(startOffset - 1);
if (ch != ' ' && ch != '\t') {
break;
}
--startOffset;
}
if (cachedText == null)
cachedText = document.GetText (startOffset, offset - startOffset);
return Tuple.Create (cachedText, document.GetLocation (startOffset));
return MemberProvider.GetMemberTextToCaret(offset, currentType, currentMember);
}
protected ExpressionResult GetInvocationBeforeCursor(bool afterBracket)

25
ICSharpCode.NRefactory.CSharp/Completion/IMemberProvider.cs

@ -35,6 +35,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -35,6 +35,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
public interface IMemberProvider
{
void GetCurrentMembers (int offset, out IUnresolvedTypeDefinition currentType, out IUnresolvedMember currentMember);
Tuple<string, TextLocation> GetMemberTextToCaret(int caretOffset, IUnresolvedTypeDefinition currentType, IUnresolvedMember currentMember);
}
public class DefaultMemberProvider : IMemberProvider
@ -159,6 +161,29 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -159,6 +161,29 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
}
return bracketStack.Any (t => t == '{');
}
public Tuple<string, TextLocation> GetMemberTextToCaret(int caretOffset, IUnresolvedTypeDefinition currentType, IUnresolvedMember currentMember)
{
int startOffset;
if (currentMember != null && currentType != null && currentType.Kind != TypeKind.Enum) {
startOffset = document.GetOffset(currentMember.Region.Begin);
} else if (currentType != null) {
startOffset = document.GetOffset(currentType.Region.Begin);
} else {
startOffset = 0;
}
while (startOffset > 0) {
char ch = document.GetCharAt(startOffset - 1);
if (ch != ' ' && ch != '\t') {
break;
}
--startOffset;
}
return Tuple.Create (document.GetText (startOffset, caretOffset - startOffset), document.GetLocation (startOffset));
}
}
}

Loading…
Cancel
Save