Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Language settings provider question

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.

 

In plugin.xml I have:

 

  <extension

        point="org.eclipse.cdt.core.LanguageSettingsProvider">

     <provider

           class="org.eclipse.cdt.core.language.settings.providers.LanguageSettingsGenericProvider"

           id="myLanguageSettingsProvider"

           name="My C/C++ Settings"

           prefer-non-shared="true">

        <language-scope id="org.eclipse.cdt.core.gcc"/>

        <language-scope id="org.eclipse.cdt.core.g++"/>

     </provider>

  </extension>

  <extension

        point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">

     <projectType

           buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe"

           id="myProjectType"

           isAbstract="false"

           isTest="false"

           name="My C++ Project">

       <configuration

             buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe"

             id="myConfiguration"

             languageSettingProviders="myLanguageSettingsProvider"

             name="My Configuration">

          ...

       </configuration>

     </projectType>

  </extension>

 

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".

 

What am I doing wrong?

 

-sergey


Back to the top