ZIm/crates/git_ui/src
Finn Evers 26ba6e7e00
editor: Improve minimap performance (#33067)
This PR aims to improve the minimap performace. This is primarily
achieved by disabling/removing stuff that is not shown in the minimal as
well as by assuring the display map is not updated during minimap
prepaint.

This should already be much better in parts, as the block map as well as
the fold map will be less frequently updated due to the minimap
prepainting (optimally, they should never be, but I think we're not
quite there yet).
For this, I had to remove block rendering support for the minimap, which
is not as bad as it sounds: Practically, we were currently not rendering
most blocks anyway, there were issues due to this (e.g. scrolling any
visible block offscreen in the main editor causes scroll jumps
currently) and in the long run, the minimap will most likely need its
own block map or a different approach anyway. The existing
implementation caused resizes to occur very frequently for practically
no benefit. Can pull this out into a separate PR if requested, most
likely makes the other changes here easier to discuss.

This is WIP as we are still hitting some code path here we definitely
should not be hitting. E.g. there seems to be a rerender roughly every
second if the window is unfocused but visible which does not happen when
the minimap is disabled.

While this primarily focuses on the minimap, it also touches a few other
small parts not related to the minimap where I noticed we were doing too
much stuff during prepaint. Happy for any feedback there aswell.

Putting this up here already so we have a place to discuss the changes
early if needed.

Release Notes:

- Improved performance with the minimap enabled.
- Fixed an issue where interacting with blocks in the editor would
sometimes not properly work with the minimap enabled.
2025-07-15 00:29:27 +03:00
..
askpass_modal.rs chore: Bump Rust edition to 2024 (#27800) 2025-03-31 20:55:27 +02:00
blame_ui.rs editor: Move blame popover from hover_tooltip to editor prepaint (#29320) 2025-04-25 01:52:24 +05:30
branch_picker.rs Prevent branch name overflow in git panel selection (#33529) 2025-06-27 20:50:53 -03:00
commit_message_prompt.txt git_ui: Try to prompt the model out of including the diff output (#26281) 2025-03-07 15:05:35 +00:00
commit_modal.rs Use git config --global user.email for email address in automatic Co-authored-by (#32624) 2025-06-12 19:39:08 +00:00
commit_tooltip.rs editor: Move blame popover from hover_tooltip to editor prepaint (#29320) 2025-04-25 01:52:24 +05:30
commit_view.rs Remove into SelectionEffects from .change_selections (#33554) 2025-06-27 14:31:31 -06:00
conflict_view.rs editor: Improve minimap performance (#33067) 2025-07-15 00:29:27 +03:00
diff_view.rs Implement save functionality for diff view (#33298) 2025-06-24 09:17:53 +00:00
git_panel.rs git: Handle shift-click to stage a range of entries in the panel (#34296) 2025-07-12 19:04:26 +00:00
git_panel_settings.rs git_ui: Add collapse_untracked_diff settings to improve usability for untracked files (#32591) 2025-06-22 00:38:24 +03:00
git_ui.rs gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
onboarding.rs chore: Bump Rust edition to 2024 (#27800) 2025-03-31 20:55:27 +02:00
picker_prompt.rs editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
project_diff.rs gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
remote_output.rs git_ui: Support "Open Pull Request" for more platforms (#33833) 2025-07-09 19:09:59 +00:00
repository_selector.rs Add language server control tool into the status bar (#32490) 2025-06-25 19:57:28 +03:00