MPS 2021.1 Help

Project tool window

This tool window lets you look at your project from various viewpoints and perform the tasks such as creating new items (nodes, models, modules, and so on), opening nodes or files in the editor, navigating to the code fragment of interest, and more.

Most of the functions in this tool window are accessed as context menu commands in the content pane and via associated shortcuts.

Also, the view contains the Scratches and Consoles folder that lets you manage created scratch files, database consoles, and extension scripts.

Views

The tool window has several views:

  • Logical View. In this view, all the project nodes are shown organized logically into their containing modules, models and virtual folders.

  • File System. In this view, all the project files are shown organized by their physical location on the directory structure.

  • Favorites. In this view, the user-preferred project elements are shown.

To switch between views, press Alt+Right/ Alt+Left or select the desired view from the list on the title bar. You can also display each view in a separate tab: click Settings and disable the Group Tabs option.

To configure a view, use the corresponding options in the title bar context menu. The necessary options can also be accessed by clicking Settings on the title bar.

Preview files

There are two ways to preview files without opening each one in a separate tab:

  • Use the file preview popup — select a file in the Project tool window and press Space.

  • Enable the preview tab— click the Show Options Menu button and select Enable Preview Tab.

Show tree indent guides

In the Project tool window, you can display vertical lines that mark indent levels and help you better understand the hierarchy of the components in your project. To display these lines, enable Show tree indent guides on the Appearance and Behavior | Appearance page of the Settings/Preferences Ctrl+Alt+S.

Title bar context menu

The context menu that appears by right-clicking the title bar or clicking Settings, provides settings for project views.

The following table lists and briefly explains the available commands and options.

ItemShortcutDescription
Show Members

If this option is on, the nodes in the tree, when unfolded, will show the contained children, properties and references.

Folders Always on Top If the option is on, virtual folders are shown above the root nodes. Otherwise, all items are sorted alphabetically, and root nodes and virtual folders appear intermixed.
Sort Roots by Concept

Root nodes of the same concept will be grouped together inside a model.

Show @descriptor models in Generators

These models are normally hidded. This option makes them visible in the tree.

Group TabsIf this option is on, there is a list in the left-hand part of the title bar from which you can select the necessary view. If this option is off, the views are represented by tabs which appear in the left-hand part of the title bar.
show views as tabs
View ModeThis option lets you control general appearance and behavior of the tool window.
Move toTo associate the tool window with a different tool window bar, select this command, and then select the destination tool window bar (Top, Left, Bottom or Right ).
Resize

To resize the tool window by moving one of its borders, select this command, and then select the necessary Stretch to option.

Note that this command is not available for the floating mode.

Remove from Sidebar

This command hides the tool window, removes the button for showing and hiding the tool window and removes the tool window from the quick access menu (tb shown or tb hidden ).

To open the tool window again (and restore the associated features), use the main menu: View | Tool Windows | <Window Name> or press Alt+1.

HideShift+EscapeHide the tool window.

Title bar buttons

ItemShortcutDescription
Select Opened File Click this icon to navigate from a node open in the editor to the containing root node in the Project tool window.

This icon is not available if the Always Select Opened File option is currently on.

collapse allCtrl+NumPad -Collapse all the nodes.
settings Use this button to open a menu whose options are a subset of the title bar context menu.
Hide tool windowShift+Escape

Hide the tool window Shift+Escape.

To hide all the tool windows, press Ctrl+Shift+F12.

Context menu commands for the content pane items

The context menu of an item provides access to all the functions available for this item.

ItemAvailable onDescription
NewProject rootUse this command to create new modules in the project.
Make ProjectProject rootMakes all modified modules in the project.
Rebuild ProjectProject rootRebuilds all modules in the project.
Rename Project...Project rootAllows you to rename the project.
Check ProjectProject rootRuns a model checker against all modules.
Optimize ImportsProject rootAutomatically removes imports that are not necessary.
Fix Module ImportsProject rootAutomatically adds imports of modules that are missing.
Compile Java FilesProject rootCompiles Java sources that have changed.
Recompile Java FilesProject rootRe-compiles all Java sources.
Clean Compiled Java FilesProject rootRemoves all compiled Java code.
Run 'All Tests in Project'Project rootCollects all tests in the project and runs them.
Debug 'All Tests in Project'Project rootCollects all tests in the project and runs them in a debugger.
Create 'All Tests in Project'Project rootCreates a run configuration for running all tests in the project.
Project ModulesProject rootAllows you to add or remove modules to the project.
NewA Folder of ModulesAllows you to create new modules in the folder.
Make Selected ModulesA Folder of ModulesAllows you to make the modified modules in the folder.
Rebuild Selected ModulesA Folder of ModulesAllows you to rebuild the modules in the folder.
RenameA Folder of ModulesRenames the folder.
Check Selected ModulesA Folder of ModulesRuns a model checker against the selected modules.
NewModuleAllows you to create new models in the module.
MakeModuleAllows you to make the modified models in the module.
RebuildModuleAllows you to rebuild all models in the module.
CheckModuleRuns a model checker against the module.
Optimize ImportsModuleRemoves unused imports from the module.
AnalyzeModuleAllows you to analyze the structure and dependencies of the module.
DeleteModuleDeletes the module from the project and optionally also from disk.
Copy Module NameModuleCopies the module name into the clipboard.
Set Virtual FolderModuleAllows you to organize modules into virtual folders. For hierarchical names use names with dots.
RenameModuleAllows you to rename the module.
CloneModuleCreates a clone of the module.
ScriptsModuleAllows you to run arbitrary automated scripts against the code in that module.
Compile Java FilesModuleCompiles Java sources in the module that have changed.
Recompile Java FilesModuleRe-compiles all Java sources in the module.
Clean Compiled Java FilesModuleRemoves all compiled Java code from the module.
Local HistoryModuleAllows you to view, compare and store items in the local history of the module.
GitModuleAllows you to trigger Git commands on items belonging to the module.
Run 'Tests in ...'ModuleCollects all tests in the module and runs them.
Debug 'Tests in ...'ModuleCollects all tests in the module and runs them in a debugger.
Create 'Tests in ...'ModuleCreates a run configuration for running all tests in the module.
Find UsagesModuleAllows you to search for usages of code of the module.
Find Concepts UsagesModuleAllows you to search for instances of concepts defined in the module (only applicable to languages).
Module PropertiesModuleAllows you to view and change dependencies and properties of the module.
CheckDevKitRuns a model checker against the DevKit.
Analyze ClasspathDevKitAllows you to analyze classpath as it is set for the DevKit.
Delete DevKit...DevKitDeletes the DevKit.
Copy Module NameDevKitCopies the module name into the clipboard.
Set Virtual FolderDevKitAllows you to organize modules into virtual folders. For hierarchical names use names with dots.
Rename DevKitDevKitAllows you to rename the DevKit.
Find UsagesDevKitAllows you to search for usages of code of the DevKit.
Module PropertiesDevKitAllows you to view and change dependencies and properties of the DevKit, including the included solutions and languages.
NewModelAllows you to create new root nodes in the model.
Make ModelModelAllows you to make the model if it has changed.
Rebuild ModelModelAllows you to unconditionally rebuild all nodes in the model.
Preview Generated TextModelAllows you to see the code that gets generated for the nodes in the model.
Show Generation PlanModelAllows you to inspect the generation plan outrlined by the generator for the model..
PasteModelPastes a root node into the model from the clipboard.
Paste as Java ClassModelPastes a root node of ClassConcept into the model using the text from the clipboard as a Java source.
Get Model Contents from SourceModelImport a Java package as MPS model with BaseLanguage code.
Resolve Stub References to MPS CodeModelRe-resolve references to point to a newly imported BaseLanguage code instead of to stub models.
Delete ModelModelDeletes the model from the module.
Safe Delete ModelModelDeletes the model from the module. If there are some usages of that model present in other models, the user is prompted to review those before deleting the model.
Clone ModelModelCreates a clone of the model.
Copy Model NameModelCopies the model name into the clipboard.
Optimize ImportsModelRemoves unused imports from the model.
Fix Model ImportsModelAdd imports that are missing from the model.
Convert to File-Per-Root formatModelChanges the persistence format of the model from File-per-model to File-per-root.
Analyze Model DependenciesModelAllows you to analyze the dependencies of the model and locate them in the code.
Check ModelModelRuns a model checker against the model.
Find UsagesModelAllows you to search for usages of code of the model.
RefactoringModelGroups actions that can rename or move the model.
Revert Memory ChangesModelAllows you to revert back to the version of the model that is stored on disk.
Show Differences with Model on DiskModelAllows you to view the differences in code between the memory and the disk versions.
Local HistoryModelAllows you to view, compare and store items in the local history of the model.
GitModelAllows you to trigger Git commands on items belonging to the model.
ScriptsModelAllows you to run arbitrary automated scripts against the code in the model.
Run 'Tests in ...'ModelCollects all tests in the model and runs them.
Debug 'Tests in ...'ModelCollects all tests in the model and runs them in a debugger.
Create 'Tests in ...'ModelCreates a run configuration for running all tests in the model.
HelpModelShows a help entry for the model, if available.
Model PropertiesModelAllows you to view and change dependencies and properties of the model.
NewVirtual FolderAllows you to create new nodes in that virtual folder.
PasteVirtual FolderAllows you to paste nodes into that virtual folder.
RenameVirtual FolderAllows you to rename a virtual folder.
Preview Generated TextNodeAllows you to see the code that gets generated for the selected node.
Set Virtual PackageNodeAllows you to set a dot-separated string that specifies a virtual folder for the selected nodes.
Expand AllNodeFully expands all nodes inside the selected root node. This option has no effect if Show Members setting for the Project Tool Window is not selected.
CopyNodeUse this command to copy the selected node or nodes to the clipboard.
PasteNodeUse this command to paste a node or nodes from the clipboard into the model.
CutNodeUse this command to cut the selected node or nodes to the clipboard.
Copy ReferenceNodeUse this command to copy a newly created reference to the selected node or nodes to the clipboard.
Copy Node FQNameNodeUse this command to copy the fully qualified name of the selected node to the clipboard.
Copy Node Reference as URLNodeUse this command to copy a reference to the selected node as URL to the clipboard. The URL will resolve in a browser to a HTTP request that points to the localhost server running inside MPS. The internal server will return an html-formatted presentation of the original node.
DeleteNodeDeletes the node from the model.
Safe DeleteNodeDeletes the node from the model. If there are some usages of that node present in some models, the user is prompted to review those before deleting the node.
Clone RootNodeCreates a clone of the root node in the same model.
Show Node in ExplorerNodeOpens the Node Explorer tool window, which shows the tree representing the node.
Language DebugNodeGroups other functionality, typically used when exploring or debugging language definitions.
Find UsagesNodeAllows you to search for usages of node.
Find Usages SettingsNodePops up a dialog that allows you to configure the search for usages.
RefactoringNodeGroups actions that can rename or move the node.
Show Help for NodeNodeShows a help entry for the node, if available.
Show Help for Root NodeNodeShows a help entry for the root node, if available.

Root node status highlights

If VCS integration is enabled for the current project, MPS uses colors to denote VCS status of all root nodes in the Project tool window. The following table presents information about the meaning of the colors.

ColorFile StatusDescription
Color sample: dark green #0A7700Added The file in the active changelist is scheduled for addition to the repository.
Color sample: green #0EAA00Added in not active changelist The file in an inactive changelist is scheduled for addition to the repository. This file status is available if the Highlight files from non-active changelists option is enabled in Settings/Preferences | Version Control | Changelists.
Color sample: red #FF0000Changelist conflict The file in an inactive changelist has been modified in the active changelist. In this case, a new dialog will open prompting you to resolve the changelist conflict. This file status is available if all options are enabled in Settings/Preferences | Version Control | Changelists.
Color sample: dark green #0A7700Copied If a file is a copy of another file, its metadata is tracked, and such a file is marked as copied.
Color sample: grey #616161Deleted The file is scheduled for deletion from the repository.
Color sample: dull purple #773895Deleted from file system The file has been deleted locally, but hasn't been scheduled for deletion, and it still exists in the repository.
Color sample: light grayish blue #8AA4C8Have changed descendants If a file is modified, the IDE will recursively highlight all directories containing that file. This status is available if the Show directories with changed descendants option is enabled in Settings/Preferences | Version Control.
Color sample: bright blue #3264B4Have immediate changed children If a file is modified, the IDE will highlight its parent directory. This status is available if the Show directories with changed descendants option is enabled in Settings/Preferences | Version Control.
Color sample: dark olive #727238Ignored A file is intentionally untracked by VCS.
Color sample: purple #7503DCMerged The file is merged by your VCS as a result of an update.
Color sample: red #FF0000Merged with conflicts During the last update, the file has been merged with conflicts.
Color sample: red #FF0000Merged with property conflicts During the last update, the IDE has detected differences between the properties of the local file and its server version.
Color sample: red #FF0000Merged with text and property conflicts Text and property conflicts happen when two or more developers modify the same lines of a file and the same file properties.
Color sample: bright navy #0032A0Modified The file has changed since the last synchronization.
Color sample: blue #0047E4Modified in not active changelist The file in an inactive changelist has been modified. This file status is available if the Highlight files from non-active changelists option is enabled in Settings/Preferences | Version Control | Changelists.
Color sample: Olive #7C7C00Obsolete The file should no longer be in your working copy of the repository.
Color sample: teal #007C7CRenamed Since the last update, the file has been renamed.
Color sample: dark cyan #08978FSwitched [SVN] The file is taken from a different branch than the whole project.
Color sample: brown #993300(Unknown) Unversioned The file exists locally, but is not in the repository, and is not scheduled for addition.
Color sample: black None (default color)Up to dateThe file hasn't been changed.
ColorFile StatusDescription
Color sample: dull green #629755AddedThe file in the active changelist is scheduled for addition to the repository.
Color sample: dull green #629755Added in not active changelistThe file in an inactive changelist is scheduled for addition to the repository. This file status is available if the Highlight files from non-active changelists option is enabled in Settings/Preferences | Version Control | Changelists.
Color sample: dull red #D5756CChangelist conflictThe file in an inactive changelist has been modified in the active changelist. In this case, a new dialog will open prompting you to resolve the changelist conflict. This file status is available if all options are enabled in Settings/Preferences | Version Control | Changelists.
Color sample: green #0A7700CopiedIf a file is a copy of another file, its metadata is tracked, and such a file is marked as copied.
Color sample: grey #6C6C6CDeletedThe file is scheduled for deletion from the repository.
Color sample: dull purple #6C6C6CDeleted from file systemThe file has been deleted locally, but hasn't been scheduled for deletion, and it still exists in the repository.
Color sample: light blue #6897BBHave changed descendantsIf a file is modified, the IDE will recursively highlight all directories containing that file. This status is available if the Show directories with changed descendants option is enabled in Settings/Preferences | Version Control.
Color sample: light blue #6897BBHave immediate changed childrenIf a file is modified, the IDE will highlight its parent directory. This status is available if the Show directories with changed descendants option is enabled in Settings/Preferences | Version Control.
Color sample: light olive #848504IgnoredA file is intentionally untracked by VCS.
Color sample: light purple #9876AAMergedThe file is merged by your VCS as a result of an update.
Color sample: dull red #D5756CMerged with conflictsDuring the last update, the file has been merged with conflicts.
Color sample: dull red #D5756CMerged with property conflictsDuring the last update, the IDE has detected differences between the properties of the local file and its server version.
Color sample: dull red #D5756CMerged with text and property conflictsText and property conflicts happen when two or more developers modify the same lines of a file and the same file properties.
Color sample: light blue #6897BBModifiedThe file has changed since the last synchronization.
Color sample: light blue #6897BBModified in not active changelistThe file in an inactive changelist has been modified. This file status is available if the Highlight files from non-active changelists option is enabled in Settings/Preferences | Version Control | Changelists.
Color sample: white None (default color)ObsoleteThe file should no longer be in your working copy of the repository.
Color sample: strong cyan #3A8484RenamedSince the last update, the file has been renamed.
Color sample: white None (default color)Switched[SVN] The file is taken from a different branch than the whole project.
Color sample: soft red #D1675A(Unknown) UnversionedThe file exists locally, but is not in the repository, and is not scheduled for addition.
Color sample: white None (default color)Up to dateThe file hasn't been changed.
ColorFile StatusDescription
Color sample: green #62CC47AddedThe file in the active changelist is scheduled for addition to the repository.
Color sample: green #62CC47Added in not active changelistThe file in an inactive changelist is scheduled for addition to the repository. This file status is available if the Highlight files from non-active changelists option is enabled in Settings/Preferences | Version Control | Changelists.
Color sample: dull red #FF6666Changelist conflictThe file in an inactive changelist has been modified in the active changelist. In this case, a new dialog will open prompting you to resolve the changelist conflict. This file status is available if all options are enabled in Settings/Preferences | Version Control | Changelists.
Color sample: green #62CC47CopiedIf a file is a copy of another file, its metadata is tracked, and such a file is marked as copied.
Color sample: orange #ED864ADeletedThe file is scheduled for deletion from the repository.
Color sample: orange #ED864ADeleted from file systemThe file has been deleted locally, but hasn't been scheduled for deletion, and it still exists in the repository.
Color sample: vivid cyan #4FF0FFHave changed descendantsIf a file is modified, the IDE will recursively highlight all directories containing that file. This status is available if the Show directories with changed descendants option is enabled in Settings/Preferences | Version Control.
Color sample: vivid cyan #4FF0FFHave immediate changed childrenIf a file is modified, the IDE will highlight its parent directory. This status is available if the Show directories with changed descendants option is enabled in Settings/Preferences | Version Control.
Color sample: light olive #A9B837IgnoredA file is intentionally untracked by VCS.
Color sample: light purple #ED94FFMergedThe file is merged by your VCS as a result of an update.
Color sample: dull red #FF6666Merged with conflictsDuring the last update, the file has been merged with conflicts.
Color sample: dull red #FF6666Merged with property conflictsDuring the last update, the IDE has detected differences between the properties of the local file and its server version.
Color sample: dull red #FF6666Merged with text and property conflictsText and property conflicts happen when two or more developers modify the same lines of a file and the same file properties.
Color sample: vivid cyan #4FF0FFModifiedThe file has changed since the last synchronization.
Color sample: vivid cyan #4FF0FFModified in not active changelistThe file in an inactive changelist has been modified. This file status is available if the Highlight files from non-active changelists option is enabled in Settings/Preferences | Version Control | Changelists.
Color sample: white None (default color)ObsoleteThe file should no longer be in your working copy of the repository.
Color sample: vivid cyan #4FF0FFRenamedSince the last update, the file has been renamed.
Color sample: white None (default color)Switched[SVN] The file is taken from a different branch than the whole project.
Color sample: soft red D1675A(Unknown) UnversionedThe file exists locally, but is not in the repository, and is not scheduled for addition.
Color sample: white None (default color)Up to dateThe file hasn't been changed.
Last modified: 14 June 2021