Visual studio code 调整vscode间隔以发送codelens和codeAction消息
现在看来,Visual studio code 调整vscode间隔以发送codelens和codeAction消息,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,现在看来,textDocument/codeLens和textDocument/codeAction消息出现的频率有点太高,导致我所使用的LSP扩展中的性能损失 有没有办法增加将这些消息发送到语言服务器的时间间隔?是的,我也看到了这个问题,并且实现了通常的方法(每个文件都有一个更改计时器) 这非常简单,例如,在扩展文件(本例中为typescript)中,执行以下操作: let changeTimers: Map<string, any> = new Map(); // Keyed b
textDocument/codeLens
和textDocument/codeAction
消息出现的频率有点太高,导致我所使用的LSP扩展中的性能损失
有没有办法增加将这些消息发送到语言服务器的时间间隔?是的,我也看到了这个问题,并且实现了通常的方法(每个文件都有一个更改计时器) 这非常简单,例如,在扩展文件(本例中为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));
}
let changeTimers:Map=newmap();//按文件名键入。
workspace.onDidChangeTextDocument((事件:TextDocumentChangeEvent)=>{
如果(event.contentChanges.length>0
&&event.document.languageId==“antlr”
&&event.document.uri.scheme==“文件”){
让fileName=event.document.fileName;
backend.setText(文件名,event.document.getText());
if(changeTimers.has(文件名)){
clearTimeout(changeTimers.get(fileName));
}
changeTimers.set(文件名,setTimeout(()=>{
changeTimers.delete(文件名);
重新分析(文件名);
//……等等。
}, 300));
}
})谢谢你!我有点希望在某个地方有一个配置文件,而不是自己处理消息。。。但这一天看来不太可能了。