mirror of
https://github.com/zyedidia/micro.git
synced 2026-03-24 17:50:15 +09:00
@@ -764,26 +764,8 @@ func (v *View) Save(usePlugin bool) bool {
|
||||
// If this is an empty buffer, ask for a filename
|
||||
if v.Buf.Path == "" {
|
||||
v.SaveAs(false)
|
||||
}
|
||||
err := v.Buf.Save()
|
||||
if err != nil {
|
||||
if strings.HasSuffix(err.Error(), "permission denied") {
|
||||
choice, _ := messenger.YesNoPrompt("Permission denied. Do you want to save this file using sudo? (y,n)")
|
||||
if choice {
|
||||
err = v.Buf.SaveWithSudo()
|
||||
if err != nil {
|
||||
messenger.Error(err.Error())
|
||||
return false
|
||||
}
|
||||
messenger.Message("Saved " + v.Buf.Path)
|
||||
}
|
||||
messenger.Reset()
|
||||
messenger.Clear()
|
||||
} else {
|
||||
messenger.Error(err.Error())
|
||||
}
|
||||
} else {
|
||||
messenger.Message("Saved " + v.Buf.Path)
|
||||
v.saveToFile(v.Buf.Path)
|
||||
}
|
||||
|
||||
if usePlugin {
|
||||
@@ -792,16 +774,42 @@ func (v *View) Save(usePlugin bool) bool {
|
||||
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 (v *View) saveToFile(filename string) {
|
||||
err := v.Buf.SaveAs(filename)
|
||||
if err != nil {
|
||||
if strings.HasSuffix(err.Error(), "permission denied") {
|
||||
choice, _ := messenger.YesNoPrompt("Permission denied. Do you want to save this file using sudo? (y,n)")
|
||||
if choice {
|
||||
err = v.Buf.SaveAsWithSudo(filename)
|
||||
if err != nil {
|
||||
messenger.Error(err.Error())
|
||||
} else {
|
||||
v.Buf.Path = filename
|
||||
v.Buf.name = filename
|
||||
messenger.Message("Saved " + filename)
|
||||
}
|
||||
}
|
||||
messenger.Reset()
|
||||
messenger.Clear()
|
||||
} else {
|
||||
messenger.Error(err.Error())
|
||||
}
|
||||
} else {
|
||||
v.Buf.Path = filename
|
||||
v.Buf.name = filename
|
||||
messenger.Message("Saved " + filename)
|
||||
}
|
||||
}
|
||||
|
||||
// SaveAs saves the buffer to disk with the given name
|
||||
func (v *View) SaveAs(usePlugin bool) bool {
|
||||
filename, canceled := messenger.Prompt("Filename: ", "", "Save", NoCompletion)
|
||||
if !canceled {
|
||||
// the filename might or might not be quoted, so unquote first then join the strings.
|
||||
filename = strings.Join(SplitCommandArgs(filename), " ")
|
||||
v.Buf.Path = filename
|
||||
v.Buf.name = filename
|
||||
|
||||
v.Save(true)
|
||||
v.saveToFile(filename)
|
||||
}
|
||||
|
||||
return false
|
||||
|
||||
@@ -338,7 +338,6 @@ func (b *Buffer) Serialize() error {
|
||||
func (b *Buffer) SaveAs(filename string) error {
|
||||
b.UpdateRules()
|
||||
dir, _ := homedir.Dir()
|
||||
b.Path = strings.Replace(filename, "~", dir, 1)
|
||||
if b.Settings["rmtrailingws"].(bool) {
|
||||
r, _ := regexp.Compile(`[ \t]+$`)
|
||||
for lineNum, line := range b.Lines(0, b.NumLines) {
|
||||
@@ -361,6 +360,7 @@ func (b *Buffer) SaveAs(filename string) error {
|
||||
data := []byte(str)
|
||||
err := ioutil.WriteFile(filename, data, 0644)
|
||||
if err == nil {
|
||||
b.Path = strings.Replace(filename, "~", dir, 1)
|
||||
b.IsModified = false
|
||||
b.ModTime, _ = GetModTime(filename)
|
||||
return b.Serialize()
|
||||
|
||||
@@ -931,7 +931,7 @@ func (v *View) DisplayView() {
|
||||
|
||||
// Display renders the view, the cursor, and statusline
|
||||
func (v *View) Display() {
|
||||
if GetGlobalOption("termtitle").(bool) {
|
||||
if globalSettings["termtitle"].(bool) {
|
||||
screen.SetTitle("micro: " + v.Buf.GetName())
|
||||
}
|
||||
v.DisplayView()
|
||||
|
||||
Reference in New Issue
Block a user