diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-05-17 22:27:55 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-05-17 22:27:55 +0200 |
commit | 6fc3b59ee914a0d1710c8b037a0c592e0a7c34d4 (patch) | |
tree | af8250bd6fc8b95088c59d0049150235fda7a471 /src/libvterm/src | |
parent | 94d729cbe8f0f788d9d7539f733cff395e73b228 (diff) | |
download | vim-git-6fc3b59ee914a0d1710c8b037a0c592e0a7c34d4.tar.gz |
patch 8.2.0785: libvterm code lags behind the upstream versionv8.2.0785
Problem: Libvterm code lags behind the upstream version.
Solution: Include revisions 734 - 740.
Diffstat (limited to 'src/libvterm/src')
-rw-r--r-- | src/libvterm/src/pen.c | 33 | ||||
-rw-r--r-- | src/libvterm/src/vterm.c | 17 |
2 files changed, 43 insertions, 7 deletions
diff --git a/src/libvterm/src/pen.c b/src/libvterm/src/pen.c index d34599da1..5619f276d 100644 --- a/src/libvterm/src/pen.c +++ b/src/libvterm/src/pen.c @@ -261,9 +261,26 @@ INTERNAL void vterm_state_setpen(VTermState *state, const long args[], int argco setpenattr_bool(state, VTERM_ATTR_ITALIC, 1); break; - case 4: // Underline single - state->pen.underline = 1; - setpenattr_int(state, VTERM_ATTR_UNDERLINE, 1); + 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,8 +305,8 @@ INTERNAL void vterm_state_setpen(VTermState *state, const long args[], int argco break; case 21: // Underline double - state->pen.underline = 2; - setpenattr_int(state, VTERM_ATTR_UNDERLINE, 2); + state->pen.underline = VTERM_UNDERLINE_DOUBLE; + setpenattr_int(state, VTERM_ATTR_UNDERLINE, state->pen.underline); break; case 22: // Bold off @@ -405,8 +422,10 @@ INTERNAL int vterm_state_getpen(VTermState *state, long args[], int argcount UNU if(state->pen.italic) args[argi++] = 3; - if(state->pen.underline == 1) + 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,7 +439,7 @@ INTERNAL int vterm_state_getpen(VTermState *state, long args[], int argcount UNU if(state->pen.font) args[argi++] = 10 + state->pen.font; - if(state->pen.underline == 2) + if(state->pen.underline == VTERM_UNDERLINE_DOUBLE) args[argi++] = 21; if(state->fg_index >= 0 && state->fg_index < 8) diff --git a/src/libvterm/src/vterm.c b/src/libvterm/src/vterm.c index c5b6652d0..7b06c04bb 100644 --- a/src/libvterm/src/vterm.c +++ b/src/libvterm/src/vterm.c @@ -406,3 +406,20 @@ void vterm_copy_cells(VTermRect dest, (*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 +} |