Как сделать Intellij Idey узнавать код, созданный макросами?
-
21-12-2019 - |
Вопрос
фон
У меня есть проект STA-Managed Scala, который использует Обычный макет проекта SBT для Scala Projects с макросами, т. Е. Подпроектом, который содержит макрос основным проектом, который является фактическим приложением, и это зависит от макроса. Макросы находятся Макроанативы Что, по сути, генерируют объекты компаньона для Регулярные классы. Сгенерированные объекты компаньона объявляют, среди других членов, применяются / бездально методы.
Я использовал плагин SBT-идеи для создания соответствующего проекта Imexe Intellij, и я использую консоль SBT из STT-Plugin Idey, чтобы скомпилировать и запустить мою приложение Scala.
Все работает более или менее штрафом, за исключением того, что сгенерированные объекты компаньона и, что более важно, их члены, такие как применение / непринужденно, не распознаются идеей. Таким образом, я получаю большую линию повсюду I, например, метод применения.
Моя установка IDELIJ IDEE CE 133.471 с плагинами SBT 1.5.1 и Scala 0.28.363 на Windows 7 x64.
Вопросы
Как получить идею Intellij, чтобы узнать код (классы, объекты, методы, ...), которые были сгенерированы Scala Macros (макроанализацию, быть точным)?
Есть другие идентификаторы, например, Eclipse, как известно, лучше работать в такой настройке?
связано
Этот вопрос (который менее подробно) по существу спрашивает то же самое, но еще не получил ответ (2014-02 -26).
Согласно разработчику JetBrains Функция, которую я запрашивал, является на их долгосрочной перспективе Список дел, но не будет реализован в ближайшее время (2014-03-05).
Решение
с последним плагином Scala Plugin, есть API, который можно использовать для записи собственного плагина для поддержки ваших макросов: http://blog.jetbrains.com/scala/2015/10/14/intellij-ap-bo-build-scala-macros-support// a>
Теперь каждый может использовать эту API, чтобы сделать их макрос более дружелюбными для своего любимого IDE.Для этого вам приходится реализовать syntheticsmembersinsjector и зарегистрируйте его в файле plugin.xml:
.<extensions defaultExtensionNs="org.intellij.scala"> <syntheticMemberInjector implementation="org.jetbrains.example.injector.Injector"/> </extensions>
Другие советы
Похоже, что есть ограниченная поддержка, если таковая имеется.
Цитата по этой ссылке: http://blog.jetbrains.com/scala/2014/01/23/heading-to-te-perfect-scala-code-analish/
Alexander Podkhalyuzin says:
.
30 января 2014 года в 10:13 утра
Мы начали поддержку Scala Macros, но это не простая задача, поэтому я не могу обещать, что это будет сделано в ближайшее время.
С наилучшими пожеланиями, Александр подхалюзин.