diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-07-18 19:41:13 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-07-18 20:00:48 +1000 |
commit | 845c80721f8f0445b0abe39ee381a6feecf158a2 (patch) | |
tree | a2cfbd2c2710db01c95e3354923f831959da42d2 /pkg/gui/quitting.go | |
parent | 0e65db10d85304c2ab8418e5219c267277a9c886 (diff) |
Decouple escaping from quittingv0.20.10
When a user is not entering text into a prompt, the 'q' key should immediately
quit the application. On the other hand, the 'esc' key should cancel/close/go-back
to the previous context.
If we're at the surface level (nothing to cancel/close) and the user hits the
escape key, the default behaviour is to close the app, however we now have a
`quitOnTopLevelReturn` config key to override this.
I actually think from the beginning we should have made this config option
default to false rather than true which is the default this PR gives it,
but I don't want to anger too many people familiar with the existing behaviour.
Diffstat (limited to 'pkg/gui/quitting.go')
-rw-r--r-- | pkg/gui/quitting.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/pkg/gui/quitting.go b/pkg/gui/quitting.go index f9ad00177..4a7bba23a 100644 --- a/pkg/gui/quitting.go +++ b/pkg/gui/quitting.go @@ -34,6 +34,14 @@ func (gui *Gui) handleQuit(g *gocui.Gui, v *gocui.View) error { return gui.quit(v) } +func (gui *Gui) handleTopLevelReturn(g *gocui.Gui, v *gocui.View) error { + if gui.Config.GetUserConfig().GetBool("quitOnTopLevelReturn") { + return gui.handleQuit(g, v) + } + + return nil +} + func (gui *Gui) quit(v *gocui.View) error { if gui.State.Updating { return gui.createUpdateQuitConfirmation(gui.g, v) |