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
--- 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,