VSCode DefinitionProvider в JavaScript / Node. js - PullRequest
0 голосов
/ 14 июля 2020

Я хотел бы реализовать DefinitionProvider в моем расширении VSCode. Но я не уверен, как мне это сделать в Javascript, потому что registerDefinitionProvider не принимает мой класс.

module.exports = class ALDefinitionProvider {
    provideDefinition(textDocument, position, token) {
        console.log(textDocument);
        console.log(position);
    }
}

Сообщение об ошибке: введите описание изображения здесь Здесь текст: Аргумент типа 'ALDefinitionProvider' не может быть назначен параметру типа 'DefinitionProvider'. Типы, возвращаемые функцией provideDefinition (...), несовместимы между этими типами. Тип void не может быть присвоен типу ProviderResult. '.

И я зарегистрировал это так:

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? :)

1 Ответ

0 голосов
/ 15 июля 2020

Да, это была моя вина ... Я добавил обещание в свою функцию, и теперь оно работает!

module.exports = class ALDefinitionProvider {
    provideDefinition(textDocument, position, token) {
        return new Promise((resolve) => {
            console.log(textDocument);
            console.log(position);
            return new Location(Uri.parse(''), position);
        });
    }
}
...