VS Code 悬停扩展实现 HoverProvider

gre*_*reg 13 javascript hover visual-studio-code vscode-extensions

尝试添加悬停以将悬停添加到我的 VS Code 扩展中。我能够使用语法突出显示和命令来工作,但坚持添加此悬停功能。

我认为我的阻碍是如何正确实现HoverProvider API。我正在下面对悬停提供程序进行一个简单的测试,当一系列标记被识别为关键字时,该提供程序就会激活HELLO。我在测试中实现的悬停。我用来vsce package在本地打包和测试我的扩展。

我的扩展命令有效,但是当我将鼠标悬停在“HELLO”一词上时,我的悬停不会出现。

在此输入图像描述

./client/扩展.js

const vscode = require('vscode');

function activate(context) {

    console.log('Congratulations, your extension "star-rod" is now active!');

    let disposable = vscode.commands.registerCommand('extension.mamar', () => {
        vscode.window.showInformationMessage("The Star Rod... is powerful beyond belief. It can grant any wish. For as long as we can remember, Bowser has been making wishes like, for instance... 'I'd like to trounce Mario' or 'I want Princess Peach to like me.' Of course, Stars ignore such selfish wishes. As a result, his wishes were never granted.");
    });

    context.subscriptions.push(disposable);

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

            const range = document.getWordRangeAtPosition(position);
            const word = document.getText(range);

            if (word == "HELLO") {

                return new vscode.Hover({
                    language: "Hello language",
                    value: "Hello Value"
                });
            }
        }
    });
}

function deactivate() { }

module.exports = {
    activate,
    deactivate
}
Run Code Online (Sandbox Code Playgroud)

./package.json

    {
 "name": "star-rod-script",
 "publisher": "sonicspiral",
 "displayName": "Star Rod Script",
 "description": "Syntax highlighting for Paper Mario 64 ROM patching tool",
 "version": "1.0.1",
 "repository": {
  "type": "git",
  "url": "https://github.com/gregdegruy/star-rod.git"
 },
 "categories": [
  "Programming Languages"
 ],
 "activationEvents": [
    "onCommand:extension.mamar",
    "onLanguage:star-rod-script"
 ],
 "engines": {
  "vscode": "^1.31.0"
 },
 "main": "./client/extension.js",
 "contributes": {
  "capabilities": {
    "hoverProvider": "true"
  },
  "commands": [
    {
     "command": "extension.mamar",
     "title": "Mamar"
    }
  ],
  "languages": [
   {
    "id": "star-rod-script",
    "extensions": [
     ".bpat",
     ".bscr",
     ".mpat",
     ".mscr"
    ],
    "aliases": [
     "Star Rod Script",
     "mscr"
    ],
    "configuration": "./language-configuration.json"
   }
  ],
  "grammars": [
   {
    "language": "star-rod-script",
    "scopeName": "source.mscr",
    "path": "./syntaxes/mscr.tmLanguage.json"
   }
  ]
 },
 "devDependencies": {
  "js-yaml": "^3.12.1",
  "vscode": "^1.1.29"
 }
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*hke 3

你的 package.json 看起来有点奇怪。我敢打赌您的扩展程序尚未激活。“贡献/能力”的价值是我以前从未见过的。删除它并将其更改activationEvents为:

"activationEvents": [
    "onLanguage:star-rod-script"
],
Run Code Online (Sandbox Code Playgroud)