Плагин IntelliJ: Редактирование настроек Run Configuration программно и / или создание из контекста - PullRequest
0 голосов
/ 11 апреля 2020

Также опубликовано в сообществе IntelliJ.

Короче говоря, я хочу создать экземпляр конфигурации запуска (а не моё собственное создание, в частности Mocha) программно на основе EditorPopupMenu действие. (Для контекста позже я хочу иметь возможность добавить действие перед запуском и запустить его).

Я создал пустую конфигурацию через

ConfigurationType type = ConfigurationTypeUtil.findConfigurationType("mocha-javascript-test-runner");
ConfigurationFactory[] factories = type.getConfigurationFactories();
RunnerAndConfigurationSettings racs = runManager.createConfiguration("testConfig", factories[0]);

, но я ' Я не уверен, как заполнять поля настроек, которые вы обычно делаете через пользовательский интерфейс. Я видел страницу SettingsEditor, на которую ссылаются документы SDK, но, похоже, это только пользовательский интерфейс. Остальная часть документации по конфигурациям запуска сосредоточена на создании ваших собственных, а не на манипулировании существующими программными средствами.

В отладчике я вижу, что объект MochaRunSettings существует со всеми полями, которые мне нужны, но я не делаю увидеть метод для доступа к нему. Я также не знаю, как создать его вручную или превратить его в объект RunnerAndConfigurationSettings, если бы я мог это сделать.

Точно так же почти все, что я хочу настроить, я думаю, может быть сделано с использованием ConfigurationContext, подобного нажимая кнопку запуска в канаве. Я сделал

ConfigurationContext cc = new ConfigurationContext(e.getData(LangDataKeys.PSI_ELEMENT));

, но, кажется, у меня не так много информации, когда я проверяю его в отладчике, и я не уверен, какой метод мне нужен, чтобы превратить его в настоящий объект RunnerAndConfigurationSettings.

Может быть, я тоже просто придерживаюсь совершенно неправильного подхода?

Спасибо за любые советы, которые есть у кого-либо.

Бонусный вопрос: Как вы программно запускаете конфигурацию RunnerAndConfigurationSettings, чтобы фактически запустить, как будто вы нажали на это / Shift + F10?

1 Ответ

0 голосов
/ 12 апреля 2020

Хорошо, у меня вроде получилось. Вот что нужно было:

ConfigurationType type = ConfigurationTypeUtil.findConfigurationType("mocha-javascript-test-runner");

MapDataContext dataContext = new MapDataContext();
dataContext.put(CommonDataKeys.PROJECT, project);
dataContext.put(Location.DATA_KEY, PsiLocation.fromPsiElement(e.getData(LangDataKeys.PSI_ELEMENT)));

List<RunConfigurationProducer<?>> runConfProds = RunConfigurationProducer.getProducers(project);
RunConfigurationProducer runConfProd = null;
// I got the producer above by checking entries in 'runConfProds' against 'type'
// Unfortunately it gets two matches, so it's a bit scuffed right now. Probably better way to do this.

ConfigurationContext configurationContext = ConfigurationContext.getFromContext(dataContext);
ConfigurationFromContext configurationFromContext = runConfProd.createConfigurationFromContext(configurationContext);

RunnerAndConfigurationSettings runnerAndConfigurationSettings = configurationFromContext.getConfigurationSettings();
Executor executor = DefaultRunExecutor.getRunExecutorInstance();
ExecutionUtil.runConfiguration(runnerAndConfigurationSettings, executor);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...