forked from aniani/vim
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.
This commit is contained in:
16
src/term.c
16
src/term.c
@@ -2843,7 +2843,7 @@ static int winpos_x = -1;
|
|||||||
static int winpos_y = -1;
|
static int winpos_y = -1;
|
||||||
static int did_request_winpos = 0;
|
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.
|
* Try getting the Vim window position from the terminal.
|
||||||
* Returns OK or FAIL.
|
* Returns OK or FAIL.
|
||||||
@@ -4858,7 +4858,7 @@ check_termcode(
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Check for a window position response from the terminal:
|
* Check for a window position response from the terminal:
|
||||||
* {lead}3;{x}:{y}t
|
* {lead}3;{x};{y}t
|
||||||
*/
|
*/
|
||||||
else if (did_request_winpos
|
else if (did_request_winpos
|
||||||
&& ((len >= 4 && tp[0] == ESC && tp[1] == '[')
|
&& ((len >= 4 && tp[0] == ESC && tp[1] == '[')
|
||||||
@@ -4925,11 +4925,11 @@ check_termcode(
|
|||||||
if (i - j >= 21 && STRNCMP(tp + j + 3, "rgb:", 4) == 0
|
if (i - j >= 21 && STRNCMP(tp + j + 3, "rgb:", 4) == 0
|
||||||
&& tp[j + 11] == '/' && tp[j + 16] == '/')
|
&& tp[j + 11] == '/' && tp[j + 16] == '/')
|
||||||
{
|
{
|
||||||
#ifdef FEAT_TERMINAL
|
# ifdef FEAT_TERMINAL
|
||||||
int rval = hexhex2nr(tp + j + 7);
|
int rval = hexhex2nr(tp + j + 7);
|
||||||
int gval = hexhex2nr(tp + j + 12);
|
int gval = hexhex2nr(tp + j + 12);
|
||||||
int bval = hexhex2nr(tp + j + 17);
|
int bval = hexhex2nr(tp + j + 17);
|
||||||
#endif
|
# endif
|
||||||
if (is_bg)
|
if (is_bg)
|
||||||
{
|
{
|
||||||
char *newval = (3 * '6' < tp[j+7] + tp[j+12]
|
char *newval = (3 * '6' < tp[j+7] + tp[j+12]
|
||||||
@@ -4937,11 +4937,11 @@ check_termcode(
|
|||||||
|
|
||||||
LOG_TR(("Received RBG response: %s", tp));
|
LOG_TR(("Received RBG response: %s", tp));
|
||||||
rbg_status = STATUS_GOT;
|
rbg_status = STATUS_GOT;
|
||||||
#ifdef FEAT_TERMINAL
|
# ifdef FEAT_TERMINAL
|
||||||
bg_r = rval;
|
bg_r = rval;
|
||||||
bg_g = gval;
|
bg_g = gval;
|
||||||
bg_b = bval;
|
bg_b = bval;
|
||||||
#endif
|
# endif
|
||||||
if (!option_was_set((char_u *)"bg")
|
if (!option_was_set((char_u *)"bg")
|
||||||
&& STRCMP(p_bg, newval) != 0)
|
&& STRCMP(p_bg, newval) != 0)
|
||||||
{
|
{
|
||||||
@@ -4952,7 +4952,7 @@ check_termcode(
|
|||||||
redraw_asap(CLEAR);
|
redraw_asap(CLEAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef FEAT_TERMINAL
|
# ifdef FEAT_TERMINAL
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG_TR(("Received RFG response: %s", tp));
|
LOG_TR(("Received RFG response: %s", tp));
|
||||||
@@ -4961,7 +4961,7 @@ check_termcode(
|
|||||||
fg_g = gval;
|
fg_g = gval;
|
||||||
fg_b = bval;
|
fg_b = bval;
|
||||||
}
|
}
|
||||||
#endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* got finished code: consume it */
|
/* got finished code: consume it */
|
||||||
|
@@ -3866,8 +3866,11 @@ parse_csi(
|
|||||||
if (command != 't' || argcount != 1 || args[0] != 13)
|
if (command != 't' || argcount != 1 || args[0] != 13)
|
||||||
return 0; // not handled
|
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);
|
(void)ui_get_winpos(&x, &y, (varnumber_T)100);
|
||||||
|
#endif
|
||||||
|
|
||||||
FOR_ALL_WINDOWS(wp)
|
FOR_ALL_WINDOWS(wp)
|
||||||
if (wp->w_buffer == term->tl_buffer)
|
if (wp->w_buffer == term->tl_buffer)
|
||||||
|
@@ -1889,6 +1889,11 @@ func Test_terminal_statusline()
|
|||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_terminal_getwinpos()
|
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, go to the bottom-right window
|
||||||
split
|
split
|
||||||
wincmd j
|
wincmd j
|
||||||
|
5
src/ui.c
5
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(FEAT_GUI) \
|
||||||
|| (defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)))) \
|
|| (defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)))) \
|
||||||
|| defined(FEAT_TERMINAL) \
|
|
||||||
|| defined(PROTO)
|
|| defined(PROTO)
|
||||||
/*
|
/*
|
||||||
* Get the window position in pixels, if possible.
|
* Get the window position in pixels, if possible.
|
||||||
@@ -645,6 +644,8 @@ ui_get_winpos(int *x, int *y, varnumber_T timeout)
|
|||||||
# endif
|
# endif
|
||||||
# if defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)
|
# if defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)
|
||||||
return term_get_winpos(x, y, timeout);
|
return term_get_winpos(x, y, timeout);
|
||||||
|
# else
|
||||||
|
return FAIL;
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -771,6 +771,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1127,
|
||||||
/**/
|
/**/
|
||||||
1126,
|
1126,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user