Skip to content
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
ca7c34a
perf(linenumbers): they were slowing down the update of the main editor
slisson Dec 2, 2025
5505b1f
Merge pull request #1683 from JetBrains/performance/line-numbers
slisson Dec 4, 2025
90bd7ab
Merge remote-tracking branch 'refs/remotes/origin/maintenance/mps2023…
slisson Dec 8, 2025
88384e2
Merge pull request #1689 from JetBrains/merge/mps20241
mps-ci-buildbot Dec 8, 2025
16f5dd1
Merge remote-tracking branch 'origin/maintenance/mps20241' into merge…
slisson Dec 9, 2025
6633047
refactor(alias-customization): move the feature into a separate langu…
Dec 5, 2025
aa6f92d
Merge pull request #1693 from JetBrains/merge/mps20251
mps-ci-buildbot Dec 9, 2025
0301e29
Merge pull request #1692 from JetBrains/bugfix/concept_alias_customiz…
alexanderpann Dec 10, 2025
f64eded
feature(intention): make it possible to customize intention extension…
Dec 9, 2025
2d0e0bc
Merge remote-tracking branch 'origin/maintenance/mps20251' into featu…
Dec 10, 2025
933c25a
Remove 'build all scripts' solution
sergej-koscejev Dec 10, 2025
709580d
build: generate and copy the changelog as part of the Gradle 'build' …
sergej-koscejev Dec 10, 2025
ba23d1c
Merge pull request #1699 from JetBrains/generate-changelog
sergej-koscejev Dec 11, 2025
b97e30a
Merge pull request #1700 from JetBrains/merge/mps20251
mps-ci-buildbot Dec 11, 2025
36f5d7d
Merge pull request #1694 from JetBrains/feature/intention_customization
alexanderpann Dec 12, 2025
3bd763b
Merge remote-tracking branch 'origin/master' into merge/master
Dec 12, 2025
ff3b208
run migrations
Dec 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,20 @@ All notable changes to this project are documented in this file.

The format is *loosely* based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) .The project does *not* follow Semantic Versioning and the changes are documented in reverse chronological order, grouped by calendar month.

## December 2025

### Added

- *nl.f1re.mps.aliascustomization* The alias of all concepts globally can now be customized through the extension point [AliasCustomization.](http://127.0.0.1:63320/node?ref=r%3Af0a80b34-9760-42b8-9ee6-d5b0d1582551%28de.slisson.mps.conditionalEditor.runtime.plugin%29%2F1679635547169731239) Please be aware that this feature is experimental. Use it with care!
- *de.slisson.mps.conditionalEditor* The alias of all concepts globally can now be customized through the extension point [AliasCustomization.](http://127.0.0.1:63320/node?ref=r%3Af0a80b34-9760-42b8-9ee6-d5b0d1582551%28de.slisson.mps.conditionalEditor.runtime.plugin%29%2F1679635547169731239)
- *com.mbeddr.mpsutil.intentions* All intentions can now be customized through the extension point [IntentionCustomization](http://127.0.0.1:63320/node?ref=r%3A028362d1-b964-410a-a3d5-6096bcd4a2b6%28com.mbeddr.mpsutil.intentions.runtime.plugin%29%2F4784371196443178355) (child filter, description, is applicable block, execute method). Note that you can't customize intentions that are not enabled in the current context (node + editor context).

## November 2025

### Added

- *de.itemis.mps.editor.diagram.runtime* Add an experimental static flag to disable autolayout-on-init. Useful for batch autolayouting.
- *com.mbeddr.mpsutil.grammarcells* All cells now support *show* *if* blocks (except optional cells), parent styles and style sheet items. Note that only certain styles can be applied (transitive styles and styles that make sense for wrapper cells).

### Fixed

Expand All @@ -18,10 +27,6 @@ The format is *loosely* based on [Keep a Changelog](https://keepachangelog.com/e
- *de.itemis.mps.spellcheck* Custom dictionaries are not saved in the .mps/dictionaries/project.xml files anymore and pollute the file that is normally used for words saved manually by the user.
- *de.itemis.mps.editor.celllayout* Reloading all classes do not lead to ClassCastExceptions anymore.

### Added

- *com.mbeddr.mpsutil.grammarcells* All cells now support *show* *if* blocks (except optional cells), parent styles and style sheet items. Note that only certain styles can be applied (transitive styles and styles that make sense for wrapper cells).

## October 2025

### Fixed
Expand Down
99 changes: 63 additions & 36 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import com.specificlanguages.mps.MainBuild
import com.specificlanguages.mps.MpsBuild
import com.specificlanguages.mps.RunAnt
import com.specificlanguages.mps.TestBuild
import de.itemis.mps.gradle.EnvironmentKind
import de.itemis.mps.gradle.GitBasedVersioning
import de.itemis.mps.gradle.tasks.MpsGenerate
import de.itemis.mps.gradle.tasks.MpsMigrate
import de.itemis.mps.gradle.tasks.Remigrate
import groovy.xml.XmlSlurper
Expand Down Expand Up @@ -188,39 +190,37 @@ bundledDependencies {

}

mpsBuilds {
val languages by creating(MainBuild::class) {
mpsProjectDirectory = codeDir
buildArtifactsDirectory = layout.buildDirectory.dir("artifacts/de.itemis.mps.extensions")
buildSolutionDescriptor = codeDir.file("build/solutions/de.itemis.mps.extensions.build/de.itemis.mps.extensions.build.msd")
buildFile = layout.buildDirectory.file("generated/languages/build.xml")
}

val tests by creating(TestBuild::class) {
dependsOn(languages)
mpsProjectDirectory = codeDir
buildArtifactsDirectory = layout.buildDirectory.dir("artifacts/de.itemis.mps.extensions.tests")
buildSolutionDescriptor = codeDir.file("build/solutions/de.itemis.mps.extensions.build/de.itemis.mps.extensions.build.msd")
buildFile = layout.buildDirectory.file("generated/tests/build.xml")

assembleAndCheckTask {
finalizedBy("failOnTestError")
val languages by mpsBuilds.creating(MainBuild::class) {
mpsProjectDirectory = codeDir
buildArtifactsDirectory = layout.buildDirectory.dir("artifacts/de.itemis.mps.extensions")
buildSolutionDescriptor = codeDir.file("build/solutions/de.itemis.mps.extensions.build/de.itemis.mps.extensions.build.msd")
buildFile = layout.buildDirectory.file("generated/languages/build.xml")
}

doLast {
val reportDir = layout.buildDirectory.dir("junitreport").get()
ant.withGroovyBuilder {
"taskdef"(
"name" to "junitreport",
"classname" to "org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator",
"classpath" to mpsDefaults.antClasspath.asPath
)
"junitreport" {
"fileset"("dir" to "$buildDir", "includes" to "**/TEST*.xml")
"report"("format" to "frames", "todir" to reportDir)
}
val tests by mpsBuilds.creating(TestBuild::class) {
dependsOn(languages)
mpsProjectDirectory = codeDir
buildArtifactsDirectory = layout.buildDirectory.dir("artifacts/de.itemis.mps.extensions.tests")
buildSolutionDescriptor = codeDir.file("build/solutions/de.itemis.mps.extensions.build/de.itemis.mps.extensions.build.msd")
buildFile = layout.buildDirectory.file("generated/tests/build.xml")

assembleAndCheckTask {
finalizedBy("failOnTestError")

doLast {
val reportDir = layout.buildDirectory.dir("junitreport").get()
ant.withGroovyBuilder {
"taskdef"(
"name" to "junitreport",
"classname" to "org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator",
"classpath" to mpsDefaults.antClasspath.asPath
)
"junitreport" {
"fileset"("dir" to "$buildDir", "includes" to "**/TEST*.xml")
"report"("format" to "frames", "todir" to reportDir)
}
println("JUnit report placed into file://$reportDir/index.html")
}
println("JUnit report placed into file://$reportDir/index.html")
}
}
}
Expand All @@ -234,12 +234,6 @@ tasks.withType<RunAnt>().configureEach {
}

// ___________________ utilities ___________________
tasks.register<Copy>("copyChangelog") {
from(codeDir.dir("solutions/de.itemis.mps.extensions.changelog/source_gen/de/itemis/mps/extensions/changelog"))
into(layout.settingsDirectory)
include("*.md")
}

tasks.register("failOnTestError") {
description = "evaluate junit result and fail on error"
doLast {
Expand Down Expand Up @@ -450,3 +444,36 @@ tasks.register<Remigrate>("remigrate") {
// not rerunnable until MPS-39315 is fixed
excludeModuleMigration("jetbrains.mps.baseLanguage.javadoc", 0)
}

val generateChangelog by tasks.registering(MpsGenerate::class) {
dependsOn(languages.generateTask)

javaLauncher = jbrToolchain.javaLauncher
mpsHome = mpsDefaults.mpsHome

environmentKind = EnvironmentKind.MPS

projectLocation = codeDir
pluginRoots.from(usedPluginRoots)

modules = listOf("de.itemis.mps.extensions.changelog")
}

val copyChangelog by tasks.registering {
dependsOn(generateChangelog)

doLast {
// Using a copy action here instead of making this task a Copy. Otherwise Gradle considers the entire project to
// be the output of this task (because the destination directory is the project root) and complains about
// implicit dependencies.
copy {
from(codeDir.dir("solutions/de.itemis.mps.extensions.changelog/source_gen/de/itemis/mps/extensions/changelog"))
into(layout.settingsDirectory)
include("*.md")
}
}
}

tasks.build {
dependsOn(copyChangelog)
}
5 changes: 3 additions & 2 deletions code/.mps/modules.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
<project version="4">
<component name="MPSProject">
<projectModules>
<modulePath path="$PROJECT_DIR$/alias-customization/languages/test.nl.f1re.mps.aliascustomization.demolang/test.nl.f1re.mps.aliascustomization.demolang.mpl" folder="alias-customization" />
<modulePath path="$PROJECT_DIR$/alias-customization/solutions/nl.f1re.mps.aliascustomization/nl.f1re.mps.aliascustomization.msd" folder="alias-customization" />
<modulePath path="$PROJECT_DIR$/alias-customization/solutions/test.nl.f1re.mps.aliascustomization/test.nl.f1re.mps.aliascustomization.msd" folder="alias-customization" />
<modulePath path="$PROJECT_DIR$/apache-commons/solutions/org.apache.commons/org.apache.commons.msd" folder="apache-commons" />
<modulePath path="$PROJECT_DIR$/batik/solutions/de.itemis.stubs.batik.msd" folder="" />
<modulePath path="$PROJECT_DIR$/blutil/languages/com.mbeddr.mpsutil.blutil.genutil/com.mbeddr.mpsutil.blutil.genutil.mpl" folder="blutil" />
Expand All @@ -14,7 +17,6 @@
<modulePath path="$PROJECT_DIR$/blutil/tests/test.com.mbeddr.mpsutil.blutil/test.com.mbeddr.mpsutil.blutil.msd" folder="blutil" />
<modulePath path="$PROJECT_DIR$/blutil/tests/test.ts.conceptswitch/test.ts.conceptswitch.msd" folder="blutil" />
<modulePath path="$PROJECT_DIR$/blutil/tests/test.ts.match/match.msd" folder="blutil" />
<modulePath path="$PROJECT_DIR$/build/solutions/allScripts/allScripts.msd" folder="build" />
<modulePath path="$PROJECT_DIR$/build/solutions/de.itemis.mps.extensions.build/de.itemis.mps.extensions.build.msd" folder="build" />
<modulePath path="$PROJECT_DIR$/celllayout/languages/de.itemis.mps.celllayout/de.itemis.mps.editor.celllayout.styles.mpl" folder="celllayout" />
<modulePath path="$PROJECT_DIR$/celllayout/languages/de.itemis.mps.editor.celllayout.sandboxlang/de.itemis.mps.editor.celllayout.sandboxlang.mpl" folder="celllayout" />
Expand All @@ -41,7 +43,6 @@
<modulePath path="$PROJECT_DIR$/conditional-editor/languages/de.slisson.mps.conditionalEditor/de.slisson.mps.conditionalEditor.mpl" folder="conditional-editor" />
<modulePath path="$PROJECT_DIR$/conditional-editor/solutions/de.slisson.mps.conditionalEditor.runtime/de.slisson.mps.conditionalEditor.runtime.msd" folder="conditional-editor" />
<modulePath path="$PROJECT_DIR$/conditional-editor/solutions/de.slisson.mps.conditionalEditor.sandbox/de.slisson.mps.conditionalEditor.sandbox.msd" folder="conditional-editor" />
<modulePath path="$PROJECT_DIR$/conditional-editor/solutions/test.de.slisson.mps.conditionalEditor/test.de.slisson.mps.conditionalEditor.msd" folder="conditional-editor" />
<modulePath path="$PROJECT_DIR$/debug/languages/de.itemis.mps.debug/de.itemis.mps.debug.mpl" folder="debug" />
<modulePath path="$PROJECT_DIR$/debug/solutions/de.itemis.mps.debug.runtime/de.itemis.mps.debug.runtime.msd" folder="debug" />
<modulePath path="$PROJECT_DIR$/devkits/de.q60.mps.genplan.virutalinterfaces_incremental.devkit/de.q60.mps.genplan.virutalinterfaces_incremental.devkit.devkit" folder="shadowmodels.examples.interpreter" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<model ref="r:233afdd2-5b93-4bb1-a8ae-806b32fb42a6(test.nl.f1re.mps.aliascustomization.demolang.generator.templates@generator)">
<persistence version="9" />
<languages>
<devkit ref="a2eb3a43-fcc2-4200-80dc-c60110c4862d(jetbrains.mps.devkit.templates)" />
</languages>
<imports />
<registry>
<language id="b401a680-8325-4110-8fd3-84331ff25bef" name="jetbrains.mps.lang.generator">
<concept id="1095416546421" name="jetbrains.mps.lang.generator.structure.MappingConfiguration" flags="ig" index="bUwia" />
</language>
<language id="ceab5195-25ea-4f22-9b92-103b95ca8c0c" name="jetbrains.mps.lang.core">
<concept id="1169194658468" name="jetbrains.mps.lang.core.structure.INamedConcept" flags="ngI" index="TrEIO">
<property id="1169194664001" name="name" index="TrG5h" />
</concept>
</language>
</registry>
<node concept="bUwia" id="3r2yrqnhHxY">
<property role="TrG5h" value="main" />
</node>
</model>

Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<model ref="r:d15993ba-7da5-46a9-b467-486db3994b31(test.nl.f1re.mps.aliascustomization.demolang.editor)">
<persistence version="9" />
<languages>
<use id="18bc6592-03a6-4e29-a83a-7ff23bde13ba" name="jetbrains.mps.lang.editor" version="15" />
<use id="aee9cad2-acd4-4608-aef2-0004f6a1cdbd" name="jetbrains.mps.lang.actions" version="4" />
<devkit ref="fbc25dd2-5da4-483a-8b19-70928e1b62d7(jetbrains.mps.devkit.general-purpose)" />
</languages>
<imports>
<import index="hx4v" ref="r:143d8fbb-9206-40d4-9eea-833943255ba9(test.nl.f1re.mps.aliascustomization.demolang.structure)" implicit="true" />
<import index="tpco" ref="r:00000000-0000-4000-0000-011c89590284(jetbrains.mps.lang.core.editor)" implicit="true" />
</imports>
<registry>
<language id="18bc6592-03a6-4e29-a83a-7ff23bde13ba" name="jetbrains.mps.lang.editor">
<concept id="1071666914219" name="jetbrains.mps.lang.editor.structure.ConceptEditorDeclaration" flags="ig" index="24kQdi" />
<concept id="1080736578640" name="jetbrains.mps.lang.editor.structure.BaseEditorComponent" flags="ig" index="2wURMF">
<child id="1080736633877" name="cellModel" index="2wV5jI" />
</concept>
<concept id="1078939183254" name="jetbrains.mps.lang.editor.structure.CellModel_Component" flags="sg" stub="3162947552742194261" index="PMmxH">
<reference id="1078939183255" name="editorComponent" index="PMmxG" />
</concept>
<concept id="1166049232041" name="jetbrains.mps.lang.editor.structure.AbstractComponent" flags="ng" index="1XWOmA">
<reference id="1166049300910" name="conceptDeclaration" index="1XX52x" />
</concept>
</language>
</registry>
<node concept="24kQdi" id="4I3JdQwH35A">
<ref role="1XX52x" to="hx4v:6eakByRhOlw" resolve="ChangeAlias" />
<node concept="PMmxH" id="4I3JdQwH35C" role="2wV5jI">
<ref role="PMmxG" to="tpco:2wZex4PafBj" resolve="alias" />
</node>
</node>
</model>

Loading