summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-11-28 20:30:16 +1100
committerJesse Duffield <jessedduffield@gmail.com>2020-11-28 20:48:17 +1100
commit14ce23068384778a2c743769fd902f146a4f2eae (patch)
tree311faf204d937d9f79106685a8f28c59d0114b4f
parentf31fbc10f6a60e493dd09ff602b08b83bd2124fe (diff)
refactor
-rw-r--r--pkg/gui/confirmation_panel.go97
-rw-r--r--pkg/gui/editors.go4
-rw-r--r--pkg/utils/fuzzy_search.go5
3 files changed, 58 insertions, 48 deletions
diff --git a/pkg/gui/confirmation_panel.go b/pkg/gui/confirmation_panel.go
index ad50b61fa..f21a3be71 100644
--- a/pkg/gui/confirmation_panel.go
+++ b/pkg/gui/confirmation_panel.go
@@ -76,8 +76,8 @@ func (gui *Gui) createLoaderPanel(prompt string) error {
})
}
-func (gui *Gui) wrappedConfirmationFunction(handlersManageFocus bool, function func() error) func(*gocui.Gui, *gocui.View) error {
- return func(g *gocui.Gui, v *gocui.View) error {
+func (gui *Gui) wrappedConfirmationFunction(handlersManageFocus bool, function func() error) func() error {
+ return func() error {
if function != nil {
if err := function(); err != nil {
return err
@@ -92,8 +92,8 @@ func (gui *Gui) wrappedConfirmationFunction(handlersManageFocus bool, function f
}
}
-func (gui *Gui) wrappedPromptConfirmationFunction(handlersManageFocus bool, function func(string) error, getResponse func() string) func(*gocui.Gui, *gocui.View) error {
- return gui.wrappedHandler(func() error {
+func (gui *Gui) wrappedPromptConfirmationFunction(handlersManageFocus bool, function func(string) error, getResponse func() string) func() error {
+ return func() error {
if function != nil {
if err := function(getResponse()); err != nil {
return gui.surfaceError(err)
@@ -105,7 +105,7 @@ func (gui *Gui) wrappedPromptConfirmationFunction(handlersManageFocus bool, func
}
return nil
- })
+ }
}
func (gui *Gui) deleteConfirmationView() {
@@ -117,15 +117,6 @@ func (gui *Gui) deleteConfirmationView() {
_ = gui.g.DeleteView("confirmation")
}
-func (gui *Gui) deleteSuggestionsView() {
- keybindingConfig := gui.Config.GetUserConfig().Keybinding
- _ = gui.g.DeleteKeybinding("suggestions", gui.getKey(keybindingConfig.Universal.Confirm), gocui.ModNone)
- _ = gui.g.DeleteKeybinding("suggestions", gui.getKey(keybindingConfig.Universal.ConfirmAlt1), gocui.ModNone)
- _ = gui.g.DeleteKeybinding("suggestions", gui.getKey(keybindingConfig.Universal.Return), gocui.ModNone)
-
- _ = gui.g.DeleteView("suggestions")
-}
-
func (gui *Gui) closeConfirmationPrompt(handlersManageFocus bool) error {
view := gui.getConfirmationView()
if view == nil {
@@ -229,7 +220,7 @@ func (gui *Gui) createPopupPanel(opts createPopupPanelOpts) error {
return err
}
confirmationView.Editable = opts.editable
- confirmationView.Editor = gocui.EditorFunc(gui.editorWithCallback)
+ confirmationView.Editor = gocui.EditorFunc(gui.defaultEditor)
if opts.editable {
go utils.Safe(func() {
// TODO: remove this wait (right now if you remove it the EditGotoToEndOfLine method doesn't seem to work)
@@ -258,43 +249,69 @@ func (gui *Gui) setKeyBindings(opts createPopupPanelOpts) error {
)
gui.renderString("options", actions)
- var onConfirm func(*gocui.Gui, *gocui.View) error
+ var onConfirm func() error
if opts.handleConfirmPrompt != nil {
onConfirm = gui.wrappedPromptConfirmationFunction(opts.handlersManageFocus, opts.handleConfirmPrompt, func() string { return gui.getConfirmationView().Buffer() })
} else {
onConfirm = gui.wrappedConfirmationFunction(opts.handlersManageFocus, opts.handleConfirm)
}
- keybindingConfig := gui.Config.GetUserConfig().Keybinding
- if err := gui.g.SetKeybinding("confirmation", nil, gui.getKey(keybindingConfig.Universal.Confirm), gocui.ModNone, onConfirm); err != nil {
- return err
- }
- if err := gui.g.SetKeybinding("confirmation", nil, gui.getKey(keybindingConfig.Universal.ConfirmAlt1), gocui.ModNone, onConfirm); err != nil {
- return err
- }
-
- if err := gui.g.SetKeybinding("confirmation", nil, gui.getKey(keybindingConfig.Universal.Return), gocui.ModNone, gui.wrappedConfirmationFunction(opts.handlersManageFocus, opts.handleClose)); err != nil {
- return err
- }
-
- if err := gui.g.SetKeybinding("confirmation", nil, gui.getKey(keybindingConfig.Universal.TogglePanel), gocui.ModNone, gui.wrappedHandler(func() error { return gui.replaceContext(gui.Contexts.Suggestions.Context) })); err != nil {
- return err
+ type confirmationKeybinding struct {
+ viewName string
+ key interface{}
+ handler func() error
}
+ keybindingConfig := gui.Config.GetUserConfig().Keybinding
onSuggestionConfirm := gui.wrappedPromptConfirmationFunction(opts.handlersManageFocus, opts.handleConfirmPrompt, func() string { return gui.getSelectedSuggestionValue() })
- if err := gui.g.SetKeybinding("suggestions", nil, gui.getKey(keybindingConfig.Universal.Confirm), gocui.ModNone, onSuggestionConfirm); err != nil {
- return err
- }
- if err := gui.g.SetKeybinding("suggestions", nil, gui.getKey(keybindingConfig.Universal.ConfirmAlt1), gocui.ModNone, onSuggestionConfirm); err != nil {
- return err
- }
- if err := gui.g.SetKeybinding("suggestions", nil, gui.getKey(keybindingConfig.Universal.Return), gocui.ModNone, gui.wrappedConfirmationFunction(opts.handlersManageFocus, opts.handleClose)); err != nil {
- return err
+ confirmationKeybindings := []confirmationKeybinding{
+ {
+ viewName: "confirmation",
+ key: gui.getKey(keybindingConfig.Universal.Confirm),
+ handler: onConfirm,
+ },
+ {
+ viewName: "confirmation",
+ key: gui.getKey(keybindingConfig.Universal.ConfirmAlt1),
+ handler: onConfirm,
+ },
+ {
+ viewName: "confirmation",
+ key: gui.getKey(keybindingConfig.Universal.Return),
+ handler: gui.wrappedConfirmationFunction(opts.handlersManageFocus, opts.handleClose),
+ },
+ {
+ viewName: "confirmation",
+ key: gui.getKey(keybindingConfig.Universal.TogglePanel),
+ handler: func() error { return gui.replaceContext(gui.Contexts.Suggestions.Context) },
+ },
+ {
+ viewName: "suggestions",
+ key: gui.getKey(keybindingConfig.Universal.Confirm),
+ handler: onSuggestionConfirm,
+ },
+ {
+ viewName: "suggestions",
+ key: gui.getKey(keybindingConfig.Universal.ConfirmAlt1),
+ handler: onSuggestionConfirm,
+ },
+ {
+ viewName: "suggestions",
+ key: gui.getKey(keybindingConfig.Universal.Return),
+ handler: gui.wrappedConfirmationFunction(opts.handlersManageFocus, opts.handleClose),
+ },
+ {
+ viewName: "suggestions",
+ key: gui.getKey(keybindingConfig.Universal.TogglePanel),
+ handler: func() error { return gui.replaceContext(gui.Contexts.Confirmation.Context) },
+ },
}
- if err := gui.g.SetKeybinding("suggestions", nil, gui.getKey(keybindingConfig.Universal.TogglePanel), gocui.ModNone, gui.wrappedHandler(func() error { return gui.replaceContext(gui.Contexts.Confirmation.Context) })); err != nil {
- return err
+ for _, binding := range confirmationKeybindings {
+ if err := gui.g.SetKeybinding(binding.viewName, nil, binding.key, gocui.ModNone, gui.wrappedHandler(binding.handler)); err != nil {
+ return err
+ }
}
return nil
diff --git a/pkg/gui/editors.go b/pkg/gui/editors.go
index 0faa2b6fa..e55ad58d4 100644
--- a/pkg/gui/editors.go
+++ b/pkg/gui/editors.go
@@ -44,9 +44,7 @@ func (gui *Gui) commitMessageEditor(v *gocui.View, key gocui.Key, ch rune, mod g
gui.RenderCommitLength()
}
-// we've just copy+pasted the editor from gocui to here so that we can also re-
-// render the commit message length on each keypress
-func (gui *Gui) editorWithCallback(v *gocui.View, key gocui.Key, ch rune, mod gocui.Modifier) {
+func (gui *Gui) defaultEditor(v *gocui.View, key gocui.Key, ch rune, mod gocui.Modifier) {
switch {
case key == gocui.KeyBackspace || key == gocui.KeyBackspace2:
v.EditDelete(true)
diff --git a/pkg/utils/fuzzy_search.go b/pkg/utils/fuzzy_search.go
index c4bc078a3..4199d6c8b 100644
--- a/pkg/utils/fuzzy_search.go
+++ b/pkg/utils/fuzzy_search.go
@@ -11,11 +11,6 @@ func FuzzySearch(needle string, haystack []string) []string {
return []string{}
}
- myHaystack := make([]string, len(haystack))
- for i := range haystack {
- myHaystack[i] = haystack[i]
- }
-
matches := fuzzy.Find(needle, haystack)
sort.Sort(matches)