diff --git a/internal/action/actions.go b/internal/action/actions.go index 12a70ada..b8b0650f 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -732,23 +732,30 @@ func (h *BufPane) saveBufToFile(filename string, action string, callback func()) 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) + saveWithSudo := func() { + err = h.Buf.SaveAsWithSudo(filename) + if err != nil { + InfoBar.Error(err) + } else { + h.Buf.Path = filename + h.Buf.SetName(filename) + InfoBar.Message("Saved " + filename) + } + } + 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) } - h.completeAction(action) - } - if callback != nil { - callback() - } - }) - return false + if callback != nil { + callback() + } + }) + return false + } } else { InfoBar.Error(err) } diff --git a/internal/config/settings.go b/internal/config/settings.go index 4d82c960..0488dd3b 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -184,6 +184,7 @@ func GetGlobalOption(name string) interface{} { var defaultCommonSettings = map[string]interface{}{ "autoindent": true, + "autosu": true, "backup": true, "basename": false, "colorcolumn": float64(0), diff --git a/runtime/help/options.md b/runtime/help/options.md index f595b3a6..56fc6ca4 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -24,6 +24,14 @@ Here are the available options: default value: `0` +* `autosu`: When a file is saved that the user doesn't have permission to + modify, micro will ask if the user would like to use super user + privileges to save the file. If this option is enabled, micro will + automatically attempt to use super user privileges to save without + asking the user. + + default value: `false` + * `backup`: micro will automatically keep backups of all open buffers. Backups are stored in `~/.config/micro/backups` and are removed when the buffer is closed cleanly. In the case of a system crash or a micro crash, the contents