diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 049be337..5427b707 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -319,6 +319,8 @@ func main() { screen.TermMessage(err) } + action.InitGlobals() + buffer.SetMessager(action.InfoBar) args := flag.Args() b := LoadInput(args) @@ -329,7 +331,6 @@ func main() { } action.InitTabs(b) - action.InitGlobals() err = config.RunPluginFn("init") if err != nil { diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index 034e28e5..99921dfa 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -252,8 +252,9 @@ func NewBufferFromFileAtLoc(path string, btype BufType, cursorLoc Loc) (*Buffer, buf = NewBuffer(file, util.FSize(file), filename, cursorLoc, btype) } - if readonly { - buf.SetOptionNative("readonly", true) + if readonly && prompt != nil { + prompt.Message("Warning: file is readonly - sudo will be attempted when saving") + // buf.SetOptionNative("readonly", true) } return buf, nil diff --git a/internal/buffer/message.go b/internal/buffer/message.go index 31c96326..dfff37b5 100644 --- a/internal/buffer/message.go +++ b/internal/buffer/message.go @@ -82,3 +82,13 @@ func (b *Buffer) ClearMessages(owner string) { func (b *Buffer) ClearAllMessages() { b.Messages = make([]*Message, 0) } + +type Messager interface { + Message(msg ...interface{}) +} + +var prompt Messager + +func SetMessager(m Messager) { + prompt = m +}