jesseduffield.lazygit/pkg/integration/tests/patch_building
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
..
apply.go Always render diffs to the main/secondary context pair, even for files 2025-04-21 18:03:18 +02:00
apply_in_reverse.go Always render diffs to the main/secondary context pair, even for files 2025-04-21 18:03:18 +02:00
apply_in_reverse_with_conflict.go Always render diffs to the main/secondary context pair, even for files 2025-04-21 18:03:18 +02:00
apply_with_modified_file_conflict.go Stage affected unstaged files when applying or reverting a patch 2025-07-02 16:19:06 +02:00
apply_with_modified_file_no_conflict.go Stage affected unstaged files when applying or reverting a patch 2025-07-02 16:19:06 +02:00
build_from_main_view.go Build a custom patch from the focused main view of a commit's files 2026-08-08 12:59:00 +02:00
copy_renamed_file_diff.go Show renamed files in the custom patch builder 2026-07-04 13:05:09 +02:00
discard_lines_from_commit.go Allow discarding lines from patch directly 2026-03-07 20:47:20 +11:00
edit_line_in_patch_building_panel.go Adjust line number for working copy when editing a line 2025-01-07 17:46:51 +01:00
move_range_to_index.go Always render diffs to the main/secondary context pair, even for files 2025-04-21 18:03:18 +02:00
move_to_earlier_commit.go Remove obsolete git version restrictions 2025-07-09 12:18:57 +02:00
move_to_earlier_commit_from_added_file.go Mention which command is continued in PromptToContinueRebase 2025-04-20 15:53:17 +02:00
move_to_index.go Always render diffs to the main/secondary context pair, even for files 2025-04-21 18:03:18 +02:00
move_to_index_from_added_file_with_conflict.go Mention which command is continued in PromptToContinueRebase 2025-04-20 15:53:17 +02:00
move_to_index_part_of_adjacent_added_lines.go Bump gocui 2025-01-07 17:34:30 +01:00
move_to_index_partial.go Enable hunk staging mode by default 2025-08-01 10:35:16 +02:00
move_to_index_with_conflict.go Mention which command is continued in PromptToContinueRebase 2025-04-20 15:53:17 +02:00
move_to_index_with_modified_file.go Drop stash when successfully unstashing files after moving patch to index 2025-07-02 16:19:06 +02:00
move_to_index_works_even_if_noprefix_is_set.go Always render diffs to the main/secondary context pair, even for files 2025-04-21 18:03:18 +02:00
move_to_later_commit.go Add a root item ("/") if files at top level have changed 2025-03-21 08:04:58 +01:00
move_to_later_commit_partial_hunk.go Add a root item ("/") if files at top level have changed 2025-03-21 08:04:58 +01:00
move_to_new_commit.go Add custom patch command "Move patch into new commit before the original commit" 2025-05-10 18:57:28 +02:00
move_to_new_commit_before.go Remove obsolete git version restrictions 2025-07-09 12:18:57 +02:00
move_to_new_commit_from_added_file.go Add custom patch command "Move patch into new commit before the original commit" 2025-05-10 18:57:28 +02:00
move_to_new_commit_from_deleted_file.go Add custom patch command "Move patch into new commit before the original commit" 2025-05-10 18:57:28 +02:00
move_to_new_commit_in_last_commit_of_stacked_branch.go Make integration tests using commits more robust 2026-07-09 11:56:27 +02:00
move_to_new_commit_partial_hunk.go Add custom patch command "Move patch into new commit before the original commit" 2025-05-10 18:57:28 +02:00
remove_from_commit.go Always render diffs to the main/secondary context pair, even for files 2025-04-21 18:03:18 +02:00
remove_parts_of_added_file.go Fix custom patch operations on added files 2024-06-23 12:40:31 +02:00
rename_similarity_threshold_change.go Show renamed files in the custom patch builder 2026-07-04 13:05:09 +02:00
renamed_file_partial.go Show renamed files in the custom patch builder 2026-07-04 13:05:09 +02:00
renamed_file_whole.go Show renamed files in the custom patch builder 2026-07-04 13:05:09 +02:00
reset_with_escape.go Use sentence case everywhere 2023-05-25 23:52:19 +10:00
select_all_files.go Add a root item ("/") if files at top level have changed 2025-03-21 08:04:58 +01:00
select_direcories_sharing_prefix.go Fix multi-selection of files with common prefix not working in commit files panel 2026-07-28 18:14:58 +02:00
specific_selection.go Enable hunk staging mode by default 2025-08-01 10:35:16 +02:00
start_new_patch.go Use sentence case everywhere 2023-05-25 23:52:19 +10:00
toggle_directory.go Filter file views rather than search 2026-03-07 20:04:31 +01:00
toggle_range.go Add a root item ("/") if files at top level have changed 2025-03-21 08:04:58 +01:00