Typescript vscode如何自动跳转到正确的定义 //extension.ts 导出函数激活(上下文:vscode.ExtensionContext){ log('恭喜,您的扩展名“helloworld”现在处于活动状态!'); context.subscriptions.push(vscode.languages.registerDefinitionProvider( {语言:“plsql”},新的GoDefinitionProvider()); } 类GoDefinitionProvider实现vscode.DefinitionProvider{ 公共提供的定义( 文档:vscode.TextDocument,位置:vscode.position,标记:vscode.CancellationToken): 那布尔{ 返回新承诺((解决、拒绝)=>{ let定义:vscode.Definition=[]; for(设i=0;i{ const range=document.getWordRangeAtPosition(位置); const selectedWord=document.getText(范围); let定义:vscode.Definition=[]; for(设i=0;i

Typescript vscode如何自动跳转到正确的定义 //extension.ts 导出函数激活(上下文:vscode.ExtensionContext){ log('恭喜,您的扩展名“helloworld”现在处于活动状态!'); context.subscriptions.push(vscode.languages.registerDefinitionProvider( {语言:“plsql”},新的GoDefinitionProvider()); } 类GoDefinitionProvider实现vscode.DefinitionProvider{ 公共提供的定义( 文档:vscode.TextDocument,位置:vscode.position,标记:vscode.CancellationToken): 那布尔{ 返回新承诺((解决、拒绝)=>{ let定义:vscode.Definition=[]; for(设i=0;i{ const range=document.getWordRangeAtPosition(位置); const selectedWord=document.getText(范围); let定义:vscode.Definition=[]; for(设i=0;i,typescript,plugins,visual-studio-code,Typescript,Plugins,Visual Studio Code,例如,现在我们想要选择“a4”以跳转显示定义,但定义是自动跳转到“cursor a9 is”,而不是正确的“cursor a4 is” 结果图像: 如何实现自动跳转到正确的定义?上面是extension.ts的源代码供您参考。代码中的问题是,您返回的是定义数组,而不是单个定义位置 return new Promise((resolve, reject) =>{ const range = document.getWordRangeAtPosition(position);

例如,现在我们想要选择“a4”以跳转显示定义,但定义是自动跳转到“cursor a9 is”,而不是正确的“cursor a4 is”

结果图像:


如何实现自动跳转到正确的定义?上面是extension.ts的源代码供您参考。

代码中的问题是,您返回的是定义数组,而不是单个定义位置

return new Promise((resolve, reject) =>{
    const range = document.getWordRangeAtPosition(position);
    const selectedWord = document.getText(range);
    let definitions:vscode.Definition = [];         
    for (let i = 0; i < document.lineCount; i++) {
        let eachLine = document.lineAt(i).text.toLowerCase().trim();
        if (eachLine.startsWith("cursor")) { 
            if ( eachLine.includes(selectedWord))  //only selectedWord                  
                definitions.push({
                    uri: document.uri,
                    range: document.lineAt(i).range
                });                     
            }
        }                   
    } 
    resolve(definitions);
});
返回新承诺((解决、拒绝)=>{
const range=document.getWordRangeAtPosition(位置);
const selectedWord=document.getText(范围);
let定义:vscode.Definition=[];
for(设i=0;i
有人能帮忙吗?
return new Promise((resolve, reject) =>{
    const range = document.getWordRangeAtPosition(position);
    const selectedWord = document.getText(range);
    let definitions:vscode.Definition = [];         
    for (let i = 0; i < document.lineCount; i++) {
        let eachLine = document.lineAt(i).text.toLowerCase().trim();
        if (eachLine.startsWith("cursor")) { 
            if ( eachLine.includes(selectedWord))  //only selectedWord                  
                definitions.push({
                    uri: document.uri,
                    range: document.lineAt(i).range
                });                     
            }
        }                   
    } 
    resolve(definitions);
});