Как добавить пользовательский «когда предложение» в VS Code? - PullRequest
1 голос
/ 21 октября 2019

В настоящее время я занимаюсь разработкой простой надстройки для веб-проектов .NET Core 3.0 blazor. В этом случае я хочу включить надстройку, если блазорные проекты .net core 3.0 и если проект не является блазорным проектом .net core 3.0, моя пользовательская надстройка не будет отображаться.

Я гуглил насчет расширения надстройки vscode и нашел по умолчанию выражение «когда» для vscode, например «когда»: «explorerResourceIsFolder» и т. Д. Но я хочу, чтобы надстройка в заголовке рабочей области была с таким условием, как если бы проект был .net core 3.0 blazor,Я не знаю, как и где добавить логику для этого.

enter image description here

Мне нужно добавить собственное условие для предложения When, чтобы показать моедобавить в. Кроме того, если в проекте есть мои пользовательские сборки, мне нужно показать другую надстройку в контекстном меню заголовка проводника с моим собственным пользовательским предложением when.

Не могли бы вы подсказать, как мне этого добиться?

Ниже моя часть кодирования:

Package.Json

"commands": [
            {
                "command": "extension.openTemplatesFolder",
                "title": "Open Templates Folder",
                "category": "Project"
            },
            {
                "command": "extension.saveProjectAsTemplate",
                "title": "Save Project as Template",
                "category": "Project"
            },
            {
                "command": "extension.deleteTemplate",
                "title": "Delete Existing Template",
                "category": "Project"
            },
            {
                "command": "extension.createProjectFromTemplate",
                "title": "Create Project from Template",
                "category": "Project"
            }
        ],
        "menus": {
            "explorer/context": [
                {
                    "command": "extension.saveProjectAsTemplate",
                    "when": "myContext == success && explorerResourceIsRoot",
                    "group": "projectTemplates@1"
                }
            ]
        }

extension.ts

const value = "success";
vscode.commands.executeCommand('setContext', 'myContext', `${value}`);



export function activate(context: vscode.ExtensionContext) {



    // create manager and initialize template folder
    let projectTemplatesPlugin = new ProjectTemplatesPlugin(context, vscode.workspace.getConfiguration('projectTemplates'));
    projectTemplatesPlugin.createTemplatesDirIfNotExists();

    // register commands



    // open templates folder
    let openTemplatesFolder = vscode.commands.registerCommand('extension.openTemplatesFolder', 
        OpenTemplatesFolderCommand.run.bind(undefined, projectTemplatesPlugin));
    context.subscriptions.push(openTemplatesFolder);

    // save as template
    let saveProjectAsTemplate = vscode.commands.registerCommand('extension.saveProjectAsTemplate', 
        SaveProjectAsTemplateCommand.run.bind(undefined, projectTemplatesPlugin));
    context.subscriptions.push(saveProjectAsTemplate);
}

Примечание: vscode.commands.executeCommand ('setContext', 'myContext', value);не выполняется до показа надстройки. Был выполнен после нажатия надстройки

1 Ответ

0 голосов
/ 21 октября 2019

Вы можете использовать команду setContext для этого:

vscode.commands.executeCommand('setContext', 'myContext', `value`);

Затем используйте myContext в ваших when предложениях.

Эта команда в настоящее время недостаточно хорошо документирована, но здесь пример использование этой команды в расширении git

...