MPS 2021.1 Help

Differences viewer for files

Project tool window | context menu of a file | Compare File with Editor
Project tool window | context menu of a file | Compare Files
Version Control/Commit tool window | Local Changes tab | Icons actions diff
Version Control tool window | context menu of a folder or file | Show Diff

This dialog is displayed when you compare two files or two versions of a file (local changes or changes between local files and their revisions in a remote repository). You can compare files of any types, including binaries and .jar files. To open the dialog, select two files to compare or a file to compare its versions and press Ctrl+D.

The differences viewer provides a powerful editor that enables code completion, live templates, and other features.

Diff & Merge viewer

ItemTooltip and ShortcutDescription
the Previous Difference button/ the Next Difference buttonPrevious Difference / Next Difference Shift+F7 F7

Jump to the next or previous difference.

When the last or first difference is reached, MPS suggests to click the arrow buttons F7/ Shift+F7 once more and compare other files, depending on the Go to the next file after reaching last change option in the Differences Viewer settings.

This behavior is supported only when the Differences Viewer is invoked from the Commit tool window Alt+0.

the Back button
the Forward button
Compare Previous/Next File
Alt+LeftAlt+Right

Compare the local copy of the previous or next file with its update from the server.

the Go To Changed File buttonGo To Changed File Ctrl+NDisplay all the changed files in the current change set and navigate to them. This button is available only when you review changes in multiple files. For example, in the Local Changes view.
the Jump to Source buttonJump to Source
F4
Open the selected file in the active pane in the editor. The caret is placed in the same position as in the Differences Viewer.
Viewers

Select a viewer mode: "MPS model viewer", "side-by-side" or "unified". The side-by-side mode has two panels, the unified mode has one panel. The MPS model viewer shows a list of changed root nodes and for the selected root node shows two panels.
The MPS viewer offers several configuration settings:

  • Show Inspector - makes the Inspector tool window visible in the dialog for both panels.

  • Hide Non-Functional ID Changes - ignores changes when a node has been replaced with its identical copies (e.g. by retyping the same code).

  • Hide Non-Functional Resolve-Info Changes - when enabled, references to a declaration that has merely changed its name will not be highlighted as changed.

  • Track Moved Nodes - identifies nodes that have been moved to a different position and visually distinguishes them from mere removals/additions of nodes.

  • Hide Unordered Moves - available when "Track Moved Nodes" is on, ensures that reordered nodes in a collection defined as "unordered" in the structure aspect are not highlighted as a change.

You can edit code and perform Apply, Append, Revert actions in both viewers.

You can change text only in the right-hand part of the side-by-side viewer, or in the lower line in the unified viewer.

You can edit only local versions of your files. You cannot edit files that have read-only status.

Whitespace

Define how the differences viewer should treat whitespaces.

  • Do not ignore: white spaces are important, and all the differences are highlighted. This option is selected by default.

  • Trim whitespaces: trim whitespaces if they appear in the end and at the beginning of a line (("\t", " ") ).

    • If two lines differ in trailing whitespaces only, these lines are considered equal.

    • If two lines are different, trailing whitespaces are not highlighted in the By word mode.

  • Ignore whitespaces: white spaces are not important, regardless of their location in the source code.

  • Ignore whitespaces and empty lines: ignores whitespaces and empty lines. The following entities are ignored:

    • all whitespaces (as in the 'Ignore whitespaces' option)

    • all added or removed lines consisting of whitespaces only

    • all changes consisting of splitting or joining lines without changes to non-whitespace parts.
      For example, differences between a b c and a \n b c are not highlighted in this mode.

Highlighting mode

Select the way differences granularity is highlighted.

The available options are:

  • Highlight words: modified words are highlighted

  • Highlight lines: modified lines are highlighted

  • Highlight split changes: if this option is selected, big changes are split into smaller changes.

    For example, A \n B and A X \n B X are treated as two changes instead of one.

  • Highlight symbols: modified symbols are highlighted

  • Do not highlight: if this option is selected, the differences are not highlighted at all.

    Use the Do not highlight option when you work with the files that were significantly modified. In such cases, highlighting might introduce additional difficulties during a review.

the Collapse All buttonCollapse unchanged fragmentsCollapse all the unchanged fragments in both files. The amount of non-collapsible unchanged lines is configurable in the Diff & Merge settings page. To open the Diff & Merge page, open settings by pressing Ctrl+Alt+S and navigate to Tools | Diff & Merge.
the Synchronize buttonSynchronize scrollingClick this button to scroll both differences panes simultaneously. If this button is released, each of the panes can be scrolled independently.
the Settings buttonSettings

Open a list of available settings.

These commands are also available from the context menu of the differences viewer gutter.

Include into commit Alt+I

This checkbox only appears if you invoke the Differences Viewer from the Commit Changes dialog with multiple changed files (all of which are deselected), and you explore the differences between them and hit the last difference in a file.

Select this checkbox if you want to include the file you've reviewed into the commit.

helpHelp
F1
Open a browser and show the corresponding help page.
Ctrl+TabSwitch between the panes of the differences viewer. The active pane has the cursor.
apply left apply right

Apply differences between panes (in case of the side-by-side viewer) or between lines (in case of the unified viewer).

The chevron buttons can change their behavior:

  • Click apply left and apply right to apply changes. This behavior is the default one.

  • Press Ctrl to change apply left or apply right to chevron button bottom right or chevron button bottom left and append changes.

Merge actions
compare options buttonN/A

Click this icon to invoke the list of options allowing you to compare different versions of a file to resolve a conflict.

Note that Base refers to the file version that the local and the repository versions originated from (initially displayed in the middle pane), while Middle refers to the resulting version.
the Apply Non-Conflicting Changes buttonApply All Non-Conflicting ChangesClick this button to apply all non-conflicting changes. You can also make this behavior automatic, by selecting the checkbox Automatically apply non-conflicting changes in the Diff & Merge page of the Settings/Preferences dialog.
Apply Non-Conflicting Changes from the Left/RightApply Non-Conflicting Changes from the Left/Right SideClick these buttons to merge non-conflicting changes from the left/right parts of the dialog.

Keyboard shortcuts

Keyboard shortcutDescription
Use this keyboard shortcut to show the popup menu of the most commonly used diff commands.
Ctrl+TabUse this keyboard shortcut to switch between the left and the right panes.
Ctrl+Shift+TabUse this keyboard shortcut to select the position obtained by Ctrl+Tab in the opposite pane.
Ctrl+Z/ Ctrl+Shift+ZUse this keyboard shortcut to undo/redo a merge operation. Conflicts will be kept in sync with the text.

Context menu commands

This context menu is available in the middle of the editor:

ItemDescription
Show WhitespacesSelect this check command to show whitespaces as the dots in the Differences Viewer .
Show Line NumbersSelect this check command to show line numbers in the Differences Viewer.
Show Indent GuidesSelect this check command to have MPS display vertical lines in the Differences Viewer to indicate positions of indents.
Use Soft WrapsSelect this check command to have MPS wrap the lines of code, when the dialog is resized.
Highlighting levelUse this menu item to select the highlighting level in the Differences Viewer. To learn more about the level of highlighting, refer to the description of the Hector icon.
AnnotateSelect this check command to annotate the changes.

This context menu is available in both editors:

ItemDescription
Accept/AppendSelect these commands to accept or append the lines shown in the Differences Viewer.
Compare with ClipboardSelect this command to compare the file in the respective pane of the Differences Viewer with the contents of the Clipboard.
AnnotateSelect this check command to annotate the changes.

This context menu is available in the right-hand strip of the Differences Viewer:

ItemDescription
Go to high-priority problems only/Go to next problemClick one of these radio-buttons to define the way of navigating between the encountered problems.
Customize highlighting levelClick to show the slider to change the highlighting level in the Differences Viewer.

Productivity tips

Compare two SQL queries

You can compare contents in the clipboard with selected part of an SQL query.

  1. Copy an SQL query to the clipboard.

  2. Select and right-click the query in the editor with which you want to compare the query in the clipboard. Without selecting the query, you compare the clipboard contents with the whole file.

  3. From the context menu, select Compare with Clipboard.

Last modified: 23 March 2021