From dceddcfd838c04fd9604fd1a8a83d5b9a86f9db9 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 20 Aug 2021 13:55:59 -0400 Subject: [PATCH] Fix save with sudo auto-detection and sudo/doas message --- internal/action/actions.go | 20 +++++++++++++------- internal/buffer/buffer.go | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/internal/action/actions.go b/internal/action/actions.go index 17875c69..a7561b3d 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -1,6 +1,9 @@ package action import ( + "errors" + "fmt" + "io/fs" "regexp" "runtime" "strings" @@ -807,7 +810,7 @@ func (h *BufPane) SaveAs() bool { func (h *BufPane) saveBufToFile(filename string, action string, callback func()) bool { err := h.Buf.SaveAs(filename) if err != nil { - if strings.HasSuffix(err.Error(), "permission denied") { + if errors.Is(err, fs.ErrPermission) { saveWithSudo := func() { err = h.Buf.SaveAsWithSudo(filename) if err != nil { @@ -824,12 +827,15 @@ func (h *BufPane) saveBufToFile(filename string, action string, callback func()) if h.Buf.Settings["autosu"].(bool) { saveWithSudo() } else { - InfoBar.YNPrompt("Permission denied. Do you want to save this file using sudo? (y,n)", func(yes, canceled bool) { - if yes && !canceled { - saveWithSudo() - h.completeAction(action) - } - }) + InfoBar.YNPrompt( + fmt.Sprintf("Permission denied. Do you want to save this file using %s? (y,n)", config.GlobalSettings["sucmd"].(string)), + func(yes, canceled bool) { + if yes && !canceled { + saveWithSudo() + h.completeAction(action) + } + }, + ) return false } } else { diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 188161f2..734cf3a2 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -256,7 +256,7 @@ func NewBufferFromFileAtLoc(path string, btype BufType, cursorLoc Loc) (*Buffer, } if readonly && prompt != nil { - prompt.Message("Warning: file is readonly - sudo will be attempted when saving") + prompt.Message(fmt.Sprintf("Warning: file is readonly - %s will be attempted when saving", config.GlobalSettings["sucmd"].(string))) // buf.SetOptionNative("readonly", true) }