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 <[email protected]>
+ 
+ 
+ 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 -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202005172028.04HKSVDH010622%40masaka.moolenaar.net.

Raspunde prin e-mail lui