В MPS 2021.2 появился механизм проверки орфографии, окно автодополнения, улучшения VCS и многое другое.
Раньше, чтобы вызвать автодополнение, вы, как правило, нажимали Ctrl/Cmd + Space. Теперь окно автодополнения появляется автоматически — через полсекунды после того, как вы перестаете печатать. Также вы можете отрыть его вручную. Подробнее.
Работать с обертывающими изменениями теперь можно с большей гибкостью. Если вы добавили или удалили обертку для блока кода, а также внесли изменения в сам блок, эти изменения будут считаться разными. Изменения обертки, идущие подряд, теперь также отделяются друг от друга. Кроме того, 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 в окне инспектора либо снова введите <>
и удалите пустой параметр.
При проверке типов MPS теперь корректно учитывает свойства BaseLanguage. При наследовании свойством интерфейсных либо абстрактных методов вы теперь не получите ошибок для нереализованных методов. Если вы определили свойство с помощью generic-типа, для доступа к нему теперь будет использоваться правильный тип.
Обратите внимание, что сеттер для свойства типа T
вернет объект типа T
, а не void
.
В новой версии MPS различия между исходными и измененными версиями файлов по умолчанию отображаются прямо во вкладке редактора, независимо от того, как вы вызываете действие Show Diff.
Если вам удобнее отслеживать изменения в отдельном окне, можно перетащить нужный файл из редактора. IDE запомнит это и в будущем будет открывать diff в отдельном окне.
В правом верхнем углу окна Preferences/Settings появились стрелки, позволяющие перемещаться вперед/назад между секциями.
Теперь нужное окно можно просто перетащить в удобное место — как внутри основного окна IDE, так и в отдельное окно. Просто нажмите на заголовок окна и перетащите в любую выделенную область.
У вас теперь есть возможность выбрать из большего количества форм курсора для встроенного терминала. Также терминал теперь поддерживает сочетания клавиш с Option (⌥) в качестве метаклавиши. Например, можно использовать следующие сочетания: