X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=internal%2Finfo%2Finfobuffer.go;h=e88701a4aa5674ef2cd84504c9986a86b2e49594;hb=cf98b7f8245e4ca28518d31147e347d35607d5d4;hp=8e8790b30442de40b68aa0d1f49a37220e3ff504;hpb=0962e1bfba44a6a871b692dd6dcf8401c984fc68;p=micro.git diff --git a/internal/info/infobuffer.go b/internal/info/infobuffer.go index 8e8790b3..e88701a4 100644 --- a/internal/info/infobuffer.go +++ b/internal/info/infobuffer.go @@ -3,7 +3,7 @@ package info import ( "fmt" - "github.com/zyedidia/micro/internal/buffer" + "github.com/zyedidia/micro/v2/internal/buffer" ) // The InfoBuf displays messages and other info at the bottom of the screen. @@ -54,7 +54,7 @@ func (i *InfoBuf) Close() { func (i *InfoBuf) Message(msg ...interface{}) { // only display a new message if there isn't an active prompt // this is to prevent overwriting an existing prompt to the user - if i.HasPrompt == false { + if !i.HasPrompt { displayMessage := fmt.Sprint(msg...) // if there is no active prompt then style and display the message as normal i.Msg = displayMessage @@ -78,7 +78,7 @@ func (i *InfoBuf) ClearGutter() { func (i *InfoBuf) Error(msg ...interface{}) { // only display a new message if there isn't an active prompt // this is to prevent overwriting an existing prompt to the user - if i.HasPrompt == false { + if !i.HasPrompt { // if there is no active prompt then style and display the message as normal i.Msg = fmt.Sprint(msg...) i.HasMessage, i.HasError = false, true @@ -137,18 +137,27 @@ func (i *InfoBuf) DonePrompt(canceled bool) { if !hadYN { if i.PromptCallback != nil { if canceled { + i.Replace(i.Start(), i.End(), "") i.PromptCallback("", true) h := i.History[i.PromptType] i.History[i.PromptType] = h[:len(h)-1] } else { resp := string(i.LineBytes(0)) + i.Replace(i.Start(), i.End(), "") i.PromptCallback(resp, false) h := i.History[i.PromptType] h[len(h)-1] = resp + + // avoid duplicates + for j := len(h) - 2; j >= 0; j-- { + if h[j] == h[len(h)-1] { + i.History[i.PromptType] = append(h[:j], h[j+1:]...) + break + } + } } - i.PromptCallback = nil + // i.PromptCallback = nil } - i.Replace(i.Start(), i.End(), "") } if i.YNCallback != nil && hadYN { i.YNCallback(i.YNResp, canceled)