首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StatusBarItem的寄存器命令

StatusBarItem的寄存器命令
EN

Stack Overflow用户
提问于 2018-05-10 04:46:05
回答 1查看 1.8K关注 0票数 3

我正在创建一个Visual代码扩展,并阅读了它,以便为StatusBarItem onclick事件提供为状态栏项注册命令所需的功能。我该怎么做?当我使用StatusBarItem创建window.createStatusBarItem时,我得到一个对象,它似乎没有任何字符串作为标识符,但是命令注册过程需要一个字符串作为第一个参数,我不知道如何将它与StatusBarItem相关联。

我使用了yeoman来引导一个JavaScript扩展。

extension.js

代码语言:javascript
复制
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;

package.json

代码语言:javascript
复制
{
    "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"
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-10 06:43:04

当我使用StatusBarItem创建window.createStatusBarItem时,我得到一个似乎没有任何字符串作为标识符的对象

默认情况下,它不是可选的,是的,但是您可以在上面设置command

代码语言:javascript
复制
statusBarItem.command = 'extension.sayHello';

检查API文档中的StatusBarItemhttps://code.visualstudio.com/docs/extensionAPI/vscode-api#StatusBarItem

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50265641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档