jesseduffield.lazygit/pkg/gui/context
Stefan Haller 4e907c6b3e Compute list index conversions independently of rendering
The model<->view index conversions were derived from arrays that only
renderLines populated. That made them depend on the list having been
rendered (so a conversion before the first render ignored the non-model
items), and it made them go stale whenever the model changed after a
render: converting an index then returned a wrong result, and once the
model had grown past the last rendered length the conversion indexed a
too-short array and panicked (seen in cherry_pick under -race).

The conversion is a pure function of the current list length and the
current non-model items, and needs none of the rendered display strings.
Compute it directly and drop the cached arrays, so the result is always
consistent with the current model and no longer depends on rendering.

searchModelCommits converts every commit's index, and building the
non-model items can be O(len) mid-rebase, so it would now be quadratic;
snapshot the non-model items once via modelToViewIndexConverter instead
of rebuilding them per index.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 14:54:15 +02:00
..
traits Fix collapsing the range selection after deleting branches 2025-07-04 17:18:10 +02:00
base_context.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
branches_context.go Show PR icons in branches list 2026-04-01 09:13:55 +02:00
commit_files_context.go Filter file views rather than search 2026-03-07 20:04:31 +01:00
commit_message_context.go Convert keybinding fields to Keybinding 2026-05-25 15:32:47 +02:00
confirmation_context.go split context common from helper common 2023-04-30 13:19:53 +10:00
context.go Refactor: add a separate Prompt view 2025-09-05 10:42:03 +02:00
context_common.go split context common from helper common 2023-04-30 13:19:53 +10:00
dynamic_title_builder.go show namesake for child views 2022-03-26 18:00:46 +11:00
filtered_list.go Allow filtered lists to preprocess the filter string 2025-08-14 15:02:48 +02:00
filtered_list_view_model.go Allow filterable contexts to customize the filter label 2025-08-14 15:02:48 +02:00
history_trait.go Add search history 2023-09-20 08:35:41 +03:00
list_context_trait.go Remove Render() from ListContextTrait.HandleRender 2026-05-09 13:58:33 +02:00
list_renderer.go Compute list index conversions independently of rendering 2026-07-09 14:54:15 +02:00
list_renderer_test.go Compute list index conversions independently of rendering 2026-07-09 14:54:15 +02:00
list_view_model.go Reduce the chance of race condition with list cursor 2024-01-28 09:20:52 +11:00
local_commits_context.go Compute list index conversions independently of rendering 2026-07-09 14:54:15 +02:00
main_context.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
menu_context.go Rename Key to Keys in Binding, KeybindingsOpts, and MenuItem 2026-05-25 15:18:18 +02:00
merge_conflicts_context.go Instantiate other mutexes by value 2025-06-19 18:39:46 +02:00
parent_context_mgr.go Remove bool return value of GetParentContext() 2024-08-17 11:14:51 +02:00
patch_explorer_context.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
prompt_context.go Refactor: add a separate Prompt view 2025-09-05 10:42:03 +02:00
reflog_commits_context.go Draw only visible part of the reflogs panel 2025-12-23 16:20:32 +01:00
remote_branches_context.go Move the Ref interface from gui/types to models 2025-07-31 15:21:34 +02:00
remotes_context.go Adjust line number for working copy when editing a line 2025-01-07 17:46:51 +01:00
search_trait.go Cleanup: remove unnecessary function Label() 2026-04-30 22:14:26 +02:00
setup.go Show renamed files in the custom patch builder 2026-07-04 13:05:09 +02:00
simple_context.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
stash_context.go Move the Ref interface from gui/types to models 2025-07-31 15:21:34 +02:00
sub_commits_context.go Compute list index conversions independently of rendering 2026-07-09 14:54:15 +02:00
submodules_context.go Get rid of the retain-sort-order-when-filtering logic again 2024-03-17 12:23:07 +01:00
suggestions_context.go Bounce SuggestionsContext.SetSuggestions to UI thread 2026-05-09 13:58:33 +02:00
tags_context.go Move the Ref interface from gui/types to models 2025-07-31 15:21:34 +02:00
view_trait.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
working_tree_context.go Filter file views rather than search 2026-03-07 20:04:31 +01:00
worktrees_context.go Get rid of the retain-sort-order-when-filtering logic again 2024-03-17 12:23:07 +01:00