2

存储库中的 lsp-sample https://github.com/microsoft/vscode-extension-samples/tree/master/lsp-sample展示了如何实现onCompletion

服务器只听字母 [az] 而不是句点 (.) 我已经看到这是用 控制的triggerCharacters,但我不清楚在哪里设置这些。这似乎是合乎逻辑的,这需要在客户端部分完成,但似乎我只能注册另一个onCompletion处理程序。任何人都可以解释一下吗?

这是服务器端代码:

// This handler provides the initial list of the completion items.
connection.onCompletion(
    (_textDocumentPosition: TextDocumentPositionParams): CompletionItem[] => {
        // The pass parameter contains the position of the text document in
        // which code complete got requested. For the example we ignore this
        // info and always provide the same completion items.
        return [
            {
                label: 'TypeScript',
                kind: CompletionItemKind.Text,
                data: 1
            },
            {
                label: 'JavaScript',
                kind: CompletionItemKind.Text,
                data: 2
            }
        ];
    }
);
4

1 回答 1

3

触发字符在ServerCapabilities响应Initialize中指定:

connection.onInitialize((params: InitializeParams) => {
    // ...
    return {
        capabilities: {
            // ...
            completionProvider: {
                triggerCharacters: ["."]
            }
        }
    };
});

另请参阅:CompletionOptions完成请求

于 2020-02-29T09:01:40.327 回答