Skip to content

Commit

Permalink
Merge maintenance/mps20222 into merge/mps20213
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] authored Mar 11, 2024
2 parents 44758f8 + 4f2ee27 commit 5f74c38
Show file tree
Hide file tree
Showing 225 changed files with 40,860 additions and 23,172 deletions.
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,15 @@ The project does _not_ follow Semantic Versioning and the changes are documented

## February 2024

### Added

- com.mbeddr.mpsutil.blutil: A new ifInstanceOf statement was added that supports else if and else branches.

### Fixed

- de.itemis.mps.editor.diagram: Avoid unnecessary layouting of sub-diagrams.
- de.itemis.mps.editor.diagram: A layouting bug related to ports was fixed.

### Changed

- com.mbeddr.mpsutil.editor.querylist: Dynamic generated nodes (without a model) can now be used in query lists if `read-only` is set to true.
Expand All @@ -34,23 +43,45 @@ The project does _not_ follow Semantic Versioning and the changes are documented

- com.mbeddr.mpsutil.modellisteners: The newly supported interface listeners are now backward compatible and doesn't require regenerating the listener aspects anymore.

### Changed

- de.itemis.editor.diagram: The ELK dependencies were updated to the latest version.
- de.itemis.mps.debug: The editor debug expressions were moved to a new plugin to avoid introducing a dependency to the MPS console in the celllayout language.

## December 2023

### Fixed

- de.itemis.editor.diagram: Further improvements to make the auto-layouter more stable.
- de.itemis.editor.diagram: Tooltips for edge and vertex buttons work again.
- de.itemis.editor.diagram: The size of diagram cells is now recalculated before layouting the ports to fix some layout issues.
- The size of diagram cells is now recalculated before layouting the ports to fix some layout issues.

### Added

- A new language `de.itemis.mps.statistics` was added that adds a new menu `MPS Statistics` to the `Tools` menu. The containing action writes a file `dependencies.txt` to the root folder. It contains all the used dependencies of the current project.
- de.slisson.mps.tables: tables now support a new property `column UI actions (experimental)`: This property adds actions to the MPS toolbar to add a new column above/below the current column or to delete the current column. These actions only work for simple tables that are based on rows (default: *false*).
- de.slisson.mps.richtext: The shortcuts are now documented.
- A new action `Copy Cell Reference` is available in the editor menu in `Language Debug` that creates a reference to the current select editor cell. It can be pasted into the MPS console to debug editor cells. It can be activated through ctrl/cmd+alt+c.
- A new action `Copy Editor Component Reference` is available in the editor menu in `Language Debug` that creates a reference to the current editor component. It can be pasted into the MPS console to debug editor cells. To refer to the current opened editor component, use the expression `#currentEditorComponent` in the MPS console.
- de.itemis.mps.editor.pagination: The ability to search was added.

### Fixed

- The performance of the language `de.itemis.mps.linenumbers` was improved.

### Changed

- de.slisson.mps.richtext: The code completion entries of word cells are now clearer and unnecessary entries were removed.
- mpsutil.intentions: Intentions available in read-only cells are not available anymore when the annotation showIntentionInReadyOnlyCell is not added.
- de.itemis.mps.editor.pagination: The UI was cleaned up.

## November 2023

### Fixed

- app.jar from the platform lib folder is not exported to platform_lib_app/app.jar anymore.

### Changed

- mpsutil.modellisteners: listeners on interface concepts are now supported.
Expand All @@ -62,6 +93,7 @@ The project does _not_ follow Semantic Versioning and the changes are documented
- mpsutil.intentions: a new style attribute `intentions-in-read-only-cell` is now available to allow intentions in read-only cells. Single intentions can also be enabled or disabled in those cells through the intention "Toggle Show Intention In Read-Only Cell Annotation".
- com.mbeddr.mpsutil.editor.querylist: Default editor cells now support style attributes.
- de.slisson.mps.tables: tables now support a new property `row UI actions (experimental)`: This property adds actions to the MPS toolbar to add a new row above/below the current row or to delete the current row. These actions only work for simple tables that are based on rows (default: *false*).
- de.itemis.mps.editor.pagination: The page number can now be entered directly.

## October 2023

Expand Down
13 changes: 8 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# MPS Extensions

<a href="https://build.mbeddr.com/project.html?projectId=Mbeddr2_Mbeddr_Gradle_MpsExtensions&tab=projectOverview"><img src="https://build.mbeddr.com/app/rest/builds/buildType:(id:Mbeddr2_Mbeddr_Gradle_MpsExtenstions)/statusIcon"/></a>
![JetBrains MPS 2021.3.5](https://img.shields.io/badge/JetBrains%20MPS-%E2%89%A42021.3.5-orange)
![JetBrains MPS 2022.2.2](https://img.shields.io/badge/JetBrains%20MPS-2022.2.2-orange)

The MPS extensions aim to ease language development within MPS. They are maintained by itemis, JetBrains, and the open source community, and its development is closely aligned with the development of MPS.

Join the dicussion on [Slack](https://slack-mps.jetbrains.com) in the #mps-extensions room.
Join the discussion on [Slack](https://slack-mps.jetbrains.com) in the #mps-extensions room.

## Building

The MPS extensions can be built with gradle. In order to build the source code, all you need is a Java 11 JDK. Of course, if you want to hack on the MPS extensions, you need MPS. The MPS version that is currently used is in the [build.gradle](https://github.com/JetBrains/MPS-extensions/blob/master/build.gradle#L61) file.
The MPS extensions can be built with gradle. To build the source code, all you need is a Java 11 JDK. Of course, if you want to hack on the MPS extensions, you need MPS. The MPS version that is used is in the [build.gradle](https://github.com/JetBrains/MPS-extensions/blob/master/build.gradle#L61) file.

Run the following commands to build the project:

Expand All @@ -31,9 +31,12 @@ See the [building](https://jetbrains.github.io/MPS-extensions/building/) page of

## Documentation

For more information on the individual extensions, see our [documentation](https://jetbrains.github.io/MPS-extensions).
For more information on the individual extensions, see our [documentation](https://jetbrains.github.io/MPS-extensions). The source of the documentation is located in the `docs` folder of this repository, if you would like to contribute to it. To preview the documentation run:

The source of the documentation is located in the `docs` folder of this repository, in case you would like to contribute to it.
```bash
./gradlew previewDocs # Mac and Linux
gradlew.bat previewDocs # Windows
```

## Contributing

Expand Down
106 changes: 75 additions & 31 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ import de.itemis.mps.gradle.*

import java.time.LocalDateTime

apply plugin: 'download-jbr'

downloadJbr {
jbrVersion = '17.0.6-b469.82'
}

// detect if we are in a CI build
if (project.hasProperty("forceCI")) {
ext.ciBuild = true
Expand All @@ -21,31 +27,6 @@ if (project.hasProperty("forceCI")) {
}
}

def jdk_home

if (ext.has('java11_home')) {
jdk_home = ext.get('java11_home')
} else if (System.getenv('JB_JAVA11_HOME') != null) {
jdk_home = System.getenv('JB_JAVA11_HOME')
} else {
def expected = JavaVersion.VERSION_11
if (JavaVersion.current() != expected) {
throw new GradleException("This build script requires Java 11 but you are currently using ${JavaVersion.current()}.\nWhat you can do:\n"
+ " * Use project property java11_home to point to the Java 11 JDK.\n"
+ " * Use environment variable JAVA11_HOME to point to the Java 11 JDK\n"
+ " * Run Gradle using Java 11")
}
jdk_home = System.getProperty('java.home')
}

// Check JDK location
if (!new File(jdk_home, "lib").exists()) {
throw new GradleException("Unable to locate JDK home folder. Detected folder is: $jdk_home")
}

ext.jdk_home = jdk_home
logger.info 'Using JDK at {}', jdk_home

// Default repository credentials
if (!project.hasProperty('nexusUsername')) {
ext.nexusUsername = ''
Expand All @@ -56,9 +37,9 @@ logger.info 'Repository username: {}', project.nexusUsername
// Dependency versions

// major version, e.g. '2021.1', '2021.2'
ext.mpsMajor = '2021.3'
ext.mpsMajor = '2022.2'
// optional minor/bugfix number (not added to the final build version)
ext.mpsMinor = '5'
ext.mpsMinor = '2'
// e.g. Beta, EAP, RC
ext.mpsReleaseType = ''

Expand Down Expand Up @@ -176,15 +157,44 @@ task copyModelApi() {

// -----------------------------------------

// Ant support

configurations {
ant_lib
diagram_lib
}

dependencies {
ant_lib "org.apache.ant:ant-junit:1.10.9"

def elkVersion = "0.9.0"
diagram_lib ("org.eclipse.elk:org.eclipse.elk.alg.common:$elkVersion") {
transitive = false
}
diagram_lib ("org.eclipse.elk:org.eclipse.elk.alg.layered:$elkVersion") {
transitive = false
}
diagram_lib ("org.eclipse.elk:org.eclipse.elk.alg.mrtree:$elkVersion") {
transitive = false
}
diagram_lib ("org.eclipse.elk:org.eclipse.elk.core:$elkVersion") {
transitive = false
}
diagram_lib ("org.eclipse.elk:org.eclipse.elk.graph:$elkVersion") {
transitive = false
}
diagram_lib ("org.eclipse.emf:org.eclipse.emf.common:2.29.0") {
transitive = false
}
diagram_lib ("org.eclipse.emf:org.eclipse.emf.ecore:2.35.0") {
transitive = false
}
diagram_lib ("org.eclipse.emf:org.eclipse.emf.ecore.xmi:2.36.0") {
transitive = false
}
}

configurations.diagram_lib.attributes.attribute(Attribute.of('org.gradle.jvm.environment', String), 'standard-jvm')

ext.buildScriptClasspath = project.configurations.ant_lib.fileCollection({
true
})
Expand All @@ -206,14 +216,48 @@ File scriptFile(String relativePath) {

def defaultScriptArgs = [mps_home, build_dir, artifacts_dir, ext.buildDate, ext.pluginVersion]

afterEvaluate {
project.ext["itemis.mps.gradle.ant.defaultJavaExecutable"] = tasks.getByName('downloadJbr').javaExecutable
def jdk_home = null
if (ext.has('java17_home')) {
jdk_home = ext.get('java17_home')
} else if (System.getenv('JB_JAVA17_HOME') != null) {
jdk_home = System.getenv('JB_JAVA17_HOME')
}
if(jdk_home != null) {
if (!new File(jdk_home, "lib").exists()) {
throw new GradleException("Unable to locate JDK home folder. Detected folder is: $jdk_home")
} else {
ext["itemis.mps.gradle.ant.defaultJavaExecutable"] = new File(jdk_home, 'bin/java')
}
}
}

// enables https://github.com/mbeddr/mps-gradle-plugin#providing-global-defaults
ext["itemis.mps.gradle.ant.defaultScriptArgs"] = defaultScriptArgs
ext["itemis.mps.gradle.ant.defaultScriptClasspath"] = buildScriptClasspath
ext["itemis.mps.gradle.ant.defaultJavaExecutable"] = new File(jdk_home, 'bin/java')

task resolved_diagram_dependencies(type: Copy) {
from configurations.diagram_lib
into file('code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/lib')

// Strip version numbers from file names
rename { filename ->
def ra = configurations.diagram_lib.resolvedConfiguration.resolvedArtifacts.find { ResolvedArtifact ra -> ra.file.name == filename }
String finalName
if (ra.classifier != null) {
finalName = "${ra.name}-${ra.classifier}.${ra.extension}"
} else {
finalName = "${ra.name}.${ra.extension}"
}
return finalName
}
}

task build_allScripts(type: BuildLanguages, dependsOn: [
'downloadJbr',
resolveMps,
resolved_diagram_dependencies,
copyModelApi,
]) {
script "$rootDir/scripts/build.xml"
Expand Down Expand Up @@ -274,13 +318,13 @@ dependencies {
}

task packageAllScripts(type: Zip, dependsOn: run_tests) {
baseName 'de.itemis.mps.extensions.allScripts'
archiveBaseName = 'de.itemis.mps.extensions.allScripts'
from artifactsDir
include 'de.itemis.mps.extensions.allScripts/**'
}

task packageExtensions(type: Zip, dependsOn: run_tests) {
baseName 'de.itemis.mps.extensions'
archiveBaseName = 'de.itemis.mps.extensions'
from artifactsDir
include 'de.itemis.mps.extensions/**'
}
Expand Down
2 changes: 1 addition & 1 deletion code/.mps/migration.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
<entry key="jetbrains.mps.ide.mpsmigration.v_2019_3.DefaultFacetExplicitPersistence" value="executed" />
<entry key="jetbrains.mps.ide.mpsmigration.v_2021_2.SplitMPSCoreStub" value="executed" />
<entry key="jetbrains.mps.ide.mpsmigration.v_2021_3.ExtractMPSBootStubs" value="executed" />
<entry key="project.migrated.version" value="213" />
<entry key="project.migrated.version" value="222" />
</component>
</project>
9 changes: 6 additions & 3 deletions code/.mps/modules.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
<modulePath path="$PROJECT_DIR$/blutil/tests/test.com.mbeddr.mpsutil.blutil.doc/test.com.mbeddr.mpsutil.blutil.doc.msd" folder="blutil" />
<modulePath path="$PROJECT_DIR$/blutil/tests/test.com.mbeddr.mpsutil.blutil.genutil.lang/test.com.mbeddr.mpsutil.blutil.genutil.lang.mpl" folder="blutil" />
<modulePath path="$PROJECT_DIR$/blutil/tests/test.com.mbeddr.mpsutil.blutil.genutil/test.com.mbeddr.mpsutil.blutil.genutil.msd" folder="blutil" />
<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" />
Expand All @@ -27,6 +28,8 @@
<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$/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" />
<modulePath path="$PROJECT_DIR$/devkits/de.q60.mps.incremental.devkit/de.q60.mps.incremental.devkit.devkit" folder="shadowmodels.incremental" />
<modulePath path="$PROJECT_DIR$/diagram/devkits/de.itemis.mps.editor.diagram.devkit.devkit" folder="diagram" />
Expand All @@ -50,8 +53,8 @@
<modulePath path="$PROJECT_DIR$/grammarcells/solutions/com.mbeddr.mpsutil.grammarcells.runtime/com.mbeddr.mpsutil.grammarcells.runtime.msd" folder="grammarcells" />
<modulePath path="$PROJECT_DIR$/grammarcells/solutions/com.mbeddr.mpsutil.grammarcells.sandbox/com.mbeddr.mpsutil.grammarcells.sandbox.msd" folder="grammarcells" />
<modulePath path="$PROJECT_DIR$/grammarcells/solutions/com.mbeddr.mpsutil.grammarcells.tests/com.mbeddr.mpsutil.grammarcells.tests.msd" folder="grammarcells" />
<modulePath path="$PROJECT_DIR$/hacks/languages/de.itemis.mps.nativelibs/de.itemis.mps.nativelibs.mpl" folder="hacks" />
<modulePath path="$PROJECT_DIR$/hacks/languages/de.itemis.mps.hacks.xmodelgen/de.itemis.mps.hacks.xmodelgen.mpl" folder="hacks" />
<modulePath path="$PROJECT_DIR$/hacks/languages/de.itemis.mps.nativelibs/de.itemis.mps.nativelibs.mpl" folder="hacks" />
<modulePath path="$PROJECT_DIR$/hacks/languages/de.slisson.mps.reflection/de.slisson.mps.reflection.mpl" folder="hacks" />
<modulePath path="$PROJECT_DIR$/hacks/solutions/de.itemis.mps.nativelibs.loader/de.itemis.mps.nativelibs.loader.msd" folder="hacks" />
<modulePath path="$PROJECT_DIR$/hacks/solutions/de.slisson.mps.hacks.editor/de.slisson.mps.hacks.editor.msd" folder="hacks" />
Expand Down Expand Up @@ -188,15 +191,15 @@
<modulePath path="$PROJECT_DIR$/tables/languages/de.slisson.mps.tables/sandbox/de.slisson.mps.tables.sandbox.msd" folder="tables" />
<modulePath path="$PROJECT_DIR$/tables/solutions/de.slisson.mps.testutils/de.slisson.mps.testutils.msd" folder="tables" />
<modulePath path="$PROJECT_DIR$/tables/solutions/test.de.slisson.mps.tables/test.de.slisson.mps.tables.msd" folder="tables" />
<modulePath path="$PROJECT_DIR$/third-party/solutions/MPS.ThirdParty/MPS.ThirdParty.msd" folder="third-party" />
<modulePath path="$PROJECT_DIR$/third-party/solutions/MPS.ThirdParty/MPS.ThirdParty.msd" folder="3rd-party" />
<modulePath path="$PROJECT_DIR$/tooltips/solutions/de.itemis.mps.tooltips.runtime/de.itemis.mps.tooltips.runtime.msd" folder="tooltips" />
<modulePath path="$PROJECT_DIR$/treenotation/com.mbeddr.mpsutil.treenotation.runtime/com.mbeddr.mpsutil.treenotation.runtime.msd" folder="treenotation" />
<modulePath path="$PROJECT_DIR$/treenotation/com.mbeddr.mpsutil.treenotation.sandbox/com.mbeddr.mpsutil.treenotation.sandbox.msd" folder="treenotation" />
<modulePath path="$PROJECT_DIR$/treenotation/com.mbeddr.mpsutil.treenotation.sandboxlang/com.mbeddr.mpsutil.treenotation.sandboxlang.mpl" folder="treenotation" />
<modulePath path="$PROJECT_DIR$/treenotation/com.mbeddr.mpsutil.treenotation.styles/com.mbeddr.mpsutil.treenotation.styles.mpl" folder="treenotation" />
<modulePath path="$PROJECT_DIR$/treenotation/com.mbeddr.mpsutil.treenotation/com.mbeddr.mpsutil.treenotation.mpl" folder="treenotation" />
<modulePath path="$PROJECT_DIR$/utils/solutions/de.itemis.mps.utils.serializer.xml/de.itemis.mps.utils.serializer.xml.msd" folder="utils" />
<modulePath path="$PROJECT_DIR$/utils/solutions/de.itemis.mps.noderversioning.sandbox/de.itemis.mps.noderversioning.sandbox.msd" folder="nodeversioning" />
<modulePath path="$PROJECT_DIR$/utils/solutions/de.itemis.mps.utils.serializer.xml/de.itemis.mps.utils.serializer.xml.msd" folder="utils" />
<modulePath path="$PROJECT_DIR$/widgets/languages/de.itemis.mps.editor.bool.demolang/de.itemis.mps.editor.bool.demolang.mpl" folder="widgets" />
<modulePath path="$PROJECT_DIR$/widgets/languages/de.itemis.mps.editor.bool/de.itemis.mps.editor.bool.mpl" folder="widgets" />
<modulePath path="$PROJECT_DIR$/widgets/languages/de.itemis.mps.editor.collapsible.testlang/de.itemis.mps.editor.collapsible.testlang.mpl" folder="widgets" />
Expand Down
Loading

0 comments on commit 5f74c38

Please sign in to comment.