# HG changeset patch # User Bram Moolenaar # Date 1554574503 -7200 # Node ID e0a6298bd70f2127c6c35e7474efc6e5022938d6 # Parent a15ec9bee99da67dcc3e9a6985c34f5b0253a0de 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 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. diff --git a/src/term.c b/src/term.c --- 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 */ diff --git a/src/terminal.c b/src/terminal.c --- 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) diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim --- 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 diff --git a/src/ui.c b/src/ui.c --- 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 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -772,6 +772,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1127, +/**/ 1126, /**/ 1125,