jesseduffield.lazygit/pkg/gui/context
Stefan Haller 67ba1899b4 Build a custom patch from the focused main view of a commit's files
Pressing space in the commit-files focused main view now toggles the
selected line(s)/hunk into or out of the custom patch, instead of being a
no-op. It's the patch-building counterpart of working-tree staging from
the main view: the selection is resolved to change-line identities the
same way (ChangeLinesInViewRange), then mapped to the patch builder's
per-file line indices and added or removed.

The crux is that the commit's diff is unchanged by a toggle — only the
inclusion set changes — so unlike staging there's no async re-render to
ride. Membership is shown by an on-demand inclusion gutter: a reserved
left column painted with a marker on every change line currently in the
patch, recomputed synchronously after each toggle and on focusing the
main view, over the existing pager output. This is what lets patch
building work over a restructuring pager at all, where the old green
first-char overlay (which rewrites the rendered bytes) can't.

space routes to staging or patch building based on which handler the
panel beneath registers, via a new onTogglePatchFocusedMainView channel
(kept separate from staging because the post-action differs: sync gutter
repaint vs async reveal). Scoped to the commit-files panel for now;
commits/sub-commits/stash and the whole-commit multi-file diff follow.

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 Build a custom patch from the focused main view of a commit's files 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 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 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 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