fix: multiline cursor redraw

runner-prompt
TorchedSammy 2022-05-28 21:05:03 -04:00
parent b4a5746093
commit 1339dc4a2f
Signed by: sammyette
GPG Key ID: 904FC49417B44DCD
2 changed files with 7 additions and 8 deletions

View File

@ -45,6 +45,7 @@ func (rl *Instance) echo() {
print(seqClearScreenBelow)
// Print the prompt
rl.promptInPlace("")
print(string(rl.realPrompt))
// Assemble the line, taking virtual completions into account

View File

@ -73,8 +73,7 @@ func (rl *Instance) RefreshPromptLog(log string) (err error) {
return
}
// RefreshPromptInPlace - Refreshes the prompt in the very same place he is.
func (rl *Instance) RefreshPromptInPlace(prompt string) (err error) {
func (rl *Instance) promptInPlace(prompt string) {
// We adjust cursor movement, depending on which mode we're currently in.
// Prompt data intependent
if !rl.modeTabCompletion {
@ -91,15 +90,11 @@ func (rl *Instance) RefreshPromptInPlace(prompt string) (err error) {
rl.SetPrompt(prompt)
}
if rl.Multiline {
rl.tcUsedY += 1
}
// Clear the input line and everything below
print(seqClearLine)
moveCursorUp(rl.infoY + rl.tcUsedY)
moveCursorBackwards(GetTermWidth())
print("\r\n" + seqClearScreenBelow)
print("\r" + seqClearScreenBelow)
// Add a new line if needed
if rl.Multiline {
@ -108,8 +103,11 @@ func (rl *Instance) RefreshPromptInPlace(prompt string) (err error) {
} else {
fmt.Print(rl.mainPrompt)
}
}
// Refresh the line
// RefreshPromptInPlace - Refreshes the prompt in the very same place he is.
func (rl *Instance) RefreshPromptInPlace(prompt string) (err error) {
rl.promptInPlace(prompt)
rl.updateHelpers()
return