【发布时间】:2019-07-14 12:00:02
【问题描述】:
尝试添加 hovers 以将悬停添加到我的 VS Code 扩展。我能够使用语法突出显示和命令来工作,但坚持添加此悬停功能。
我认为我的障碍是如何正确实施HoverProvider API。我在下面对悬停提供程序进行了一个简单的测试,当一系列标记被识别为关键字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"
}
}
【问题讨论】:
-
您的扩展程序是否被激活?您能否提供更多关于哪些方法无效以及您尝试过哪些方法的信息?
-
是的,但是当我将鼠标悬停在我的测试“HELLO”关键字上时,不会出现悬停对话框。我只需要一个示例如何使用正确的语法创建悬停,我并不完全了解它周围的 API。
-
您从不使用在
provideHover作为输入传递的令牌是否正常?
标签: javascript visual-studio-code hover vscode-extensions