Как я могу добавить записи настроек языка в существующие проекты CDT eclipse? - PullRequest
0 голосов
/ 04 февраля 2020

Я следую найденным шагам здесь , чтобы попытаться добавить параметры сборки в файлы в существующих проектах Eclipse CDT с помощью точки расширения LanguageSettingsProvider, но мой поставщик настроек, похоже, не отображается в пользовательском интерфейсе, и его методы не запрашиваются для настроек.

Ранее мне удавалось добавить настройки в проект с помощью внешнего провайдера настроек , но я не смог найти способ добавить файл -specifi c settings .

Я реализовал подкласс LanguageSettingsSerializableProvider (назовем его MyProvider) и добавил его в мой плагин. xml, таким образом:

    <extension
         point="org.eclipse.cdt.core.LanguageSettingsProvider">
      <provider
            class="com.example.MyProvider"
            id="MyProvider_id"
            name="I would like to see this in the UI">
         <language-scope id="org.eclipse.cdt.core.gcc"/>
         <language-scope id="org.eclipse.cdt.core.g++"/>
      </provider>
    </extension>

Класс реализован примерно так:

    public class MyProvider
                       extends LanguageSettingsSerializableProvider
                       implements ILanguageSettingsProvider,
                                  IResourceChangeListener,
                                  ILanguageSettingsEditableProvider,
                                  ILanguageSettingsBroadcastingProvider {
        /** The ID of this settings provider */
        public static final String MY_PROVIDER_ID = "MyProvider_id"; //$NON-NLS-

        /**
         * Constructor. Initialises super class with appropriate values.
         */
        public MyProvider() {
            super( MY_PROVIDER_ID , Messages.UiLabel );
        }

        @Override
        public String getId() {
            return MY_PROVIDER_ID ;
        }

        @Override
        public String getName() {
            return Messages.UiLabel;
        }

        @Override
        public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource resource, String languageId) {
            //breakpoint on this line that never gets hit...
            return super.getSettingEntries( cfgDescription, resource, languageId );
        }

        ...

    }

Реальная реализация содержит некоторые другие логи c для фактического создания записей настроек, включая регистрацию себя в качестве слушателя изменения ресурса. Код resourceChanged работает нормально, вызывает setSettingsEntries, а затем serializeSettings. Однако getSettingEntries никогда не вызывается для получения этих настроек.

Есть что-то, чего мне не хватает?

Я предполагаю, что плагин. xml отсутствует что-то, но я не уверен, что. В различных интерфейсах, которые реализует класс, есть параграфы руководства, но один простой рабочий пример будет стоить больше тысячи слов. Я попытался посмотреть на xml для встроенных провайдеров настроек (например, GCCBuiltinCompilerSettingsMinGW), но они определены вместе со многими другими частями CDT, и трудно сказать, какие биты имеют отношение к моему использованию случай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...