【发布时间】:2018-04-24 19:28:27
【问题描述】:
现在,textDocument/codeLens 和 textDocument/codeAction 消息似乎过于频繁地出现,导致我正在处理的 LSP 扩展中的性能损失。
有没有办法增加这些消息发送到语言服务器的时间间隔?
【问题讨论】:
标签: visual-studio-code vscode-extensions
现在,textDocument/codeLens 和 textDocument/codeAction 消息似乎过于频繁地出现,导致我正在处理的 LSP 扩展中的性能损失。
有没有办法增加这些消息发送到语言服务器的时间间隔?
【问题讨论】:
标签: visual-studio-code vscode-extensions
是的,我也看到了这个问题,我实现了通常的方法(每个文件的更改计时器)in my extension。
这很简单,例如在您的扩展文件(在这种情况下为打字稿)中执行以下操作:
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));
}
})
【讨论】: