Fix CR
Having CR go back to the beginning of a wrapped line is not a good idea when it's followed by LF.
This commit is contained in:
parent
75f707fc20
commit
2120ff3efa
29
ANSI.c
29
ANSI.c
@ -688,9 +688,9 @@ void FlushBuffer( void )
|
|||||||
// width) and contains sufficient lines.
|
// width) and contains sufficient lines.
|
||||||
GetConsoleScreenBufferInfo( hConOut, &Info );
|
GetConsoleScreenBufferInfo( hConOut, &Info );
|
||||||
if (WIN.Right - WIN.Left + 1 != WIDTH ||
|
if (WIN.Right - WIN.Left + 1 != WIDTH ||
|
||||||
BOTTOM - TOP < 2 * nCharInBuffer % WIDTH)
|
BOTTOM - TOP < 2 * nCharInBuffer / WIDTH)
|
||||||
{
|
{
|
||||||
HEIGHT = 2 * nCharInBuffer % WIDTH + 1;
|
HEIGHT = 2 * nCharInBuffer / WIDTH + 1;
|
||||||
SetConsoleScreenBufferSize( hConWrap, Info.dwSize );
|
SetConsoleScreenBufferSize( hConWrap, Info.dwSize );
|
||||||
}
|
}
|
||||||
// Put the cursor on the top line, in the same column.
|
// Put the cursor on the top line, in the same column.
|
||||||
@ -896,8 +896,9 @@ void PushBuffer( WCHAR c )
|
|||||||
if (nl)
|
if (nl)
|
||||||
MoveDown( TRUE );
|
MoveDown( TRUE );
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else if (c == '\r')
|
if (nCharInBuffer > 0 && ChBuffer[nCharInBuffer-1] == '\r')
|
||||||
{
|
{
|
||||||
FlushBuffer();
|
FlushBuffer();
|
||||||
if (nWrapped)
|
if (nWrapped)
|
||||||
@ -908,12 +909,9 @@ void PushBuffer( WCHAR c )
|
|||||||
if (pState->tb_margins && CUR.Y < TOP) CUR.Y = TOP;
|
if (pState->tb_margins && CUR.Y < TOP) CUR.Y = TOP;
|
||||||
set_pos( LEFT, CUR.Y );
|
set_pos( LEFT, CUR.Y );
|
||||||
}
|
}
|
||||||
else
|
|
||||||
ChBuffer[nCharInBuffer++] = c;
|
|
||||||
}
|
}
|
||||||
else if (c == '\b')
|
if (c == '\b')
|
||||||
{
|
{
|
||||||
BOOL bs = FALSE;
|
|
||||||
FlushBuffer();
|
FlushBuffer();
|
||||||
if (nWrapped)
|
if (nWrapped)
|
||||||
{
|
{
|
||||||
@ -924,20 +922,15 @@ void PushBuffer( WCHAR c )
|
|||||||
CUR.Y--;
|
CUR.Y--;
|
||||||
SetConsoleCursorPos( hConOut, CUR );
|
SetConsoleCursorPos( hConOut, CUR );
|
||||||
--nWrapped;
|
--nWrapped;
|
||||||
bs = TRUE;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!bs)
|
|
||||||
ChBuffer[nCharInBuffer++] = c;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (shifted && c >= FIRST_G1 && c <= LAST_G1)
|
|
||||||
c = G1[c-FIRST_G1];
|
|
||||||
ChBuffer[nCharInBuffer] = c;
|
|
||||||
if (++nCharInBuffer == BUFFER_SIZE)
|
|
||||||
FlushBuffer();
|
|
||||||
}
|
}
|
||||||
|
if (shifted && c >= FIRST_G1 && c <= LAST_G1)
|
||||||
|
c = G1[c-FIRST_G1];
|
||||||
|
ChBuffer[nCharInBuffer] = c;
|
||||||
|
if (++nCharInBuffer == BUFFER_SIZE)
|
||||||
|
FlushBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user