jesseduffield.lazygit/pkg/gui/context
Stefan Haller 88dae2f2c6 Collapse the focused-main-view handler channels into one
Each command a side panel handles in the focused main view needed its own
delegation channel: a HasKeybindings getter, an IBaseContext Add method, a
BaseContext field + getter, a baseController nil default, and an attach.go
registration — roughly five touch points per command. With three commands
(click, stage, toggle-patch) that was already a lot of boilerplate, and it
doesn't scale to the discard / copy commands coming next.

Replace the three channels with one: a side panel exposes a single
FocusedMainViewActions interface via GetFocusedMainViewActions (nil when its
diff offers no actions), and the controllers implement that interface
directly. The stage and toggle-patch handlers, already unified to a plain
error return, become one PrimaryAction method whose meaning is the panel's
business (stage for the files panel, patch toggle for the commit panels);
the click handler becomes OnClick. MainViewController is now a thin
dispatcher: fetch the actions from the panel beneath, call the method.
Adding a command is now one interface method, an implementation in the two
or three controllers, and a keybinding — no plumbing.

The toggle-patch channel did double duty as the "this panel builds a custom
patch" signal for the inclusion gutter (shown only beneath a patch-building
panel, not the staging files panel). Collapsing the channels removes that
proxy, so make the classification explicit on DiffMainViewContext, whose
marker method now returns a DiffMainViewType (none / staging / patch-building)
instead of being a bare marker. The gutter shows only beneath a panel whose
type is patch-building (commit files, local commits, sub-commits, stash).

Behavior-preserving.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-08 12:59:00 +02:00
..
traits Fix collapsing the range selection after deleting branches 2025-07-04 17:18:10 +02:00
base_context.go Collapse the focused-main-view handler channels into one 2026-08-08 12:59:00 +02:00
branches_context.go Show PR icons in branches list 2026-04-01 09:13:55 +02:00
commit_files_context.go Collapse the focused-main-view handler channels into one 2026-08-08 12:59:00 +02: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 Change list section headers to a slightly more elegant design 2026-07-31 08:03:40 +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 Collapse the focused-main-view handler channels into one 2026-08-08 12:59:00 +02:00
local_commits_context_test.go Keep the destination visible while commits move 2026-07-31 08:37:28 +02:00
main_context.go Select and stage ranges and hunks from the focused main view 2026-08-08 12:58:59 +02:00
menu_context.go Add a helper function for formatting list section headers 2026-07-31 08:03:40 +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 WIP FocusedMainViewSnapshot approach 2026-08-08 12:58:59 +02:00
prompt_context.go Refactor: add a separate Prompt view 2025-09-05 10:42:03 +02:00
reflog_commits_context.go Collapse the focused-main-view handler channels into one 2026-08-08 12:59:00 +02: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 Collapse the focused-main-view handler channels into one 2026-08-08 12:59:00 +02:00
sub_commits_context.go Collapse the focused-main-view handler channels into one 2026-08-08 12:59:00 +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 Capture suggestions inputs on the UI thread 2026-07-17 12:35:54 +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 Collapse the focused-main-view handler channels into one 2026-08-08 12:59:00 +02:00
worktrees_context.go Get rid of the retain-sort-order-when-filtering logic again 2024-03-17 12:23:07 +01:00