X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=cmd%2Fmicro%2Fmessenger.go;h=d031ba83a5d7b7e3f7e160acad1c2f34c54db8da;hb=3ecdd96931ac75039105b5a4ac2fdd3b5526dbf6;hp=e29b84383a9dfb8bd35ca7dc7620d4917f9f11b9;hpb=c1a3ee170620f147e71b8e2b80da3b139d482f40;p=micro.git diff --git a/cmd/micro/messenger.go b/cmd/micro/messenger.go index e29b8438..d031ba83 100644 --- a/cmd/micro/messenger.go +++ b/cmd/micro/messenger.go @@ -21,6 +21,7 @@ func TermMessage(msg ...interface{}) { screenWasNil := screen == nil if !screenWasNil { screen.Fini() + screen = nil } fmt.Println(msg...) @@ -68,9 +69,11 @@ type Messenger struct { gutterMessage bool } -func (m *Messenger) addLog(msg string) { +func (m *Messenger) AddLog(msg string) { buffer := m.getBuffer() - buffer.Insert(buffer.End(), msg+"\n") + buffer.insert(buffer.End(), []byte(msg+"\n")) + buffer.Cursor.Loc = buffer.End() + buffer.Cursor.Relocate() } func (m *Messenger) getBuffer() *Buffer { @@ -83,15 +86,13 @@ func (m *Messenger) getBuffer() *Buffer { // Message sends a message to the user func (m *Messenger) Message(msg ...interface{}) { - buf := new(bytes.Buffer) - fmt.Fprint(buf, msg...) - m.message = buf.String() + m.message = fmt.Sprint(msg...) m.style = defStyle if _, ok := colorscheme["message"]; ok { m.style = colorscheme["message"] } - m.addLog(m.message) + m.AddLog(m.message) m.hasMessage = true } @@ -107,7 +108,7 @@ func (m *Messenger) Error(msg ...interface{}) { if _, ok := colorscheme["error-message"]; ok { m.style = colorscheme["error-message"] } - m.addLog(m.message) + m.AddLog(m.message) m.hasMessage = true } @@ -129,16 +130,16 @@ func (m *Messenger) YesNoPrompt(prompt string) (bool, bool) { switch e.Key() { case tcell.KeyRune: if e.Rune() == 'y' { - m.addLog("\t--> y") + m.AddLog("\t--> y") m.hasPrompt = false return true, false } else if e.Rune() == 'n' { - m.addLog("\t--> n") + m.AddLog("\t--> n") m.hasPrompt = false return false, false } case tcell.KeyCtrlC, tcell.KeyCtrlQ, tcell.KeyEscape: - m.addLog("\t--> (cancel)") + m.AddLog("\t--> (cancel)") m.hasPrompt = false return false, true } @@ -165,7 +166,7 @@ func (m *Messenger) LetterPrompt(prompt string, responses ...rune) (rune, bool) case tcell.KeyRune: for _, r := range responses { if e.Rune() == r { - m.addLog("\t--> " + string(r)) + m.AddLog("\t--> " + string(r)) m.Clear() m.Reset() m.hasPrompt = false @@ -173,7 +174,7 @@ func (m *Messenger) LetterPrompt(prompt string, responses ...rune) (rune, bool) } } case tcell.KeyCtrlC, tcell.KeyCtrlQ, tcell.KeyEscape: - m.addLog("\t--> (cancel)") + m.AddLog("\t--> (cancel)") m.Clear() m.Reset() m.hasPrompt = false @@ -191,6 +192,8 @@ const ( CommandCompletion HelpCompletion OptionCompletion + PluginCmdCompletion + PluginNameCompletion ) // Prompt sends the user a message and waits for a response to be typed in @@ -219,11 +222,11 @@ func (m *Messenger) Prompt(prompt, historyType string, completionTypes ...Comple switch e.Key() { case tcell.KeyCtrlQ, tcell.KeyCtrlC, tcell.KeyEscape: // Cancel - m.addLog("\t--> (cancel)") + m.AddLog("\t--> (cancel)") m.hasPrompt = false case tcell.KeyEnter: // User is done entering their response - m.addLog("\t--> " + m.response) + m.AddLog("\t--> " + m.response) m.hasPrompt = false response, canceled = m.response, false m.history[historyType][len(m.history[historyType])-1] = response @@ -254,6 +257,10 @@ func (m *Messenger) Prompt(prompt, historyType string, completionTypes ...Comple chosen, suggestions = HelpComplete(currentArg) } else if completionType == OptionCompletion { chosen, suggestions = OptionComplete(currentArg) + } else if completionType == PluginCmdCompletion { + chosen, suggestions = PluginCmdComplete(currentArg) + } else if completionType == PluginNameCompletion { + chosen, suggestions = PluginNameComplete(currentArg) } else if completionType < NoCompletion { chosen, suggestions = PluginComplete(completionType, currentArg) }