mirror of
https://github.com/zyedidia/micro.git
synced 2026-03-29 14:22:42 +09:00
Add save and save as
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/zyedidia/micro/cmd/micro/config"
|
"github.com/zyedidia/micro/cmd/micro/config"
|
||||||
"github.com/zyedidia/micro/cmd/micro/screen"
|
"github.com/zyedidia/micro/cmd/micro/screen"
|
||||||
"github.com/zyedidia/micro/cmd/micro/shell"
|
"github.com/zyedidia/micro/cmd/micro/shell"
|
||||||
|
"github.com/zyedidia/micro/cmd/micro/shellwords"
|
||||||
"github.com/zyedidia/micro/cmd/micro/util"
|
"github.com/zyedidia/micro/cmd/micro/util"
|
||||||
"github.com/zyedidia/tcell"
|
"github.com/zyedidia/tcell"
|
||||||
)
|
)
|
||||||
@@ -540,15 +541,62 @@ func (h *BufHandler) SaveAll() bool {
|
|||||||
|
|
||||||
// Save the buffer to disk
|
// Save the buffer to disk
|
||||||
func (h *BufHandler) Save() bool {
|
func (h *BufHandler) Save() bool {
|
||||||
h.Buf.Save()
|
// If this is an empty buffer, ask for a filename
|
||||||
|
if h.Buf.Path == "" {
|
||||||
|
h.SaveAs()
|
||||||
|
} else {
|
||||||
|
h.saveBufToFile(h.Buf.Path)
|
||||||
|
}
|
||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// SaveAs saves the buffer to disk with the given name
|
// SaveAs saves the buffer to disk with the given name
|
||||||
func (h *BufHandler) SaveAs() bool {
|
func (h *BufHandler) SaveAs() bool {
|
||||||
|
InfoBar.Prompt("Filename: ", "", "Save", nil, func(resp string, canceled bool) {
|
||||||
|
if !canceled {
|
||||||
|
// the filename might or might not be quoted, so unquote first then join the strings.
|
||||||
|
args, err := shellwords.Split(resp)
|
||||||
|
filename := strings.Join(args, " ")
|
||||||
|
if err != nil {
|
||||||
|
InfoBar.Error("Error parsing arguments: ", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
h.saveBufToFile(filename)
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
return false
|
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 *BufHandler) saveBufToFile(filename string) {
|
||||||
|
err := h.Buf.SaveAs(filename)
|
||||||
|
if err != nil {
|
||||||
|
if strings.HasSuffix(err.Error(), "permission denied") {
|
||||||
|
InfoBar.YNPrompt("Permission denied. Do you want to save this file using sudo? (y,n)", func(yes, canceled bool) {
|
||||||
|
if yes && !canceled {
|
||||||
|
err = h.Buf.SaveAsWithSudo(filename)
|
||||||
|
if err != nil {
|
||||||
|
InfoBar.Error(err)
|
||||||
|
} else {
|
||||||
|
h.Buf.Path = filename
|
||||||
|
h.Buf.SetName(filename)
|
||||||
|
InfoBar.Message("Saved " + filename)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
InfoBar.Error(err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
h.Buf.Path = filename
|
||||||
|
h.Buf.SetName(filename)
|
||||||
|
InfoBar.Message("Saved " + filename)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Find opens a prompt and searches forward for the input
|
// Find opens a prompt and searches forward for the input
|
||||||
func (h *BufHandler) Find() bool {
|
func (h *BufHandler) Find() bool {
|
||||||
InfoBar.Prompt("Find: ", "", "Find", func(resp string) {
|
InfoBar.Prompt("Find: ", "", "Find", func(resp string) {
|
||||||
|
|||||||
Reference in New Issue
Block a user