Problem: Verbose check with dict_find() to see if a key is present.
Solution: Add dict_has_key(). (Yegappan Lakshmanan, closes #10074)
}
if (argvars[2].v_type == VAR_DICT)
- if (dict_find(argvars[2].vval.v_dict, (char_u *)"callback", -1)
- != NULL)
+ if (dict_has_key(argvars[2].vval.v_dict, "callback"))
callback_present = TRUE;
if (eval || callback_present)
if (di != NULL)
id = di->di_tv.vval.v_number;
}
- if (dict_find(d, (char_u *)"jsonrpc", -1) == NULL)
+ if (!dict_has_key(d, "jsonrpc"))
dict_add_string(d, "jsonrpc", (char_u *)"2.0");
text = json_encode_lsp_msg(&argvars[1]);
}
return HI2DI(hi);
}
+/*
+ * Returns TRUE if "key" is present in Dictionary "d".
+ */
+ int
+dict_has_key(dict_T *d, char *key)
+{
+ return dict_find(d, (char_u *)key, -1) != NULL;
+}
+
/*
* Get a typval_T item from a dictionary and copy it into "rettv".
* Returns FAIL if the entry doesn't exist or out of memory.
if (argvars[0].vval.v_dict == NULL)
return;
- rettv->vval.v_number = dict_find(argvars[0].vval.v_dict,
- tv_get_string(&argvars[1]), -1) != NULL;
+ rettv->vval.v_number = dict_has_key(argvars[0].vval.v_dict,
+ (char *)tv_get_string(&argvars[1]));
}
#endif // defined(FEAT_EVAL)
emsg(_(e_invalid_argument));
else
{
- if (dict_find(dict, (char_u *)"lnum", -1) != NULL)
+ if (dict_has_key(dict, "lnum"))
curwin->w_cursor.lnum = (linenr_T)dict_get_number(dict, (char_u *)"lnum");
- if (dict_find(dict, (char_u *)"col", -1) != NULL)
+ if (dict_has_key(dict, "col"))
curwin->w_cursor.col = (colnr_T)dict_get_number(dict, (char_u *)"col");
- if (dict_find(dict, (char_u *)"coladd", -1) != NULL)
+ if (dict_has_key(dict, "coladd"))
curwin->w_cursor.coladd = (colnr_T)dict_get_number(dict, (char_u *)"coladd");
- if (dict_find(dict, (char_u *)"curswant", -1) != NULL)
+ if (dict_has_key(dict, "curswant"))
{
curwin->w_curswant = (colnr_T)dict_get_number(dict, (char_u *)"curswant");
curwin->w_set_curswant = FALSE;
}
- if (dict_find(dict, (char_u *)"topline", -1) != NULL)
+ if (dict_has_key(dict, "topline"))
set_topline(curwin, (linenr_T)dict_get_number(dict, (char_u *)"topline"));
#ifdef FEAT_DIFF
- if (dict_find(dict, (char_u *)"topfill", -1) != NULL)
+ if (dict_has_key(dict, "topfill"))
curwin->w_topfill = (int)dict_get_number(dict, (char_u *)"topfill");
#endif
- if (dict_find(dict, (char_u *)"leftcol", -1) != NULL)
+ if (dict_has_key(dict, "leftcol"))
curwin->w_leftcol = (colnr_T)dict_get_number(dict, (char_u *)"leftcol");
- if (dict_find(dict, (char_u *)"skipcol", -1) != NULL)
+ if (dict_has_key(dict, "skipcol"))
curwin->w_skipcol = (colnr_T)dict_get_number(dict, (char_u *)"skipcol");
check_cursor();
return FAIL;
}
- if (dict_find(tv->vval.v_dict, (char_u *)"sort", -1) != NULL)
+ if (dict_has_key(tv->vval.v_dict, "sort"))
compare = dict_get_string(tv->vval.v_dict, (char_u *)"sort", FALSE);
else
{
# ifdef FEAT_BEVAL_TIP
gui_init_tooltip_font();
# endif
-# if defined(FEAT_MENU) && (defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_MOTIF))
+# if defined(FEAT_MENU) && defined(FEAT_GUI_MOTIF)
gui_init_menu_font();
# endif
}
|| do_menu
# endif
# ifdef FEAT_BEVAL_TIP
- // In Athena & Motif, the Tooltip highlight group is always a fontset
+ // In Motif, the Tooltip highlight group is always a fontset
|| do_tooltip
# endif
)
// fontset. Same for the Menu group.
if (do_normal)
gui_init_font(arg, TRUE);
-# if (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) && defined(FEAT_MENU)
+# if defined(FEAT_GUI_MOTIF) && defined(FEAT_MENU)
if (do_menu)
{
# ifdef FONTSET_ALWAYS
# ifdef FEAT_BEVAL_GUI
if (do_tooltip)
{
- // The Athena widget set cannot currently handle switching between
+ // The Athena widget set could not handle switching between
// displaying a single font and a fontset.
// If the XtNinternational resource is set to True at widget
// creation, then a fontset is always used, otherwise an
if (do_normal)
gui_init_font(arg, FALSE);
#ifndef FONTSET_ALWAYS
-# if (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) && defined(FEAT_MENU)
+# if defined(FEAT_GUI_MOTIF) && defined(FEAT_MENU)
if (do_menu)
{
gui.menu_font = HL_TABLE()[idx].sg_font;
if (dict_get_bool(dict, (char_u *)"default", VVAL_FALSE) == VVAL_TRUE)
dodefault = TRUE;
- if (dict_find(dict, (char_u *)"cleared", -1) != NULL)
+ if (dict_has_key(dict, "cleared"))
{
varnumber_T cleared;
}
}
- if (dict_find(dict, (char_u *)"linksto", -1) != NULL)
+ if (dict_has_key(dict, "linksto"))
{
char_u *linksto;
case JSON_OBJECT:
if (cur_item != NULL
- && dict_find(top_item->jd_tv.vval.v_dict,
- top_item->jd_key, -1) != NULL)
+ && dict_has_key(top_item->jd_tv.vval.v_dict,
+ (char *)top_item->jd_key))
{
semsg(_(e_duplicate_key_in_json_str), top_item->jd_key);
clear_tv(cur_item);
return FAIL;
}
- if (dict_find(tv->vval.v_dict, (char_u *)"conceal", -1) != NULL)
+ if (dict_has_key(tv->vval.v_dict, "conceal"))
*conceal_char = dict_get_string(tv->vval.v_dict,
(char_u *)"conceal", FALSE);
emsg(_(e_invalid_argument));
return;
}
- if (!(dict_find(d, (char_u *)"group", -1) != NULL
- && (dict_find(d, (char_u *)"pattern", -1) != NULL
- || dict_find(d, (char_u *)"pos1", -1) != NULL)
- && dict_find(d, (char_u *)"priority", -1) != NULL
- && dict_find(d, (char_u *)"id", -1) != NULL))
+ if (!(dict_has_key(d, "group")
+ && (dict_has_key(d, "pattern")
+ || dict_has_key(d, "pos1"))
+ && dict_has_key(d, "priority")
+ && dict_has_key(d, "id")))
{
emsg(_(e_invalid_argument));
return;
char_u *conceal;
d = li->li_tv.vval.v_dict;
- if (dict_find(d, (char_u *)"pattern", -1) == NULL)
+ if (!dict_has_key(d, "pattern"))
{
if (s == NULL)
{
group = dict_get_string(d, (char_u *)"group", TRUE);
priority = (int)dict_get_number(d, (char_u *)"priority");
id = (int)dict_get_number(d, (char_u *)"id");
- conceal = dict_find(d, (char_u *)"conceal", -1) != NULL
+ conceal = dict_has_key(d, "conceal")
? dict_get_string(d, (char_u *)"conceal", TRUE)
: NULL;
if (i == 0)
if (d != NULL)
{
- if (dict_find(d, (char_u *)"tabpage", -1) != NULL)
+ if (dict_has_key(d, "tabpage"))
tabnr = (int)dict_get_number(d, (char_u *)"tabpage");
else if (type == TYPE_NOTIFICATION)
tabnr = -1; // notifications are global by default
int dict_add_dict(dict_T *d, char *key, dict_T *dict);
long dict_len(dict_T *d);
dictitem_T *dict_find(dict_T *d, char_u *key, int len);
+int dict_has_key(dict_T *d, char *key);
int dict_get_tv(dict_T *d, char_u *key, typval_T *rettv);
char_u *dict_get_string(dict_T *d, char_u *key, int save);
varnumber_T dict_get_number(dict_T *d, char_u *key);
{
int flags = QF_GETLIST_NONE;
- if (dict_find(what, (char_u *)"all", -1) != NULL)
+ if (dict_has_key(what, "all"))
{
flags |= QF_GETLIST_ALL;
if (!loclist)
flags &= ~ QF_GETLIST_FILEWINID;
}
- if (dict_find(what, (char_u *)"title", -1) != NULL)
+ if (dict_has_key(what, "title"))
flags |= QF_GETLIST_TITLE;
- if (dict_find(what, (char_u *)"nr", -1) != NULL)
+ if (dict_has_key(what, "nr"))
flags |= QF_GETLIST_NR;
- if (dict_find(what, (char_u *)"winid", -1) != NULL)
+ if (dict_has_key(what, "winid"))
flags |= QF_GETLIST_WINID;
- if (dict_find(what, (char_u *)"context", -1) != NULL)
+ if (dict_has_key(what, "context"))
flags |= QF_GETLIST_CONTEXT;
- if (dict_find(what, (char_u *)"id", -1) != NULL)
+ if (dict_has_key(what, "id"))
flags |= QF_GETLIST_ID;
- if (dict_find(what, (char_u *)"items", -1) != NULL)
+ if (dict_has_key(what, "items"))
flags |= QF_GETLIST_ITEMS;
- if (dict_find(what, (char_u *)"idx", -1) != NULL)
+ if (dict_has_key(what, "idx"))
flags |= QF_GETLIST_IDX;
- if (dict_find(what, (char_u *)"size", -1) != NULL)
+ if (dict_has_key(what, "size"))
flags |= QF_GETLIST_SIZE;
- if (dict_find(what, (char_u *)"changedtick", -1) != NULL)
+ if (dict_has_key(what, "changedtick"))
flags |= QF_GETLIST_TICK;
- if (loclist && dict_find(what, (char_u *)"filewinid", -1) != NULL)
+ if (loclist && dict_has_key(what, "filewinid"))
flags |= QF_GETLIST_FILEWINID;
- if (dict_find(what, (char_u *)"qfbufnr", -1) != NULL)
+ if (dict_has_key(what, "qfbufnr"))
flags |= QF_GETLIST_QFBUFNR;
- if (dict_find(what, (char_u *)"quickfixtextfunc", -1) != NULL)
+ if (dict_has_key(what, "quickfixtextfunc"))
flags |= QF_GETLIST_QFTF;
return flags;
}
// If the 'valid' field is present it overrules the detected value.
- if ((dict_find(d, (char_u *)"valid", -1)) != NULL)
+ if (dict_has_key(d, "valid"))
valid = (int)dict_get_bool(d, (char_u *)"valid", FALSE);
status = qf_add_entry(qfl,
return;
}
}
- if (dict_find(d, (char_u *)"matchseq", -1) != NULL)
+ if (dict_has_key(d, "matchseq"))
matchseq = TRUE;
}
if (buf == NULL)
goto cleanup;
}
- if (dict_find(dict, (char_u *)"id", -1) != NULL)
+ if (dict_has_key(dict, "id"))
{
sign_id = dict_get_number(dict, (char_u *)"id");
if (sign_id <= 0)
int retval;
// check that the field name doesn't exist yet
- if (dict_find(dict, (char_u *)field_name, -1) != NULL)
+ if (dict_has_key(dict, field_name))
{
if (p_verbose > 0)
{
if (p != NULL)
get_bad_opt(p, &ea);
- if (dict_find(dict, (char_u *)"bin", -1) != NULL)
+ if (dict_has_key(dict, "bin"))
ea.force_bin = FORCE_BIN;
- if (dict_find(dict, (char_u *)"binary", -1) != NULL)
+ if (dict_has_key(dict, "binary"))
ea.force_bin = FORCE_BIN;
- if (dict_find(dict, (char_u *)"nobin", -1) != NULL)
+ if (dict_has_key(dict, "nobin"))
ea.force_bin = FORCE_NOBIN;
- if (dict_find(dict, (char_u *)"nobinary", -1) != NULL)
+ if (dict_has_key(dict, "nobinary"))
ea.force_bin = FORCE_NOBIN;
}
list_T *l;
listitem_T *li;
- if (dict_find(args, (char_u *)"files", -1) == NULL
- || dict_find(args, (char_u *)"row", -1) == NULL
- || dict_find(args, (char_u *)"col", -1) == NULL
- || dict_find(args, (char_u *)"modifiers", -1) == NULL)
+ if (!dict_has_key(args, "files")
+ || !dict_has_key(args, "row")
+ || !dict_has_key(args, "col")
+ || !dict_has_key(args, "modifiers"))
return FALSE;
(void)dict_get_tv(args, (char_u *)"files", &t);
int forward;
int retval;
- if (dict_find(args, (char_u *)"find_text", -1) == NULL
- || dict_find(args, (char_u *)"repl_text", -1) == NULL
- || dict_find(args, (char_u *)"flags", -1) == NULL
- || dict_find(args, (char_u *)"forward", -1) == NULL)
+ if (!dict_has_key(args, "find_text")
+ || !dict_has_key(args, "repl_text")
+ || !dict_has_key(args, "flags")
+ || !dict_has_key(args, "forward"))
return FALSE;
find_text = dict_get_string(args, (char_u *)"find_text", TRUE);
int_u mods;
int move;
- if (dict_find(args, (char_u *)"row", -1) == NULL
- || dict_find(args, (char_u *)"col", -1) == NULL)
+ if (!dict_has_key(args, "row")
+ || !dict_has_key(args, "col"))
return FALSE;
// Note: "move" is optional, requires fewer arguments
move = (int)dict_get_bool(args, (char_u *)"move", FALSE);
- if (!move && (dict_find(args, (char_u *)"button", -1) == NULL
- || dict_find(args, (char_u *)"multiclick", -1) == NULL
- || dict_find(args, (char_u *)"modifiers", -1) == NULL))
+ if (!move && (!dict_has_key(args, "button")
+ || !dict_has_key(args, "multiclick")
+ || !dict_has_key(args, "modifiers")))
return FALSE;
row = (int)dict_get_number(args, (char_u *)"row");
int dragging;
scrollbar_T *sb = NULL;
- if (dict_find(args, (char_u *)"which", -1) == NULL
- || dict_find(args, (char_u *)"value", -1) == NULL
- || dict_find(args, (char_u *)"dragging", -1) == NULL)
+ if (!dict_has_key(args, "which")
+ || !dict_has_key(args, "value")
+ || !dict_has_key(args, "dragging"))
return FALSE;
which = dict_get_string(args, (char_u *)"which", FALSE);
# ifdef FEAT_GUI_TABLINE
int tabnr;
- if (dict_find(args, (char_u *)"tabnr", -1) == NULL)
+ if (!dict_has_key(args, "tabnr"))
return FALSE;
tabnr = (int)dict_get_number(args, (char_u *)"tabnr");
int tabnr;
int item;
- if (dict_find(args, (char_u *)"tabnr", -1) == NULL
- || dict_find(args, (char_u *)"item", -1) == NULL)
+ if (!dict_has_key(args, "tabnr")
+ || !dict_has_key(args, "item"))
return FALSE;
tabnr = (int)dict_get_number(args, (char_u *)"tabnr");
}
dict = argvars[0].vval.v_dict;
- if (dict == NULL || dict_find(dict, (char_u *)"type", -1) == NULL)
+ if (dict == NULL || !dict_has_key(dict, "type"))
{
emsg(_(e_missing_property_type_name));
return;
}
type_name = dict_get_string(dict, (char_u *)"type", FALSE);
- if (dict_find(dict, (char_u *)"id", -1) != NULL)
+ if (dict_has_key(dict, "id"))
id = dict_get_number(dict, (char_u *)"id");
if (get_bufnr_from_arg(&argvars[0], &buf) == FAIL)
buf_T *buf = default_buf;
int id = 0;
- if (dict == NULL || dict_find(dict, (char_u *)"type", -1) == NULL)
+ if (dict == NULL || !dict_has_key(dict, "type"))
{
emsg(_(e_missing_property_type_name));
return;
}
type_name = dict_get_string(dict, (char_u *)"type", FALSE);
- if (dict_find(dict, (char_u *)"end_lnum", -1) != NULL)
+ if (dict_has_key(dict, "end_lnum"))
{
end_lnum = dict_get_number(dict, (char_u *)"end_lnum");
if (end_lnum < start_lnum)
else
end_lnum = start_lnum;
- if (dict_find(dict, (char_u *)"length", -1) != NULL)
+ if (dict_has_key(dict, "length"))
{
long length = dict_get_number(dict, (char_u *)"length");
}
end_col = start_col + length;
}
- else if (dict_find(dict, (char_u *)"end_col", -1) != NULL)
+ else if (dict_has_key(dict, "end_col"))
{
end_col = dict_get_number(dict, (char_u *)"end_col");
if (end_col <= 0)
else
end_col = 1;
- if (dict_find(dict, (char_u *)"id", -1) != NULL)
+ if (dict_has_key(dict, "id"))
id = dict_get_number(dict, (char_u *)"id");
if (dict_arg != NULL && get_bufnr_from_arg(dict_arg, &buf) == FAIL)
skipstart = dict_get_bool(dict, (char_u *)"skipstart", 0);
- if (dict_find(dict, (char_u *)"id", -1) != NULL)
+ if (dict_has_key(dict, "id"))
{
id = dict_get_number(dict, (char_u *)"id");
id_found = TRUE;
}
- if (dict_find(dict, (char_u *)"type", -1))
+ if (dict_has_key(dict, "type"))
{
char_u *name = dict_get_string(dict, (char_u *)"type", FALSE);
proptype_T *type = lookup_prop_type(name, buf);
do_all = dict_get_bool(dict, (char_u *)"all", FALSE);
- if (dict_find(dict, (char_u *)"id", -1) != NULL)
+ if (dict_has_key(dict, "id"))
id = dict_get_number(dict, (char_u *)"id");
- if (dict_find(dict, (char_u *)"type", -1))
+ if (dict_has_key(dict, "type"))
{
char_u *name = dict_get_string(dict, (char_u *)"type", FALSE);
proptype_T *type = lookup_prop_type(name, buf);
semsg(_(e_invalid_argument_str), tv_get_string(&argvars[2]));
return;
}
- if (dict_find(dict, (char_u *)"repeat", -1) != NULL)
+ if (dict_has_key(dict, "repeat"))
repeat = dict_get_number(dict, (char_u *)"repeat");
}
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 4683,
/**/
4682,
/**/