我已经将CompletionData连接起来没有问题,将其插入到Avalon Edit控件中。
挑战在于搜索算法。
在下面的示例中,我希望 new-obj 在列表中“匹配” * New-Object ****而不是部分找到*** New-DataObject * 。
我可以设置一个标志吗?或者我是否需要覆盖搜索并实现自己的搜索?
谢谢
道格
答案 0 :(得分:3)
不幸的是,此行为目前无法自定义。它在私有方法CompletionList.GetMatchQuality
中进行了硬编码。
那说,我无法重现你的问题。 AvalonEdit匹配逻辑不像您的屏幕截图似乎建议的那样。 AvalonEdit支持8种匹配(较高的匹配优先于其他匹配):
// 8 = full match case sensitive
// 7 = full match
// 6 = match start case sensitive
// 5 = match start
// 4 = match CamelCase when length of query is 1 or 2 characters
// 3 = match substring case sensitive
// 2 = match substring
// 1 = match CamelCase
“new-obj”是“New-Object”的类型5匹配,“New-DataObject”根本不匹配。
完成窗口可疑地显示在单词start的右侧。我认为只有“obj”在你的完成部分。您必须检查找到单词start并设置CompletionWindow.StartOffset
的代码,我怀疑它正在考虑将短划线视为单词边框。