Mercurial > vim
diff src/term.c @ 14867:cf4d6489c9eb v8.1.0445
patch 8.1.0445: setting 'term' does not store location for termcap options
commit https://github.com/vim/vim/commit/35bc7d6c52f516b60d683bf9f0f57266d86e25b9
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Oct 2 14:45:10 2018 +0200
patch 8.1.0445: setting 'term' does not store location for termcap options
Problem: Setting 'term' does not store location for termcap options.
Solution: Set the script context for termcap options that are changed when
'term' is set.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 02 Oct 2018 15:00:07 +0200 |
parents | 27b9a84395b5 |
children | 6fcfff2b4ba5 |
line wrap: on
line diff
--- a/src/term.c +++ b/src/term.c @@ -1471,6 +1471,9 @@ parse_builtin_tcap(char_u *term) if (term_strings[p->bt_entry] == NULL || term_strings[p->bt_entry] == empty_option) { +#ifdef FEAT_EVAL + int opt_idx = -1; +#endif /* 8bit terminal: use CSI instead of <Esc>[ */ if (term_8bit && term_7to8bit((char_u *)p->bt_string) != 0) { @@ -1486,11 +1489,23 @@ parse_builtin_tcap(char_u *term) STRMOVE(t + 1, t + 2); } term_strings[p->bt_entry] = s; - set_term_option_alloced(&term_strings[p->bt_entry]); +#ifdef FEAT_EVAL + opt_idx = +#endif + set_term_option_alloced( + &term_strings[p->bt_entry]); } } else + { term_strings[p->bt_entry] = (char_u *)p->bt_string; +#ifdef FEAT_EVAL + opt_idx = get_term_opt_idx(&term_strings[p->bt_entry]); +#endif + } +#ifdef FEAT_EVAL + set_term_option_sctx_idx(NULL, opt_idx); +#endif } } else @@ -1616,7 +1631,12 @@ get_term_entries(int *height, int *width { if (TERM_STR(string_names[i].dest) == NULL || TERM_STR(string_names[i].dest) == empty_option) + { TERM_STR(string_names[i].dest) = TGETSTR(string_names[i].name, &tp); +#ifdef FEAT_EVAL + set_term_option_sctx_idx(string_names[i].name, -1); +#endif + } } /* tgetflag() returns 1 if the flag is present, 0 if not and @@ -1658,7 +1678,12 @@ get_term_entries(int *height, int *width * Get number of colors (if not done already). */ if (TERM_STR(KS_CCO) == NULL || TERM_STR(KS_CCO) == empty_option) + { set_color_count(tgetnum("Co")); +#ifdef FEAT_EVAL + set_term_option_sctx_idx("Co", -1); +#endif + } # ifndef hpux BC = (char *)TGETSTR("bc", &tp);