summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pkg/app/app.go11
-rw-r--r--pkg/app/daemon/rebase.go6
-rw-r--r--pkg/app/errors.go6
-rw-r--r--pkg/cheatsheet/generate.go6
-rw-r--r--pkg/commands/git_commands/bisect_info.go4
-rw-r--r--pkg/commands/git_commands/branch_loader.go12
-rw-r--r--pkg/commands/git_commands/commit_file_loader.go3
-rw-r--r--pkg/commands/git_commands/commit_loader.go5
-rw-r--r--pkg/commands/git_commands/rebase.go3
-rw-r--r--pkg/commands/git_commands/remote_loader.go5
-rw-r--r--pkg/commands/git_commands/stash_loader.go4
-rw-r--r--pkg/commands/git_commands/tag_loader.go4
-rw-r--r--pkg/commands/hosting_service/hosting_service.go5
-rw-r--r--pkg/commands/oscommands/os.go3
-rw-r--r--pkg/commands/patch/patch_builder.go5
-rw-r--r--pkg/gui/context.go6
-rw-r--r--pkg/gui/context/commit_files_context.go4
-rw-r--r--pkg/gui/context/menu_context.go11
-rw-r--r--pkg/gui/context/working_tree_context.go4
-rw-r--r--pkg/gui/controllers/custom_command_action.go3
-rw-r--r--pkg/gui/controllers/helpers/merge_and_rebase_helper.go4
-rw-r--r--pkg/gui/controllers/helpers/mode_helper.go6
-rw-r--r--pkg/gui/controllers/helpers/refresh_helper.go4
-rw-r--r--pkg/gui/controllers/helpers/refs_helper.go4
-rw-r--r--pkg/gui/controllers/helpers/repos_helper.go4
-rw-r--r--pkg/gui/controllers/helpers/suggestions_helper.go16
-rw-r--r--pkg/gui/controllers/helpers/upstream_helper_test.go4
-rw-r--r--pkg/gui/controllers/options_menu_action.go3
-rw-r--r--pkg/gui/controllers/status_controller.go4
-rw-r--r--pkg/gui/filetree/commit_file_tree.go4
-rw-r--r--pkg/gui/filetree/file_tree.go6
-rw-r--r--pkg/gui/filetree/node.go11
-rw-r--r--pkg/gui/layout.go11
-rw-r--r--pkg/gui/modes/cherrypicking/cherry_picking.go8
-rw-r--r--pkg/gui/presentation/branches.go3
-rw-r--r--pkg/gui/presentation/graph/graph.go21
-rw-r--r--pkg/gui/presentation/reflog_commits.go4
-rw-r--r--pkg/gui/presentation/remote_branches.go4
-rw-r--r--pkg/gui/presentation/remotes.go4
-rw-r--r--pkg/gui/presentation/stash_entries.go4
-rw-r--r--pkg/gui/presentation/submodules.go4
-rw-r--r--pkg/gui/presentation/suggestions.go4
-rw-r--r--pkg/gui/presentation/tags.go4
-rw-r--r--pkg/gui/services/custom_commands/handler_creator.go5
-rw-r--r--pkg/gui/services/custom_commands/keybinding_creator.go4
-rw-r--r--pkg/gui/status/status_manager.go4
-rw-r--r--pkg/gui/views.go4
-rw-r--r--pkg/integration/clients/cli.go3
-rw-r--r--pkg/integration/clients/tui.go4
-rw-r--r--pkg/integration/components/test.go4
-rw-r--r--pkg/integration/tests/tests.go6
-rw-r--r--pkg/utils/formatting.go17
-rw-r--r--pkg/utils/search.go4
-rw-r--r--pkg/utils/slice.go55
-rw-r--r--vendor/github.com/jesseduffield/generics/slices/delegated_slices.go117
-rw-r--r--vendor/github.com/jesseduffield/generics/slices/delegated_sort.go57
-rw-r--r--vendor/github.com/jesseduffield/generics/slices/slices.go408
-rw-r--r--vendor/modules.txt1
58 files changed, 212 insertions, 732 deletions
diff --git a/pkg/app/app.go b/pkg/app/app.go
index 2b7a8457d..f34611b34 100644
--- a/pkg/app/app.go
+++ b/pkg/app/app.go
@@ -13,7 +13,6 @@ import (
"github.com/sirupsen/logrus"
"github.com/spf13/afero"
- "github.com/jesseduffield/generics/slices"
appTypes "github.com/jesseduffield/lazygit/pkg/app/types"
"github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/git_commands"
@@ -267,7 +266,11 @@ func (app *App) Run(startArgs appTypes.StartArgs) error {
// Close closes any resources
func (app *App) Close() error {
- return slices.TryForEach(app.closers, func(closer io.Closer) error {
- return closer.Close()
- })
+ for _, closer := range app.closers {
+ if err := closer.Close(); err != nil {
+ return err
+ }
+ }
+
+ return nil
}
diff --git a/pkg/app/daemon/rebase.go b/pkg/app/daemon/rebase.go
index 8702f0f69..50494113a 100644
--- a/pkg/app/daemon/rebase.go
+++ b/pkg/app/daemon/rebase.go
@@ -6,10 +6,10 @@ import (
"strings"
"github.com/fsmiamoto/git-todo-parser/todo"
- "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/common"
"github.com/jesseduffield/lazygit/pkg/env"
+ "github.com/samber/lo"
)
type TodoLine struct {
@@ -26,11 +26,11 @@ func (self *TodoLine) ToString() string {
}
func TodoLinesToString(todoLines []TodoLine) string {
- lines := slices.Map(todoLines, func(todoLine TodoLine) string {
+ lines := lo.Map(todoLines, func(todoLine TodoLine, _ int) string {
return todoLine.ToString()
})
- return strings.Join(slices.Reverse(lines), "")
+ return strings.Join(lo.Reverse(lines), "")
}
type ChangeTodoAction struct {
diff --git a/pkg/app/errors.go b/pkg/app/errors.go
index 1556e58fe..2561fccb8 100644
--- a/pkg/app/errors.go
+++ b/pkg/app/errors.go
@@ -3,8 +3,8 @@ package app
import (
"strings"
- "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazygit/pkg/i18n"
+ "github.com/samber/lo"
)
type errorMapping struct {
@@ -18,7 +18,7 @@ func knownError(tr *i18n.TranslationSet, err error) (string, bool) {
knownErrorMessages := []string{tr.MinGitVersionError}
- if slices.Contains(knownErrorMessages, errorMessage) {
+ if lo.Contains(knownErrorMessages, errorMessage) {
return errorMessage, true
}
@@ -29,7 +29,7 @@ func knownError(tr *i18n.TranslationSet, err error) (string, bool) {
},
}
- if mapping, ok := slices.Find(mappings, func(mapping errorMapping) bool {
+ if mapping, ok := lo.Find(mappings, func(mapping errorMapping) bool {
return strings.Contains(errorMessage, mapping.originalError)
}); ok {
return mapping.newError, true
diff --git a/pkg/cheatsheet/generate.go b/pkg/cheatsheet/generate.go
index 112e4c4d5..184e84a04 100644
--- a/pkg/cheatsheet/generate.go
+++ b/pkg/cheatsheet/generate.go
@@ -15,7 +15,6 @@ import (
"strings"
"github.com/jesseduffield/generics/maps"
- "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazycore/pkg/utils"
"github.com/jesseduffield/lazygit/pkg/app"
"github.com/jesseduffield/lazygit/pkg/config"
@@ -23,6 +22,7 @@ import (
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/jesseduffield/lazygit/pkg/i18n"
"github.com/samber/lo"
+ "golang.org/x/exp/slices"
)
type bindingSection struct {
@@ -129,7 +129,7 @@ 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 {
+ bindingsToDisplay := lo.Filter(bindings, func(binding *types.Binding, _ int) bool {
if lo.Contains(excludedViews, binding.ViewName) {
return false
}
@@ -162,7 +162,7 @@ func getBindingSections(bindings []*types.Binding, tr *i18n.TranslationSet) []*b
return a.header.title < b.header.title
})
- return slices.Map(bindingGroups, func(hb headerWithBindings) *bindingSection {
+ return lo.Map(bindingGroups, func(hb headerWithBindings, _ int) *bindingSection {
return &bindingSection{
title: hb.header.title,
bindings: hb.bindings,
diff --git a/pkg/commands/git_commands/bisect_info.go b/pkg/commands/git_commands/bisect_info.go
index ea20d0d38..67293803a 100644
--- a/pkg/commands/git_commands/bisect_info.go
+++ b/pkg/commands/git_commands/bisect_info.go
@@ -2,7 +2,7 @@ package git_commands
import (
"github.com/jesseduffield/generics/maps"
- "github.com/jesseduffield/generics/slices"
+ "github.com/samber/lo"
"github.com/sirupsen/logrus"
)
@@ -97,5 +97,5 @@ func (self *BisectInfo) Bisecting() bool {
return false
}
- return slices.Contains(maps.Values(self.statusMap), BisectStatusOld)
+ return lo.Contains(maps.Values(self.statusMap), BisectStatusOld)
}
diff --git a/pkg/commands/git_commands/branch_loader.go b/pkg/commands/git_commands/branch_loader.go
index 7c91c1cbc..094354cad 100644
--- a/pkg/commands/git_commands/branch_loader.go
+++ b/pkg/commands/git_commands/branch_loader.go
@@ -6,13 +6,13 @@ import (
"strings"
"github.com/jesseduffield/generics/set"
- "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/go-git/v5/config"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
"github.com/jesseduffield/lazygit/pkg/common"
"github.com/jesseduffield/lazygit/pkg/utils"
"github.com/samber/lo"
+ "golang.org/x/exp/slices"
)
// context:
@@ -75,7 +75,7 @@ outer:
if strings.EqualFold(reflogBranch.Name, branch.Name) {
branch.Recency = reflogBranch.Recency
branchesWithRecency = append(branchesWithRecency, branch)
- branches = slices.Remove(branches, j)
+ branches = utils.Remove(branches, j)
continue outer
}
}
@@ -87,14 +87,14 @@ outer:
return a.Name < b.Name
})
- branches = slices.Prepend(branches, branchesWithRecency...)
+ branches = utils.Prepend(branches, branchesWithRecency...)
foundHead := false
for i, branch := range branches {
if branch.Head {
foundHead = true
branch.Recency = " *"
- branches = slices.Move(branches, i, 0)
+ branches = utils.Move(branches, i, 0)
break
}
}
@@ -103,7 +103,7 @@ outer:
if err != nil {
return nil, err
}
- branches = slices.Prepend(branches, &models.Branch{Name: info.RefName, DisplayName: info.DisplayName, Head: true, DetachedHead: info.DetachedHead, Recency: " *"})
+ branches = utils.Prepend(branches, &models.Branch{Name: info.RefName, DisplayName: info.DisplayName, Head: true, DetachedHead: info.DetachedHead, Recency: " *"})
}
configBranches, err := self.config.Branches()
@@ -131,7 +131,7 @@ func (self *BranchLoader) obtainBranches() []*models.Branch {
trimmedOutput := strings.TrimSpace(output)
outputLines := strings.Split(trimmedOutput, "\n")
- return slices.FilterMap(outputLines, func(line string) (*models.Branch, bool) {
+ return lo.FilterMap(outputLines, func(line string, _ int) (*models.Branch, bool) {
if line == "" {
return nil, false
}
diff --git a/pkg/commands/git_commands/commit_file_loader.go b/pkg/commands/git_commands/commit_file_loader.go
index d89c3c578..7abdc74c5 100644
--- a/pkg/commands/git_commands/commit_file_loader.go
+++ b/pkg/commands/git_commands/commit_file_loader.go
@@ -3,7 +3,6 @@ package git_commands
import (
"strings"
- "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
"github.com/jesseduffield/lazygit/pkg/common"
@@ -52,7 +51,7 @@ func getCommitFilesFromFilenames(filenames string) []*models.CommitFile {
}
// typical result looks like 'A my_file' meaning my_file was added
- return slices.Map(lo.Chunk(lines, 2), func(chunk []string) *models.CommitFile {
+ return lo.Map(lo.Chunk(lines, 2), func(chunk []string, _ int) *models.CommitFile {
return &models.CommitFile{
ChangeStatus: chunk[0],
Name: chunk[1],
diff --git a/pkg/commands/git_commands/commit_loader.go b/pkg/commands/git_commands/commit_loader.go
index ac0f19363..f138adfaf 100644
--- a/pkg/commands/git_commands/commit_loader.go
+++ b/pkg/commands/git_commands/commit_loader.go
@@ -11,7 +11,6 @@ import (
"sync"
"github.com/fsmiamoto/git-todo-parser/todo"
- "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
"github.com/jesseduffield/lazygit/pkg/commands/types/enums"
@@ -233,7 +232,7 @@ func (self *CommitLoader) getHydratedRebasingCommits(rebaseMode enums.RebaseMode
return nil, nil
}
- commitShas := slices.FilterMap(commits, func(commit *models.Commit) (string, bool) {
+ commitShas := lo.FilterMap(commits, func(commit *models.Commit, _ int) (string, bool) {
return commit.Sha, commit.Sha != ""
})
@@ -379,7 +378,7 @@ func (self *CommitLoader) getInteractiveRebasingCommits() ([]*models.Commit, err
// Command does not have a commit associated, skip
continue
}
- commits = slices.Prepend(commits, &models.Commit{
+ commits = utils.Prepend(commits, &models.Commit{
Sha: t.Commit,
Name: t.Msg,
Status: models.StatusRebasing,
diff --git a/pkg/commands/git_commands/rebase.go b/pkg/commands/git_commands/rebase.go
index 66bfbf82d..83c3fbe09 100644
--- a/pkg/commands/git_commands/rebase.go
+++ b/pkg/commands/git_commands/rebase.go
@@ -7,7 +7,6 @@ import (
"github.com/fsmiamoto/git-todo-parser/todo"
"github.com/go-errors/errors"
- "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazygit/pkg/app/daemon"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
@@ -158,7 +157,7 @@ func (self *RebaseCommands) EditRebase(branchRef string) error {
}
func logTodoChanges(changes []daemon.ChangeTodoAction) string {
- changeTodoStr := strings.Join(slices.Map(changes, func(c daemon.ChangeTodoAction) string {
+ changeTodoStr := strings.Join(lo.Map(changes, func(c daemon.ChangeTodoAction, _ int) string {
return fmt.Sprintf("%s:%s", c.Sha, c.NewAction)
}), "\n")
return fmt.Sprintf("Changing TODO actions: %s", changeTodoStr)
diff --git a/pkg/commands/git_commands/remote_loader.go b/pkg/commands/git_commands/remote_loader.go
index c2a8da025..6551ecb25 100644
--- a/pkg/commands/git_commands/remote_loader.go
+++ b/pkg/commands/git_commands/remote_loader.go
@@ -4,12 +4,13 @@ import (
"strings"
"sync"
- "github.com/jesseduffield/generics/slices"
gogit "github.com/jesseduffield/go-git/v5"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
"github.com/jesseduffield/lazygit/pkg/common"
"github.com/jesseduffield/lazygit/pkg/utils"
+ "github.com/samber/lo"
+ "golang.org/x/exp/slices"
)
type RemoteLoader struct {
@@ -53,7 +54,7 @@ func (self *RemoteLoader) GetRemotes() ([]*models.Remote, error) {
return nil, remoteBranchesErr
}
- remotes := slices.Map(goGitRemotes, func(goGitRemote *gogit.Remote) *models.Remote {
+ remotes := lo.Map(goGitRemotes, func(goGitRemote *gogit.Remote, _ int) *models.Remote {
remoteName := goGitRemote.Config().Name
branches := remoteBranchesByRemoteName[remoteName]
diff --git a/pkg/commands/git_commands/stash_loader.go b/pkg/commands/git_commands/stash_loader.go
index e5ea1da49..1ab0e0ad0 100644
--- a/pkg/commands/git_commands/stash_loader.go
+++ b/pkg/commands/git_commands/stash_loader.go
@@ -5,11 +5,11 @@ import (
"strconv"
"strings"
- "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
"github.com/jesseduffield/lazygit/pkg/common"
"github.com/jesseduffield/lazygit/pkg/utils"
+ "github.com/samber/lo"
)
type StashLoader struct {
@@ -69,7 +69,7 @@ func (self *StashLoader) getUnfilteredStashEntries() []*models.StashEntry {
cmdArgs := NewGitCmd("stash").Arg("list", "-z", "--pretty=%gs").ToArgv()
rawString, _ := self.cmd.New(cmdArgs).DontLog().RunWithOutput()
- return slices.MapWithIndex(utils.SplitNul(rawString), func(line string, index int) *models.StashEntry {
+ return lo.Map(utils.SplitNul(rawString), func(line string, index int) *models.StashEntry {
return self.stashEntryFromLine(line, index)
})
}
diff --git a/pkg/commands/git_commands/tag_loader.go b/pkg/commands/git_commands/tag_loader.go
index f69ebf79a..bd05fe4b4 100644
--- a/pkg/commands/git_commands/tag_loader.go
+++ b/pkg/commands/git_commands/tag_loader.go
@@ -3,11 +3,11 @@ package git_commands
import (
"regexp"
- "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
"github.com/jesseduffield/lazygit/pkg/common"
"github.com/jesseduffield/lazygit/pkg/utils"
+ "github.com/samber/lo"
)
type TagLoader struct {
@@ -38,7 +38,7 @@ func (self *TagLoader) GetTags() ([]*models.Tag, error) {
lineRegex := regexp.MustCompile(`^([^\s]+)(\s+)?(.*)$`)
- tags := slices.Map(split, func(line string) *models.Tag {
+ tags := lo.Map(split, func(line string, _ int) *models.Tag {
matches := lineRegex.FindStringSubmatch(line)
tagName := matches[1]
message := ""
diff --git a/pkg/commands/hosting_service/hosting_service.go b/pkg/commands/hosting_service/hosting_service.go
index dd06e1cb7..e6f9bef79 100644
--- a/pkg/commands/hosting_service/hosting_service.go
+++ b/pkg/commands/hosting_service/hosting_service.go
@@ -8,9 +8,10 @@ import (
"github.com/go-errors/errors"
"github.com/jesseduffield/lazygit/pkg/i18n"
"github.com/jesseduffield/lazygit/pkg/utils"
+ "github.com/samber/lo"
"github.com/sirupsen/logrus"
- "github.com/jesseduffield/generics/slices"
+ "golang.org/x/exp/slices"
)
// This package is for handling logic specific to a git hosting service like github, gitlab, bitbucket, gitea, etc.
@@ -111,7 +112,7 @@ func (self *HostingServiceMgr) getCandidateServiceDomains() []ServiceDomain {
serviceDefinition, ok := serviceDefinitionByProvider[provider]
if !ok {
- providerNames := slices.Map(serviceDefinitions, func(serviceDefinition ServiceDefinition) string {
+ providerNames := lo.Map(serviceDefinitions, func(serviceDefinition ServiceDefinition, _ int) string {
return serviceDefinition.provider
})
diff --git a/pkg/commands/oscommands/os.go b/pkg/commands/oscommands/os.go
index 3e305a96f..4a77310b5 100644
--- a/pkg/commands/oscommands/os.go
+++ b/pkg/commands/oscommands/os.go
@@ -13,7 +13,6 @@ import (
"github.com/samber/lo"
"github.com/atotto/clipboard"
- "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/kill"
"github.com/jesseduffield/lazygit/pkg/common"
"github.com/jesseduffield/lazygit/pkg/config"
@@ -189,7 +188,7 @@ func (c *OSCommand) FileExists(path string) (bool, error) {
// PipeCommands runs a heap of commands and pipes their inputs/outputs together like A | B | C
func (c *OSCommand) PipeCommands(cmdObjs ...ICmdObj) error {
- cmds := slices.Map(cmdObjs, func(cmdObj ICmdObj) *exec.Cmd {
+ cmds := lo.Map(cmdObjs, func(cmdObj ICmdObj, _ int) *exec.Cmd {
return cmdObj.GetCmd()
})
diff --git a/pkg/commands/patch/patch_builder.go b/pkg/commands/patch/patch_builder.go
index b73891911..2f350a40b 100644
--- a/pkg/commands/patch/patch_builder.go
+++ b/pkg/commands/patch/patch_builder.go
@@ -5,7 +5,6 @@ import (
"strings"
"github.com/jesseduffield/generics/maps"
- "github.com/jesseduffield/generics/slices"
"github.com/samber/lo"
"github.com/sirupsen/logrus"
)
@@ -209,10 +208,10 @@ func (p *PatchBuilder) renderEachFilePatch(plain bool) []string {
filenames := maps.Keys(p.fileInfoMap)
sort.Strings(filenames)
- patches := slices.Map(filenames, func(filename string) string {
+ patches := lo.Map(filenames, func(filename string, _ int) string {
return p.RenderPatchForFile(filename, plain, false)
})
- output := slices.Filter(patch