VS Code Hover Extension для реализации HoverProvider - PullRequest
0 голосов
/ 20 февраля 2019

Попытка добавить наведение , чтобы добавить наведение к моему расширению кода VS.Я смог использовать подсветку синтаксиса и команды для работы, но застрял при добавлении этой функции наведения.

Я думаю, что мой блокировщик - как правильно реализовать HoverProvider API .Ниже я делаю простой тест для провайдера наведения, который активируется, когда ряд токенов распознается как ключевое слово HELLO.Наведение я реализовал в своем тестировании.Я использую vsce package, чтобы упаковать и протестировать мое расширение локально.

Моя команда для расширения работает, но при наведении курсора на слово "HELLO" мое наведение не появляется.

enter image description here

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

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Ваш код позволил мне работать Hovers в моем первом расширении.Я думаю, что ваша ошибка заключается в javascript в качестве selector: vscode.DocumentSelector.Это там из кода, который вы скопировали?Это, вероятно, должно быть установлено на star-rod-script для вашего расширения.

У меня также нет "capabilities": {"hoverProvider": "true"} в моем.Я изменил ваш код на:

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

context.subscriptions.push(disposable);

Я не знаю нюансов того, как вы применяете свое расширение к определенным документам, но не похоже, что вы пытаетесь применить наведение на документы javascript.,Вам нужен селектор, чтобы включить документы, с которыми работает ваше расширение.В моем случае это покрыто моим именем расширения, которое является языковым режимом, который отображается в строке состояния vscode.Больше информации о document-selectors .

Не уверен, если это необходимо, но я также взял возврат и поместил его в массив подписок.Работает без этого, но я думаю, что это правильно ??

0 голосов
/ 21 февраля 2019

Ваш package.json выглядит немного странно.Бьюсь об заклад, ваше расширение не активировано.Значение "contribates / capabilites" я не видел раньше.Удалите это и вместо этого измените activationEvents на:

"activationEvents": [
    "onLanguage:star-rod-script"
],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...