我已经连接了 CompletionData 没问题,将等插入 Avalon Edit 控件。
挑战在于搜索算法。
在下面的示例中,我希望new-obj在列表中“匹配” *New-Object**** 而不是在 ***New-DataObject* 上进行部分查找。
有我可以设置的标志吗?还是我需要覆盖搜索并实现我自己的?
谢谢
道格
我已经连接了 CompletionData 没问题,将等插入 Avalon Edit 控件。
挑战在于搜索算法。
在下面的示例中,我希望new-obj在列表中“匹配” *New-Object**** 而不是在 ***New-DataObject* 上进行部分查找。
有我可以设置的标志吗?还是我需要覆盖搜索并实现我自己的?
谢谢
道格
不幸的是,此行为当前不可自定义。它在私有方法中被硬编码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 和 sets 的代码CompletionWindow.StartOffset
,我怀疑它正在考虑将破折号作为单词边框。