diff --git a/internal/action/actions.go b/internal/action/actions.go index dc510080..733321d1 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -638,10 +638,10 @@ func (h *BufPane) Save() bool { if h.Buf.Path == "" { h.SaveAs() } else { - h.saveBufToFile(h.Buf.Path) + h.saveBufToFile(h.Buf.Path, "Save") } - return true + return false } // SaveAs saves the buffer to disk with the given name @@ -655,16 +655,15 @@ func (h *BufPane) SaveAs() bool { InfoBar.Error("Error parsing arguments: ", err) return } - h.saveBufToFile(filename) - + h.saveBufToFile(filename, "SaveAs") } }) - return true + return false } // This function saves the buffer to `filename` and changes the buffer's path and name // to `filename` if the save is successful -func (h *BufPane) saveBufToFile(filename string) { +func (h *BufPane) saveBufToFile(filename string, action string) { err := h.Buf.SaveAs(filename) if err != nil { if strings.HasSuffix(err.Error(), "permission denied") { @@ -678,6 +677,7 @@ func (h *BufPane) saveBufToFile(filename string) { h.Buf.SetName(filename) InfoBar.Message("Saved " + filename) } + h.completeAction(action) } }) } else { @@ -687,6 +687,7 @@ func (h *BufPane) saveBufToFile(filename string) { h.Buf.Path = filename h.Buf.SetName(filename) InfoBar.Message("Saved " + filename) + h.completeAction(action) } } diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index 451fc840..1e492d5e 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -361,8 +361,8 @@ func (h *BufPane) execAction(action func(*BufPane) bool, name string, cursor int _, isMulti := MultiActions[name] if (!isMulti && cursor == 0) || isMulti { if h.PluginCB("pre" + name) { - asuccess := action(h) - psuccess := h.PluginCB("on" + name) + success := action(h) + success = success && h.PluginCB("on"+name) if isMulti { if recording_macro { @@ -372,13 +372,17 @@ func (h *BufPane) execAction(action func(*BufPane) bool, name string, cursor int } } - return asuccess && psuccess + return success } } return false } +func (h *BufPane) completeAction(action string) { + h.PluginCB("on" + action) +} + func (h *BufPane) HasKeyEvent(e Event) bool { _, ok := BufKeyBindings[e] return ok