我目前正在使用 Scintilla 为 Text 组件创建一个 IDE。但是自动完成有一些我没有解决的问题。
我输入后自动显示提案列表。在对象或类名之后。
然后我调用以下命令:
int pos = _editor.NativeInterface.GetCurrentPos();
string word = _editor.GetWordFromPosition(pos - 1);
if (string.IsNullOrEmpty(word))
return;
if (Objects.Keys.Contains(word))
{
System.Reflection.MemberInfo[] memberInfos = Reflector.PublicMembersOf(Objects[word]);
List<String> proposals = new List<string>();
foreach (System.Reflection.MemberInfo mi in memberInfos)
{
string member = mi.ToString();
if (Reflector.IsRealMethod(mi))
proposals.Add(mi.ToString().Split(" ".ToCharArray(), 2)[1].Replace(" ", ""));
}
proposals.Sort();
_editor.AutoComplete.Show(0, proposals);
}
Objects
是一个HashMap<String, Type>
存储所有对象和对应类型的地方。
当我第一次调用自动完成时,它工作正常。但是第二次使用它只会自动完成proposals
.