To: vim_dev@googlegroups.com Subject: Patch 8.2.4683 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.4683 Problem: Verbose check with dict_find() to see if a key is present. Solution: Add dict_has_key(). (Yegappan Lakshmanan, closes #10074) Files: src/channel.c, src/dict.c, src/evalwindow.c, src/filepath.c, src/highlight.c, src/json.c, src/match.c, src/popupwin.c, src/proto/dict.pro, src/quickfix.c, src/search.c, src/sign.c, src/tag.c, src/terminal.c, src/testing.c, src/textprop.c, src/time.c *** ../vim-8.2.4682/src/channel.c 2022-03-30 10:14:41.485657271 +0100 --- src/channel.c 2022-04-04 15:14:05.061617592 +0100 *************** *** 4460,4467 **** } if (argvars[2].v_type == VAR_DICT) ! if (dict_find(argvars[2].vval.v_dict, (char_u *)"callback", -1) ! != NULL) callback_present = TRUE; if (eval || callback_present) --- 4460,4466 ---- } if (argvars[2].v_type == VAR_DICT) ! if (dict_has_key(argvars[2].vval.v_dict, "callback")) callback_present = TRUE; if (eval || callback_present) *************** *** 4482,4488 **** if (di != NULL) id = di->di_tv.vval.v_number; } ! if (dict_find(d, (char_u *)"jsonrpc", -1) == NULL) dict_add_string(d, "jsonrpc", (char_u *)"2.0"); text = json_encode_lsp_msg(&argvars[1]); } --- 4481,4487 ---- if (di != NULL) id = di->di_tv.vval.v_number; } ! if (!dict_has_key(d, "jsonrpc")) dict_add_string(d, "jsonrpc", (char_u *)"2.0"); text = json_encode_lsp_msg(&argvars[1]); } *** ../vim-8.2.4682/src/dict.c 2022-02-05 14:05:48.128149067 +0000 --- src/dict.c 2022-04-04 15:14:05.061617592 +0100 *************** *** 649,654 **** --- 649,663 ---- } /* + * 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. */ *************** *** 1582,1589 **** 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; } #endif // defined(FEAT_EVAL) --- 1591,1598 ---- if (argvars[0].vval.v_dict == NULL) return; ! rettv->vval.v_number = dict_has_key(argvars[0].vval.v_dict, ! (char *)tv_get_string(&argvars[1])); } #endif // defined(FEAT_EVAL) *** ../vim-8.2.4682/src/evalwindow.c 2022-01-11 12:37:16.827153847 +0000 --- src/evalwindow.c 2022-04-04 15:14:05.061617592 +0100 *************** *** 1220,1246 **** emsg(_(e_invalid_argument)); else { ! if (dict_find(dict, (char_u *)"lnum", -1) != NULL) curwin->w_cursor.lnum = (linenr_T)dict_get_number(dict, (char_u *)"lnum"); ! if (dict_find(dict, (char_u *)"col", -1) != NULL) curwin->w_cursor.col = (colnr_T)dict_get_number(dict, (char_u *)"col"); ! if (dict_find(dict, (char_u *)"coladd", -1) != NULL) curwin->w_cursor.coladd = (colnr_T)dict_get_number(dict, (char_u *)"coladd"); ! if (dict_find(dict, (char_u *)"curswant", -1) != NULL) { 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) set_topline(curwin, (linenr_T)dict_get_number(dict, (char_u *)"topline")); #ifdef FEAT_DIFF ! if (dict_find(dict, (char_u *)"topfill", -1) != NULL) curwin->w_topfill = (int)dict_get_number(dict, (char_u *)"topfill"); #endif ! if (dict_find(dict, (char_u *)"leftcol", -1) != NULL) curwin->w_leftcol = (colnr_T)dict_get_number(dict, (char_u *)"leftcol"); ! if (dict_find(dict, (char_u *)"skipcol", -1) != NULL) curwin->w_skipcol = (colnr_T)dict_get_number(dict, (char_u *)"skipcol"); check_cursor(); --- 1220,1246 ---- emsg(_(e_invalid_argument)); else { ! if (dict_has_key(dict, "lnum")) curwin->w_cursor.lnum = (linenr_T)dict_get_number(dict, (char_u *)"lnum"); ! if (dict_has_key(dict, "col")) curwin->w_cursor.col = (colnr_T)dict_get_number(dict, (char_u *)"col"); ! if (dict_has_key(dict, "coladd")) curwin->w_cursor.coladd = (colnr_T)dict_get_number(dict, (char_u *)"coladd"); ! 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_has_key(dict, "topline")) set_topline(curwin, (linenr_T)dict_get_number(dict, (char_u *)"topline")); #ifdef FEAT_DIFF ! if (dict_has_key(dict, "topfill")) curwin->w_topfill = (int)dict_get_number(dict, (char_u *)"topfill"); #endif ! if (dict_has_key(dict, "leftcol")) curwin->w_leftcol = (colnr_T)dict_get_number(dict, (char_u *)"leftcol"); ! if (dict_has_key(dict, "skipcol")) curwin->w_skipcol = (colnr_T)dict_get_number(dict, (char_u *)"skipcol"); check_cursor(); *** ../vim-8.2.4682/src/filepath.c 2022-04-03 21:30:25.022559205 +0100 --- src/filepath.c 2022-04-04 15:14:05.065617606 +0100 *************** *** 1605,1611 **** return FAIL; } ! if (dict_find(tv->vval.v_dict, (char_u *)"sort", -1) != NULL) compare = dict_get_string(tv->vval.v_dict, (char_u *)"sort", FALSE); else { --- 1605,1611 ---- return FAIL; } ! if (dict_has_key(tv->vval.v_dict, "sort")) compare = dict_get_string(tv->vval.v_dict, (char_u *)"sort", FALSE); else { *** ../vim-8.2.4682/src/highlight.c 2022-02-16 19:24:03.622162411 +0000 --- src/highlight.c 2022-04-04 15:14:05.065617606 +0100 *************** *** 718,724 **** # ifdef FEAT_BEVAL_TIP gui_init_tooltip_font(); # endif ! # if defined(FEAT_MENU) && (defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_MOTIF)) gui_init_menu_font(); # endif } --- 718,724 ---- # ifdef FEAT_BEVAL_TIP gui_init_tooltip_font(); # endif ! # if defined(FEAT_MENU) && defined(FEAT_GUI_MOTIF) gui_init_menu_font(); # endif } *************** *** 2134,2140 **** || do_menu # endif # ifdef FEAT_BEVAL_TIP ! // In Athena & Motif, the Tooltip highlight group is always a fontset || do_tooltip # endif ) --- 2134,2140 ---- || do_menu # endif # ifdef FEAT_BEVAL_TIP ! // In Motif, the Tooltip highlight group is always a fontset || do_tooltip # endif ) *************** *** 2156,2162 **** // 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 (do_menu) { # ifdef FONTSET_ALWAYS --- 2156,2162 ---- // fontset. Same for the Menu group. if (do_normal) gui_init_font(arg, TRUE); ! # if defined(FEAT_GUI_MOTIF) && defined(FEAT_MENU) if (do_menu) { # ifdef FONTSET_ALWAYS *************** *** 2170,2176 **** # ifdef FEAT_BEVAL_GUI if (do_tooltip) { ! // The Athena widget set cannot currently 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 --- 2170,2176 ---- # ifdef FEAT_BEVAL_GUI if (do_tooltip) { ! // 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 *************** *** 2194,2200 **** if (do_normal) gui_init_font(arg, FALSE); #ifndef FONTSET_ALWAYS ! # if (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) && defined(FEAT_MENU) if (do_menu) { gui.menu_font = HL_TABLE()[idx].sg_font; --- 2194,2200 ---- if (do_normal) gui_init_font(arg, FALSE); #ifndef FONTSET_ALWAYS ! # if defined(FEAT_GUI_MOTIF) && defined(FEAT_MENU) if (do_menu) { gui.menu_font = HL_TABLE()[idx].sg_font; *************** *** 4411,4417 **** if (dict_get_bool(dict, (char_u *)"default", VVAL_FALSE) == VVAL_TRUE) dodefault = TRUE; ! if (dict_find(dict, (char_u *)"cleared", -1) != NULL) { varnumber_T cleared; --- 4411,4417 ---- if (dict_get_bool(dict, (char_u *)"default", VVAL_FALSE) == VVAL_TRUE) dodefault = TRUE; ! if (dict_has_key(dict, "cleared")) { varnumber_T cleared; *************** *** 4425,4431 **** } } ! if (dict_find(dict, (char_u *)"linksto", -1) != NULL) { char_u *linksto; --- 4425,4431 ---- } } ! if (dict_has_key(dict, "linksto")) { char_u *linksto; *** ../vim-8.2.4682/src/json.c 2022-03-30 10:14:41.485657271 +0100 --- src/json.c 2022-04-04 15:14:05.065617606 +0100 *************** *** 1027,1034 **** case JSON_OBJECT: if (cur_item != NULL ! && dict_find(top_item->jd_tv.vval.v_dict, ! top_item->jd_key, -1) != NULL) { semsg(_(e_duplicate_key_in_json_str), top_item->jd_key); clear_tv(cur_item); --- 1027,1034 ---- case JSON_OBJECT: if (cur_item != 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); *** ../vim-8.2.4682/src/match.c 2022-01-28 15:28:00.208927722 +0000 --- src/match.c 2022-04-04 15:14:05.065617606 +0100 *************** *** 938,944 **** return FAIL; } ! if (dict_find(tv->vval.v_dict, (char_u *)"conceal", -1) != NULL) *conceal_char = dict_get_string(tv->vval.v_dict, (char_u *)"conceal", FALSE); --- 938,944 ---- return FAIL; } ! if (dict_has_key(tv->vval.v_dict, "conceal")) *conceal_char = dict_get_string(tv->vval.v_dict, (char_u *)"conceal", FALSE); *************** *** 1088,1098 **** 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)) { emsg(_(e_invalid_argument)); return; --- 1088,1098 ---- emsg(_(e_invalid_argument)); return; } ! 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; *************** *** 1113,1119 **** char_u *conceal; d = li->li_tv.vval.v_dict; ! if (dict_find(d, (char_u *)"pattern", -1) == NULL) { if (s == NULL) { --- 1113,1119 ---- char_u *conceal; d = li->li_tv.vval.v_dict; ! if (!dict_has_key(d, "pattern")) { if (s == NULL) { *************** *** 1142,1148 **** 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 ? dict_get_string(d, (char_u *)"conceal", TRUE) : NULL; if (i == 0) --- 1142,1148 ---- 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_has_key(d, "conceal") ? dict_get_string(d, (char_u *)"conceal", TRUE) : NULL; if (i == 0) *** ../vim-8.2.4682/src/popupwin.c 2022-04-02 21:46:14.989612828 +0100 --- src/popupwin.c 2022-04-04 15:14:05.065617606 +0100 *************** *** 1957,1963 **** if (d != NULL) { ! if (dict_find(d, (char_u *)"tabpage", -1) != NULL) tabnr = (int)dict_get_number(d, (char_u *)"tabpage"); else if (type == TYPE_NOTIFICATION) tabnr = -1; // notifications are global by default --- 1957,1963 ---- if (d != 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 *** ../vim-8.2.4682/src/proto/dict.pro 2022-02-02 20:01:21.957210955 +0000 --- src/proto/dict.pro 2022-04-04 15:14:05.065617606 +0100 *************** *** 27,32 **** --- 27,33 ---- 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); *** ../vim-8.2.4682/src/quickfix.c 2022-03-30 10:57:36.735346197 +0100 --- src/quickfix.c 2022-04-04 15:14:05.065617606 +0100 *************** *** 6859,6865 **** { int flags = QF_GETLIST_NONE; ! if (dict_find(what, (char_u *)"all", -1) != NULL) { flags |= QF_GETLIST_ALL; if (!loclist) --- 6859,6865 ---- { int flags = QF_GETLIST_NONE; ! if (dict_has_key(what, "all")) { flags |= QF_GETLIST_ALL; if (!loclist) *************** *** 6867,6906 **** flags &= ~ QF_GETLIST_FILEWINID; } ! if (dict_find(what, (char_u *)"title", -1) != NULL) flags |= QF_GETLIST_TITLE; ! if (dict_find(what, (char_u *)"nr", -1) != NULL) flags |= QF_GETLIST_NR; ! if (dict_find(what, (char_u *)"winid", -1) != NULL) flags |= QF_GETLIST_WINID; ! if (dict_find(what, (char_u *)"context", -1) != NULL) flags |= QF_GETLIST_CONTEXT; ! if (dict_find(what, (char_u *)"id", -1) != NULL) flags |= QF_GETLIST_ID; ! if (dict_find(what, (char_u *)"items", -1) != NULL) flags |= QF_GETLIST_ITEMS; ! if (dict_find(what, (char_u *)"idx", -1) != NULL) flags |= QF_GETLIST_IDX; ! if (dict_find(what, (char_u *)"size", -1) != NULL) flags |= QF_GETLIST_SIZE; ! if (dict_find(what, (char_u *)"changedtick", -1) != NULL) flags |= QF_GETLIST_TICK; ! if (loclist && dict_find(what, (char_u *)"filewinid", -1) != NULL) flags |= QF_GETLIST_FILEWINID; ! if (dict_find(what, (char_u *)"qfbufnr", -1) != NULL) flags |= QF_GETLIST_QFBUFNR; ! if (dict_find(what, (char_u *)"quickfixtextfunc", -1) != NULL) flags |= QF_GETLIST_QFTF; return flags; --- 6867,6906 ---- flags &= ~ QF_GETLIST_FILEWINID; } ! if (dict_has_key(what, "title")) flags |= QF_GETLIST_TITLE; ! if (dict_has_key(what, "nr")) flags |= QF_GETLIST_NR; ! if (dict_has_key(what, "winid")) flags |= QF_GETLIST_WINID; ! if (dict_has_key(what, "context")) flags |= QF_GETLIST_CONTEXT; ! if (dict_has_key(what, "id")) flags |= QF_GETLIST_ID; ! if (dict_has_key(what, "items")) flags |= QF_GETLIST_ITEMS; ! if (dict_has_key(what, "idx")) flags |= QF_GETLIST_IDX; ! if (dict_has_key(what, "size")) flags |= QF_GETLIST_SIZE; ! if (dict_has_key(what, "changedtick")) flags |= QF_GETLIST_TICK; ! if (loclist && dict_has_key(what, "filewinid")) flags |= QF_GETLIST_FILEWINID; ! if (dict_has_key(what, "qfbufnr")) flags |= QF_GETLIST_QFBUFNR; ! if (dict_has_key(what, "quickfixtextfunc")) flags |= QF_GETLIST_QFTF; return flags; *************** *** 7241,7247 **** } // If the 'valid' field is present it overrules the detected value. ! if ((dict_find(d, (char_u *)"valid", -1)) != NULL) valid = (int)dict_get_bool(d, (char_u *)"valid", FALSE); status = qf_add_entry(qfl, --- 7241,7247 ---- } // If the 'valid' field is present it overrules the detected value. ! if (dict_has_key(d, "valid")) valid = (int)dict_get_bool(d, (char_u *)"valid", FALSE); status = qf_add_entry(qfl, *** ../vim-8.2.4682/src/search.c 2022-02-27 12:07:26.666960401 +0000 --- src/search.c 2022-04-04 15:14:05.065617606 +0100 *************** *** 4878,4884 **** return; } } ! if (dict_find(d, (char_u *)"matchseq", -1) != NULL) matchseq = TRUE; } --- 4878,4884 ---- return; } } ! if (dict_has_key(d, "matchseq")) matchseq = TRUE; } *** ../vim-8.2.4682/src/sign.c 2022-03-22 20:42:09.174172862 +0000 --- src/sign.c 2022-04-04 15:14:05.069617614 +0100 *************** *** 2786,2792 **** if (buf == NULL) goto cleanup; } ! if (dict_find(dict, (char_u *)"id", -1) != NULL) { sign_id = dict_get_number(dict, (char_u *)"id"); if (sign_id <= 0) --- 2786,2792 ---- if (buf == NULL) goto cleanup; } ! if (dict_has_key(dict, "id")) { sign_id = dict_get_number(dict, (char_u *)"id"); if (sign_id <= 0) *** ../vim-8.2.4682/src/tag.c 2022-03-13 19:23:44.912318213 +0000 --- src/tag.c 2022-04-04 15:14:05.069617614 +0100 *************** *** 4313,4319 **** int retval; // check that the field name doesn't exist yet ! if (dict_find(dict, (char_u *)field_name, -1) != NULL) { if (p_verbose > 0) { --- 4313,4319 ---- int retval; // check that the field name doesn't exist yet ! if (dict_has_key(dict, field_name)) { if (p_verbose > 0) { *** ../vim-8.2.4682/src/terminal.c 2022-02-25 20:48:22.135350734 +0000 --- src/terminal.c 2022-04-04 15:14:05.069617614 +0100 *************** *** 4311,4323 **** if (p != NULL) get_bad_opt(p, &ea); ! if (dict_find(dict, (char_u *)"bin", -1) != NULL) ea.force_bin = FORCE_BIN; ! if (dict_find(dict, (char_u *)"binary", -1) != NULL) ea.force_bin = FORCE_BIN; ! if (dict_find(dict, (char_u *)"nobin", -1) != NULL) ea.force_bin = FORCE_NOBIN; ! if (dict_find(dict, (char_u *)"nobinary", -1) != NULL) ea.force_bin = FORCE_NOBIN; } --- 4311,4323 ---- if (p != NULL) get_bad_opt(p, &ea); ! if (dict_has_key(dict, "bin")) ea.force_bin = FORCE_BIN; ! if (dict_has_key(dict, "binary")) ea.force_bin = FORCE_BIN; ! if (dict_has_key(dict, "nobin")) ea.force_bin = FORCE_NOBIN; ! if (dict_has_key(dict, "nobinary")) ea.force_bin = FORCE_NOBIN; } *** ../vim-8.2.4682/src/testing.c 2022-04-03 15:46:57.389502603 +0100 --- src/testing.c 2022-04-04 15:14:05.069617614 +0100 *************** *** 1285,1294 **** 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) return FALSE; (void)dict_get_tv(args, (char_u *)"files", &t); --- 1285,1294 ---- list_T *l; listitem_T *li; ! 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); *************** *** 1341,1350 **** 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) return FALSE; find_text = dict_get_string(args, (char_u *)"find_text", TRUE); --- 1341,1350 ---- int forward; int retval; ! 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); *************** *** 1370,1385 **** int_u mods; int move; ! if (dict_find(args, (char_u *)"row", -1) == NULL ! || dict_find(args, (char_u *)"col", -1) == NULL) 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)) return FALSE; row = (int)dict_get_number(args, (char_u *)"row"); --- 1370,1385 ---- int_u mods; int move; ! 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_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"); *************** *** 1408,1416 **** 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) return FALSE; which = dict_get_string(args, (char_u *)"which", FALSE); --- 1408,1416 ---- int dragging; scrollbar_T *sb = 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); *************** *** 1443,1449 **** # ifdef FEAT_GUI_TABLINE int tabnr; ! if (dict_find(args, (char_u *)"tabnr", -1) == NULL) return FALSE; tabnr = (int)dict_get_number(args, (char_u *)"tabnr"); --- 1443,1449 ---- # ifdef FEAT_GUI_TABLINE int tabnr; ! if (!dict_has_key(args, "tabnr")) return FALSE; tabnr = (int)dict_get_number(args, (char_u *)"tabnr"); *************** *** 1461,1468 **** int tabnr; int item; ! if (dict_find(args, (char_u *)"tabnr", -1) == NULL ! || dict_find(args, (char_u *)"item", -1) == NULL) return FALSE; tabnr = (int)dict_get_number(args, (char_u *)"tabnr"); --- 1461,1468 ---- int tabnr; int item; ! if (!dict_has_key(args, "tabnr") ! || !dict_has_key(args, "item")) return FALSE; tabnr = (int)dict_get_number(args, (char_u *)"tabnr"); *** ../vim-8.2.4682/src/textprop.c 2022-01-05 20:24:34.280005633 +0000 --- src/textprop.c 2022-04-04 15:14:05.069617614 +0100 *************** *** 331,344 **** } dict = argvars[0].vval.v_dict; ! if (dict == NULL || dict_find(dict, (char_u *)"type", -1) == NULL) { 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) id = dict_get_number(dict, (char_u *)"id"); if (get_bufnr_from_arg(&argvars[0], &buf) == FAIL) --- 331,344 ---- } dict = argvars[0].vval.v_dict; ! 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_has_key(dict, "id")) id = dict_get_number(dict, (char_u *)"id"); if (get_bufnr_from_arg(&argvars[0], &buf) == FAIL) *************** *** 391,404 **** buf_T *buf = default_buf; int id = 0; ! if (dict == NULL || dict_find(dict, (char_u *)"type", -1) == NULL) { 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) { end_lnum = dict_get_number(dict, (char_u *)"end_lnum"); if (end_lnum < start_lnum) --- 391,404 ---- buf_T *buf = default_buf; int id = 0; ! 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_has_key(dict, "end_lnum")) { end_lnum = dict_get_number(dict, (char_u *)"end_lnum"); if (end_lnum < start_lnum) *************** *** 410,416 **** else end_lnum = start_lnum; ! if (dict_find(dict, (char_u *)"length", -1) != NULL) { long length = dict_get_number(dict, (char_u *)"length"); --- 410,416 ---- else end_lnum = start_lnum; ! if (dict_has_key(dict, "length")) { long length = dict_get_number(dict, (char_u *)"length"); *************** *** 421,427 **** } end_col = start_col + length; } ! else if (dict_find(dict, (char_u *)"end_col", -1) != NULL) { end_col = dict_get_number(dict, (char_u *)"end_col"); if (end_col <= 0) --- 421,427 ---- } end_col = start_col + length; } ! else if (dict_has_key(dict, "end_col")) { end_col = dict_get_number(dict, (char_u *)"end_col"); if (end_col <= 0) *************** *** 435,441 **** else end_col = 1; ! if (dict_find(dict, (char_u *)"id", -1) != NULL) id = dict_get_number(dict, (char_u *)"id"); if (dict_arg != NULL && get_bufnr_from_arg(dict_arg, &buf) == FAIL) --- 435,441 ---- else end_col = 1; ! 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) *************** *** 777,788 **** skipstart = dict_get_bool(dict, (char_u *)"skipstart", 0); ! if (dict_find(dict, (char_u *)"id", -1) != NULL) { id = dict_get_number(dict, (char_u *)"id"); id_found = TRUE; } ! if (dict_find(dict, (char_u *)"type", -1)) { char_u *name = dict_get_string(dict, (char_u *)"type", FALSE); proptype_T *type = lookup_prop_type(name, buf); --- 777,788 ---- skipstart = dict_get_bool(dict, (char_u *)"skipstart", 0); ! if (dict_has_key(dict, "id")) { id = dict_get_number(dict, (char_u *)"id"); id_found = TRUE; } ! 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); *************** *** 1202,1210 **** do_all = dict_get_bool(dict, (char_u *)"all", FALSE); ! if (dict_find(dict, (char_u *)"id", -1) != NULL) id = dict_get_number(dict, (char_u *)"id"); ! if (dict_find(dict, (char_u *)"type", -1)) { char_u *name = dict_get_string(dict, (char_u *)"type", FALSE); proptype_T *type = lookup_prop_type(name, buf); --- 1202,1210 ---- do_all = dict_get_bool(dict, (char_u *)"all", FALSE); ! if (dict_has_key(dict, "id")) id = dict_get_number(dict, (char_u *)"id"); ! 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); *** ../vim-8.2.4682/src/time.c 2022-01-27 13:55:29.846840950 +0000 --- src/time.c 2022-04-04 15:14:05.069617614 +0100 *************** *** 848,854 **** semsg(_(e_invalid_argument_str), tv_get_string(&argvars[2])); return; } ! if (dict_find(dict, (char_u *)"repeat", -1) != NULL) repeat = dict_get_number(dict, (char_u *)"repeat"); } --- 848,854 ---- semsg(_(e_invalid_argument_str), tv_get_string(&argvars[2])); return; } ! if (dict_has_key(dict, "repeat")) repeat = dict_get_number(dict, (char_u *)"repeat"); } *** ../vim-8.2.4682/src/version.c 2022-04-04 14:58:02.170539803 +0100 --- src/version.c 2022-04-04 15:16:07.381926360 +0100 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 4683, /**/ -- It is illegal for anyone to try and stop a child from playfully jumping over puddles of water. [real standing law in California, United States of America] /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///