]> git.lizzy.rs Git - micro.git/blobdiff - cmd/micro/messenger.go
Fix: mouse clicking with softwrap
[micro.git] / cmd / micro / messenger.go
index a9535b35ca2277f17512fa3a3c85ef18be3052dd..5cfdf1c2c85e6071f12cd39593a63ea628b9cc72 100644 (file)
@@ -6,6 +6,7 @@ import (
        "fmt"
        "os"
        "strconv"
+       "strings"
 
        "github.com/zyedidia/clipboard"
        "github.com/zyedidia/tcell"
@@ -21,10 +22,10 @@ func TermMessage(msg ...interface{}) {
        screenWasNil := screen == nil
        if !screenWasNil {
                screen.Fini()
+               screen = nil
        }
 
        fmt.Println(msg...)
-       messenger.AddLog(fmt.Sprint(msg...))
        fmt.Print("\nPress enter to continue")
 
        reader := bufio.NewReader(os.Stdin)
@@ -78,8 +79,8 @@ func (m *Messenger) AddLog(msg string) {
 
 func (m *Messenger) getBuffer() *Buffer {
        if m.log == nil {
-               m.log = NewBuffer([]byte{}, "")
-               m.log.Name = "Log"
+               m.log = NewBuffer(strings.NewReader(""), "")
+               m.log.name = "Log"
        }
        return m.log
 }
@@ -192,11 +193,13 @@ const (
        CommandCompletion
        HelpCompletion
        OptionCompletion
+       PluginCmdCompletion
+       PluginNameCompletion
 )
 
 // Prompt sends the user a message and waits for a response to be typed in
 // This function blocks the main loop while waiting for input
-func (m *Messenger) Prompt(prompt, historyType string, completionTypes ...Completion) (string, bool) {
+func (m *Messenger) Prompt(prompt, placeholder, historyType string, completionTypes ...Completion) (string, bool) {
        m.hasPrompt = true
        m.Message(prompt)
        if _, ok := m.history[historyType]; !ok {
@@ -206,7 +209,9 @@ func (m *Messenger) Prompt(prompt, historyType string, completionTypes ...Comple
        }
        m.historyNum = len(m.history[historyType]) - 1
 
-       response, canceled := "", true
+       response, canceled := placeholder, true
+       m.response = response
+       m.cursorx = Count(placeholder)
 
        RedrawAll()
        for m.hasPrompt {
@@ -255,6 +260,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)
                                }