我正在编写一个自定义VSCode扩展,可帮助我向项目中的文件添加相对链接(来自工作区);我有两个用例:
1)通过关键字搜索文件(在工作区中的任何位置搜索) 2)按文件夹列出文件
由于“按文件夹列出文件”更具体,因此更有可能包含所需文件,因此我希望它们首先出现在CompletionItem建议中。
因此,当我搜索“图片”时,会获得CompletionItems的列表
../../../../animals/pictures/cat.png (by keyword)
../../../../animals/pictures/dog.png (by keyword)
../../../pets/pictures/dog.png (by keyword)
./pictures/dog.png (by files in folder)
我可以按自己喜欢的任何顺序将CompletionItems添加到返回数组,但它仍按字母顺序列出。
有什么办法可以控制结果列表的顺序?
答案 0 :(得分:1)
尝试在返回的项目上设置sortText
属性:
firstCompletionItem.sortText = 'a';
secondCompletionItem.sortText = 'b';
...
sortText
是一个任意字符串,用于排序显示补全的顺序。
请记住,sortText
仅在完成项目匹配得很好的情况下使用。例如,如果仅在新行上触发智能感知,则所有完成项将与空白行匹配得很好,因此将使用sortText
对其进行排序。但是,如果您在键入字母a
后触发智能感知,则以a
开头的完成将显示在没有sortText
的情况之前(无论其完成情况是从a
开始) sortText
将使用其USE INDEX
进行订购
答案 1 :(得分:0)
我发现这种东西对文本排序很方便(我称之为“优先级”并设置为 sortText
属性:
const priority = {
"title": "01",
"find": "011",
"replace": "02",
"restrictFind": "03",
"cursorMove": "031", // added later
"triggerSearch": "04",
"triggerReplaceAll": "041", // added later
"isRegex": "05",
"filesToInclude": "06",
"preserveCase": "07",
"useExcludeSettingsAndIgnoreFiles": "08",
"isCaseSensitive": "09",
"matchWholeWord": "091",
"filesToExclude": "092"
};
通过这种方式,您可以返回并在优先级列表中逻辑上属于它的位置插入新的内容,并轻松地在之前的条目之间对其进行排序。