diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2022-08-30 19:48:24 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-08-30 19:48:24 +0100 |
commit | 04c4c5746e15884768d2cb41370c3276a196cd4c (patch) | |
tree | 1e629820796635bd332b2066c03d548fad527f89 /src/evalwindow.c | |
parent | f240395fca63d4b330112a4b81e94b05b50de1aa (diff) | |
download | vim-git-04c4c5746e15884768d2cb41370c3276a196cd4c.tar.gz |
patch 9.0.0335: checks for Dictionary argument often give a vague errorv9.0.0335
Problem: Checks for Dictionary argument often give a vague error message.
Solution: Give a useful error message. (Yegappan Lakshmanan, closes #11009)
Diffstat (limited to 'src/evalwindow.c')
-rw-r--r-- | src/evalwindow.c | 72 |
1 files changed, 32 insertions, 40 deletions
diff --git a/src/evalwindow.c b/src/evalwindow.c index d507ab367..906c26978 100644 --- a/src/evalwindow.c +++ b/src/evalwindow.c @@ -1009,11 +1009,8 @@ f_win_splitmove(typval_T *argvars, typval_T *rettv) dict_T *d; dictitem_T *di; - if (argvars[2].v_type != VAR_DICT || argvars[2].vval.v_dict == NULL) - { - emsg(_(e_invalid_argument)); + if (check_for_nonnull_dict_arg(argvars, 2) == FAIL) return; - } d = argvars[2].vval.v_dict; if (dict_get_bool(d, "vertical", FALSE)) @@ -1227,50 +1224,45 @@ f_winrestview(typval_T *argvars, typval_T *rettv UNUSED) { dict_T *dict; - if (in_vim9script() && check_for_dict_arg(argvars, 0) == FAIL) + if (check_for_nonnull_dict_arg(argvars, 0) == FAIL) return; - if (argvars[0].v_type != VAR_DICT - || (dict = argvars[0].vval.v_dict) == NULL) - emsg(_(e_invalid_argument)); - else + dict = argvars[0].vval.v_dict; + if (dict_has_key(dict, "lnum")) + curwin->w_cursor.lnum = (linenr_T)dict_get_number(dict, "lnum"); + if (dict_has_key(dict, "col")) + curwin->w_cursor.col = (colnr_T)dict_get_number(dict, "col"); + if (dict_has_key(dict, "coladd")) + curwin->w_cursor.coladd = (colnr_T)dict_get_number(dict, "coladd"); + if (dict_has_key(dict, "curswant")) { - if (dict_has_key(dict, "lnum")) - curwin->w_cursor.lnum = (linenr_T)dict_get_number(dict, "lnum"); - if (dict_has_key(dict, "col")) - curwin->w_cursor.col = (colnr_T)dict_get_number(dict, "col"); - if (dict_has_key(dict, "coladd")) - curwin->w_cursor.coladd = (colnr_T)dict_get_number(dict, "coladd"); - if (dict_has_key(dict, "curswant")) - { - curwin->w_curswant = (colnr_T)dict_get_number(dict, "curswant"); - curwin->w_set_curswant = FALSE; - } + curwin->w_curswant = (colnr_T)dict_get_number(dict, "curswant"); + curwin->w_set_curswant = FALSE; + } - if (dict_has_key(dict, "topline")) - set_topline(curwin, (linenr_T)dict_get_number(dict, "topline")); + if (dict_has_key(dict, "topline")) + set_topline(curwin, (linenr_T)dict_get_number(dict, "topline")); #ifdef FEAT_DIFF - if (dict_has_key(dict, "topfill")) - curwin->w_topfill = (int)dict_get_number(dict, "topfill"); + if (dict_has_key(dict, "topfill")) + curwin->w_topfill = (int)dict_get_number(dict, "topfill"); #endif - if (dict_has_key(dict, "leftcol")) - curwin->w_leftcol = (colnr_T)dict_get_number(dict, "leftcol"); - if (dict_has_key(dict, "skipcol")) - curwin->w_skipcol = (colnr_T)dict_get_number(dict, "skipcol"); - - check_cursor(); - win_new_height(curwin, curwin->w_height); - win_new_width(curwin, curwin->w_width); - changed_window_setting(); - - if (curwin->w_topline <= 0) - curwin->w_topline = 1; - if (curwin->w_topline > curbuf->b_ml.ml_line_count) - curwin->w_topline = curbuf->b_ml.ml_line_count; + if (dict_has_key(dict, "leftcol")) + curwin->w_leftcol = (colnr_T)dict_get_number(dict, "leftcol"); + if (dict_has_key(dict, "skipcol")) + curwin->w_skipcol = (colnr_T)dict_get_number(dict, "skipcol"); + + check_cursor(); + win_new_height(curwin, curwin->w_height); + win_new_width(curwin, curwin->w_width); + changed_window_setting(); + + if (curwin->w_topline <= 0) + curwin->w_topline = 1; + if (curwin->w_topline > curbuf->b_ml.ml_line_count) + curwin->w_topline = curbuf->b_ml.ml_line_count; #ifdef FEAT_DIFF - check_topfill(curwin, TRUE); + check_topfill(curwin, TRUE); #endif - } } /* |