jesseduffield.lazygit/pkg/gui/controllers/helpers
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
..
amend_helper.go Allow passing refresh scope to WithGpgHandling 2025-03-24 08:41:58 +01:00
app_status_helper.go Decouple hiding the working tree state from blocking input 2026-08-05 17:29:20 +02:00
bisect_helper.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
branches_helper.go Don't auto-forward branches when the repo was switched during the fetch 2026-07-20 17:07:39 +02:00
cherry_pick_helper.go Decouple hiding the working tree state from blocking input 2026-08-05 17:29:20 +02:00
commit_files_helper.go WIP FocusedMainViewSnapshot approach 2026-08-08 12:58:59 +02:00
commits_helper.go Rename Key to Keys in Binding, KeybindingsOpts, and MenuItem 2026-05-25 15:18:18 +02:00
commits_helper_test.go Remove hard line breaks when rewording commits 2024-03-09 10:00:44 +01:00
confirmation_helper.go Remove the now-dead PopupMutex 2026-07-17 12:35:54 +02:00
credentials_helper.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
diff_helper.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
diff_line_navigation.go Preserve the change-line ordinal in the post-stage reveal 2026-08-08 12:59:00 +02:00
diff_line_navigation_test.go Navigate the focused main view by file and hunk 2026-08-08 12:58:59 +02:00
diff_line_parser.go Add a batch buffer-diff parser that parses each file section once 2026-08-08 12:58:59 +02:00
diff_line_parser_test.go Use pager-emitted OSC diff metadata as the highest-fidelity line-info backend 2026-08-08 12:58:59 +02:00
drag_autoscroller.go Add DragAutoScroller helper 2026-07-31 08:26:35 +02:00
drag_autoscroller_test.go Add DragAutoScroller helper 2026-07-31 08:26:35 +02:00
files_helper.go Cleanup: remove unused interfaces for helpers 2025-04-08 16:08:25 +02:00
fixup_helper.go Suppress command logs for git calls related to the ctrl+f command 2026-07-19 19:22:48 +02:00
fixup_helper_test.go Ignore fixup commits for a found base commit when doing ctrl-f 2026-01-24 16:04:35 +01:00
gpg_helper.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
helpers.go Extract some functions from CommitFilesController to a new CommitFilesHelper 2026-08-08 12:58:59 +02:00
host_helper.go Cleanup: remove unused interfaces for helpers 2025-04-08 16:08:25 +02:00
inline_status_helper.go Update comments that still describe the removed blocking refresh mode 2026-07-21 22:23:58 +02:00
menu_key.go Use a slice of keys for each binding 2026-05-25 15:18:18 +02:00
merge_and_rebase_helper.go Check for exec todos on the UI thread 2026-07-17 12:35:54 +02:00
merge_conflicts_helper.go Make the conflict marker size a parameter of our marker matching 2026-08-08 12:43:42 +02:00
mode_helper.go Scroll the selection into view after a filtering mode change 2026-08-05 17:29:20 +02:00
patch_building_helper.go Return to the focused main view when escaping the staged half too 2026-08-08 12:58:59 +02:00
record_directory_helper.go split context common from helper common 2023-04-30 13:19:53 +10:00
refresh_helper.go Build a custom patch from the commits / sub-commits / stash main views 2026-08-08 12:59:00 +02:00
refresh_helper_test.go Restore commit selection even when the commit's TODO status changed 2026-06-23 09:20:05 +02:00
refs_helper.go Show the inline status again when checking out a newly created remote branch 2026-07-21 22:23:57 +02:00
repos_helper.go Remember how to get back to a repo we entered a submodule from 2026-08-08 11:15:01 +02:00
search_helper.go Cleanup: remove unnecessary function Label() 2026-04-30 22:14:26 +02:00
signal_handling.go Implement suspending the app using ctrl-z 2025-08-14 20:41:46 +02:00
signal_handling_windows.go Implement suspending the app using ctrl-z 2025-08-14 20:41:46 +02:00
snake_helper.go Bump gocui and adapt lazygit code 2024-12-01 10:40:08 +01:00
staging_helper.go Collapse the focused-main-view handler channels into one 2026-08-08 12:59:00 +02:00
sub_commits_helper.go Remove refresh mutexes made redundant by bouncing 2026-07-07 18:09:33 +02:00
suggestions_helper.go Hold the file-path suggestions trie outside the model 2026-07-17 12:35:54 +02:00
suspend_resume_helper.go Implement suspending the app using ctrl-z 2025-08-14 20:41:46 +02:00
tags_helper.go Convert keybinding fields to Keybinding 2026-05-25 15:32:47 +02:00
update_helper.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
upstream_helper.go Cleanup: remove unused interfaces for helpers 2025-04-08 16:08:25 +02:00
upstream_helper_test.go Standardise on using lo for slice functions 2023-07-30 18:51:23 +10:00
view_helper.go standardise helper args 2023-04-30 13:19:53 +10:00
window_arrangement_helper.go Add gui.shrinkSidePanelsToContent option 2026-07-03 19:25:01 +02:00
window_arrangement_helper_test.go Add gui.shrinkSidePanelsToContent option 2026-07-03 19:25:01 +02:00
window_helper.go Drive the side panel layout from gui.sidePanels 2026-06-23 14:15:18 +02:00
working_tree_helper.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
worktree_helper.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
worktree_helper_test.go Add helper to compute candidate worktree parent directories 2026-07-03 18:53:05 +02:00