Hi Sergey,
Regarding the selection of the new provider in the UI:
I think you need to set the project description again after calling setLanguageSettingProviders.
Manager.setProjectDescription(project, projectDescription);
Best regards,
Caroline
From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]
On Behalf Of Sergey Prigogin
Sent: Thursday, June 20, 2013 6:13 AM
To: CDT General developers list.
Subject: Re: [cdt-dev] Language settings provider question
Hi Andrew,
I'm having difficulties with getting CConfigurationDescription to recognize my provider.
point="org.eclipse.cdt.core.LanguageSettingsProvider">
class="org.eclipse.cdt.core.language.settings.providers.LanguageSettingsGenericProvider"
id="myLanguageSettingsProvider"
prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">
buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe"
buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe"
languageSettingProviders="myLanguageSettingsProvider"
I create the project using the following code sequence:
CCorePlugin cPlugin = CCorePlugin.getDefault();
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".
|