javascript - StatusBarItem 的注册命令
问题描述
我正在创建一个 Visual Studio Code 扩展并已阅读该扩展,为了向 StatusBarItem onclick 事件提供功能,我需要为状态栏项目注册一个命令。我该怎么做呢?当我使用 window.createStatusBarItem 创建一个 StatusBarItem 时,我得到一个对象,它似乎没有任何字符串作为标识符,但命令注册过程需要一个字符串作为第一个参数,我不知道如何将它与 StatusBarItem 关联。
我使用 yeoman 来引导一个 JavaScript 扩展。
扩展.js
const vscode = require('vscode');
const { exec } = require('child_process')
function activate(context) {
console.log('Thanks for installing me! Remember to add a script to run if you want this extension to do anything \
instersting at all :P');
// TODO: make status bar item clickable
const statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 1000);
function runCommandAndUpdateStatusBarItem () {
// TODO: fetch command from settings
const command = 'git describe --dirty="-$USER"';
exec(`cd ${vscode.workspace.rootPath} && ${command}`, [], (error, stdout, stderr) => {
if (stdout) {
statusBarItem.text = `$(git-commit) ${stdout}`;
statusBarItem.show();
}
else {
vscode.window.showErrorMessage(stderr);
statusBarItem.hide();
}
});
}
statusBarItem.hide();
let disposable = vscode.commands.registerCommand('extension.sayHello', runCommandAndUpdateStatusBarItem);
context.subscriptions.push(statusBarItem);
context.subscriptions.push(disposable);
}
exports.activate = activate;
function deactivate() {
console.log('Oh...so, you hate me? Ok I go away now :(');
}
exports.deactivate = deactivate;
包.json
{
"name": "script-result-info",
"displayName": "Script Result Info",
"description": "Runs a script in shell and puts the result in the statusBar",
"version": "0.0.1",
"publisher": "emilioidk",
"engines": {
"vscode": "^1.23.0"
},
"categories": [
"Other"
],
"activationEvents": [
"onCommand:extension.sayHello"
],
"main": "./extension",
"contributes": {
"commands": [
{
"command": "extension.sayHello",
"title": "Hello world"
}
]
},
"scripts": {
"postinstall": "node ./node_modules/vscode/bin/install",
"test": "node ./node_modules/vscode/bin/test"
},
"devDependencies": {
"typescript": "^2.6.1",
"vscode": "^1.1.6",
"eslint": "^4.11.0",
"@types/node": "^7.0.43",
"@types/mocha": "^2.2.42"
}
}
解决方案
当我使用 window.createStatusBarItem 创建一个 StatusBarItem 时,我得到一个似乎没有任何字符串作为标识符的对象
默认情况下它不是,因为它是可选的,是的,但是您可以command
对其进行设置:
statusBarItem.command = 'extension.sayHello';
检查 API 文档StatusBarItem
:https ://code.visualstudio.com/docs/extensionAPI/vscode-api#StatusBarItem
推荐阅读
- html - 使用jquery获取同一类的元素之间的所有元素
- python - 在 Python 中为 Selenium 自动下载适当的 chromedriver
- iis - IIS 10.0 (Windows Server 2019) 对于所有网页返回安装了所有功能的空白页面
- reactjs - 当我更新状态时,结果不会更新,直到我使用 useEffect 钩子刷新页面
- reactjs - 使用 React Material-UI 时如何将选项卡指示器移到顶部
- c# - 如何在 C# 中根据外部时间打勾?
- node.js - NPM 运行构建超过 100% cpu
- apache-kafka - filebeat 可以将一个数据传输到logstash 和kafak 吗?
- python - 如何在 Python 中随着时间的推移可视化汇总的 VADER 情绪得分值?
- python - 使用 Opencv 比较签名