diff --git a/cmd/micro/action/bufpane.go b/cmd/micro/action/bufpane.go index 71baf6b5..9aac7b09 100644 --- a/cmd/micro/action/bufpane.go +++ b/cmd/micro/action/bufpane.go @@ -1,6 +1,7 @@ package action import ( + "strings" "time" "github.com/zyedidia/micro/cmd/micro/buffer" @@ -24,7 +25,15 @@ func init() { // BufMapKey maps a key event to an action func BufMapKey(k Event, action string) { - if f, ok := BufKeyActions[action]; ok { + if strings.HasPrefix(action, "command:") { + action = strings.SplitN(action, ":", 2)[1] + BufKeyStrings[k] = action + BufKeyBindings[k] = CommandAction(action) + } else if strings.HasPrefix(action, "command-edit:") { + action = strings.SplitN(action, ":", 2)[1] + BufKeyStrings[k] = action + BufKeyBindings[k] = CommandEditAction(action) + } else if f, ok := BufKeyActions[action]; ok { BufKeyStrings[k] = action BufKeyBindings[k] = f } else { @@ -36,14 +45,9 @@ func BufMapKey(k Event, action string) { func BufMapMouse(k MouseEvent, action string) { if f, ok := BufMouseActions[action]; ok { BufMouseBindings[k] = f - } else if f, ok := BufKeyActions[action]; ok { - // allowed to map mouse buttons to key actions - BufKeyStrings[k] = action - BufKeyBindings[k] = f - // ensure we don't double bind a key - delete(BufMouseBindings, k) } else { - screen.TermMessage("Error:", action, "does not exist") + delete(BufMouseBindings, k) + BufMapKey(k, action) } } diff --git a/cmd/micro/action/command.go b/cmd/micro/action/command.go index 7fbacbc0..30b4a4d8 100644 --- a/cmd/micro/action/command.go +++ b/cmd/micro/action/command.go @@ -539,9 +539,13 @@ func (h *BufPane) QuitCmd(args []string) { h.Quit() } -// SaveCmd saves the buffer in the main view +// SaveCmd saves the buffer optionally with an argument file name func (h *BufPane) SaveCmd(args []string) { - h.Save() + if len(args) == 0 { + h.Save() + } else { + h.Buf.SaveAs(args[0]) + } } // ReplaceCmd runs search and replace