Mercurial > vim
changeset 16245:e0a6298bd70f v8.1.1127
patch 8.1.1127: getwinpos() doesn't work in terminal on MS-Windows console
commit https://github.com/vim/vim/commit/6bc9305a02f77136e65347951618575b2033cbc9
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Apr 6 20:00:19 2019 +0200
patch 8.1.1127: getwinpos() doesn't work in terminal on MS-Windows console
Problem: getwinpos() doesn't work in terminal on MS-Windows console.
Solution: Adjust #ifdefs. Disable test for MS-Windows console.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 06 Apr 2019 20:15:03 +0200 |
parents | a15ec9bee99d |
children | 94ba74d9ee1b |
files | src/term.c src/terminal.c src/testdir/test_terminal.vim src/ui.c src/version.c |
diffstat | 5 files changed, 22 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/term.c +++ b/src/term.c @@ -2843,7 +2843,7 @@ static int winpos_x = -1; static int winpos_y = -1; static int did_request_winpos = 0; -# if (defined(FEAT_EVAL) && defined(HAVE_TGETENT)) || defined(PROTO) +# if defined(FEAT_EVAL) || defined(FEAT_TERMINAL) || defined(PROTO) /* * Try getting the Vim window position from the terminal. * Returns OK or FAIL. @@ -4858,7 +4858,7 @@ check_termcode( /* * Check for a window position response from the terminal: - * {lead}3;{x}:{y}t + * {lead}3;{x};{y}t */ else if (did_request_winpos && ((len >= 4 && tp[0] == ESC && tp[1] == '[') @@ -4925,11 +4925,11 @@ check_termcode( if (i - j >= 21 && STRNCMP(tp + j + 3, "rgb:", 4) == 0 && tp[j + 11] == '/' && tp[j + 16] == '/') { -#ifdef FEAT_TERMINAL +# ifdef FEAT_TERMINAL int rval = hexhex2nr(tp + j + 7); int gval = hexhex2nr(tp + j + 12); int bval = hexhex2nr(tp + j + 17); -#endif +# endif if (is_bg) { char *newval = (3 * '6' < tp[j+7] + tp[j+12] @@ -4937,11 +4937,11 @@ check_termcode( LOG_TR(("Received RBG response: %s", tp)); rbg_status = STATUS_GOT; -#ifdef FEAT_TERMINAL +# ifdef FEAT_TERMINAL bg_r = rval; bg_g = gval; bg_b = bval; -#endif +# endif if (!option_was_set((char_u *)"bg") && STRCMP(p_bg, newval) != 0) { @@ -4952,7 +4952,7 @@ check_termcode( redraw_asap(CLEAR); } } -#ifdef FEAT_TERMINAL +# ifdef FEAT_TERMINAL else { LOG_TR(("Received RFG response: %s", tp)); @@ -4961,7 +4961,7 @@ check_termcode( fg_g = gval; fg_b = bval; } -#endif +# endif } /* got finished code: consume it */
--- a/src/terminal.c +++ b/src/terminal.c @@ -3866,8 +3866,11 @@ parse_csi( if (command != 't' || argcount != 1 || args[0] != 13) return 0; // not handled - // When getting the window position fails it results in zero/zero. + // When getting the window position is not possible or it fails it results + // in zero/zero. +#if defined(FEAT_GUI) || (defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)) (void)ui_get_winpos(&x, &y, (varnumber_T)100); +#endif FOR_ALL_WINDOWS(wp) if (wp->w_buffer == term->tl_buffer)
--- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -1889,6 +1889,11 @@ func Test_terminal_statusline() endfunc func Test_terminal_getwinpos() + " does not work in the MS-Windows console + if has('win32') && !has('gui') + return + endif + " split, go to the bottom-right window split wincmd j
--- a/src/ui.c +++ b/src/ui.c @@ -627,10 +627,9 @@ ui_new_shellsize(void) } } -#if (defined(FEAT_EVAL) \ +#if ((defined(FEAT_EVAL) || defined(FEAT_TERMINAL)) \ && (defined(FEAT_GUI) \ || (defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)))) \ - || defined(FEAT_TERMINAL) \ || defined(PROTO) /* * Get the window position in pixels, if possible. @@ -645,6 +644,8 @@ ui_get_winpos(int *x, int *y, varnumber_ # endif # if defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE) return term_get_winpos(x, y, timeout); +# else + return FAIL; # endif } #endif