Skip to content

File compare: options for ignored changes, missing lines and cursor display - #3664

Open
regular-hopper-user wants to merge 1 commit into
WinMerge:masterfrom
regular-hopper-user:pr/diff-display-options
Open

regular-hopper-user wants to merge 1 commit into
WinMerge:masterfrom
regular-hopper-user:pr/diff-display-options

Conversation

@regular-hopper-user

@regular-hopper-user regular-hopper-user commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Summary

New file compare display options. All are off (or keep the current colors) by default, so nothing changes unless they are turned on.

  • Settings/IndicateIgnoredChanges (checkbox in Options > Compare): in 2-way file compare, lines that are equal only because of the ignore options (whitespace, case, EOL, ...) are shown as trivial differences instead of equal lines, so ignored changes stay visible.
  • Settings/HatchMissingLines (checkbox in Options > Colors): filler lines where a line is missing are drawn with 45-degree lines in the deleted color.
  • Settings/LineNumberTextColor and Settings/LocationPaneBackColor (-1 = current behavior): line number text color and location pane background.
  • Settings/LineCursorBox: the current line is marked with a box instead of an underline.
  • Settings/DiffPaneFollowsCursor: the diff pane shows the line under the cursor; inside the current difference the whole block stays visible.

Other changes:

  • Lines that exist on one side only use the word difference text color.
  • The output pane uses the system window colors in dark mode.
  • The drawing options are read when files are loaded and when options change (CMergeEditView::LoadDrawingOptions).

The new strings are not in the translation files yet.

Testing

x64 Release build on this branch, 2-way file compare with all options on (isolated instance): checked ignored-change lines, hatched filler lines, one-sided line text color, the line cursor box and the diff pane showing the cursor line.

…isplay

New options (all off or default by default, so the current look is unchanged
unless they are turned on):
- Settings/IndicateIgnoredChanges (Options > Compare checkbox): in 2-way file
  compare, lines that are equal only because of the ignore options
  (whitespace, case, EOL, ...) are shown as trivial differences instead of
  as equal lines (CMergeDoc::IndicateIgnoredChanges, OP_TRIVIAL).
- Settings/HatchMissingLines (Options > Colors checkbox): filler lines where
  a line is missing are drawn with 45-degree lines in the deleted color.
- Settings/LineNumberTextColor and Settings/LocationPaneBackColor
  (-1 = current behavior): line number margin text color and location pane
  background.
- Settings/LineCursorBox: the current line is marked with a box instead of
  an underline (CCrystalTextView::DrawLineCursorBox).
- Settings/DiffPaneFollowsCursor: the diff pane shows the line under the
  cursor; inside the current difference the whole block stays visible.

Other changes:
- Lines that exist on one side only use the word difference text color.
- The output pane uses the system window colors in dark mode.
- Drawing options are read on open and when options change
  (CMergeEditView::LoadDrawingOptions).
@sdottaka

sdottaka commented Oct 6, 2026

Copy link
Copy Markdown
Member

Thank you for the PR.

There are several interesting features here, but putting multiple features into one PR makes it difficult to accept some features while rejecting others. If possible, please split them into separate PRs. This would also make them easier to review and increase the chance of individual features being accepted.

For now, I would like to be cautious about adding new options.

For example, HatchMissingLines might be better implemented at the CrystalEdit level. For LineCursorBox, we might also want to consider multiple cursor-line styles rather than a simple true/false option.

For these reasons, I would like to put this PR on hold for now.

@regular-hopper-user

Copy link
Copy Markdown
Contributor Author

@sdottaka Can you let me know the private email to contact? actually I have sent a mail in this morning, but Gmail reject the sorceforge mail address as blacklisted.

@sdottaka

sdottaka commented Oct 7, 2026

Copy link
Copy Markdown
Member

You can contact me at sawanaka@d1.dion.ne.jp

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants