summaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg')
-rw-r--r--pkg/cheatsheet/generate.go31
-rw-r--r--pkg/cheatsheet/generate_test.go31
-rw-r--r--pkg/commands/git_commands/branch.go2
-rw-r--r--pkg/commands/patch/patch_manager.go2
-rw-r--r--pkg/commands/patch/patch_parser.go18
-rw-r--r--pkg/gui/arrangement.go11
-rw-r--r--pkg/gui/branches_panel.go1
-rw-r--r--pkg/gui/command_log_panel.go8
-rw-r--r--pkg/gui/commit_files_panel.go45
-rw-r--r--pkg/gui/commits_panel.go16
-rw-r--r--pkg/gui/confirmation_panel.go9
-rw-r--r--pkg/gui/context.go192
-rw-r--r--pkg/gui/context/base_context.go62
-rw-r--r--pkg/gui/context/branches_context.go9
-rw-r--r--pkg/gui/context/commit_files_context.go9
-rw-r--r--pkg/gui/context/context.go189
-rw-r--r--pkg/gui/context/list_context_trait.go25
-rw-r--r--pkg/gui/context/local_commits_context.go9
-rw-r--r--pkg/gui/context/menu_context.go15
-rw-r--r--pkg/gui/context/patch_explorer_context.go134
-rw-r--r--pkg/gui/context/reflog_commits_context.go9
-rw-r--r--pkg/gui/context/remote_branches_context.go9
-rw-r--r--pkg/gui/context/remotes_context.go9
-rw-r--r--pkg/gui/context/simple_context.go41
-rw-r--r--pkg/gui/context/stash_context.go9
-rw-r--r--pkg/gui/context/sub_commits_context.go9
-rw-r--r--pkg/gui/context/submodules_context.go9
-rw-r--r--pkg/gui/context/suggestions_context.go9
-rw-r--r--pkg/gui/context/tags_context.go9
-rw-r--r--pkg/gui/context/view_trait.go8
-rw-r--r--pkg/gui/context/working_tree_context.go9
-rw-r--r--pkg/gui/context_config.go209
-rw-r--r--pkg/gui/controllers.go103
-rw-r--r--pkg/gui/controllers/bisect_controller.go2
-rw-r--r--pkg/gui/controllers/commits_files_controller.go10
-rw-r--r--pkg/gui/controllers/context_lines_controller.go116
-rw-r--r--pkg/gui/controllers/files_controller.go32
-rw-r--r--pkg/gui/controllers/helpers/patch_building_helper.go37
-rw-r--r--pkg/gui/controllers/list_controller.go37
-rw-r--r--pkg/gui/controllers/patch_building_controller.go138
-rw-r--r--pkg/gui/controllers/patch_explorer_controller.go289
-rw-r--r--pkg/gui/controllers/scroll_controller.go70
-rw-r--r--pkg/gui/controllers/staging_controller.go242
-rw-r--r--pkg/gui/custom_patch_options_panel.go (renamed from pkg/gui/patch_options_panel.go)34
-rw-r--r--pkg/gui/diff_context_size.go78
-rw-r--r--pkg/gui/diffing.go1
-rw-r--r--pkg/gui/files_panel.go36
-rw-r--r--pkg/gui/global_handlers.go47
-rw-r--r--pkg/gui/gui.go80
-rw-r--r--pkg/gui/gui_common.go22
-rw-r--r--pkg/gui/keybindings.go401
-rw-r--r--pkg/gui/layout.go64
-rw-r--r--pkg/gui/line_by_line_panel.go275
-rw-r--r--pkg/gui/list_context_config.go32
-rw-r--r--pkg/gui/main_panels.go91
-rw-r--r--pkg/gui/merge_panel.go12
-rw-r--r--pkg/gui/modes.go2
-rw-r--r--pkg/gui/options_menu_panel.go4
-rw-r--r--pkg/gui/patch_building_panel.go134
-rw-r--r--pkg/gui/patch_exploring/focus.go (renamed from pkg/gui/lbl/focus.go)2
-rw-r--r--pkg/gui/patch_exploring/focus_test.go (renamed from pkg/gui/lbl/focus_test.go)2
-rw-r--r--pkg/gui/patch_exploring/state.go (renamed from pkg/gui/lbl/state.go)19
-rw-r--r--pkg/gui/pty.go18
-rw-r--r--pkg/gui/recent_repos_panel.go1
-rw-r--r--pkg/gui/reflog_panel.go1
-rw-r--r--pkg/gui/refresh.go168
-rw-r--r--pkg/gui/remote_branches_panel.go1
-rw-r--r--pkg/gui/remotes_panel.go1
-rw-r--r--pkg/gui/services/custom_commands/keybinding_creator.go15
-rw-r--r--pkg/gui/side_window.go14
-rw-r--r--pkg/gui/staging_panel.go227
-rw-r--r--pkg/gui/stash_panel.go1
-rw-r--r--pkg/gui/status_panel.go3
-rw-r--r--pkg/gui/sub_commits_panel.go1
-rw-r--r--pkg/gui/submodules_panel.go1
-rw-r--r--pkg/gui/tags_panel.go9
-rw-r--r--pkg/gui/tasks_adapter.go6
-rw-r--r--pkg/gui/types/common.go4
-rw-r--r--pkg/gui/types/context.go40
-rw-r--r--pkg/gui/types/keybindings.go1
-rw-r--r--pkg/gui/types/refresh.go3
-rw-r--r--pkg/gui/view_helpers.go78
-rw-r--r--pkg/gui/views.go160
-rw-r--r--pkg/gui/window.go73
-rw-r--r--pkg/i18n/chinese.go4
-rw-r--r--pkg/i18n/dutch.go4
-rw-r--r--pkg/i18n/english.go12
-rw-r--r--pkg/i18n/japanese.go4
-rw-r--r--pkg/i18n/korean.go160
-rw-r--r--pkg/i18n/polish.go2
-rw-r--r--pkg/tasks/tasks.go2
-rw-r--r--pkg/utils/utils.go4
-rw-r--r--pkg/utils/utils_test.go42
93 files changed, 2565 insertions, 2064 deletions
diff --git a/pkg/cheatsheet/generate.go b/pkg/cheatsheet/generate.go
index 5117e6652..d69a448fb 100644
--- a/pkg/cheatsheet/generate.go
+++ b/pkg/cheatsheet/generate.go
@@ -21,7 +21,6 @@ import (
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/jesseduffield/lazygit/pkg/i18n"
"github.com/jesseduffield/lazygit/pkg/integration"
- "github.com/jesseduffield/lazygit/pkg/utils"
"github.com/samber/lo"
)
@@ -105,10 +104,9 @@ func localisedTitle(tr *i18n.TranslationSet, str string) string {
"commits": tr.CommitsTitle,
"confirmation": tr.ConfirmationTitle,
"information": tr.InformationTitle,
- "main": tr.MainTitle,
+ "main": tr.NormalTitle,
"patchBuilding": tr.PatchBuildingTitle,
"merging": tr.MergingTitle,
- "normal": tr.NormalTitle,
"staging": tr.StagingTitle,
"menu": tr.MenuTitle,
"search": tr.SearchTitle,
@@ -127,12 +125,17 @@ func localisedTitle(tr *i18n.TranslationSet, str string) string {
}
func getBindingSections(bindings []*types.Binding, tr *i18n.TranslationSet) []*bindingSection {
+ excludedViews := []string{"stagingSecondary", "patchBuildingSecondary"}
bindingsToDisplay := slices.Filter(bindings, func(binding *types.Binding) bool {
- return binding.Description != "" || binding.Alternative != ""
+ if lo.Contains(excludedViews, binding.ViewName) {
+ return false
+ }
+
+ return (binding.Description != "" || binding.Alternative != "")
})
- bindingsByHeader := utils.MuiltiGroupBy(bindingsToDisplay, func(binding *types.Binding) []header {
- return getHeaders(binding, tr)
+ bindingsByHeader := lo.GroupBy(bindingsToDisplay, func(binding *types.Binding) header {
+ return getHeader(binding, tr)
})
bindingGroups := maps.MapToSlice(
@@ -164,24 +167,16 @@ func getBindingSections(bindings []*types.Binding, tr *i18n.TranslationSet) []*b
})
}
-// a binding may belong to multiple headers if it is applicable to multiple contexts,
-// for example the copy-to-clipboard binding.
-func getHeaders(binding *types.Binding, tr *i18n.TranslationSet) []header {
+func getHeader(binding *types.Binding, tr *i18n.TranslationSet) header {
if binding.Tag == "navigation" {
- return []header{{priority: 2, title: localisedTitle(tr, "navigation")}}
+ return header{priority: 2, title: localisedTitle(tr, "navigation")}
}
if binding.ViewName == "" {
- return []header{{priority: 3, title: localisedTitle(tr, "global")}}
+ return header{priority: 3, title: localisedTitle(tr, "global")}
}
- if len(binding.Contexts) == 0 {
- return []header{}
- }
-
- return slices.Map(binding.Contexts, func(context string) header {
- return header{priority: 1, title: localisedTitle(tr, context)}
- })
+ return header{priority: 1, title: localisedTitle(tr, binding.ViewName)}
}
func formatSections(tr *i18n.TranslationSet, bindingSections []*bindingSection) string {
diff --git a/pkg/cheatsheet/generate_test.go b/pkg/cheatsheet/generate_test.go
index 149ed28c7..44c49a461 100644
--- a/pkg/cheatsheet/generate_test.go
+++ b/pkg/cheatsheet/generate_test.go
@@ -26,7 +26,6 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "stage file",
},
},
@@ -36,7 +35,6 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "stage file",
},
},
@@ -69,17 +67,14 @@ func TestGetBindingSections(t *testing.T) {
{
ViewName: "files",
Description: "stage file",
- Contexts: []string{"files"},
},
{
ViewName: "files",
Description: "unstage file",
- Contexts: []string{"files"},
},
{
- ViewName: "files",
+ ViewName: "submodules",
Description: "drop submodule",
- Contexts: []string{"submodules"},
},
},
expected: []*bindingSection{
@@ -89,12 +84,10 @@ func TestGetBindingSections(t *testing.T) {
{
ViewName: "files",
Description: "stage file",
- Contexts: []string{"files"},
},
{
ViewName: "files",
Description: "unstage file",
- Contexts: []string{"files"},
},
},
},
@@ -102,9 +95,8 @@ func TestGetBindingSections(t *testing.T) {
title: "Submodules",
bindings: []*types.Binding{
{
- ViewName: "files",
+ ViewName: "submodules",
Description: "drop submodule",
- Contexts: []string{"submodules"},
},
},
},
@@ -115,23 +107,19 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "stage file",
},
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "unstage file",
},
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "scroll",
Tag: "navigation",
},
{
ViewName: "commits",
- Contexts: []string{"commits"},
Description: "revert commit",
},
},
@@ -141,7 +129,6 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "scroll",
Tag: "navigation",
},
@@ -152,7 +139,6 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "commits",
- Contexts: []string{"commits"},
Description: "revert commit",
},
},
@@ -162,12 +148,10 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "stage file",
},
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "unstage file",
},
},
@@ -179,34 +163,28 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "stage file",
},
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "unstage file",
},
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "scroll",
Tag: "navigation",
},
{
ViewName: "commits",
- Contexts: []string{"commits"},
Description: "revert commit",
},
{
ViewName: "commits",
- Contexts: []string{"commits"},
Description: "scroll",
Tag: "navigation",
},
{
ViewName: "commits",
- Contexts: []string{"commits"},
Description: "page up",
Tag: "navigation",
},
@@ -217,13 +195,11 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "scroll",
Tag: "navigation",
},
{
ViewName: "commits",
- Contexts: []string{"commits"},
Description: "page up",
Tag: "navigation",
},
@@ -234,7 +210,6 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "commits",
- Contexts: []string{"commits"},
Description: "revert commit",
},
},
@@ -244,12 +219,10 @@ func TestGetBindingSections(t *testing.T) {
bindings: []*types.Binding{
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "stage file",
},
{
ViewName: "files",
- Contexts: []string{"files"},
Description: "unstage file",
},
},
diff --git a/pkg/commands/git_commands/branch.go b/pkg/commands/git_commands/branch.go
index acf40a7bd..d8be71deb 100644
--- a/pkg/commands/git_commands/branch.go
+++ b/pkg/commands/git_commands/branch.go
@@ -11,7 +11,7 @@ import (
// this takes something like:
// * (HEAD detached at 264fc6f5)
-// remotes
+// remotes
// and returns '264fc6f5' as the second match
const CurrentBranchNameRegex = `(?m)^\*.*?([^ ]*?)\)?$`
diff --git a/pkg/commands/patch/patch_manager.go b/pkg/commands/patch/patch_manager.go
index 4fb6507e6..91adfecb4 100644
--- a/pkg/commands/patch/patch_manager.go
+++ b/pkg/commands/patch/patch_manager.go
@@ -190,7 +190,7 @@ func (p *PatchManager) RenderPatchForFile(filename string, plain bool, reverse b
parser := NewPatchParser(p