forked from aniani/vim
patch 8.2.1478: Vim9: cannot use "true" for some popup options
Problem: Vim9: cannot use "true" for some popup options. Solution: Add dict_get_bool(). (closes #6725)
This commit is contained in:
15
src/dict.c
15
src/dict.c
@@ -702,6 +702,21 @@ dict_get_number_check(dict_T *d, char_u *key)
|
|||||||
return tv_get_number(&di->di_tv);
|
return tv_get_number(&di->di_tv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get a bool item (number or true/false) from a dictionary.
|
||||||
|
* Returns "def" if the entry doesn't exist.
|
||||||
|
*/
|
||||||
|
varnumber_T
|
||||||
|
dict_get_bool(dict_T *d, char_u *key, int def)
|
||||||
|
{
|
||||||
|
dictitem_T *di;
|
||||||
|
|
||||||
|
di = dict_find(d, key, -1);
|
||||||
|
if (di == NULL)
|
||||||
|
return def;
|
||||||
|
return tv_get_bool(&di->di_tv);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return an allocated string with the string representation of a Dictionary.
|
* Return an allocated string with the string representation of a Dictionary.
|
||||||
* May return NULL.
|
* May return NULL.
|
||||||
|
@@ -438,9 +438,10 @@ apply_move_options(win_T *wp, dict_T *d)
|
|||||||
if (nr != MAXCOL)
|
if (nr != MAXCOL)
|
||||||
wp->w_wantcol = nr;
|
wp->w_wantcol = nr;
|
||||||
|
|
||||||
di = dict_find(d, (char_u *)"fixed", -1);
|
|
||||||
if (di != NULL)
|
nr = dict_get_bool(d, (char_u *)"fixed", -1);
|
||||||
wp->w_popup_fixed = dict_get_number(d, (char_u *)"fixed") != 0;
|
if (nr != -1)
|
||||||
|
wp->w_popup_fixed = nr != 0;
|
||||||
|
|
||||||
{
|
{
|
||||||
poppos_T ppt = get_pos_entry(d, TRUE);
|
poppos_T ppt = get_pos_entry(d, TRUE);
|
||||||
@@ -674,37 +675,31 @@ apply_general_options(win_T *wp, dict_T *dict)
|
|||||||
wp->w_popup_title = vim_strsave(str);
|
wp->w_popup_title = vim_strsave(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
di = dict_find(dict, (char_u *)"wrap", -1);
|
nr = dict_get_bool(dict, (char_u *)"wrap", -1);
|
||||||
if (di != NULL)
|
if (nr != -1)
|
||||||
{
|
|
||||||
nr = dict_get_number(dict, (char_u *)"wrap");
|
|
||||||
wp->w_p_wrap = nr != 0;
|
wp->w_p_wrap = nr != 0;
|
||||||
}
|
|
||||||
|
|
||||||
di = dict_find(dict, (char_u *)"drag", -1);
|
nr = dict_get_bool(dict, (char_u *)"drag", -1);
|
||||||
if (di != NULL)
|
if (nr != -1)
|
||||||
{
|
{
|
||||||
nr = dict_get_number(dict, (char_u *)"drag");
|
|
||||||
if (nr)
|
if (nr)
|
||||||
wp->w_popup_flags |= POPF_DRAG;
|
wp->w_popup_flags |= POPF_DRAG;
|
||||||
else
|
else
|
||||||
wp->w_popup_flags &= ~POPF_DRAG;
|
wp->w_popup_flags &= ~POPF_DRAG;
|
||||||
}
|
}
|
||||||
|
|
||||||
di = dict_find(dict, (char_u *)"posinvert", -1);
|
nr = dict_get_bool(dict, (char_u *)"posinvert", -1);
|
||||||
if (di != NULL)
|
if (nr != -1)
|
||||||
{
|
{
|
||||||
nr = dict_get_number(dict, (char_u *)"posinvert");
|
|
||||||
if (nr)
|
if (nr)
|
||||||
wp->w_popup_flags |= POPF_POSINVERT;
|
wp->w_popup_flags |= POPF_POSINVERT;
|
||||||
else
|
else
|
||||||
wp->w_popup_flags &= ~POPF_POSINVERT;
|
wp->w_popup_flags &= ~POPF_POSINVERT;
|
||||||
}
|
}
|
||||||
|
|
||||||
di = dict_find(dict, (char_u *)"resize", -1);
|
nr = dict_get_bool(dict, (char_u *)"resize", -1);
|
||||||
if (di != NULL)
|
if (nr != -1)
|
||||||
{
|
{
|
||||||
nr = dict_get_number(dict, (char_u *)"resize");
|
|
||||||
if (nr)
|
if (nr)
|
||||||
wp->w_popup_flags |= POPF_RESIZE;
|
wp->w_popup_flags |= POPF_RESIZE;
|
||||||
else
|
else
|
||||||
@@ -902,10 +897,9 @@ apply_general_options(win_T *wp, dict_T *dict)
|
|||||||
set_callback(&wp->w_filter_cb, &callback);
|
set_callback(&wp->w_filter_cb, &callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
di = dict_find(dict, (char_u *)"mapping", -1);
|
nr = dict_get_bool(dict, (char_u *)"mapping", -1);
|
||||||
if (di != NULL)
|
if (nr != -1)
|
||||||
{
|
{
|
||||||
nr = dict_get_number(dict, (char_u *)"mapping");
|
|
||||||
if (nr)
|
if (nr)
|
||||||
wp->w_popup_flags |= POPF_MAPPING;
|
wp->w_popup_flags |= POPF_MAPPING;
|
||||||
else
|
else
|
||||||
@@ -950,7 +944,7 @@ apply_options(win_T *wp, dict_T *dict)
|
|||||||
|
|
||||||
apply_general_options(wp, dict);
|
apply_general_options(wp, dict);
|
||||||
|
|
||||||
nr = dict_get_number(dict, (char_u *)"hidden");
|
nr = dict_get_bool(dict, (char_u *)"hidden", FALSE);
|
||||||
if (nr > 0)
|
if (nr > 0)
|
||||||
wp->w_popup_flags |= POPF_HIDDEN;
|
wp->w_popup_flags |= POPF_HIDDEN;
|
||||||
|
|
||||||
|
@@ -31,6 +31,7 @@ char_u *dict_get_string(dict_T *d, char_u *key, int save);
|
|||||||
varnumber_T dict_get_number(dict_T *d, char_u *key);
|
varnumber_T dict_get_number(dict_T *d, char_u *key);
|
||||||
varnumber_T dict_get_number_def(dict_T *d, char_u *key, int def);
|
varnumber_T dict_get_number_def(dict_T *d, char_u *key, int def);
|
||||||
varnumber_T dict_get_number_check(dict_T *d, char_u *key);
|
varnumber_T dict_get_number_check(dict_T *d, char_u *key);
|
||||||
|
varnumber_T dict_get_bool(dict_T *d, char_u *key, int def);
|
||||||
char_u *dict2string(typval_T *tv, int copyID, int restore_copyID);
|
char_u *dict2string(typval_T *tv, int copyID, int restore_copyID);
|
||||||
int eval_dict(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int literal);
|
int eval_dict(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int literal);
|
||||||
void dict_extend(dict_T *d1, dict_T *d2, char_u *action);
|
void dict_extend(dict_T *d1, dict_T *d2, char_u *action);
|
||||||
|
@@ -754,6 +754,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 */
|
||||||
|
/**/
|
||||||
|
1478,
|
||||||
/**/
|
/**/
|
||||||
1477,
|
1477,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user