JetBrains представила MPS 2021.2
JetBrains представила MPS 2021.2
JetBrains выпустили версию 2021.2 — второй крупный релиз MPS в этом году
Краткий обзор новой функциональности
Окно автодополнения
Раньше, чтобы вызвать автодополнение, вы, как правило, нажимали Ctrl/Cmd + Space. Теперь окно автодополнения появляется автоматически — через полсекунды после того, как вы перестаете печатать. Вы по-прежнему можете открывать его вручную. Автоматическое открытие кое-чем отличается от ручного:
— Оно не срабатывает для пустых ячеек.
— Оно не срабатывает, если вариантов автодополнения нет.
— Окно автоматически закрывается, если вариантов автодополнения нет.
— Окно автоматически закрывается, когда вы очищаете ячейку.
Чтобы включить/выключить эту функцию, используйте переключатель Show suggestions as you type в настройках Editor / General / Code completion. По умолчанию новое поведение включено.
Улучшенное представление изменений обертки в диффах VCS
Работать с обертывающими изменениями теперь можно с большей гибкостью. Если вы добавили или удалили обертку для блока кода, а также внесли изменения в сам блок, эти изменения будут считаться разными. Изменения обертки, идущие подряд, теперь также отделяются друг от друга. Кроме того, MPS теперь видит перестановку узлов, даже если у родительского узла поменялся ID.
Улучшенное отображение изменений в атрибутах узлов
Раньше ячейки атрибутов неправильно подсвечивались в окне Diff. Обычно при добавлении или удалении атрибута подсвечивался весь узел, а не атрибут.
Универсальный механизм проверки орфографии
MPS заимствует у IntelliJ IDEA механизм проверки орфографии, позволяющий находить опечатки и ошибки в комментариях и строковых литералах. Теперь вы можете применять эту функциональность для любого текста, отображаемого в редакторе. Чтобы указать, что текст в ячейке нужно проверить по словарю (в соответствии с настройками в Preferences), добавьте стиль spellcheck
для соответствующей ячейки в описании редактора.
В случае Rich Client Platform (RCP) не забудьте включить в дистрибутив плагин jetbrains.mps.editor.spellcheck
.
Версионирование проекта для миграций
Случалось, что проект, который был перенесен на более новую версию MPS, мог открыть разработчик, использующий более старую версию. Теперь при выполнении миграции подсистема Migration учитывает версию платформы MPS и впоследствии уведомит вас, если вы захотите открыть проект, который был перенесен на более новую версию. Это помогает предотвращать случайные нарушения в моделях.
Оптимизация множества видимых ссылок
В MPS есть механизм вычисления множества видимых элементов при первом считывании модели. Для этого в j.m.lang.constraints
появились новые выражения: for model [ factory, key], visible roots [concept]
, а также visible nodes [concept]
— взамен new ModelPlusImportedScope(model, rootsOnly, concept)
. Новые выражения используются для сохранения видимых элементов модели в кэш, а значит, их не нужно будет записывать и вычислять повторно.
Редактирование узлов без ограничений
При написании кода, взаимодействующего с MPS-моделями, авторам расширений нужно выбирать, какой уровень доступа будет назначен. Для операций SNode (например, setProperty(), addChild() и т.д.) можно было назначить только command access, даже если пользователю не нужно было взаимодействовать с интерфейсом. Мы ослабили это ограничение: теперь любой код, в котором для модели указан write access, может вносить изменения в узлы.
Радар для всплывающих окон
Для работы со всплывающими окнами появились радары: они показывают, для каких ячеек доступны всплывающие окна. Чтобы активировать радар для всплывающего окна, нажмите и удерживайте клавишу Ctrl.
Алмазный оператор
BaseLanguage теперь позволяет использовать алмазный оператор Java для вывода generic-параметров из контекста в конструкторе. Алмазный оператор будет доступен по умолчанию для нового кода. Чтобы использовать его для существующих конструкторов, удалите имеющиеся параметры типов и выставьте значение true для infer type parameters в окне инспектора либо снова введите «<>» и удалите пустой параметр.
Улучшения для свойств BaseLanguage
При проверке типов MPS теперь корректно учитывает свойства BaseLanguage. При наследовании свойством интерфейсных либо абстрактных методов вы теперь не получите ошибок для нереализованных методов. Если вы определили свойство с помощью generic-типа, для доступа к нему будет использоваться правильный тип.
Обратите внимание, что сеттер для свойства типа T вернет объект типа T, а не void.
Единообразное поведение для Show Diff
В новой версии MPS различия между исходными и измененными версиями файлов по умолчанию отображаются прямо во вкладке редактора, независимо от того, как вы вызываете действие Show Diff.
Если вам удобнее отслеживать изменения в отдельном окне, можно перетащить нужный файл из редактора. IDE запомнит это и в дальнейшем будет открывать diff в отдельном окне.
Другие улучшения
Новый вариант навигации в Preferences/Settings
В правом верхнем углу окна Preferences/Settings появились стрелки, позволяющие перемещаться вперед/назад между секциями.
Перетаскивание окон
Теперь нужное окно можно просто перетащить в удобное место — как внутри основного окна IDE, так и в отдельное окно. Просто нажмите на заголовок окна и перетащите в любую выделенную область.
Улучшения терминала
У вас теперь есть возможность выбирать из большего количества форм курсора для встроенного терминала. Также терминал теперь поддерживает сочетания клавиш с Option (⌥) в качестве мета-клавиши. Например, можно использовать следующие сочетания:
⌥+F — переход к следующему слову;
⌥+B — переход к предыдущему слову;
⌥+D — удаление следующего слова.
Правила миграции
В документации появился раздел с рекомендациями по миграции на новые версии. JetBrains будет пополнять его по мере выхода новых версий.