现在似乎textDocument/codeLens
和textDocument/codeAction
消息有点过于频繁,导致我工作的LSP扩展中的性能损失。
有没有办法增加这些消息发送到语言服务器的时间间隔?
答案 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));
}
})