Pull to refresh
0
JetBrains
Делаем эффективные инструменты для разработчиков

Вышел MPS 2017.3

Reading time 4 min
Views 4.4K
Это последний выпуск MPS в текущем году. В этой версии появились новые возможности и улучшения по разным важным направлениям: редактор, генератор, язык компоновки и не только.

Мы очень довольны прогрессом MPS и перспективами дальнейшего развития. Мы всегда прислушиваемся к мнению сообщества, решая, какой еще функционал нужно добавить в MPS, чтобы помочь вам создавать ваши невероятные проекты!

Загрузить MPS 2017.3

Расскажем подробнее о нововведениях.

Редактор


Универсальные заполнители


Мы ввели понятие универсального заполнителя (generic placeholder). Универсальные заполнители могут использоваться для обозначения пустых позиций в любой коллекции на любом языке, а еще в них может находиться некоторое полезное содержимое. По умолчанию узел-заполнитель выглядит в редакторе как пустое место, а его поведение прозрачно — находясь в нём, можно вызвать автодополнение, чтобы заменить заполнитель на какой-то элемент языка, который может в этом месте находиться. Либо можно нажать клавишу Enter и добавить новый элемент в следующую позицию этой коллекции. Универсальный заполнитель вставляется сочетанием клавиш Control/Cmd + Shift + Enter.

image

Плавающие комментарии


Появление универсальных заполнителей позволило реализовать универсальное комментирование в предметно-ориентированных языках (DSL). Чтобы воспользоваться этой возможностью, достаточно импортировать язык jetbrains.mps.lang.text или devkit общего назначения. В результате вы получите язык свободно редактируемых многострочных комментариев с гиперссылками, с возможностью настройки шрифта (жирный, курсив, подчеркивание), внутрь которых еще и можно вставлять код. Для ввода комментария просто переведите курсор на универсальный заполнитель, нажмите «[» и начните печатать.

Если стандартного языка комментариев недостаточно, можно создать свой собственный с дополнительными возможностями.

image

Настройка гарнитуры шрифта для ячеек


В определении редактора теперь можно настраивать не только размер и начертание шрифта, но и гарнитуру. Выражение fontFamily позволяет ссылаться на все установленные семейства шрифтов.

image

Выбрать все


Новое действие SELECT_ALL позволяет выбрать все содержимое редактора целиком. Оно вызывается сочетанием клавиш Control/Cmd + A, а его поведение можно настроить в соответствии со своими предпочтениями при помощи карт действий.

image

Undo для удаленных узлов


Раньше удаление корневых узлов было весьма опасным занятием, потому что при этом терялась история изменений. Теперь мы усовершенствовали механизм undo. Отныне, вернув удаленный корень с помощью undo, можно возвращать изменения, которые были сделаны в этом корневом узле до его удаления.

Генератор


Связывание моделей контрольных точек


Контрольные точки теперь поддерживают прохождение по ссылкам, помеченным с помощью mapping label, не требуя одновременной генерации ссылки и того, на что она ссылается. Теперь можно спокойно делать resolve ссылки, даже если узел, на который она ссылается, был сгенерирован в более ранней контрольной точке.

Устранение избыточной перезаписи файлов


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

Язык компоновки


Новый способ копирования ресурсов модуля


Корневой узел содержимого «resources», указываемый в модулях, теперь используется для копирования ресурсов в развертываемый модуль. Для переноса в шаблоны копирования ресурсов тех файлов масок, которые раньше были жестко зашиты в коде, предусмотрена специальная миграция.

image

Задачи Ant


Задача Ant MPS предоставляет полный контроль над содержимым репозитория с помощью нескольких новых тегов: module, modules и allmpsmodules.

image

Улучшения задачи Ant для миграции


У задачи Ant для миграции теперь более удобный интерфейс.
При возникновении проблем в ходе миграции скрипт Ant прекращает работу и корректно сообщает об ошибках.

Поддерживаются все старые атрибуты для указания расположения mps — переменные окружения mps.home и mps_home, а также атрибут у самой задачи mpshome. Тем не менее, отныне желательно использовать свойство окружения mps.home.

Улучшения упаковки пакета разработки


Модули типа devkit, представляющие собой подборки языков и библиотек для конкретных нужд пользователя, теперь содержатся в дистрибутиве не в виде отдельных файлов, а упаковываются в файлы jar так же, как остальные модули. Чтобы автоматически обновить ваш build script и начать запаковывать их по-новому с помощью новой конструкции «module», специально ничего делать не нужно — миграция произойдет автоматически.

Прочие улучшения


NodePointer для дочерних элементов


Выражение nodePointer из lang.smodel теперь способно ссылаться не только на корневые узлы, но и на любые именованные элементы.

image

Учет зависимостей моделей при сборке


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

Улучшение клонирования модели


Действие Clone Model корректно обновляет для элементов клонированной модели перекрестные ссылки между разными корнями. Теперь клонированная модель полностью независима от исходной.

image

На этом всё. Надеемся, вас порадуют все новинки релиза. Мы всегда прислушиваемся к вашему мнению. Присоединяйтесь к нам в Twitter и подключайтесь к нашему каналу slack, чтобы первыми узнавать об обновлениях и делиться вашими отзывами!

Удачи!

Ваша команда JetBrains MPS

The Drive to Develop
Tags:
Hubs:
+7
Comments 2
Comments Comments 2

Articles

Information

Website
jetbrains.com
Registered
Founded
Employees
1,001–5,000 employees
Location
Чехия