Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code 调整vscode间隔以发送codelens和codeAction消息_Visual Studio Code_Vscode Extensions - Fatal编程技术网

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));
}

})

谢谢你!我有点希望在某个地方有一个配置文件,而不是自己处理消息。。。但这一天看来不太可能了。