summaryrefslogtreecommitdiffstats
path: root/pkg/gui
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2021-03-31 23:55:06 +1100
committerJesse Duffield <jessedduffield@gmail.com>2021-04-02 11:00:15 +1100
commit7d62f103e4a1b39b7e8fbd0e1f39815c525cd588 (patch)
tree83e331beeee07d066c76580e044234f18063a0a7 /pkg/gui
parent9e85d37fb949bbc83f28cb079f2ac4b45ae895ce (diff)
big refactor to give our enums actual types
Diffstat (limited to 'pkg/gui')
-rw-r--r--pkg/gui/boxlayout/boxlayout.go10
-rw-r--r--pkg/gui/boxlayout/boxlayout_test.go4
-rw-r--r--pkg/gui/branches_panel.go4
-rw-r--r--pkg/gui/commits_panel.go8
-rw-r--r--pkg/gui/context.go10
-rw-r--r--pkg/gui/discard_changes_menu_panel.go8
-rw-r--r--pkg/gui/errors.go42
-rw-r--r--pkg/gui/file_watching.go2
-rw-r--r--pkg/gui/files_panel.go10
-rw-r--r--pkg/gui/global_handlers.go32
-rw-r--r--pkg/gui/gui.go59
-rw-r--r--pkg/gui/line_by_line_panel.go4
-rw-r--r--pkg/gui/list_context.go4
-rw-r--r--pkg/gui/main_panels.go16
-rw-r--r--pkg/gui/merge_panel.go4
-rw-r--r--pkg/gui/remote_branches_panel.go4
-rw-r--r--pkg/gui/remotes_panel.go8
-rw-r--r--pkg/gui/reset_menu_panel.go2
-rw-r--r--pkg/gui/staging_panel.go2
-rw-r--r--pkg/gui/stash_panel.go4
-rw-r--r--pkg/gui/submodules_panel.go20
-rw-r--r--pkg/gui/tags_panel.go4
-rw-r--r--pkg/gui/undoing.go6
-rw-r--r--pkg/gui/view_helpers.go32
-rw-r--r--pkg/gui/workspace_reset_options_panel.go12
25 files changed, 180 insertions, 131 deletions
diff --git a/pkg/gui/boxlayout/boxlayout.go b/pkg/gui/boxlayout/boxlayout.go
index b5d78faea..ac077becd 100644
--- a/pkg/gui/boxlayout/boxlayout.go
+++ b/pkg/gui/boxlayout/boxlayout.go
@@ -9,8 +9,10 @@ type Dimensions struct {
Y1 int
}
+type Direction int
+
const (
- ROW = iota
+ ROW Direction = iota
COLUMN
)
@@ -26,10 +28,10 @@ const (
type Box struct {
// Direction decides how the children boxes are laid out. ROW means the children will each form a row i.e. that they will be stacked on top of eachother.
- Direction int // ROW or COLUMN
+ Direction Direction
// function which takes the width and height assigned to the box and decides which orientation it will have
- ConditionalDirection func(width int, height int) int
+ ConditionalDirection func(width int, height int) Direction
Children []*Box
@@ -120,7 +122,7 @@ func (b *Box) isStatic() bool {
return b.Size > 0
}
-func (b *Box) getDirection(width int, height int) int {
+func (b *Box) getDirection(width int, height int) Direction {
if b.ConditionalDirection != nil {
return b.ConditionalDirection(width, height)
}
diff --git a/pkg/gui/boxlayout/boxlayout_test.go b/pkg/gui/boxlayout/boxlayout_test.go
index 9a50ff9d2..6f06379a3 100644
--- a/pkg/gui/boxlayout/boxlayout_test.go
+++ b/pkg/gui/boxlayout/boxlayout_test.go
@@ -87,7 +87,7 @@ func TestArrangeWindows(t *testing.T) {
},
{
"Box with COLUMN direction only on wide boxes with narrow box",
- &Box{ConditionalDirection: func(width int, height int) int {
+ &Box{ConditionalDirection: func(width int, height int) Direction {
if width > 4 {
return COLUMN
} else {
@@ -111,7 +111,7 @@ func TestArrangeWindows(t *testing.T) {
},
{
"Box with COLUMN direction only on wide boxes with wide box",
- &Box{ConditionalDirection: func(width int, height int) int {
+ &Box{ConditionalDirection: func(width int, height int) Direction {
if width > 4 {
return COLUMN
} else {
diff --git a/pkg/gui/branches_panel.go b/pkg/gui/branches_panel.go
index 9dd5438cc..e94ed7700 100644
--- a/pkg/gui/branches_panel.go
+++ b/pkg/gui/branches_panel.go
@@ -293,7 +293,7 @@ func (gui *Gui) deleteNamedBranch(selectedBranch *models.Branch, force bool) err
}
return gui.createErrorPanel(errMessage)
}
- return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{BRANCHES}})
+ return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []RefreshableView{BRANCHES}})
},
})
}
@@ -408,7 +408,7 @@ func (gui *Gui) handleFastForward(g *gocui.Gui, v *gocui.View) error {
} else {
err := gui.GitCommand.FastForward(branch.Name, remoteName, remoteBranchName, gui.promptUserForCredential)
gui.handleCredentialsPopup(err)
- _ = gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{BRANCHES}})
+ _ = gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []RefreshableView{BRANCHES}})
}
})
return nil
diff --git a/pkg/gui/commits_panel.go b/pkg/gui/commits_panel.go
index 6be372f2e..1ad295763 100644
--- a/pkg/gui/commits_panel.go
+++ b/pkg/gui/commits_panel.go
@@ -437,7 +437,7 @@ func (gui *Gui) handleCommitRevert(g *gocui.Gui, v *gocui.View) error {
return gui.surfaceError(err)
}
gui.State.Panels.Commits.SelectedLineIdx++
- return gui.refreshSidePanels(refreshOptions{mode: BLOCK_UI, scope: []int{COMMITS, BRANCHES}})
+ return gui.refreshSidePanels(refreshOptions{mode: BLOCK_UI, scope: []RefreshableView{COMMITS, BRANCHES}})
}
func (gui *Gui) handleViewCommitFiles() error {
@@ -527,7 +527,7 @@ func (gui *Gui) handleCreateLightweightTag(commitSha string) error {
if err := gui.GitCommand.CreateLightweightTag(response, commitSha); err != nil {
return gui.surfaceError(err)
}
- return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{COMMITS, TAGS}})
+ return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []RefreshableView{COMMITS, TAGS}})
},
})
}
@@ -560,7 +560,7 @@ func (gui *Gui) handleOpenSearchForCommitsPanel(g *gocui.Gui, v *gocui.View) err
// we usually lazyload these commits but now that we're searching we need to load them now
if gui.State.Panels.Commits.LimitCommits {
gui.State.Panels.Commits.LimitCommits = false
- if err := gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{COMMITS}}); err != nil {
+ if err := gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []RefreshableView{COMMITS}}); err != nil {
return err
}
}
@@ -572,7 +572,7 @@ func (gui *Gui) handleGotoBottomForCommitsPanel(g *gocui.Gui, v *gocui.View) err
// we usually lazyload these commits but now that we're searching we need to load them now
if gui.State.Panels.Commits.LimitCommits {
gui.State.Panels.Commits.LimitCommits = false
- if err := gui.refreshSidePanels(refreshOptions{mode: SYNC, scope: []int{COMMITS}}); err != nil {
+ if err := gui.refreshSidePanels(refreshOptions{mode: SYNC, scope: []RefreshableView{COMMITS}}); err != nil {
return err
}
}
diff --git a/pkg/gui/context.go b/pkg/gui/context.go
index c28fc9efc..91ec00fb1 100644
--- a/pkg/gui/context.go
+++ b/pkg/gui/context.go
@@ -6,8 +6,10 @@ import (
"github.com/jesseduffield/gocui"
)
+type ContextKind int
+
const (
- SIDE_CONTEXT int = iota
+ SIDE_CONTEXT ContextKind = iota
MAIN_CONTEXT
TEMPORARY_POPUP
PERSISTENT_POPUP
@@ -126,7 +128,7 @@ type Context interface {
HandleFocus() error
HandleFocusLost() error
HandleRender() error
- GetKind() int
+ GetKind() ContextKind
GetViewName() string
GetWindowName() string
SetWindowName(string)
@@ -143,7 +145,7 @@ type BasicContext struct {
OnFocusLost func() error
OnRender func() error
OnGetOptionsMap func() map[string]string
- Kind int
+ Kind ContextKind
Key string
ViewName string
}
@@ -194,7 +196,7 @@ func (c BasicContext) HandleFocusLost() error {
return nil
}
-func (c BasicContext) GetKind() int {
+func (c BasicContext) GetKind() ContextKind {
return c.Kind
}
diff --git a/pkg/gui/discard_changes_menu_panel.go b/pkg/gui/discard_changes_menu_panel.go
index daa2d76d8..71f9e6d96 100644
--- a/pkg/gui/discard_changes_menu_panel.go
+++ b/pkg/gui/discard_changes_menu_panel.go
@@ -15,7 +15,7 @@ func (gui *Gui) handleCreateDiscardMenu() error {
if err := gui.GitCommand.DiscardAllDirChanges(node); err != nil {
return gui.surfaceError(err)
}
- return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}})
+ return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []RefreshableView{FILES}})
},
},
}
@@ -28,7 +28,7 @@ func (gui *Gui) handleCreateDiscardMenu() error {
return gui.surfaceError(err)
}
- return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}})
+ return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []RefreshableView{FILES}})
},
})
}
@@ -55,7 +55,7 @@ func (gui *Gui) handleCreateDiscardMenu() error {
if err := gui.GitCommand.DiscardAllFileChanges(file); err != nil {
return gui.surfaceError(err)
}
- return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}})
+ return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []RefreshableView{FILES}})
},
},
}
@@ -68,7 +68,7 @@ func (gui *Gui) handleCreateDiscardMenu() error {
return gui.surfaceError(err)
}
- return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}})
+ return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []RefreshableView{FILES}})
},
})
}
diff --git a/pkg/gui/errors.go b/pkg/gui/errors.go
new file mode 100644
index 000000000..d8aa7530d
--- /dev/null
+++ b/pkg/gui/errors.go
@@ -0,0 +1,42 @@
+package gui
+
+import "github.com/go-errors/errors"
+
+// SentinelErrors are the errors that have special meaning and need to be checked
+// by calling functions. The less of these, the better
+type SentinelErrors struct {
+ ErrSubProcess error
+ ErrNoFiles error
+ ErrSwitchRepo error
+ ErrRestart error
+}
+
+const UNKNOWN_VIEW_ERROR_MSG = "unknown view"
+
+// GenerateSentinelErrors makes the sentinel errors for the gui. We're defining it here
+// because we can't do package-scoped errors with localization, and also because
+// it seems like package-scoped variables are bad in general
+// https://dave.cheney.net/2017/06/11/go-without-package-scoped-variables
+// In the future it would be good to implement some of the recommendations of
+// that article. For now, if we don't need an error to be a sentinel, we will just
+// define it inline. This has implications for error messages that pop up everywhere
+// in that we'll be duplicating the default values. We may need to look at
+// having a default localisation bundle defined, and just using keys-only when
+// localising things in the code.
+func (gui *Gui) GenerateSentinelErrors() {
+ gui.Errors = SentinelErrors{
+ ErrSubProcess: errors.New(gui.Tr.RunningSubprocess),
+ ErrNoFiles: errors.New(gui.Tr.NoChangedFiles),
+ ErrSwitchRepo: errors.New("switching repo"),
+ ErrRestart: errors.New("restarting"),
+ }
+}
+
+func (gui *Gui) sentinelErrorsArr() []error {
+ return []error{
+ gui.Errors.ErrSubProcess,
+ gui.Errors.ErrNoFiles,
+ gui.Errors.ErrSwitchRepo,
+ gui.Errors.ErrRestart,
+ }
+}
diff --git a/pkg/gui/file_watching.go b/pkg/gui/file_watching.go
index f7617e559..607aa6eec 100644
--- a/pkg/gui/file_watching.go
+++ b/pkg/gui/file_watching.go
@@ -117,7 +117,7 @@ func (gui *Gui) watchFilesForChanges() {
}
// only refresh if we're not already
if !gui.State.IsRefreshingFiles {
- _ = gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}})
+ _ = gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []RefreshableView{FILES}})
}
// watch for errors
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go
index c6fcb07d9..b9477ea1a 100644
--- a/pkg/gui/files_panel.go
+++ b/pkg/gui/files_panel.go
@@ -256,7 +256,7 @@ func (gui *Gui) handleFilePress() error {
}
}
- if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}); err != nil {
+ if err := gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}}); err != nil {
return err
}
@@ -287,7 +287,7 @@ func (gui *Gui) handleStageAll(g *gocui.Gui, v *gocui.View) error {
_ = gui.surfaceError(err)
}
- if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}); err != nil {
+ if err := gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}}); err != nil {
return err
}
@@ -333,7 +333,7 @@ func (gui *Gui) handleIgnoreFile() error {
if err := gui.GitCommand.Ignore(node.GetPath()); err != nil {
return err
}
- return gui.refreshSidePanels(refreshOptions{scope: []int{FILES}})
+ return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}})
},
})
}
@@ -346,7 +346,7 @@ func (gui *Gui) handleIgnoreFile() error {
return gui.surfaceError(err)
}
- return gui.refreshSidePanels(refreshOptions{scope: []int{FILES}})
+ return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}})
}
func (gui *Gui) handleWIPCommitPress(g *gocui.Gui, filesView *gocui.View) error {
@@ -522,7 +522,7 @@ func (gui *Gui) handleFileOpen(g *gocui.Gui, v *gocui.View) error {
}
func (gui *Gui) handleRefreshFiles(g *gocui.Gui, v *gocui.View) error {
- return gui.refreshSidePanels(refreshOptions{scope: []int{FILES}})
+ return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}})
}
func (gui *Gui) refreshStateFiles() error {
diff --git a/pkg/gui/global_handlers.go b/pkg/gui/global_handlers.go
index d0c357df0..2db37e5d4 100644
--- a/pkg/gui/global_handlers.go
+++ b/pkg/gui/global_handlers.go
@@ -22,14 +22,40 @@ func (gui *Gui) rerenderViewsWithScreenModeDependentContent() error {
return nil
}
+// TODO: GENERICS
+func nextIntInCycle(sl []WindowMaximisation, current WindowMaximisation) WindowMaximisation {
+ for i, val := range sl {
+ if val == current {
+ if i == len(sl)-1 {
+ return sl[0]
+ }
+ return sl[i+1]
+ }
+ }
+ return sl[0]
+}
+
+// TODO: GENERICS
+func prevIntInCycle(sl []WindowMaximisation, current WindowMaximisation) WindowMaximisation {
+ for i, val := range sl {
+ if val == current {
+ if i > 0 {
+ return sl[i-1]
+ }
+ return sl[len(sl)-1]
+ }
+ }
+ return sl[len(sl)-1]
+}
+
func (gui *Gui) nextScreenMode(g *gocui.Gui, v *gocui.View) error {
- gui.State.ScreenMode = utils.NextIntInCycle([]int{SCREEN_NORMAL, SCREEN_HALF, SCREEN_FULL}, gui.State.ScreenMode)
+ gui.State.ScreenMode = nextIntInCycle([]WindowMaximisation{SCREEN_NORMAL, SCREEN_HALF, SCREEN_FULL}, gui.State.ScreenMode)
return gui.rerenderViewsWithScreenModeDependentContent()
}
func (gui *Gui) prevScreenMode(g *gocui.Gui, v *gocui.View) error {
- gui.State.ScreenMode = utils.PrevIntInCycle([]int{SCREEN_NORMAL, SCREEN_HALF, SCREEN_FULL}, gui.State.ScreenMode)
+ gui.State.ScreenMode = prevIntInCycle([]WindowMaximisation{SCREEN_NORMAL, SCREEN_HALF, SCREEN_FULL}, gui.State.ScreenMode)
return gui.rerenderViewsWithScreenModeDependentContent()
}
@@ -179,7 +205,7 @@ func (gui *Gui) fetch(canPromptForCredentials bool) (err error) {
_ = gui.createErrorPanel(gui.Tr.PassUnameWrong)
}
- _ = gui.refreshSidePanels(refreshOptions{scope: []int{BRANCHES, COMMITS, REMOTES, TAGS}, mode: ASYNC})
+ _ = gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{BRANCHES, COMMITS, REMOTES, TAGS}, mode: ASYNC})
return err
}
diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go
index a5d66153f..671321d54 100644
--- a/pkg/gui/gui.go
+++ b/pkg/gui/gui.go
@@ -11,8 +11,6 @@ import (
"strings"
"time"
- "github.com/go-errors/errors"
-
"github.com/fatih/color"
"github.com/golang-collections/collections/stack"
"github.com/jesseduffield/gocui"
@@ -33,8 +31,14 @@ import (
"github.com/sirupsen/logrus"
)
+// screen sizing determines how much space your selected window takes up (window
+// as in panel, not your terminal's window). Sometimes you want a bit more space
+// to see the contents of a panel, and this keeps track of how much maximisation
+// you've set
+type WindowMaximisation int
+
const (
- SCREEN_NORMAL int = iota
+ SCREEN_NORMAL WindowMaximisation = iota
SCREEN_HALF
SCREEN_FULL
)
@@ -44,45 +48,6 @@ const StartupPopupVersion = 3
// OverlappingEdges determines if panel edges overlap
var OverlappingEdges = false
-// SentinelErrors are the errors that have special meaning and need to be checked
-// by calling functions. The less of these, the better
-type SentinelErrors struct {
- ErrSubProcess error
- ErrNoFiles error
- ErrSwitchRepo error
- ErrRestart error
-}
-
-const UNKNOWN_VIEW_ERROR_MSG = "unknown view"
-
-// GenerateSentinelErrors makes the sentinel errors for the gui. We're defining it here
-// because we can't do package-scoped errors with localization, and also because
-// it seems like package-scoped variables are bad in general
-// https://dave.cheney.net/2017/06/11/go-without-package-scoped-variables
-// In the future it would be good to implement some of the recommendations of
-// that article. For now, if we don't need an error to be a sentinel, we will just
-// define it inline. This has implications for error messages that pop up everywhere
-// in that we'll be duplicating the default values. We may need to look at
-// having a default localisation bundle defined, and just using keys-only when
-// localising things in the code.
-func (gui *Gui) GenerateSentinelErrors() {
- gui.Errors = SentinelErrors{
- ErrSubProcess: errors.New(gui.Tr.RunningSubprocess),
- ErrNoFiles: errors.New(gui.Tr.NoChangedFiles),
- ErrSwitchRepo: errors.New("switching repo"),
- ErrRestart: errors.New("restarting"),
- }
-}
-
-func (gui *Gui) sentinelErrorsArr() []error {
- return []error{
- gui.Errors.ErrSubProcess,
- gui.Errors.ErrNoFiles,
- gui.Errors.ErrSwitchRepo,
- gui.Errors.ErrRestart,
- }
-}
-
// Gui wraps the gocui Gui object which handles rendering and events
type Gui struct {
g *gocui.Gui
@@ -151,7 +116,7 @@ type lBlPanelState struct {
LastLineIdx int
Diff string
PatchParser *patch.PatchParser
- SelectMode int // one of LINE, HUNK, or RANGE
+ SelectMode SelectMode
SecondaryFocused bool // this is for if we show the left or right panel
}
@@ -255,8 +220,10 @@ type searchingState struct {
}
// startup stages so we don't need to load everything at once
+type StartupStage int
+
const (
- INITIAL = iota
+ INITIAL StartupStage = iota
COMPLETE
)
@@ -331,13 +298,13 @@ type guiState struct {
RetainOriginalDir bool
IsRefreshingFiles bool
Searching searchingState
- ScreenMode int
+ ScreenMode WindowMaximisation
SideView *gocui.View
Ptmx *os.File
PrevMainWidth int
PrevMainHeight int
OldInformation string
- StartupStage int // one of INITIAL and COMPLETE. Allows us to not load everything at once
+ StartupStage StartupStage // Allows us to not load everything at once
Modes Modes
diff --git a/pkg/gui/line_by_line_panel.go b/pkg/gui/line_by_line_panel.go
index 230e9027e..4f35aa499 100644
--- a/pkg/gui/line_by_line_panel.go
+++ b/pkg/gui/line_by_line_panel.go
@@ -16,8 +16,10 @@ import (
// use cases
// these represent what select mode we're in
+type SelectMode int
+
const (
- LINE = iota
+ LINE SelectMode = iota
RANGE
HUNK
)
diff --git a/pkg/gui/list_context.go b/pkg/gui/list_context.go
index 2bbcaee55..39fa8f6bf 100644
--- a/pkg/gui/list_context.go
+++ b/pkg/gui/list_context.go
@@ -23,7 +23,7 @@ type ListContext struct {
Gui *Gui
ResetMainViewOriginOnFocus bool
- Kind int
+ Kind ContextKind
ParentContext Context
// we can't know on the calling end whether a Context is actually a nil value without reflection, so we're storing this flag here to tell us. There has got to be a better way around this.
hasParent bool
@@ -102,7 +102,7 @@ func (lc *ListContext) GetKey() string {
return lc.ContextKey
}
-func (lc *ListContext) GetKind() int {
+func (lc *ListContext) GetKind() ContextKind {
return lc.Kind
}
diff --git a/pkg/gui/main_panels.go b/pkg/gui/main_panels.go
index b0098f5e9..8a34ddfa5 100644
--- a/pkg/gui/main_panels.go
+++ b/pkg/gui/main_panels.go
@@ -20,8 +20,10 @@ type refreshMainOpts struct {
}
// constants for updateTask's kind field
+type TaskKind int
+
const (
- RENDER_STRING = iota
+ RENDER_STRING TaskKind = iota
RENDER_STRING_WITHOUT_SCROLL
RUN_FUNCTION
RUN_COMMAND
@@ -29,14 +31,14 @@ const (
)
type updateTask interface {
- GetKind() int
+ GetKind() TaskKind
}
type renderStringTask struct {
str string
}
-func (t *renderStringTask) GetKind() int {
+func (t *renderStringTask) GetKind() TaskKind {
return RENDER_STRING
}
@@ -48,7 +50,7 @@ type renderStringWithoutScrollTask struct {
str string
}
-func (t *renderStringWithoutScrollTask) GetKind() int {
+func (t *renderStringWithoutScrollTask) GetKind() TaskKind {
return RENDER_STRING_WITHOUT_SCROLL
}
@@ -61,7 +63,7 @@ type runCommandTask struct {
prefix string
}
-func (t *runCommandTask) GetKind() int {
+func (t *runCommandTask) GetKind() TaskKind {
return RUN_COMMAND
}
@@ -78,7 +80,7 @@ type runPtyTask struct {
prefix string
}
-func (t *runPtyTask) GetKind() int {
+func (t *runPtyTask) GetKind() TaskKind {
return RUN_PTY
}
@@ -95,7 +97,7 @@ type runFunctionTask struct {
f func(chan struct{}) error
}
-func (t *runFunctionTask) GetKind() int {
+func (t *runFunctionTask) GetKind() TaskKind {
return RUN_FUNCTION
}
diff --git a/pkg/gui/merge_panel.go b/pkg/gui/merge_panel.go
index 60ce4d560..5ae0ec9b6 100644
--- a/pkg/gui/merge_panel.go
+++ b/pkg/gui/merge_panel.go
@@ -303,7 +303,7 @@ func (gui *Gui) handleEscapeMerge() error {
gui.takeOverScrolling()
gui.State.Panels.Merging.EditHistory = stack.New()
- if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}); err != nil {
+ if err := gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}}); err != nil {
return err
}
// it's possible this method won't be called from the merging view so we need to
@@ -318,7 +318,7 @@ func (gui *Gui) handleCompleteMerge() error {
if err := gui.stageSelectedFile(); err != nil {
return err
}
- if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}); err != nil {
+ if err := gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}}); err != nil {
return err
}
// if we got conflicts after unstashing, we don't want to call any git
diff --git a/pkg/gui/remote_branches_panel.go b/pkg/gui/remote_branches_panel.go
index 68d5b50ff..a2363b491 100644
--- a/pkg/gui/remote_branches_panel.go
+++ b/pkg/gui/remote_branches_panel.go
@@ -63,7 +63,7 @@ func (gui *Gui) handleDeleteRemoteBranch(g *gocui.Gui, v *gocui.View) error {
err := gui.GitCommand.DeleteRemoteBranch(remoteBranch.RemoteName, remoteBranch.Name, gui.promptUserForCredential)
gui.handleCredentialsPopup(err)
- return gui.refreshSidePanels(refreshOptions{scope: []int{BRANCHES, REMOTES}})
+ return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{BRANCHES, REMOTES}})
})
},
})
@@ -94,7 +94,7 @@ func (gui *Gui) handleSetBranchUpstream(g *gocui.Gui, v *gocui.View) error {
return err
}
- return gui.refreshSidePanels(refreshOptions{scope: []int{BRANCHES, REMOTES}})
+ return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{BRANCHES, REMOTES}})
},
})
}
diff --git a/pkg/gui/remotes_panel.go b/pkg/gui/remotes_panel.go
index 2426c817a..d99bcbb08 100644
--- a/pkg/gui/remotes_panel.go
+++ b/pkg/gui/remotes_panel.go
@@ -94,7 +94,7 @@ func (gui *Gui) handleAddRemote(g *gocui.Gui, v *gocui.View) error {
if err := gui.GitCommand.AddRemote(remoteName, remoteUrl); err != nil {
return err
}
- return gui.refreshSidePanels(refreshOptions{scope: []int{REMOTES}})
+ return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{REMOTES}})
},
})
},
@@ -116,7 +116,7 @@ func (gui *Gui) handleRemoveRemote(g *gocui.Gui, v *gocui.View) error {
return gui.surfaceError(err)
}
- return gui.refreshSidePanels(refreshOptions{scope: []int{BRANCHES, REMOTES}})
+ return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{BRANCHES, REMOTES}})
},
})
}
@@ -164,7 +164,7 @@ func (gui *Gui) handleEditRemote(g *gocui.Gui, v *gocui.View) error {
if err := gui.GitCommand.UpdateRemoteUrl(updatedRemoteName, updatedRemoteUrl); err != nil {
return gui.surfaceError(err)
}
- return gui.refreshSidePanels(refreshOptions{scope: []int{BRANCHES, REMOTES}})
+ return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{BRANCHES, REMOTES}})
},
})
},
@@ -184,6 +184,6 @@ func (gui *Gui) handleFetchRemote(g *gocui.Gui, v *gocui.View) error {
err := gui.GitCommand.FetchRemote(remote.Name, gui.promptUserForCredential)
gui.handleCredentialsPopup(err)
- return gui.refreshSidePanels(refreshOptions{scope: []int{BRANCHES, REMOTES}})
+ return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{BRANCHES, REMOTES}})
})
}
diff --git a/pkg/gui/reset_menu_panel.go b/pkg/gui/reset_menu_panel.go
index 3175dbed7..58dabf0cd 100644
--- a/pkg/gui/reset_menu_panel.go
+++ b/pkg/gui/reset_menu_panel.go
@@ -21,7 +21,7 @@ func (gui *Gui) resetToRef(ref string, strength string, options oscommands.RunCo
return err
}
- if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES, BRANCHES, REFLOG, COMMITS}}); err != nil {
+ if err := gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES, BRANCHES, REFLOG, COMMITS}}); err != nil {
return err
}
diff --git a/pkg/gui/staging_panel.go b/pkg/gui/staging_panel.go
index 05c762ed9..2aaa1e82e 100644
--- a/pkg/gui/staging_panel.go
+++ b/pkg/gui/staging_panel.go
@@ -152,7 +152,7 @@ func (gui *Gui) applySelection(reverse bool, state *lBlPanelState) error {
state.SelectMode = LINE
}
- if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}); err != nil {
+ if err := gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}}); err != nil {
return err
}
if err := gui.refreshStagingPanel(false, -1, state); err != nil {
diff --git a/pkg/gui/stash_panel.go b/pkg/gui/stash_panel.go
index cac542d0e..d60ffae2a 100644
--- a/pkg/gui/stash_panel.go
+++ b/pkg/gui/stash_panel.go
@@ -110,7 +110,7 @@ func (gui *Gui) stashDo(method string) error {
if err := gui.GitCommand.StashDo(stashEntry.Index, method); err != nil {
return gui.surfaceError(err)
}
- return gui.refreshSidePanels(refreshOptions{scope: []int{STASH, FILES}})
+ return gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{ST