fix(pwsh): clear ANSI after print

resolves #65
This commit is contained in:
jan De Dobbeleer 2023-02-08 20:40:50 +01:00 committed by Jan De Dobbeleer
parent ae0c643d82
commit 195c1a934d
2 changed files with 16 additions and 0 deletions

View file

@ -232,6 +232,13 @@ func (w *Writer) ConsolePwd(pwdType, userName, hostName, pwd string) string {
}
}
func (w *Writer) ClearAfter() string {
if w.Plain {
return ""
}
return w.clearLine + w.clearBelow
}
func (w *Writer) FormatTitle(title string) string {
title = w.trimAnsi(title)
if w.Plain {

View file

@ -153,6 +153,15 @@ func (e *Engine) getTitleTemplateText() string {
}
func (e *Engine) renderBlock(block *Block, cancelNewline bool) {
defer func() {
// when in PowerShell, we need to clear the line after the prompt
// to avoid the background being printed on the next line
// when at the end of the buffer.
// See https://github.com/JanDeDobbeleer/oh-my-posh/issues/65
if e.Env.Shell() == shell.PWSH || e.Env.Shell() == shell.PWSH5 {
e.write(e.Writer.ClearAfter())
}
}()
// when in bash, for rprompt blocks we need to write plain
// and wrap in escaped mode or the prompt will not render correctly
if e.Env.Shell() == shell.BASH && block.Type == RPrompt {