KEMBAR78
Show results from hover providers incrementally · Issue #137714 · microsoft/vscode · GitHub
Skip to content

Show results from hover providers incrementally #137714

@alexdima

Description

@alexdima

When having multiple hover providers, it would be good to render results as soon as possible and not block on waiting for all hover providers. Sample:

  • package.json:
{
    "name": "137714",
    "publisher": "alex",
    "version": "0.0.1",
    "engines": {
        "vscode": "^1.22.0"
    },
    "activationEvents": ["*"],
    "main": "main.js"
}
  • main.js:
//@ts-check

const vscode = require("vscode");

/**
 *
 * @param {string} message
 * @param {number} timeout
 */
function createProvider(message, timeout) {
  return (
    /**
     * @param {import('vscode').TextDocument} document
     * @param {import('vscode').Position} position
     */
    function provideHover(document, position) {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(new vscode.Hover(new vscode.MarkdownString(message)));
        }, timeout);
      });
    }
  );
}

/**
 * @param {string} message
 * @param {number} timeout
 */
function registerProvider(message, timeout) {
  const provideHover = createProvider(message, timeout);
  vscode.languages.registerHoverProvider({ language: 'typescript', }, { provideHover });
}

exports.activate = function (ctx) {
  registerProvider('Slow provider', 5000);
  registerProvider('Fast provider', 1000);
  registerProvider('Very fast provider', 0);
};

Metadata

Metadata

Assignees

Labels

editor-hoverEditor mouse hoverfeature-requestRequest for new features or functionalityinsiders-releasedPatch has been released in VS Code Insidersverification-neededVerification of issue is requestedverifiedVerification succeeded

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions