This commit is contained in:
Zachary Yedidia
2021-03-02 17:16:54 -05:00
2 changed files with 21 additions and 16 deletions

View File

@@ -1454,39 +1454,43 @@ func (h *BufPane) ClearInfo() bool {
return true return true
} }
// ForceQuit closes the current tab or view even if there are unsaved changes
// (no prompt)
func (h *BufPane) ForceQuit() bool {
h.Buf.Close()
if len(MainTab().Panes) > 1 {
h.Unsplit()
} else if len(Tabs.List) > 1 {
Tabs.RemoveTab(h.splitID)
} else {
screen.Screen.Fini()
InfoBar.Close()
runtime.Goexit()
}
return true
}
// Quit this will close the current tab or view that is open // Quit this will close the current tab or view that is open
func (h *BufPane) Quit() bool { func (h *BufPane) Quit() bool {
quit := func() {
h.Buf.Close()
if len(MainTab().Panes) > 1 {
h.Unsplit()
} else if len(Tabs.List) > 1 {
Tabs.RemoveTab(h.splitID)
} else {
screen.Screen.Fini()
InfoBar.Close()
runtime.Goexit()
}
}
if h.Buf.Modified() { if h.Buf.Modified() {
if config.GlobalSettings["autosave"].(float64) > 0 { if config.GlobalSettings["autosave"].(float64) > 0 {
// autosave on means we automatically save when quitting // autosave on means we automatically save when quitting
h.SaveCB("Quit", func() { h.SaveCB("Quit", func() {
quit() h.ForceQuit()
}) })
} else { } else {
InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) { InfoBar.YNPrompt("Save changes to "+h.Buf.GetName()+" before closing? (y,n,esc)", func(yes, canceled bool) {
if !canceled && !yes { if !canceled && !yes {
quit() h.ForceQuit()
} else if !canceled && yes { } else if !canceled && yes {
h.SaveCB("Quit", func() { h.SaveCB("Quit", func() {
quit() h.ForceQuit()
}) })
} }
}) })
} }
} else { } else {
quit() h.ForceQuit()
} }
return true return true
} }

View File

@@ -666,6 +666,7 @@ var BufKeyActions = map[string]BufKeyAction{
"Escape": (*BufPane).Escape, "Escape": (*BufPane).Escape,
"Quit": (*BufPane).Quit, "Quit": (*BufPane).Quit,
"QuitAll": (*BufPane).QuitAll, "QuitAll": (*BufPane).QuitAll,
"ForceQuit": (*BufPane).ForceQuit,
"AddTab": (*BufPane).AddTab, "AddTab": (*BufPane).AddTab,
"PreviousTab": (*BufPane).PreviousTab, "PreviousTab": (*BufPane).PreviousTab,
"NextTab": (*BufPane).NextTab, "NextTab": (*BufPane).NextTab,