Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rework diff rendering to allow putting the cursor into deleted text, soft-wrapping and scrolling deleted text correctly #22994

Merged
merged 240 commits into from
Jan 24, 2025

Conversation

maxbrunsfeld
Copy link
Collaborator

@maxbrunsfeld maxbrunsfeld commented Jan 11, 2025

Closes #12553

  • Fix diff_hunk_before
  • Fix failure to show deleted text when expanding hunk w/ cursor on second line of the hunk
  • Failure to expand diff hunk below the cursor.
  • Delete the whole file, and expand the diff. Backspace over the deleted hunk, panic!
  • Go-to-line now counts the diff hunks, but it should not
  • backspace at the beginning of a deleted hunk deletes too much text
  • Indent guides are rendered incorrectly
  • Fix randomized multi buffer tests

Maybe:

  • Buffer search should include deleted text (in vim mode it turns out I use /x all the time to jump to the next x I can see).
  • vim: should refuse to switch into insert mode if selection is fully within a diff.
  • vim o command when cursor is on last line of deleted hunk.
  • vim shift-o on first line of deleted hunk moves cursor but doesn't insert line
  • enter at end of diff hunk inserts a new line but doesn't move cursor
  • (shift-enter at start of diff hunk does nothing)
  • Inserting a line just before an expanded hunk collapses it

Release Notes:

  • Improved diff rendering, allowing you to navigate with your cursor inside of deleted text in diff hunks.

maxbrunsfeld and others added 30 commits December 4, 2024 16:49
Correctly handle multiple edits to DiffMap

Co-authored-by: Conrad <[email protected]>
@ConradIrwin ConradIrwin merged commit d2c55cb into main Jan 24, 2025
14 checks passed
@ConradIrwin ConradIrwin deleted the diffs-in-multibuffer branch January 24, 2025 21:18
maxbrunsfeld added a commit that referenced this pull request Jan 28, 2025
…culation (#23753)

This fixes an issue introduced in #22994 where soft wrap would
recalculate for the entire buffer when editing.

Release Notes:

- N/A

---------

Co-authored-by: Conrad <[email protected]>
maxbrunsfeld added a commit that referenced this pull request Feb 3, 2025
Certain themes define the `created` and `deleted` status colors, but not
`created_background` and `deleted_background`. Previously, Zed would use
`created` and `deleted` colors, and apply a hard-coded opacity change,
but *not* use `created_background` and `deleted_background`, but that
behavior was inadvertently changed in
#22994.

This PR restores the old behavior as a fallback. If a theme defines a
status color, but not the corresponding background color, we'll use a
75% transparent version of the foreground color as a fallback.

Release Notes:

- Fixed an issue in certain themes where diffs would render with the
wrong red and green colors for deletions and insertions.
maxbrunsfeld added a commit that referenced this pull request Feb 3, 2025
Certain themes define the `created` and `deleted` status colors, but not
`created_background` and `deleted_background`. Previously, Zed would use
`created` and `deleted` colors, and apply a hard-coded opacity change,
but *not* use `created_background` and `deleted_background`, but that
behavior was inadvertently changed in
#22994.

This PR restores the old behavior as a fallback. If a theme defines a
status color, but not the corresponding background color, we'll use a
75% transparent version of the foreground color as a fallback.

Release Notes:

- Fixed an issue in certain themes where diffs would render with the
wrong red and green colors for deletions and insertions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla-signed The user has signed the Contributor License Agreement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

toggle hunk diff should be selectable in vim mode
2 participants