Ограничен ли индексатор Ecplise CDT общими типами файлов для источников и заголовков?

Я работаю над проектом, в котором используются файлы TOM (расширение .t), которые компилируются в файлы .c. Теперь я сказал своему Eclipse обрабатывать их как исходные файлы C, но индексатор CDT, похоже, не хочет их трогать. Можно ли указать ему учитывать дополнительные типы файлов?

Примечание. Файлы TOM выглядят так же, как файлы C, но с некоторым дополнительным синтаксисом, который для индексатора выглядел бы просто как синтаксические ошибки в некоторых строках.


person einpoklum    schedule 02.11.2015    source источник


Ответы (1)


Самый простой способ сделать это — определить новую ассоциацию. Чтобы сделать это в своем проекте, откройте Project Properties -> C/C++ General -> File Types, затем выберите Use Project Settings и определите новое расширение:

тип файла

Вы также можете определить это на уровне рабочей области, Window -> Preferences -> C/C++ -> File Types

Это должно дать вам большую часть того, что вы хотите. Например (на самом деле я не знаю Тома), у меня есть простой проект с 1 файлом C, 1 файлом H и 1 файлом T. Все функции, которые вы хотите и ожидаете, просто работают:

пример бега Тома

Если вы хотите больше

Если вы хотите большего, это можно сделать, но не без написания собственного подключаемого модуля Eclipse, который немного разбирается в *.t файлах. К счастью, для этого требуется всего несколько строк XML. К концу этого вы должны получить в основном ту же функциональность, что и выше, но у вас есть отправная точка для вашего собственного плагина TOM.

Что вам нужно сделать, так это определить тип содержимого, расширив org.eclipse.core.contenttype.contentTypes точка расширения (есть также некоторые старые документы, которые пробовал)

В вашем plugin.xml это будет выглядеть примерно так:

   <extension point="org.eclipse.core.contenttype.contentTypes">
      <!-- declares a content type for TOM source files -->
      <content-type id="tSource" name="TOM File"
         base-type="org.eclipse.core.runtime.text"
         file-extensions="t"
         priority="high"/>
    </extension>

Вы можете подумать о том, чтобы сделать base-type чем-то другим, кроме простого текста, например. вы могли бы сделать это org.eclipse.cdt.core.cSource.

Затем вам нужно определить новый язык, который для наших целей называется TOM Language. Вы делаете это с помощью org.eclipse.cdt.core.language точка расширения.

Пример того, как это может выглядеть:

   <extension
         point="org.eclipse.cdt.core.language">
      <language
            class="org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage"
            id="com.kichwacoders.tom.core.tomlanguage"
            name="TOM Language">
         <contentType
               id="com.kichwacoders.tom.core.tSource"></contentType>
      </language>
   </extension>

Класс GCCLanguage является стандартным классом GCC. Конечно, если вы хотите еще больше улучшить поддержку, добавление или настройка синтаксического анализатора является опцией (чтобы удалить эти синтаксические ошибки о томах), вы можете расширить GCCLanguage или один из других классов в иерархии.

После того, как вы все это сделаете и добавите новый подключаемый модуль в установку Eclipse, у вас появится поддержка файла TOM.

Если вы дочитали до конца, возможно, вам будет полезно просто разветвить https://github.com/jonahkichwacoders/com.kichwacoders.tom.core, который содержит весь приведенный выше код?

person Jonah Graham    schedule 04.11.2015
comment
Довольно мотивирующий ответ :-) Если бы только у меня было время поработать над плагинами Eclipse. Увы... - person einpoklum; 04.11.2015
comment
Потрясающий! Это как раз то, что мне было нужно. Я добавляю это в свои Инструкции по установке Eclipse на новой Linux (или другой ОС) теперь PDF-документ, который является частью моего проект eRCaGuy_dotfiles! - person Gabriel Staples; 12.04.2020