调整vscode间隔以发送代码和codeAction消息

时间:2018-04-24 19:28:27

标签: visual-studio-code vscode-extensions

现在似乎textDocument/codeLenstextDocument/codeAction消息有点过于频繁,导致我工作的LSP扩展中的性能损失。

有没有办法增加这些消息发送到语言服务器的时间间隔?

1 个答案:

答案 0 :(得分:0)

是的,我也看到了这个问题,并且我实施了通常的方法(每个文件的更改计时器)in my extension

这很简单,例如在您的扩展文件(在本例中为typescript)中执行以下操作:

let changeTimers: Map<string, any> = new Map(); // Keyed by file name.
workspace.onDidChangeTextDocument((event: TextDocumentChangeEvent) => {
    if (event.contentChanges.length > 0
        && event.document.languageId === "antlr"
        && event.document.uri.scheme === "file") {

        let fileName = event.document.fileName;
        backend.setText(fileName, event.document.getText());
        if (changeTimers.has(fileName)) {
            clearTimeout(changeTimers.get(fileName));
        }
        changeTimers.set(fileName, setTimeout(() => {
            changeTimers.delete(fileName);
            backend.reparse(fileName);
            // ... etc.
        }, 300));
    }

})