Действие Quick Definition в MPS работает так же, как его аналог в IntelliJ IDEA. Кликните по узлу, нажмите и удерживайте Ctrl-Shift-I, и вы увидите всплывающее окно с определением узла. В окне можно навигироваться, выбирать другие узлы и выполнять поиск. Больше не нужно каждый раз открывать новую вкладку, если необходимо быстро получить информацию об узле.
Теперь можно сократить потребление памяти, явно удалив все модели. Для этого нажмите на индикатор памяти или установите параметр очистки по расписанию (в секундах) в окне Registry. Пока что эта функция является экспериментальной, и мы планируем улучшать ее в следующих версиях.
Теперь можно создать несколько генераторов для одного языка и разместить их либо внутри языка (как в предыдущих версиях), либо в качестве обычного модуля верхнего уровня. Планы генерации помогут получить максимум пользы от использования нескольких генераторов. Чтобы вам было проще, без явного плана генерации только один из генераторов будет работать с моделью. Новый генератор можно создать в контекстном меню языка. При этом откроется диалог, в котором можно сделать генератор автономным.
Мы добавили новое действие для преобразования концепта в интерфейс и наоборот. Это может быть полезно при создании языковых структур, использования при этом не изменятся.
Теперь можно создавать концепты, методы и классы из их использований в коде. Действие Create from usage поможет сгенерировать класс для новых операторов, методы в выражениях, а также концепты и интерфейсы в дочерних/ссылочных ролях и в расширениях/реализациях.
Новый оператор позволяет cгенерировать правильный Java-идентификатор из INamedConcept. Будет создано уникальное имя: недопустимые символы будут удалены, а заглавные буквы и префиксы будут добавлены, если это необходимо.
В предыдущих версиях MPS оператор add result в finder позволял получать результаты поиска только на основе node<>
. Новый оператор add raw result позволяет показывать любые результаты, которые возможно отобразить в окне Find Usages.
Генератор MPS показывает предупреждение, если не удается разрешить динамическую ссылку. Таких предупреждений бывает много, учитывая, что не все генераторы придерживаются строгого подхода к созданию ссылок с использованием сопоставления меток. Теперь можно выбрать, показывать такое предупреждение или нет.
Мы значительно ускорили загрузку моделей-заглушек, особенно из больших наборов jar-файлов. Время загрузки сократилось в 2–3 раза по сравнению с версией 2019.2 (с 18 до 6 секунд). Мы перенесли это улучшение в MPS 2019.1 и MPS 2019.2.
Раньше в качестве моделей в MPS рассматривались только файлы с расширениями *.mps
и *.mpsr
. Однако при сохранении пользовательской модели возможны другие имена файлов. Чтобы обеспечить включение всех необходимых файлов модели при сборке модуля, в скрипте сборки можно указать явное объявление корня модели. Это облегчает использование пользовательских имен файлов.
Мы обновили шаблоны хранения и документацию мастера создания решения. Были исправлены ошибки генерации в шаблоне Math и неработающие ссылки на страницах документации. Кроме того, мы устранили проблемы в некоторых диалогах и окнах инструментов.
Теперь поддерживаются двоичные и восьмеричные литералы, а параметры типов в Javadocs обрабатываются правильно. Мы также исправили много других проблем.
MPS обнаруживает устаревшие имена объектов языка SModel и предоставляет быстрое исправление для их обновления.
Фасет Tests больше не является обязательным — MPS не требует его наличия для модуля Language.
Действие Surround with… теперь доступно для нескольких выбранных узлов. Раньше оно работало только для выделенных областей, содержащих один узел.
В истории корня теперь можно посмотреть, какие еще файлы были изменены в выбранной версии.
Действие Show Root History, которое появилось в версии 2019.2, работало только для корней из моделей, хранящихся в одном файле. Теперь поддерживаются модели, персистентные по корневым узлам.
Инструмент Favorites из платформы IntelliJ теперь интегрирован в MPS.
Для всех метаязыков теперь предусмотрен единый стиль и возможности редактирования, которые включают в себя навигацию с помощью клавиатуры, поведение ячеек-заполнителей в редакторах и вид New Root.