To: vim_dev@googlegroups.com Subject: Patch 8.2.0785 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0785 Problem: Libvterm code lags behind the upstream version. Solution: Include revisions 734 - 740. Files: src/libvterm/include/vterm.h, src/libvterm/src/pen.c, src/libvterm/src/vterm.c, src/libvterm/doc/seqs.txt, src/libvterm/t/30state_pen.test, src/libvterm/t/run-test.pl, src/libvterm/Makefile, src/libvterm/CONTRIBUTING *** ../vim-8.2.0784/src/libvterm/include/vterm.h 2020-05-17 21:50:11.954655960 +0200 --- src/libvterm/include/vterm.h 2020-05-17 22:17:31.042011756 +0200 *************** *** 19,24 **** --- 19,30 ---- typedef unsigned char uint8_t; typedef unsigned int uint32_t; + #define VTERM_VERSION_MAJOR 0 + #define VTERM_VERSION_MINOR 1 + + #define VTERM_CHECK_VERSION \ + vterm_check_version(VTERM_VERSION_MAJOR, VTERM_VERSION_MINOR) + typedef struct VTerm VTerm; typedef struct VTermState VTermState; typedef struct VTermScreen VTermScreen; *************** *** 175,180 **** --- 181,188 ---- void (*free)(void *ptr, void *allocdata); } VTermAllocatorFunctions; + void vterm_check_version(int major, int minor); + // Allocate and initialize a new terminal with default allocators. VTerm *vterm_new(int rows, int cols); *************** *** 330,335 **** --- 338,350 ---- unsigned int dhl : 2; // On a DECDHL line (1=top 2=bottom) } VTermScreenCellAttrs; + enum { + VTERM_UNDERLINE_OFF, + VTERM_UNDERLINE_SINGLE, + VTERM_UNDERLINE_DOUBLE, + VTERM_UNDERLINE_CURLY, + }; + typedef struct { #define VTERM_MAX_CHARS_PER_CELL 6 uint32_t chars[VTERM_MAX_CHARS_PER_CELL]; *** ../vim-8.2.0784/src/libvterm/src/pen.c 2020-01-08 22:06:11.057866613 +0100 --- src/libvterm/src/pen.c 2020-05-17 22:13:42.194619004 +0200 *************** *** 261,269 **** setpenattr_bool(state, VTERM_ATTR_ITALIC, 1); break; ! case 4: // Underline single ! state->pen.underline = 1; ! setpenattr_int(state, VTERM_ATTR_UNDERLINE, 1); break; case 5: // Blink --- 261,286 ---- setpenattr_bool(state, VTERM_ATTR_ITALIC, 1); break; ! case 4: // Underline ! state->pen.underline = VTERM_UNDERLINE_SINGLE; ! if(CSI_ARG_HAS_MORE(args[argi])) { ! argi++; ! switch(CSI_ARG(args[argi])) { ! case 0: ! state->pen.underline = 0; ! break; ! case 1: ! state->pen.underline = VTERM_UNDERLINE_SINGLE; ! break; ! case 2: ! state->pen.underline = VTERM_UNDERLINE_DOUBLE; ! break; ! case 3: ! state->pen.underline = VTERM_UNDERLINE_CURLY; ! break; ! } ! } ! setpenattr_int(state, VTERM_ATTR_UNDERLINE, state->pen.underline); break; case 5: // Blink *************** *** 288,295 **** break; case 21: // Underline double ! state->pen.underline = 2; ! setpenattr_int(state, VTERM_ATTR_UNDERLINE, 2); break; case 22: // Bold off --- 305,312 ---- break; case 21: // Underline double ! state->pen.underline = VTERM_UNDERLINE_DOUBLE; ! setpenattr_int(state, VTERM_ATTR_UNDERLINE, state->pen.underline); break; case 22: // Bold off *************** *** 405,412 **** if(state->pen.italic) args[argi++] = 3; ! if(state->pen.underline == 1) args[argi++] = 4; if(state->pen.blink) args[argi++] = 5; --- 422,431 ---- if(state->pen.italic) args[argi++] = 3; ! if(state->pen.underline == VTERM_UNDERLINE_SINGLE) args[argi++] = 4; + if(state->pen.underline == VTERM_UNDERLINE_CURLY) + args[argi++] = 4 | CSI_ARG_FLAG_MORE, args[argi++] = 3; if(state->pen.blink) args[argi++] = 5; *************** *** 420,426 **** if(state->pen.font) args[argi++] = 10 + state->pen.font; ! if(state->pen.underline == 2) args[argi++] = 21; if(state->fg_index >= 0 && state->fg_index < 8) --- 439,445 ---- if(state->pen.font) args[argi++] = 10 + state->pen.font; ! if(state->pen.underline == VTERM_UNDERLINE_DOUBLE) args[argi++] = 21; if(state->fg_index >= 0 && state->fg_index < 8) *** ../vim-8.2.0784/src/libvterm/src/vterm.c 2020-05-17 21:50:11.954655960 +0200 --- src/libvterm/src/vterm.c 2020-05-17 22:16:18.942207859 +0200 *************** *** 406,408 **** --- 406,425 ---- (*copycell)(pos, srcpos, user); } } + + void vterm_check_version(int major, int minor) + { + if(major != VTERM_VERSION_MAJOR) { + fprintf(stderr, "libvterm major version mismatch; %d (wants) != %d (library)\n", + major, VTERM_VERSION_MAJOR); + exit(1); + } + + if(minor > VTERM_VERSION_MINOR) { + fprintf(stderr, "libvterm minor version mismatch; %d (wants) > %d (library)\n", + minor, VTERM_VERSION_MINOR); + exit(1); + } + + // Happy + } *** ../vim-8.2.0784/src/libvterm/doc/seqs.txt 2020-05-17 16:28:47.091869380 +0200 --- src/libvterm/doc/seqs.txt 2020-05-17 22:00:08.940797230 +0200 *************** *** 167,172 **** --- 167,173 ---- 123 SGR 1 = Bold on SGR 3 = Italic on 123 SGR 4 = Underline single + SGR 4:x = Underline style 123 SGR 5 = Blink on 123 SGR 7 = Reverse on SGR 9 = Strikethrough on *** ../vim-8.2.0784/src/libvterm/t/30state_pen.test 2020-05-17 16:28:47.087869402 +0200 --- src/libvterm/t/30state_pen.test 2020-05-17 22:13:42.194619004 +0200 *************** *** 28,33 **** --- 28,41 ---- ?pen underline = 2 PUSH "\e[24m" ?pen underline = 0 + PUSH "\e[4m\e[4:0m" + ?pen underline = 0 + PUSH "\e[4:1m" + ?pen underline = 1 + PUSH "\e[4:2m" + ?pen underline = 2 + PUSH "\e[4:3m" + ?pen underline = 3 PUSH "\e[4m\e[m" ?pen underline = 0 *** ../vim-8.2.0784/src/libvterm/t/run-test.pl 2020-05-17 16:03:58.500875755 +0200 --- src/libvterm/t/run-test.pl 2020-05-17 22:19:15.417721608 +0200 *************** *** 177,185 **** while( my $line = <$test> ) { $line =~ s/^\s+//; next if $line =~ m/^(?:#|$)/; - chomp $line; do_line( $line ); } --- 177,187 ---- while( my $line = <$test> ) { $line =~ s/^\s+//; + chomp $line; + next if $line =~ m/^(?:#|$)/; + last if $line eq "__END__"; do_line( $line ); } *** ../vim-8.2.0784/src/libvterm/Makefile 2020-05-17 16:03:58.500875755 +0200 --- src/libvterm/Makefile 2020-05-17 22:20:28.273515273 +0200 *************** *** 37,49 **** HFILES_INT=$(sort $(wildcard src/*.h)) $(HFILES) VERSION_MAJOR=0 ! VERSION_MINOR=0 VERSION_CURRENT=0 VERSION_REVISION=0 VERSION_AGE=0 ! VERSION=0 PREFIX=/usr/local BINDIR=$(PREFIX)/bin --- 37,49 ---- HFILES_INT=$(sort $(wildcard src/*.h)) $(HFILES) VERSION_MAJOR=0 ! VERSION_MINOR=1 VERSION_CURRENT=0 VERSION_REVISION=0 VERSION_AGE=0 ! VERSION=$(VERSION_MAJOR).$(VERSION_MINOR) PREFIX=/usr/local BINDIR=$(PREFIX)/bin *************** *** 110,122 **** # DIST CUT - VERSION=$(VERSION_MAJOR).$(VERSION_MINOR) - DISTDIR=libvterm-$(VERSION) distdir: $(INCFILES) mkdir __distdir ! cp LICENSE __distdir mkdir __distdir/src cp src/*.c src/*.h src/*.inc __distdir/src mkdir __distdir/src/encoding --- 110,120 ---- # DIST CUT DISTDIR=libvterm-$(VERSION) distdir: $(INCFILES) mkdir __distdir ! cp LICENSE CONTRIBUTING __distdir mkdir __distdir/src cp src/*.c src/*.h src/*.inc __distdir/src mkdir __distdir/src/encoding *** ../vim-8.2.0784/src/libvterm/CONTRIBUTING 2020-05-17 22:25:44.152596753 +0200 --- src/libvterm/CONTRIBUTING 2020-05-17 22:20:28.273515273 +0200 *************** *** 0 **** --- 1,22 ---- + How to Contribute + ----------------- + + The main resources for this library are: + + Launchpad + https://launchpad.net/libvterm + + Freenode: + ##tty or #tickit on irc.freenode.net + + Email: + Paul "LeoNerd" Evans + + + Bug reports and feature requests can be sent to any of the above resources. + + New features, bug patches, etc.. should in the first instance be discussed via + any of the resources listed above, before starting work on the actual code. + There may be future plans or development already in-progress that could be + affected so it is better to discuss the ideas first before starting work + actually writing any code. *** ../vim-8.2.0784/src/version.c 2020-05-17 21:50:11.954655960 +0200 --- src/version.c 2020-05-17 22:21:05.893407745 +0200 *************** *** 748,749 **** --- 748,751 ---- { /* Add new patch number below this line */ + /**/ + 785, /**/ -- Would you care for a drink? I mean, if it were, like, disabled and you had to look after it? /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///