jesseduffield.lazygit/pkg/gui/context
Stefan Haller 494b9ce7cf Stage the selected diff line from the focused main view
The focused main view already lets you point at a diff line and act on it
(dive into staging, edit it, open it in a PR). This makes it a staging surface
in its own right: press space to stage — or unstage — the selected line without
diving into the separate staging view.

To make that usable, the selection is now shown automatically whenever the main
view holds a diff, anchored on the first change line already visible (so the
view doesn't jump), rather than being toggled on demand from the middle of the
view. That frees space for staging and means there's always a line to act on.
Which contexts show a diff is marked by a new types.DiffMainViewContext, because
"shows a diff" is the right signal, not "is stageable": reflog shows a diff (its
selection drives edit/PR/navigation) but can't be staged, while a branch's log
or the status dashboard show no diff and get no selection at all.

Staging is delegated to the side panel beneath via a GetOnStageFocusedMainView
handler mirroring GetOnClickFocusedMainView, so what "stage" means stays the
panel's concern (the working tree stages/unstages; commits will later add to a
custom patch). The files handler resolves the line's patch identity from the
diff-line metadata, maps it to a patch line, and applies a one-line patch,
choosing stage vs unstage from whether the shown diff is the unstaged or staged
side (diffSplitState).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 12:58:59 +02:00
..
traits Fix collapsing the range selection after deleting branches 2025-07-04 17:18:10 +02:00
base_context.go Stage the selected diff line from the focused main view 2026-08-08 12:58:59 +02:00
branches_context.go Show PR icons in branches list 2026-04-01 09:13:55 +02:00
commit_files_context.go Stage the selected diff line from the focused main view 2026-08-08 12:58:59 +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 Stage the selected diff line from the focused main view 2026-08-08 12:58:59 +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 Replace gui.showSelectionInFocusedMainView config with on-demand selection 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 Stage the selected diff line from the focused main view 2026-08-08 12:58:59 +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 Stage the selected diff line from the focused main view 2026-08-08 12:58:59 +02:00
sub_commits_context.go Stage the selected diff line from the focused main view 2026-08-08 12:58:59 +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 Stage the selected diff line from the focused main view 2026-08-08 12:58:59 +02:00
worktrees_context.go Get rid of the retain-sort-order-when-filtering logic again 2024-03-17 12:23:07 +01:00