public static IdeaPluginDescriptorImpl[] loadDescriptors(@Nullable StartupProgress progress) { if (ClassUtilCore.isLoadingOfExternalPluginsDisabled()) { return IdeaPluginDescriptorImpl.EMPTY_ARRAY; } final List<IdeaPluginDescriptorImpl> result = new ArrayList<IdeaPluginDescriptorImpl>(); int pluginsCount = countPlugins(PathManager.getPluginsPath()) + countPlugins(PathManager.getPreinstalledPluginsPath()); loadDescriptors(PathManager.getPluginsPath(), result, progress, pluginsCount); Application application = ApplicationManager.getApplication(); boolean fromSources = false; if (application == null || !application.isUnitTestMode()) { int size = result.size(); loadDescriptors(PathManager.getPreinstalledPluginsPath(), result, progress, pluginsCount); fromSources = size == result.size(); } loadDescriptorsFromProperty(result); loadDescriptorsFromClassPath(result, fromSources ? progress : null); IdeaPluginDescriptorImpl[] pluginDescriptors = result.toArray(new IdeaPluginDescriptorImpl[result.size()]); try { Arrays.sort(pluginDescriptors, new PluginDescriptorComparator(pluginDescriptors)); } catch (Exception e) { prepareLoadingPluginsErrorMessage( IdeBundle.message("error.plugins.were.not.loaded", e.getMessage())); getLogger().info(e); return findCorePlugin(pluginDescriptors); } return pluginDescriptors; }
public static void configureMPS(String... plugins) { String mpsInternal = System.getProperty("mps.internal"); System.setProperty("idea.is.internal", mpsInternal == null ? "false" : mpsInternal); System.setProperty("idea.no.jre.check", "true"); // Not necessary to set this property for loading listed plugins - see // PluginManager.loadDescriptors() System.setProperty("idea.load.plugins", "false"); System.setProperty("idea.platform.prefix", "Idea"); StringBuffer pluginPath = new StringBuffer(); File pluginDir = new File(com.intellij.openapi.application.PathManager.getPreinstalledPluginsPath()); for (File pluginFolder : pluginDir.listFiles()) { if (pluginPath.length() > 0) { pluginPath.append(File.pathSeparator); } pluginPath.append(pluginFolder.getPath()); } System.setProperty("plugin.path", pluginPath.toString()); // Value of this property is comma-separated list of plugin IDs intended to load by platform System.setProperty("idea.load.plugins.id", StringUtils.join(plugins, ",")); if (!cachesInvalidated) { FSRecords.invalidateCaches(); cachesInvalidated = true; } try { IdeaTestApplication.getInstance(null); } catch (Exception e) { throw new RuntimeException(e); } }