ICProjectDescriptionManager Manager = cPlugin.getProjectDescriptionManager();
ICProjectDescription projectDescription = Manager.createProjectDescription(project, false);
ICConfigurationDescription baseConfiguration =
cPlugin.getPreferenceConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID);
ICConfigurationDescription configDescription =
projectDescription.createConfiguration("myConfiguration", "My Configuration", baseConfiguration);
Manager.setProjectDescription(project, projectDescription);
cPlugin.createCDTProject(project.getDescription(), project, null);
At this point ((ILanguageSettingsProvidersKeeper) configDescription).getLanguageSettingProviders() returns two providers: [id=org.eclipse.cdt.ui.UserLanguageSettingsProvider, name=CDT User Setting Entries, id=org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider, name=CDT Managed Build Setting Entries]
My provider is not returned because LSPs are copied from baseConfiguration without looking at my configuration specification.
If I set the provider explicitly by
ILanguageSettingsProvider languageSettingProvider = new LanguageSettingsGenericProvider();
languageSettingProvider.configureProvider("myLanguageSettingsProvider", "My Provider",
Collections.singletonList("org.eclipse.cdt.core.g++"), null, null);
((ILanguageSettingsProvidersKeeper) configDescription).setLanguageSettingProviders(
Collections.<ILanguageSettingsProvider>singletonList(languageSettingProvider));
my provider gets returned by ((ILanguageSettingsProvidersKeeper) configDescription).getLanguageSettingProviders() but still appears unchecked in Preprocessor Include Paths, Macros, etc. > Providers and is called "My C/C++ Settings" rather than "My Provider".
What am I doing wrong?
-sergey