Могут ли расширения VS Code получать запросы URI от других программ? - PullRequest
2 голосов
/ 30 марта 2019

На официальных документах я нашел информацию о том, что onUri может использоваться в качестве события активации.Таким образом, мое расширение может быть активировано, скажем, из программы WPF, написанной на C #, путем вызова URI, такого как vscode://myextension/arg1=foo&arg2=bar.Но нигде не говорится, как я могу получить аргументы, которые были переданы с запросом URI.Или даже просто получить необработанную строку.

Мой вопрос: можно ли это сделать, и если нет, есть ли другой способ заставить расширение VS Code взаимодействовать с другой программой?

1 Ответ

2 голосов
/ 30 марта 2019

Да, вы можете использовать vscode.window.registerUriHandler() для этого:

Регистрирует URI-обработчик , способный обрабатывать в масштабе всей системы URIS . Если открыто несколько окон, самое верхнее окно будет обрабатывать URI. Обработчик uri ограничен расширением, из которого он добавлен; он сможет обрабатывать только Uris, которые направлены на само расширение. Ури должен соблюдать следующие правила:

  • Uri-схема должна быть названием продукта;

  • URI-полномочия должны быть идентификатором расширения (например, my.extension);

  • Элементы uri-path, -query и -fragment являются произвольными. Например, если расширение my.extension регистрирует обработчик uri, ему будет разрешено обрабатывать uris только с префиксом product-name://my.extension.

Расширение может зарегистрировать только один обработчик uri за весь срок его активации.

  • Примечание: есть событие активации onUri, которое срабатывает, когда собирается обрабатывать uri, направленный на текущее расширение.

Использование довольно просто:

vscode.window.registerUriHandler({
    handleUri(uri:vscode.Uri) {
        // do something with the URI
    }
});
...