我正在使用语言服务器协议编写一个语言服务器,该协议使用textDocument/完成请求提供完成。我返回的完成项目应该以特定的方式进行排序
我正在用python实现服务器,并使用pygls模块作为基本语言服务器。下面是他们的example server的一个修改版本,以展示我所面临的问题的一个简单示例
@json_server.feature(COMPLETION)
def completions(ls, params: CompletionParams = None):
"""Returns completion items."""
line_index = params.position.line
character_index = params.position.character
to_insert = "Label"
uri = params.textDocument.uri
doc = ls.workspace.get_document(uri)
line = doc.lines[line_index]
end = Position(line_index, character_index)
text_edit = TextEdit(Range(end, end), to_insert)
return CompletionList(True, [
CompletionItem(
label=to_insert,
sort_text="1",
insert_text=to_insert,
# text_edit=text_edit,
filter_text=line
),
CompletionItem(
label="Laaa",
sort_text="2",
filter_text=line
)
])
这样,Label completion项显示在Laaa completion项之前,因为它应该考虑sort\u text属性。当使用文本\编辑而不是插入\文本时,排序中断和完成项以错误的顺序显示
我可以确认pygls和visualstudio代码(示例中使用)都没有问题,因为我已经尝试了另一种语言客户机和LSP基服务器
不幸的是,我需要使用文本编辑,但仍然想排序的项目。有人知道解决办法吗
目前没有回答
相关问题 更多 >
编程相关推荐