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(seqClearScreenBelow)
// Print the prompt // Print the prompt
rl.promptInPlace("")
print(string(rl.realPrompt)) print(string(rl.realPrompt))
// Assemble the line, taking virtual completions into account // Assemble the line, taking virtual completions into account

View File

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