forked from aniani/vim
patch 8.2.0778: libvterm code lags behind the upstream version
Problem: Libvterm code lags behind the upstream version. Solution: Include revisions 720 - 723.
This commit is contained in:
@@ -118,7 +118,7 @@ distdir: $(INCFILES)
|
||||
mkdir __distdir
|
||||
cp LICENSE __distdir
|
||||
mkdir __distdir/src
|
||||
cp src/*.c src/*.h __distdir/src
|
||||
cp src/*.c src/*.h src/*.inc __distdir/src
|
||||
mkdir __distdir/src/encoding
|
||||
cp src/encoding/*.inc __distdir/src/encoding
|
||||
mkdir __distdir/include
|
||||
|
@@ -922,6 +922,7 @@ static int on_csi(const char *leader, const long args[], int argcount, const cha
|
||||
VTermState *state = user;
|
||||
int leader_byte = 0;
|
||||
int intermed_byte = 0;
|
||||
int cancel_phantom = 1;
|
||||
VTermPos oldpos = state->pos;
|
||||
int handled = 1;
|
||||
|
||||
@@ -1237,6 +1238,24 @@ static int on_csi(const char *leader, const long args[], int argcount, const cha
|
||||
state->at_phantom = 0;
|
||||
break;
|
||||
|
||||
case 0x62: { // REP - ECMA-48 8.3.103
|
||||
const int row_width = THISROWWIDTH(state);
|
||||
count = CSI_ARG_COUNT(args[0]);
|
||||
col = state->pos.col + count;
|
||||
UBOUND(col, row_width);
|
||||
while (state->pos.col < col) {
|
||||
putglyph(state, state->combine_chars, state->combine_width, state->pos);
|
||||
state->pos.col += state->combine_width;
|
||||
}
|
||||
if (state->pos.col + state->combine_width >= row_width) {
|
||||
if (state->mode.autowrap) {
|
||||
state->at_phantom = 1;
|
||||
cancel_phantom = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 0x63: // DA - ECMA-48 8.3.24
|
||||
val = CSI_ARG_OR(args[0], 0);
|
||||
if(val == 0)
|
||||
@@ -1523,7 +1542,7 @@ static int on_csi(const char *leader, const long args[], int argcount, const cha
|
||||
UBOUND(state->pos.col, THISROWWIDTH(state)-1);
|
||||
}
|
||||
|
||||
updatecursor(state, &oldpos, 1);
|
||||
updatecursor(state, &oldpos, cancel_phantom);
|
||||
|
||||
#ifdef DEBUG
|
||||
if(state->pos.row < 0 || state->pos.row >= state->rows ||
|
||||
|
@@ -30,6 +30,13 @@ PUSH "\xEF\xBC\x90 "
|
||||
putglyph 0xff10 2 0,0
|
||||
putglyph 0x20 1 0,2
|
||||
|
||||
!UTF-8 emoji wide char
|
||||
# U+1F600 = 0xF0 0x9F 0x98 0x80 name: GRINNING FACE
|
||||
RESET
|
||||
PUSH "\xF0\x9F\x98\x80 "
|
||||
putglyph 0x1f600 2 0,0
|
||||
putglyph 0x20 1 0,2
|
||||
|
||||
!UTF-8 combining chars
|
||||
# U+0301 = 0xCC 0x81 name: COMBINING ACUTE
|
||||
RESET
|
||||
|
128
src/libvterm/t/92lp1805050.test
Normal file
128
src/libvterm/t/92lp1805050.test
Normal file
@@ -0,0 +1,128 @@
|
||||
INIT
|
||||
UTF8 1
|
||||
WANTSTATE g
|
||||
|
||||
!REP no argument
|
||||
RESET
|
||||
PUSH "a\e[b"
|
||||
putglyph 0x61 1 0,0
|
||||
putglyph 0x61 1 0,1
|
||||
|
||||
!REP zero (zero should be interpreted as one)
|
||||
RESET
|
||||
PUSH "a\e[0b"
|
||||
putglyph 0x61 1 0,0
|
||||
putglyph 0x61 1 0,1
|
||||
|
||||
!REP lowercase a times two
|
||||
RESET
|
||||
PUSH "a\e[2b"
|
||||
putglyph 0x61 1 0,0
|
||||
putglyph 0x61 1 0,1
|
||||
putglyph 0x61 1 0,2
|
||||
|
||||
!REP with UTF-8 1 char
|
||||
# U+00E9 = 0xC3 0xA9 name: LATIN SMALL LETTER E WITH ACUTE
|
||||
RESET
|
||||
PUSH "\xC3\xA9\e[b"
|
||||
putglyph 0xe9 1 0,0
|
||||
putglyph 0xe9 1 0,1
|
||||
|
||||
!REP with UTF-8 wide char
|
||||
# U+00E9 = 0xC3 0xA9 name: LATIN SMALL LETTER E WITH ACUTE
|
||||
RESET
|
||||
PUSH "\xEF\xBC\x90\e[b"
|
||||
putglyph 0xff10 2 0,0
|
||||
putglyph 0xff10 2 0,2
|
||||
|
||||
!REP with UTF-8 combining character
|
||||
RESET
|
||||
PUSH "e\xCC\x81\e[b"
|
||||
putglyph 0x65,0x301 1 0,0
|
||||
putglyph 0x65,0x301 1 0,1
|
||||
|
||||
!REP till end of line
|
||||
RESET
|
||||
PUSH "a\e[1000bb"
|
||||
putglyph 0x61 1 0,0
|
||||
putglyph 0x61 1 0,1
|
||||
putglyph 0x61 1 0,2
|
||||
putglyph 0x61 1 0,3
|
||||
putglyph 0x61 1 0,4
|
||||
putglyph 0x61 1 0,5
|
||||
putglyph 0x61 1 0,6
|
||||
putglyph 0x61 1 0,7
|
||||
putglyph 0x61 1 0,8
|
||||
putglyph 0x61 1 0,9
|
||||
putglyph 0x61 1 0,10
|
||||
putglyph 0x61 1 0,11
|
||||
putglyph 0x61 1 0,12
|
||||
putglyph 0x61 1 0,13
|
||||
putglyph 0x61 1 0,14
|
||||
putglyph 0x61 1 0,15
|
||||
putglyph 0x61 1 0,16
|
||||
putglyph 0x61 1 0,17
|
||||
putglyph 0x61 1 0,18
|
||||
putglyph 0x61 1 0,19
|
||||
putglyph 0x61 1 0,20
|
||||
putglyph 0x61 1 0,21
|
||||
putglyph 0x61 1 0,22
|
||||
putglyph 0x61 1 0,23
|
||||
putglyph 0x61 1 0,24
|
||||
putglyph 0x61 1 0,25
|
||||
putglyph 0x61 1 0,26
|
||||
putglyph 0x61 1 0,27
|
||||
putglyph 0x61 1 0,28
|
||||
putglyph 0x61 1 0,29
|
||||
putglyph 0x61 1 0,30
|
||||
putglyph 0x61 1 0,31
|
||||
putglyph 0x61 1 0,32
|
||||
putglyph 0x61 1 0,33
|
||||
putglyph 0x61 1 0,34
|
||||
putglyph 0x61 1 0,35
|
||||
putglyph 0x61 1 0,36
|
||||
putglyph 0x61 1 0,37
|
||||
putglyph 0x61 1 0,38
|
||||
putglyph 0x61 1 0,39
|
||||
putglyph 0x61 1 0,40
|
||||
putglyph 0x61 1 0,41
|
||||
putglyph 0x61 1 0,42
|
||||
putglyph 0x61 1 0,43
|
||||
putglyph 0x61 1 0,44
|
||||
putglyph 0x61 1 0,45
|
||||
putglyph 0x61 1 0,46
|
||||
putglyph 0x61 1 0,47
|
||||
putglyph 0x61 1 0,48
|
||||
putglyph 0x61 1 0,49
|
||||
putglyph 0x61 1 0,50
|
||||
putglyph 0x61 1 0,51
|
||||
putglyph 0x61 1 0,52
|
||||
putglyph 0x61 1 0,53
|
||||
putglyph 0x61 1 0,54
|
||||
putglyph 0x61 1 0,55
|
||||
putglyph 0x61 1 0,56
|
||||
putglyph 0x61 1 0,57
|
||||
putglyph 0x61 1 0,58
|
||||
putglyph 0x61 1 0,59
|
||||
putglyph 0x61 1 0,60
|
||||
putglyph 0x61 1 0,61
|
||||
putglyph 0x61 1 0,62
|
||||
putglyph 0x61 1 0,63
|
||||
putglyph 0x61 1 0,64
|
||||
putglyph 0x61 1 0,65
|
||||
putglyph 0x61 1 0,66
|
||||
putglyph 0x61 1 0,67
|
||||
putglyph 0x61 1 0,68
|
||||
putglyph 0x61 1 0,69
|
||||
putglyph 0x61 1 0,70
|
||||
putglyph 0x61 1 0,71
|
||||
putglyph 0x61 1 0,72
|
||||
putglyph 0x61 1 0,73
|
||||
putglyph 0x61 1 0,74
|
||||
putglyph 0x61 1 0,75
|
||||
putglyph 0x61 1 0,76
|
||||
putglyph 0x61 1 0,77
|
||||
putglyph 0x61 1 0,78
|
||||
putglyph 0x61 1 0,79
|
||||
putglyph 0x62 1 1,0
|
||||
|
@@ -8,14 +8,16 @@ use IPC::Open2 qw( open2 );
|
||||
use POSIX qw( WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG );
|
||||
|
||||
my $VALGRIND = 0;
|
||||
my $EXECUTABLE = "t/.libs/harness";
|
||||
GetOptions(
|
||||
'valgrind|v+' => \$VALGRIND,
|
||||
'executable|e=s' => \$EXECUTABLE
|
||||
) or exit 1;
|
||||
|
||||
my ( $hin, $hout, $hpid );
|
||||
{
|
||||
local $ENV{LD_LIBRARY_PATH} = ".libs";
|
||||
my @command = "t/.libs/harness";
|
||||
my @command = $EXECUTABLE;
|
||||
unshift @command, "valgrind", "--tool=memcheck", "--leak-check=yes", "--num-callers=25", "--log-file=valgrind.out", "--error-exitcode=126" if $VALGRIND;
|
||||
|
||||
$hpid = open2 $hout, $hin, @command or die "Cannot open2 harness - $!";
|
||||
|
@@ -746,6 +746,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
778,
|
||||
/**/
|
||||
777,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user