Make PSReadline render correct portion of prompt on Unix when it's a multi-line string (#3867)
Check whether the prompt is multi-line or not. If it is, then only use the part that is shown in the input line.
This commit is contained in:
parent
c29bd7d684
commit
e75cff662a
|
@ -560,6 +560,13 @@ namespace Microsoft.PowerShell
|
||||||
|
|
||||||
#if UNIX // TODO: not necessary if ReadBufferLines worked, or if rendering worked on spans instead of complete lines
|
#if UNIX // TODO: not necessary if ReadBufferLines worked, or if rendering worked on spans instead of complete lines
|
||||||
string newPrompt = GetPrompt();
|
string newPrompt = GetPrompt();
|
||||||
|
int index = newPrompt.LastIndexOf('\n');
|
||||||
|
if (index != -1)
|
||||||
|
{
|
||||||
|
// The prompt text could be a multi-line string, and in such case
|
||||||
|
// we only want the part of it that is shown on the input line.
|
||||||
|
newPrompt = newPrompt.Substring(index + 1);
|
||||||
|
}
|
||||||
var bufferLineCount = (newPrompt.Length) / (_console.BufferWidth) + 1;
|
var bufferLineCount = (newPrompt.Length) / (_console.BufferWidth) + 1;
|
||||||
_consoleBuffer = ReadBufferLines(_initialY, bufferLineCount);
|
_consoleBuffer = ReadBufferLines(_initialY, bufferLineCount);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue