jesseduffield.lazygit/pkg/gui/controllers
Uzair Aftab c3c346e430 Don't delete a suggestion when there is no suggestion selected
Deleting the last entry in the shell command history leaves the
suggestions list focused but empty. An empty list reports its selected
index as -1 (ListCursor.clampValue), and the delete keybinding passes
that index straight to HandleDeleteSuggestion, which subscripts
GetItems() with it. Pressing delete a second time panics and takes
lazygit down with it.

To reproduce: press ":" and run any command, press ":" again, tab into
the suggestions, then press "d" twice.

The handler two lines below already returns early on a -1, with a
comment saying it should never happen. That index comes from lo.IndexOf,
so this one never got the same scrutiny.

We guard the binding the way ConfirmSuggestion directly above it is
already guarded, with singleItemSelected. The key is then disabled with
the usual reason instead of firing on an empty list
2026-09-01 12:48:34 +02:00
..
helpers Filter the recent repositories menu as you type 2026-08-31 20:41:22 +02:00
attach.go Add OnQuit hook for controllers 2026-04-21 11:25:29 +02:00
base_controller.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
basic_commits_controller.go Avoid appending to an array literal 2026-08-16 16:35:11 +02:00
bisect_controller.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
branches_controller.go Show a Github PR's combined checks state in branches list and main view 2026-08-02 13:06:21 +02:00
command_log_controller.go Remove return value of Focus-related functions 2024-09-06 08:45:48 +02:00
commit_description_controller.go Fold remaining alt bindings into their main fields 2026-05-25 15:32:47 +02:00
commit_message_controller.go Convert keybinding fields to Keybinding 2026-05-25 15:32:47 +02:00
commits_files_controller.go Collapse the paths of a moved directory into the directory itself 2026-08-17 09:32:30 +02:00
common.go lots of changes 2023-04-30 13:19:53 +10:00
confirmation_controller.go Rename Key to Keys in Binding, KeybindingsOpts, and MenuItem 2026-05-25 15:18:18 +02:00
context_lines_controller.go Rename Key to Keys in Binding, KeybindingsOpts, and MenuItem 2026-05-25 15:18:18 +02:00
custom_patch_options_menu_action.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
diff_paths.go Collapse the paths of a moved directory into the directory itself 2026-08-17 09:32:30 +02:00
diff_paths_test.go Collapse the paths of a moved directory into the directory itself 2026-08-17 09:32:30 +02:00
diffing_menu_action.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
edit_config_action.go Extract editConfig into a shared EditConfigAction 2026-06-24 22:03:57 +02:00
files_controller.go Collapse the paths of a moved directory into the directory itself 2026-08-17 09:32:30 +02:00
filter_controller.go Filter a menu by typing into it 2026-08-31 20:41:22 +02:00
filtering_menu_action.go Handle entering and leaving filtering mode in one place 2026-08-05 17:29:20 +02:00
git_flow_controller.go Rename Key to Keys in Binding, KeybindingsOpts, and MenuItem 2026-05-25 15:18:18 +02:00
global_controller.go Rework the custom pager config (rename to diff renderer) 2026-07-31 08:42:51 +02:00
jump_to_side_window_controller.go Stop requiring jumpToBlock to have exactly five entries 2026-06-23 14:15:18 +02:00
list_controller.go Scroll the selection into view by default 2026-08-14 08:04:13 +02:00
list_controller_trait.go Enable nolintlint linter, and fix warnings 2025-06-30 18:30:11 +02:00
local_commits_controller.go Remove error return value from functions that always return nil 2026-08-31 20:41:22 +02:00
local_commits_controller_test.go Drag selected commits to a new position 2026-07-31 08:37:28 +02:00
main_view_controller.go Remove error return value from functions that always return nil 2026-08-31 20:41:22 +02:00
menu_controller.go Point the note about the menu's essential keys at what it means 2026-08-31 20:41:22 +02:00
menu_key.go Use a slice of keys for each binding 2026-05-25 15:18:18 +02:00
merge_conflicts_controller.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
options_menu_action.go Filter the keybindings menu as you type 2026-08-31 20:41:22 +02:00
patch_building_controller.go Let OnUIThreadAndWait's error be about the wait, not about f 2026-08-12 11:04:53 +02:00
patch_explorer_controller.go Auto-scroll when dragging to create range selection in staging view 2026-07-31 08:26:35 +02:00
patch_explorer_controller_test.go Strip the '+' and '-' characters when copying parts of a diff to the clipboard 2025-04-29 11:33:47 +02:00
prompt_controller.go Rename Key to Keys in Binding, KeybindingsOpts, and MenuItem 2026-05-25 15:18:18 +02:00
quit_actions.go Refuse a repo switch while a foreground operation is in flight 2026-07-07 18:09:33 +02:00
reflog_commits_controller.go Fix showing diffs for renamed file when filtering by path 2025-07-27 12:05:41 +02:00
remote_branches_controller.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
remotes_controller.go Update comments that still describe the removed blocking refresh mode 2026-07-21 22:23:58 +02:00
remotes_controller_test.go feat: add fork remote command 2025-11-16 17:26:00 +01:00
rename_similarity_threshold_controller.go Show renamed files in the custom patch builder 2026-07-04 13:05:09 +02:00
screen_mode_actions.go Rework the custom pager config (rename to diff renderer) 2026-07-31 08:42:51 +02:00
scroll_off_margin.go Replace min/max helpers with built-in min/max 2024-04-07 23:24:10 +08:00
scroll_off_margin_test.go Add tests for scroll-off margin of zero 2023-08-21 08:10:28 +02:00
search_controller.go Remove error return value from functions that always return nil 2026-08-31 20:41:22 +02:00
search_prompt_controller.go Remove error return value from functions that always return nil 2026-08-31 20:41:22 +02:00
shell_command_action.go Strip leading/trailing whitespace from prompt input 2025-11-15 15:38:24 +01:00
side_window_controller.go Fold remaining alt bindings into their main fields 2026-05-25 15:32:47 +02:00
snake_controller.go Rename Key to Keys in Binding, KeybindingsOpts, and MenuItem 2026-05-25 15:18:18 +02:00
staging_controller.go Add RefreshBlockingInput to buffer keypresses until a refresh has landed 2026-07-22 08:31:11 +02:00
stash_controller.go Remove the scroll calls that are now redundant 2026-08-14 08:04:13 +02:00
status_controller.go Extract editConfig into a shared EditConfigAction 2026-06-24 22:03:57 +02:00
sub_commits_controller.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
submodules_controller.go Extract a single helper for the paths a node's diff is limited to 2026-08-17 09:32:30 +02:00
suggestions_controller.go Don't delete a suggestion when there is no suggestion selected 2026-09-01 12:48:34 +02:00
switch_to_diff_files_controller.go Move post-COMMIT_FILES-refresh work into Then 2026-07-07 18:09:33 +02:00
switch_to_focused_main_view_controller.go Rename Key to Keys in Binding, KeybindingsOpts, and MenuItem 2026-05-25 15:18:18 +02:00
switch_to_sub_commits_controller.go Rename Key to Keys in Binding, KeybindingsOpts, and MenuItem 2026-05-25 15:18:18 +02:00
sync_controller.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
tags_controller.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
toggle_whitespace_action.go Move IgnoreWhitespaceInDiffView to user config 2025-07-09 13:15:03 +02:00
undo_controller.go Capture the commits refresh's inputs on the UI thread 2026-07-07 18:10:45 +02:00
vertical_scroll_controller.go Read lines based on scroll position instead of a fixed per-notch delta 2026-07-09 09:32:35 +02:00
view_selection_controller.go Read lines based on scroll position instead of a fixed per-notch delta 2026-07-09 09:32:35 +02:00
workspace_reset_controller.go Remove the RefreshMode field 2026-07-17 12:32:32 +02:00
worktrees_controller.go Offer to delete the branch when removing a worktree 2026-07-03 19:04:44 +02:00