summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2018-08-24 09:16:56 +1000
committerGitHub <noreply@github.com>2018-08-24 09:16:56 +1000
commit6c389df57dacc1b65e1891c247b20a6d64f94702 (patch)
treea25781f82e9012ccecef4e4327b8634dcf066e7f
parent22de5e7b235389bcbb32e132ddc86c8726516268 (diff)
parent110ff38c0d4a40ff450086480fe8ebe0fd2ed61d (diff)
Merge pull request #200 from remyabel/feature/esc-quits
Esc will quit when not in popup, fixes #197
-rw-r--r--Gopkg.lock2
-rw-r--r--pkg/gui/keybindings.go1
-rw-r--r--vendor/github.com/jesseduffield/gocui/gui.go28
-rw-r--r--vendor/github.com/jesseduffield/gocui/keybinding.go3
4 files changed, 23 insertions, 11 deletions
diff --git a/Gopkg.lock b/Gopkg.lock
index c274ffb38..876ea675e 100644
--- a/Gopkg.lock
+++ b/Gopkg.lock
@@ -77,7 +77,7 @@
branch = "master"
name = "github.com/jesseduffield/gocui"
packages = ["."]
- revision = "432b7f6215f81ef1aaa1b2d9b69887822923cf79"
+ revision = "76a959bb4b0df223fd046b96b68f0162dd609e4b"
[[projects]]
name = "github.com/kevinburke/ssh_config"
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go
index e0351b88e..8041d14ff 100644
--- a/pkg/gui/keybindings.go
+++ b/pkg/gui/keybindings.go
@@ -16,6 +16,7 @@ func (gui *Gui) keybindings(g *gocui.Gui) error {
bindings := []Binding{
{ViewName: "", Key: 'q', Modifier: gocui.ModNone, Handler: gui.quit},
{ViewName: "", Key: gocui.KeyCtrlC, Modifier: gocui.ModNone, Handler: gui.quit},
+ {ViewName: "", Key: gocui.KeyEsc, Modifier: gocui.ModNone, Handler: gui.quit},
{ViewName: "", Key: gocui.KeyPgup, Modifier: gocui.ModNone, Handler: gui.scrollUpMain},
{ViewName: "", Key: gocui.KeyPgdn, Modifier: gocui.ModNone, Handler: gui.scrollDownMain},
{ViewName: "", Key: gocui.KeyCtrlU, Modifier: gocui.ModNone, Handler: gui.scrollUpMain},
diff --git a/vendor/github.com/jesseduffield/gocui/gui.go b/vendor/github.com/jesseduffield/gocui/gui.go
index 28a52d1cd..24ff49808 100644
--- a/vendor/github.com/jesseduffield/gocui/gui.go
+++ b/vendor/github.com/jesseduffield/gocui/gui.go
@@ -653,17 +653,31 @@ func (g *Gui) onKey(ev *termbox.Event) error {
// execKeybindings executes the keybinding handlers that match the passed view
// and event. The value of matched is true if there is a match and no errors.
func (g *Gui) execKeybindings(v *View, ev *termbox.Event) (matched bool, err error) {
- matched = false
+ var globalKb *keybinding
for _, kb := range g.keybindings {
if kb.handler == nil {
continue
}
- if kb.matchKeypress(Key(ev.Key), ev.Ch, Modifier(ev.Mod)) && kb.matchView(v) {
- if err := kb.handler(g, v); err != nil {
- return false, err
- }
- matched = true
+ if !kb.matchKeypress(Key(ev.Key), ev.Ch, Modifier(ev.Mod)) {
+ continue
+ }
+ if kb.matchView(v) {
+ return g.execKeybinding(v, kb)
+ }
+ if kb.viewName == "" {
+ globalKb = kb
}
}
- return matched, nil
+ if globalKb != nil {
+ return g.execKeybinding(v, globalKb)
+ }
+ return false, nil
+}
+
+// execKeybinding executes a given keybinding
+func (g *Gui) execKeybinding(v *View, kb *keybinding) (bool, error) {
+ if err := kb.handler(g, v); err != nil {
+ return false, err
+ }
+ return true, nil
}
diff --git a/vendor/github.com/jesseduffield/gocui/keybinding.go b/vendor/github.com/jesseduffield/gocui/keybinding.go
index 7efdb75c6..82d1acc9f 100644
--- a/vendor/github.com/jesseduffield/gocui/keybinding.go
+++ b/vendor/github.com/jesseduffield/gocui/keybinding.go
@@ -38,9 +38,6 @@ func (kb *keybinding) matchView(v *View) bool {
if v.Editable == true && kb.ch != 0 {
return false
}
- if kb.viewName == "" {
- return true
- }
return v != nil && kb.viewName == v.name
}