Vscode extension: can I make a hover provider async?

76 Views Asked by At

I am working on a vscode extension and I want to do a database lookup using a string that the user hovers over as a key. I implemented a hover provider as an async function but it won’t show when I hover. It shows other hover content from another extension. My code is like:

vscode.languages.registerHoverProvider('javascript', {
  async provideHover(document, position, token) {

    const dbRes = await read(…);
    Console.log(dbRes);
    return {
      contents: dbRes[0]
    };
  }
});

I tried using Hover.content() as return and tried using then syntax but that wouldn’t work. I saw it has “thenable” as return type option but I dont know how to return a thenable.

Edit: I tried a solution like

const selectAllElements = (): Promise<any> => {
        return new Promise((resolve, reject) => {
            connection.query('SELECT * FROM content;', (error: any, elements: any) => {
                if (error) {
                    return reject(error);
                }
                console.log(elements)
                return resolve(elements[0]);
            });
        });
    };

    vscode.languages.registerHoverProvider('javascript', {
        async provideHover(document, position, token) {
            return selectAllElements();
        }
    });

But it wont show up in the hover pop up even when it logs to console. The hover tooltips are either nothing or another built in hover provider.

0

There are 0 best solutions below