Novedades de MPS 2021.2

MPS 2021.2 incorpora un mecanismo de corrección ortográfica, una ventana emergente de finalización automática, mejoras de VCS y mucho más.

Ventana emergente de finalización automática

La finalización del código, que se suele invocar pulsando Ctrl/Cmd + Espacio, ahora aparece de forma automática después de que deja de escribir, con un retraso de medio segundo de forma predeterminada. Todavía se puede abrir manualmente si es necesario. Más información.

Mejoras en los cambios de envoltura y desenvoltura en el diff del VCS

Mejoras en los cambios de envoltura y desenvoltura en el diff del VCS

Los cambios de envoltura ahora son mucho más flexibles. Es posible tener cambios internos independientes dentro de los cambios de envoltura y desenvoltura. Además, es posible tener varios cambios de envoltura y desenvoltura uno al lado del otro. Los movimientos internos ahora se detectan dentro de los nodos con IDs modificadas.

Visualización mejorada de los cambios en los atributos de los nodos

Visualización mejorada de los cambios en los atributos de los nodos

Anteriormente, las celdas del editor para los atributos no se resaltaban correctamente en el cuadro de diálogo Diff. Por lo general, se resaltaba todo el nodo con el atributo si se añadía o eliminaba un atributo, en lugar de solo el atributo en cuestión.

Mecanismo genérico de corrección ortográfica

Mecanismo genérico de corrección ortográfica

La funcionalidad MPS que emplea un mecanismo de corrección ortográfica de IntelliJ IDEA para revisar los comentarios y los literales de cadena en busca de errores tipográficos y ortográficos se ha ampliado para que funcione con cualquier texto que pueda aparecer en una celda de etiqueta. Para indicar que el texto de una celda debe verificarse en un diccionario (como está configurado en las preferencias), solo tiene que añadir el estilo spellcheck a la celda en la declaración del editor.

Para las plataformas de cliente enriquecido (RCP), no olvide incluir el complemento jetbrains.mps.editor.spellcheck en la distribución.

Versión del proyecto para las migraciones

Versión del proyecto para las migraciones

Hemos resuelto el escenario en el que un desarrollador con una versión anterior de MPS accedía a un proyecto que se había migrado a una versión más reciente de MPS. El subsistema Migration ahora detecta la versión de la plataforma MPS al aplicar migraciones, y le advierte si un proyecto que intenta abrir se ha migrado a una versión más reciente. Esto permite evitar la corrupción involuntaria de modelos.

Alcance de referencias optimizado

Existe un mecanismo para compartir elementos del alcance evaluados durante una lectura de modelo único. Se han introducido nuevas expresiones en j.m.lang.constraints para compartir ámbitos: for model [ factory, key], visible roots [concept] y visible nodes [concept] como reemplazo de new ModelPlusImportedScope(model, rootsOnly, concept). Las nuevas expresiones se utilizan para guardar el ámbito de un modelo en la memoria caché, lo que significa que solo debe registrarse y calcularse una vez.

Ninguna limitación a la hora de modificar nodos

Los autores de extensiones tienen que seleccionar qué tipo de acceso otorgar cuando escriben código que funciona con modelos MPS. Para las operaciones SNode (p. ej., setProperty(), addChild(), etc.), solo era posible otorgar acceso a comandos, incluso sin interacción con la interfaz de usuario. Se ha eliminado esta limitación y cualquier código que tenga acceso de escritura para el modelo ahora puede modificar los nodos.

Radar de descripciones emergentes

Radar de descripciones emergentes

La funcionalidad Descripciones emergentes ahora tiene una función llamada radar que muestra qué celdas tienen descripciones emergentes. El radar de descripciones emergentes se puede activar manteniendo pulsada la tecla Ctrl.

Operador diamante

En baseLanguage, ahora es posible usar el operador diamante de Java en constructores para inferir parámetros genéricos del contexto. El operador diamante se habilitará de forma predeterminada para el código nuevo que se escriba. Para habilitarlo en sus constructores existentes, elimine sus parámetros de tipo existentes y defina infer type parameters como true en el inspector, o escriba <> de nuevo y elimine el parámetro vacío.

Mejora de las propiedades de BaseLanguage

En baseLanguage, las propiedades ahora se tienen en cuenta correctamente en la comprobación de tipos. No se generará ningún error para un método no implementado cuando una propiedad herede la interfaz o métodos abstractos. Al definir una propiedad con un tipo genérico, se utiliza el tipo correcto para acceder a la propiedad en una instancia.

Tenga en cuenta que el setter expuesto para una propiedad de tipo T devolverá un objeto de tipo T, en lugar de void.

«Show Diff» unificado

«Show Diff» unificado

MPS ahora muestra la diferencia entre los archivos iniciales y las versiones modificadas en la pestaña del editor. Independientemente de cómo invoque la acción Show Diff, el IDE abrirá el diff en el editor de forma predeterminada.

Si le resulta más práctico realizar un seguimiento de los cambios en una ventana independiente, puede arrastrar el archivo deseado desde el editor. Si lo hace, el IDE lo recordará y abrirá los diffs futuros en una ventana independiente.

Otras mejoras

Nueva opción de navegación en «Preferences/Settings»

Nueva opción de navegación en «Preferences/Settings»

Hay nuevas flechas ubicadas en la esquina superior derecha de la ventana en Preferences/Settings para ayudarle a navegar por las secciones. Le permiten saltar entre las secciones.

Arrastrar y soltar ventanas de herramientas

Ahora es más fácil arrastrar y soltar una ventana de herramientas para moverla dentro de la ventana principal del IDE o para convertirla en una ventana independiente. Puede arrastrar una ventana de herramientas haciendo clic y manteniendo la barra con su nombre, y puede soltarla en cualquier zona resaltada.

Vista previa HTML integrada

Mejoras del terminal

Existen nuevas opciones para modificar la forma del cursor en el terminal integrado. Además, el terminal también es compatible con accesos directos usando Opción (⌥) como tecla Meta. Por ejemplo, puede utilizar los siguientes accesos directos:

  • ⌥+F: ir a la siguiente palabra
  • ⌥+B: ir a la palabra anterior
  • ⌥+D: eliminar la siguiente palabra