To: vim_dev@googlegroups.com Subject: Patch 8.2.4894 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.4894 Problem: MS-Windows: not using italics. Solution: Use italics. Simplify the code. (closes #10359) Files: src/term.c *** ../vim-8.2.4893/src/term.c 2022-05-05 20:46:41.407274630 +0100 --- src/term.c 2022-05-06 18:34:28.671785477 +0100 *************** *** 6605,6629 **** # ifdef FEAT_TERMGUICOLORS # define KSSIZE 20 ! struct ks_tbl_s { ! int code; // value of KS_ ! char *vtp; // code in vtp mode ! char *vtp2; // code in vtp2 mode ! char buf[KSSIZE]; // save buffer in non-vtp mode ! char vbuf[KSSIZE]; // save buffer in vtp mode ! char v2buf[KSSIZE]; // save buffer in vtp2 mode ! char arr[KSSIZE]; // real buffer }; ! static struct ks_tbl_s ks_tbl[] = { {(int)KS_ME, "\033|0m", "\033|0m"}, // normal {(int)KS_MR, "\033|7m", "\033|7m"}, // reverse {(int)KS_MD, "\033|1m", "\033|1m"}, // bold {(int)KS_SO, "\033|91m", "\033|91m"}, // standout: bright red text {(int)KS_SE, "\033|39m", "\033|39m"}, // standout end: default color ! {(int)KS_CZH, "\033|95m", "\033|95m"}, // italic: bright magenta text {(int)KS_CZR, "\033|0m", "\033|0m"}, // italic end {(int)KS_US, "\033|4m", "\033|4m"}, // underscore {(int)KS_UE, "\033|24m", "\033|24m"}, // underscore end --- 6605,6635 ---- # ifdef FEAT_TERMGUICOLORS # define KSSIZE 20 ! ! typedef enum ! { ! CMODE_INDEXED = 0, // Use cmd.exe 4bit palette. ! CMODE_RGB, // Use 24bit RGB colors using VTP. ! CMODE_256COL, // Emulate xterm's 256-color palette using VTP. ! CMODE_LAST, ! } cmode_T; ! ! struct ks_tbl_S { ! int code; // value of KS_ ! char *vtp; // code in RGB mode ! char *vtp2; // code in 256color mode ! char buf[CMODE_LAST][KSSIZE]; // real buffer }; ! static struct ks_tbl_S ks_tbl[] = { {(int)KS_ME, "\033|0m", "\033|0m"}, // normal {(int)KS_MR, "\033|7m", "\033|7m"}, // reverse {(int)KS_MD, "\033|1m", "\033|1m"}, // bold {(int)KS_SO, "\033|91m", "\033|91m"}, // standout: bright red text {(int)KS_SE, "\033|39m", "\033|39m"}, // standout end: default color ! {(int)KS_CZH, "\033|3m", "\033|3m"}, // italic {(int)KS_CZR, "\033|0m", "\033|0m"}, // italic end {(int)KS_US, "\033|4m", "\033|4m"}, // underscore {(int)KS_UE, "\033|24m", "\033|24m"}, // underscore end *************** *** 6664,6681 **** { # ifdef FEAT_TERMGUICOLORS static int init_done = FALSE; ! static int curr_mode; ! struct ks_tbl_s *ks; struct builtin_term *bt; ! int mode; ! enum ! { ! CMODEINDEX, ! CMODE24, ! CMODE256 ! }; - // buffer initialization if (!init_done) { for (ks = ks_tbl; ks->code != (int)KS_NAME; ks++) --- 6670,6680 ---- { # ifdef FEAT_TERMGUICOLORS static int init_done = FALSE; ! static cmode_T curr_mode; ! struct ks_tbl_S *ks; struct builtin_term *bt; ! cmode_T mode; if (!init_done) { for (ks = ks_tbl; ks->code != (int)KS_NAME; ks++) *************** *** 6683,6749 **** bt = find_first_tcap(DEFAULT_TERM, ks->code); if (bt != NULL) { ! STRNCPY(ks->buf, bt->bt_string, KSSIZE); ! STRNCPY(ks->vbuf, ks->vtp, KSSIZE); ! STRNCPY(ks->v2buf, ks->vtp2, KSSIZE); ! STRNCPY(ks->arr, bt->bt_string, KSSIZE); ! bt->bt_string = &ks->arr[0]; } } init_done = TRUE; ! curr_mode = CMODEINDEX; } if (p_tgc) ! mode = CMODE24; else if (t_colors >= 256) ! mode = CMODE256; else ! mode = CMODEINDEX; for (ks = ks_tbl; ks->code != (int)KS_NAME; ks++) { bt = find_first_tcap(DEFAULT_TERM, ks->code); if (bt != NULL) ! { ! switch (curr_mode) ! { ! case CMODEINDEX: ! STRNCPY(&ks->buf[0], bt->bt_string, KSSIZE); ! break; ! case CMODE24: ! STRNCPY(&ks->vbuf[0], bt->bt_string, KSSIZE); ! break; ! default: ! STRNCPY(&ks->v2buf[0], bt->bt_string, KSSIZE); ! } ! } } ! if (mode != curr_mode) ! { ! for (ks = ks_tbl; ks->code != (int)KS_NAME; ks++) ! { ! bt = find_first_tcap(DEFAULT_TERM, ks->code); ! if (bt != NULL) ! { ! switch (mode) ! { ! case CMODEINDEX: ! STRNCPY(bt->bt_string, &ks->buf[0], KSSIZE); ! break; ! case CMODE24: ! STRNCPY(bt->bt_string, &ks->vbuf[0], KSSIZE); ! break; ! default: ! STRNCPY(bt->bt_string, &ks->v2buf[0], KSSIZE); ! } ! } ! } ! ! curr_mode = mode; ! } # endif } --- 6682,6717 ---- bt = find_first_tcap(DEFAULT_TERM, ks->code); if (bt != NULL) { ! // Preserve the original value. ! STRNCPY(ks->buf[CMODE_INDEXED], bt->bt_string, KSSIZE); ! STRNCPY(ks->buf[CMODE_RGB], ks->vtp, KSSIZE); ! STRNCPY(ks->buf[CMODE_256COL], ks->vtp2, KSSIZE); ! bt->bt_string = ks->buf[CMODE_INDEXED]; } } init_done = TRUE; ! curr_mode = CMODE_INDEXED; } if (p_tgc) ! mode = CMODE_RGB; else if (t_colors >= 256) ! mode = CMODE_256COL; else ! mode = CMODE_INDEXED; ! ! if (mode == curr_mode) ! return; for (ks = ks_tbl; ks->code != (int)KS_NAME; ks++) { bt = find_first_tcap(DEFAULT_TERM, ks->code); if (bt != NULL) ! bt->bt_string = ks->buf[mode]; } ! curr_mode = mode; # endif } *** ../vim-8.2.4893/src/version.c 2022-05-06 18:08:48.548683486 +0100 --- src/version.c 2022-05-06 18:38:11.399621201 +0100 *************** *** 748,749 **** --- 748,751 ---- { /* Add new patch number below this line */ + /**/ + 4894, /**/ -- hundred-and-one symptoms of being an internet addict: 120. You ask a friend, "What's that big shiny thing?" He says, "It's the sun." /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///