0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.2.0257: cannot recognize a terminal in a popup window

Problem:    Cannot recognize a terminal in a popup window.
Solution:   Add the win_gettype() function.
This commit is contained in:
Bram Moolenaar
2020-02-14 14:32:22 +01:00
parent 0a8fed6231
commit 00f3b4e007
8 changed files with 78 additions and 21 deletions

View File

@@ -839,6 +839,54 @@ f_win_splitmove(typval_T *argvars, typval_T *rettv)
win_move_into_split(wp, targetwin, size, flags);
}
/*
* "win_gettype(nr)" function
*/
void
f_win_gettype(typval_T *argvars, typval_T *rettv)
{
win_T *wp = curwin;
rettv->v_type = VAR_STRING;
rettv->vval.v_string = NULL;
if (argvars[0].v_type != VAR_UNKNOWN)
{
wp = find_win_by_nr_or_id(&argvars[0]);
if (wp == NULL)
{
rettv->vval.v_string = vim_strsave((char_u *)"unknown");
return;
}
}
#ifdef FEAT_PROP_POPUP
if (WIN_IS_POPUP(wp))
rettv->vval.v_string = vim_strsave((char_u *)"popup");
else
#endif
#ifdef FEAT_CMDWIN
if (wp == curwin && cmdwin_type != 0)
rettv->vval.v_string = vim_strsave((char_u *)"command");
#endif
}
/*
* "getcmdwintype()" function
*/
void
f_getcmdwintype(typval_T *argvars UNUSED, typval_T *rettv)
{
rettv->v_type = VAR_STRING;
rettv->vval.v_string = NULL;
#ifdef FEAT_CMDWIN
rettv->vval.v_string = alloc(2);
if (rettv->vval.v_string != NULL)
{
rettv->vval.v_string[0] = cmdwin_type;
rettv->vval.v_string[1] = NUL;
}
#endif
}
/*
* "winbufnr(nr)" function
*/