Что нового в MPS 2019.3

Действие Quick Definition

Действие Quick Definition

Действие Quick Definition в MPS работает так же, как его аналог в IntelliJ IDEA. Кликните по узлу, нажмите и удерживайте Ctrl-Shift-I, и вы увидите всплывающее окно с определением узла. В окне можно навигироваться, выбирать другие узлы и выполнять поиск. Больше не нужно каждый раз открывать новую вкладку, если необходимо быстро получить информацию об узле. Подробнее

Удаление моделей

Удаление моделей

Теперь можно сократить потребление памяти, явно удалив все модели. Для этого нажмите на индикатор памяти или установите параметр очистки по расписанию (в секундах) в окне Registry. Пока что эта функция является экспериментальной, и мы планируем улучшать ее в следующих версиях. Подробнее

Автономные модули генерации

Автономные модули генераторов и создание нескольких генераторов для одного языка

Теперь можно создать несколько генераторов для одного языка и разместить их либо внутри языка (как в предыдущих версиях), либо в качестве обычного модуля верхнего уровня. Планы генерации помогут получить максимум пользы от использования нескольких генераторов. Чтобы вам было проще, без явного плана генерации только один из генераторов будет работать с моделью. Новый генератор можно создать в контекстном меню языка. При этом откроется диалог, в котором можно сделать генератор автономным.

Преобразование концепта в интерфейс

Преобразование концепта в интерфейс

Мы добавили новое действие для преобразования концепта в интерфейс и наоборот. Это может быть полезно при создании языковых структур, использования при этом не изменятся.

Действие Create from usage

Действие Create from usage

Теперь можно создавать концепты, методы и классы из их использований в коде. Действие Create from usage поможет сгенерировать класс для новых операторов, методы в выражениях, а также концепты и интерфейсы в дочерних/ссылочных ролях и в расширениях/реализациях.

Генерация правильных Java-идентификаторов

Генерация правильного Java-идентификатора из INamedConcept

Новый оператор позволяет cгенерировать правильный Java-идентификатор из INamedConcept. Будет создано уникальное имя: недопустимые символы будут удалены, а заглавные буквы и префиксы будут добавлены, если это необходимо.

Find Usages: новый оператор для отображения произвольных результатов поиска при написании finder

В предыдущих версиях MPS оператор add result в finder позволял получать результаты поиска только на основе node<>. Новый оператор add raw result позволяет показывать любые результаты, которые возможно отобразить в окне Find Usages.

Исправления

Генератор: отключение предупреждения о динамических ссылках

Генератор MPS показывает предупреждение, если не удается разрешить динамическую ссылку. Таких предупреждений бывает много, учитывая, что не все генераторы придерживаются строгого подхода к созданию ссылок с использованием сопоставления меток. Теперь можно выбрать, показывать такое предупреждение или нет. Подробнее

Спонсировано клиентом

Ускоренная загрузка моделей-заглушек Java

Мы значительно ускорили загрузку моделей-заглушек, особенно из больших наборов jar-файлов. Время загрузки сократилось в 2–3 раза по сравнению с версией 2019.2 (с 18 до 6 секунд). Мы перенесли это улучшение в MPS 2019.1 и MPS 2019.2.

Язык сборки и упаковки: явное указание корня модели

Раньше в качестве моделей в MPS рассматривались только файлы с расширениями * .mps и * .mpsr. Однако при сохранении пользовательской модели возможны другие имена файлов. Чтобы обеспечить включение всех необходимых файлов модели при сборке модуля, в скрипте сборки можно указать явное объявление корня модели. Это облегчает использование пользовательских имен файлов.

Документация:

Мы обновили шаблоны хранения и документацию мастера создания решения. Были исправлены ошибки генерации в шаблоне Math и неработающие ссылки на страницах документации. Кроме того, мы устранили проблемы в некоторых диалогах и окнах инструментов.

BaseLanguage

Теперь поддерживаются двоичные и восьмеричные литералы, а параметры типов в Javadocs обрабатываются правильно. Мы также исправили много других проблем.

Быстрое исправление для обновления объектов идентификации модуля/модели

MPS обнаруживает устаревшие имена объектов языка SModel и предоставляет быстрое исправление для их обновления. Подробнее

Обновленный фасет

Фасет Tests больше не является обязательным — MPS не требует его наличия для модуля Language. Подробнее

Действие Surround with...

Действие Surround with… теперь доступно для нескольких выбранных узлов. Раньше оно работало только для выделенных областей, содержащих один узел.

Действие Show Affected Files в истории корня

В истории корня теперь можно посмотреть, какие еще файлы были изменены в выбранной версии.

История корня

Действие Show Root History, которое появилось в версии 2019.2, работало только для корней из моделей, хранящихся в одном файле. Теперь поддерживаются модели, персистентные по корневым узлам.

Обновленное окно Favorites

Инструмент Favorites из платформы IntelliJ теперь интегрирован в MPS. Подробнее

Стиль метаязыков

Для всех метаязыков теперь предусмотрен единый стиль и возможности редактирования, которые включают в себя навигацию с помощью клавиатуры, поведение ячеек-заполнителей в редакторах и вид New Root.