Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript VS代码悬停扩展实现悬停提供程序_Javascript_Visual Studio Code_Hover_Vscode Extensions - Fatal编程技术网

Javascript VS代码悬停扩展实现悬停提供程序

Javascript VS代码悬停扩展实现悬停提供程序,javascript,visual-studio-code,hover,vscode-extensions,Javascript,Visual Studio Code,Hover,Vscode Extensions,正在尝试添加以将悬停添加到我的VS代码扩展。我能够使用语法突出显示和命令来工作,但仍然坚持添加这个悬停特性 我认为我的拦路虎是如何正确地实施。我在下面为一个悬停提供者做一个简单的测试,当一系列令牌被识别为关键字HELLO时,它就会激活。我在测试中实现的悬停。我正在使用vsce-package本地打包和测试我的扩展 我的扩展命令有效,但当我将鼠标悬停在单词“HELLO”上时,我的鼠标悬停不会出现 /client/extension.js const vscode = require('vscod

正在尝试添加以将悬停添加到我的VS代码扩展。我能够使用语法突出显示和命令来工作,但仍然坚持添加这个悬停特性

我认为我的拦路虎是如何正确地实施。我在下面为一个悬停提供者做一个简单的测试,当一系列令牌被识别为关键字
HELLO
时,它就会激活。我在测试中实现的悬停。我正在使用
vsce-package
本地打包和测试我的扩展

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

/client/extension.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
}
/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"
 }
}

你的package.json看起来有点奇怪。我打赌你的分机没有激活。“贡献/能力”价值是我以前从未见过的。删除该选项,将您的
激活事件更改为:

"activationEvents": [
    "onLanguage:star-rod-script"
],

您的代码允许我在第一个扩展中使用鼠标悬停。我认为您的错误是使用javascript作为
选择器:vscode.DocumentSelector
。那是你复制的代码吗?对于您的扩展,可能应该将其设置为
star rod script

我也没有
“功能”:{“hoverProvider”:“true”}
。我将您的代码更改为:

disposable = vscode.languages.registerHoverProvider('star-rod-script', {  // or 'star rod script'
    //....
});

context.subscriptions.push(disposable);
我不知道您如何将扩展应用于某些文档的细微差别,但看起来您并没有试图将鼠标悬停应用于javascript文档。您需要选择器来包含扩展所使用的文档。在我的例子中,扩展名涵盖了这一点,它是显示在vscode状态栏中的语言模式。更多信息


不确定是否需要它,但我也接受了返回并将其推送到订阅阵列上。没有它也可以工作,但我认为这是正确的???

你的扩展被激活了吗?你能提供更多关于什么不起作用以及你尝试过什么的信息吗?是的,但当我将鼠标悬停在我的测试“HELLO”关键字上时,不会出现悬停对话框。我只需要一个例子,如何创建一个正确的语法悬停,我不完全理解它周围的API。更新了一个示例截图后,它选择了我的扩展被激活,我可以运行我的测试命令“mamar”。即使在添加此activationEvent之后,关键字HELLO也不会出现悬停。