]> git.lizzy.rs Git - micro.git/commitdiff
Run action completion on saves with prompts at the right time
authorZachary Yedidia <zyedidia@gmail.com>
Sun, 29 Dec 2019 23:23:17 +0000 (18:23 -0500)
committerZachary Yedidia <zyedidia@gmail.com>
Sun, 29 Dec 2019 23:23:17 +0000 (18:23 -0500)
internal/action/actions.go
internal/action/bufpane.go

index dc5100806e054578dd78793d896ad20aaaf7dc78..733321d1f222483d5ec8e7c37e64693899c4ab31 100644 (file)
@@ -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)
        }
 }
 
index 451fc84060265e130ea71eeeda17317b61928032..1e492d5e4ebda720f2eecbdae0ce57b6ef4a35dc 100644 (file)
@@ -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