mirror of
https://github.com/neovim/neovim.git
synced 2024-09-17 20:58:20 -04:00
Merge c0e919795f
into a0d8c2b86e
This commit is contained in:
commit
3021576669
@ -92,20 +92,19 @@ static int lookup_colour(const VTermState *state, int palette, const long args[]
|
|||||||
{
|
{
|
||||||
switch(palette) {
|
switch(palette) {
|
||||||
case 2: // RGB mode - 3 args contain colour values directly
|
case 2: // RGB mode - 3 args contain colour values directly
|
||||||
if(argcount < 3)
|
if(argcount < 3) {
|
||||||
return argcount;
|
return argcount;
|
||||||
|
}
|
||||||
|
|
||||||
vterm_color_rgb(col, CSI_ARG(args[0]), CSI_ARG(args[1]), CSI_ARG(args[2]));
|
vterm_color_rgb(col, CSI_ARG(args[0]), CSI_ARG(args[1]), CSI_ARG(args[2]));
|
||||||
|
|
||||||
return 3;
|
return 3;
|
||||||
|
|
||||||
case 5: // XTerm 256-colour mode
|
case 5: // XTerm 256-colour mode
|
||||||
if (!argcount || CSI_ARG_IS_MISSING(args[0])) {
|
if (argcount && !CSI_ARG_IS_MISSING(args[0])) {
|
||||||
return argcount ? 1 : 0;
|
vterm_color_indexed(col, args[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
vterm_color_indexed(col, args[0]);
|
|
||||||
|
|
||||||
return argcount ? 1 : 0;
|
return argcount ? 1 : 0;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -125,8 +124,9 @@ static void setpenattr(VTermState *state, VTermAttr attr, VTermValueType type, V
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if(state->callbacks && state->callbacks->setpenattr)
|
if(state->callbacks && state->callbacks->setpenattr) {
|
||||||
(*state->callbacks->setpenattr)(attr, val, state->cbdata);
|
(*state->callbacks->setpenattr)(attr, val, state->cbdata);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setpenattr_bool(VTermState *state, VTermAttr attr, int boolean)
|
static void setpenattr_bool(VTermState *state, VTermAttr attr, int boolean)
|
||||||
@ -163,8 +163,9 @@ INTERNAL void vterm_state_newpen(VTermState *state)
|
|||||||
vterm_color_rgb(&state->default_bg, 0, 0, 0);
|
vterm_color_rgb(&state->default_bg, 0, 0, 0);
|
||||||
vterm_state_set_default_colors(state, &state->default_fg, &state->default_bg);
|
vterm_state_set_default_colors(state, &state->default_fg, &state->default_bg);
|
||||||
|
|
||||||
for(int col = 0; col < 16; col++)
|
for(int col = 0; col < 16; col++) {
|
||||||
lookup_default_colour_ansi(col, &state->colors[col]);
|
lookup_default_colour_ansi(col, &state->colors[col]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
INTERNAL void vterm_state_resetpen(VTermState *state)
|
INTERNAL void vterm_state_resetpen(VTermState *state)
|
||||||
@ -260,8 +261,9 @@ void vterm_state_set_default_colors(VTermState *state, const VTermColor *default
|
|||||||
|
|
||||||
void vterm_state_set_palette_color(VTermState *state, int index, const VTermColor *col)
|
void vterm_state_set_palette_color(VTermState *state, int index, const VTermColor *col)
|
||||||
{
|
{
|
||||||
if(index >= 0 && index < 16)
|
if(index >= 0 && index < 16) {
|
||||||
state->colors[index] = *col;
|
state->colors[index] = *col;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void vterm_state_convert_color_to_rgb(const VTermState *state, VTermColor *col)
|
void vterm_state_convert_color_to_rgb(const VTermState *state, VTermColor *col)
|
||||||
@ -300,8 +302,9 @@ INTERNAL void vterm_state_setpen(VTermState *state, const long args[], int argco
|
|||||||
const VTermColor *fg = &state->pen.fg;
|
const VTermColor *fg = &state->pen.fg;
|
||||||
state->pen.bold = 1;
|
state->pen.bold = 1;
|
||||||
setpenattr_bool(state, VTERM_ATTR_BOLD, 1);
|
setpenattr_bool(state, VTERM_ATTR_BOLD, 1);
|
||||||
if(!VTERM_COLOR_IS_DEFAULT_FG(fg) && VTERM_COLOR_IS_INDEXED(fg) && fg->indexed.idx < 8 && state->bold_is_highbright)
|
if(!VTERM_COLOR_IS_DEFAULT_FG(fg) && VTERM_COLOR_IS_INDEXED(fg) && fg->indexed.idx < 8 && state->bold_is_highbright) {
|
||||||
set_pen_col_ansi(state, VTERM_ATTR_FOREGROUND, fg->indexed.idx + (state->pen.bold ? 8 : 0));
|
set_pen_col_ansi(state, VTERM_ATTR_FOREGROUND, fg->indexed.idx + (state->pen.bold ? 8 : 0));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -401,14 +404,16 @@ INTERNAL void vterm_state_setpen(VTermState *state, const long args[], int argco
|
|||||||
case 30: case 31: case 32: case 33:
|
case 30: case 31: case 32: case 33:
|
||||||
case 34: case 35: case 36: case 37: // Foreground colour palette
|
case 34: case 35: case 36: case 37: // Foreground colour palette
|
||||||
value = CSI_ARG(args[argi]) - 30;
|
value = CSI_ARG(args[argi]) - 30;
|
||||||
if(state->pen.bold && state->bold_is_highbright)
|
if(state->pen.bold && state->bold_is_highbright) {
|
||||||
value += 8;
|
value += 8;
|
||||||
|
}
|
||||||
set_pen_col_ansi(state, VTERM_ATTR_FOREGROUND, value);
|
set_pen_col_ansi(state, VTERM_ATTR_FOREGROUND, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 38: // Foreground colour alternative palette
|
case 38: // Foreground colour alternative palette
|
||||||
if(argcount - argi < 1)
|
if(argcount - argi < 1) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
argi += 1 + lookup_colour(state, CSI_ARG(args[argi+1]), args+argi+2, argcount-argi-2, &state->pen.fg);
|
argi += 1 + lookup_colour(state, CSI_ARG(args[argi+1]), args+argi+2, argcount-argi-2, &state->pen.fg);
|
||||||
setpenattr_col(state, VTERM_ATTR_FOREGROUND, state->pen.fg);
|
setpenattr_col(state, VTERM_ATTR_FOREGROUND, state->pen.fg);
|
||||||
break;
|
break;
|
||||||
@ -510,44 +515,56 @@ INTERNAL int vterm_state_getpen(VTermState *state, long args[], int argcount)
|
|||||||
{
|
{
|
||||||
int argi = 0;
|
int argi = 0;
|
||||||
|
|
||||||
if(state->pen.bold)
|
if(state->pen.bold) {
|
||||||
args[argi++] = 1;
|
args[argi++] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if(state->pen.italic)
|
if(state->pen.italic) {
|
||||||
args[argi++] = 3;
|
args[argi++] = 3;
|
||||||
|
}
|
||||||
|
|
||||||
if(state->pen.underline == VTERM_UNDERLINE_SINGLE)
|
if(state->pen.underline == VTERM_UNDERLINE_SINGLE) {
|
||||||
args[argi++] = 4;
|
args[argi++] = 4;
|
||||||
if(state->pen.underline == VTERM_UNDERLINE_CURLY)
|
}
|
||||||
|
if(state->pen.underline == VTERM_UNDERLINE_CURLY) {
|
||||||
args[argi++] = 4 | CSI_ARG_FLAG_MORE, args[argi++] = 3;
|
args[argi++] = 4 | CSI_ARG_FLAG_MORE, args[argi++] = 3;
|
||||||
|
}
|
||||||
|
|
||||||
if(state->pen.blink)
|
if(state->pen.blink) {
|
||||||
args[argi++] = 5;
|
args[argi++] = 5;
|
||||||
|
}
|
||||||
|
|
||||||
if(state->pen.reverse)
|
if(state->pen.reverse) {
|
||||||
args[argi++] = 7;
|
args[argi++] = 7;
|
||||||
|
}
|
||||||
|
|
||||||
if(state->pen.conceal)
|
if(state->pen.conceal) {
|
||||||
args[argi++] = 8;
|
args[argi++] = 8;
|
||||||
|
}
|
||||||
|
|
||||||
if(state->pen.strike)
|
if(state->pen.strike) {
|
||||||
args[argi++] = 9;
|
args[argi++] = 9;
|
||||||
|
}
|
||||||
|
|
||||||
if(state->pen.font)
|
if(state->pen.font) {
|
||||||
args[argi++] = 10 + state->pen.font;
|
args[argi++] = 10 + state->pen.font;
|
||||||
|
}
|
||||||
|
|
||||||
if(state->pen.underline == VTERM_UNDERLINE_DOUBLE)
|
if(state->pen.underline == VTERM_UNDERLINE_DOUBLE) {
|
||||||
args[argi++] = 21;
|
args[argi++] = 21;
|
||||||
|
}
|
||||||
|
|
||||||
argi = vterm_state_getpen_color(&state->pen.fg, argi, args, true);
|
argi = vterm_state_getpen_color(&state->pen.fg, argi, args, true);
|
||||||
|
|
||||||
argi = vterm_state_getpen_color(&state->pen.bg, argi, args, false);
|
argi = vterm_state_getpen_color(&state->pen.bg, argi, args, false);
|
||||||
|
|
||||||
if(state->pen.small) {
|
if(state->pen.small) {
|
||||||
if(state->pen.baseline == VTERM_BASELINE_RAISE)
|
if(state->pen.baseline == VTERM_BASELINE_RAISE) {
|
||||||
args[argi++] = 73;
|
args[argi++] = 73;
|
||||||
else if(state->pen.baseline == VTERM_BASELINE_LOWER)
|
}
|
||||||
|
else if(state->pen.baseline == VTERM_BASELINE_LOWER) {
|
||||||
args[argi++] = 74;
|
args[argi++] = 74;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return argi;
|
return argi;
|
||||||
@ -671,8 +688,9 @@ int vterm_state_set_penattr(VTermState *state, VTermAttr attr, VTermValueType ty
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(state->callbacks && state->callbacks->setpenattr)
|
if(state->callbacks && state->callbacks->setpenattr) {
|
||||||
(*state->callbacks->setpenattr)(attr, val, state->cbdata);
|
(*state->callbacks->setpenattr)(attr, val, state->cbdata);
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user