VSCode JavaScript/Node.js 中的 DefinitionProvider
VSCode DefinitionProvider in JavaScript/Node.js
我想在我的 VSCode 扩展中实现 DefinitionProvider。
但我不确定在 Javascript 中我必须如何执行此操作,因为 registerDefinitionProvider 不接受我的 class.
module.exports = class ALDefinitionProvider {
provideDefinition(textDocument, position, token) {
console.log(textDocument);
console.log(position);
}
}
错误信息:
这里的文字:
'ALDefinitionProvider' 类型的参数不可分配给 'DefinitionProvider' 类型的参数。
'provideDefinition(...)' 返回的类型在这些类型之间不兼容。
类型 'void' 不可分配给类型 'ProviderResult<Location | Location[] | LocationLink[]>'.
我是这样注册的:
vscode.languages.registerDefinitionProvider('al', new ALDefinitionProvider());
我也试过类似的东西,但我不确定如何用这个来实现它:
class GoDefinitionProvider extends vscode.DefinitionProvider {
provideDefinition(
document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken):
Thenable<vscode.Location> {
}
}
有人知道如何在 Javascript/Node.js 中实现吗? :)
是的,是我的错...
我在我的函数中添加了一个 Promise,现在它可以工作了!
module.exports = class ALDefinitionProvider {
provideDefinition(textDocument, position, token) {
return new Promise((resolve) => {
console.log(textDocument);
console.log(position);
return new Location(Uri.parse(''), position);
});
}
}
我想在我的 VSCode 扩展中实现 DefinitionProvider。 但我不确定在 Javascript 中我必须如何执行此操作,因为 registerDefinitionProvider 不接受我的 class.
module.exports = class ALDefinitionProvider {
provideDefinition(textDocument, position, token) {
console.log(textDocument);
console.log(position);
}
}
错误信息:
我是这样注册的:
vscode.languages.registerDefinitionProvider('al', new ALDefinitionProvider());
我也试过类似的东西,但我不确定如何用这个来实现它:
class GoDefinitionProvider extends vscode.DefinitionProvider {
provideDefinition(
document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken):
Thenable<vscode.Location> {
}
}
有人知道如何在 Javascript/Node.js 中实现吗? :)
是的,是我的错... 我在我的函数中添加了一个 Promise,现在它可以工作了!
module.exports = class ALDefinitionProvider {
provideDefinition(textDocument, position, token) {
return new Promise((resolve) => {
console.log(textDocument);
console.log(position);
return new Location(Uri.parse(''), position);
});
}
}