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.