diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-05-29 17:13:24 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-05-29 17:13:24 +0100 |
commit | 83bd7a974056fd61e142c791e79d9dd89acd5ba4 (patch) | |
tree | 845ed9a63d231ac200cf663640b58512b4b49c10 /src | |
parent | d28950f9540f77032cee0a3047b05bef50ea81dc (diff) | |
download | vim-git-83bd7a974056fd61e142c791e79d9dd89acd5ba4.tar.gz |
patch 8.2.5039: confusing error if first argument of popup_create() is wrongv8.2.5039
Problem: Confusing error if first argument of popup_create() is wrong.
Solution: Give a more informative error.
Diffstat (limited to 'src')
-rw-r--r-- | src/errors.h | 4 | ||||
-rw-r--r-- | src/popupwin.c | 6 | ||||
-rw-r--r-- | src/testdir/dumps/Test_popup_settext_07.dump | 2 | ||||
-rw-r--r-- | src/testdir/test_popupwin.vim | 7 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 17 insertions, 4 deletions
diff --git a/src/errors.h b/src/errors.h index 3e5252c76..8ca2a3e2f 100644 --- a/src/errors.h +++ b/src/errors.h @@ -3284,3 +3284,7 @@ EXTERN char e_bitshift_ops_must_be_number[] EXTERN char e_bitshift_ops_must_be_postive[] INIT(= N_("E1283: Bitshift amount must be a positive number")); #endif +#if defined(FEAT_PROP_POPUP) +EXTERN char e_argument_1_list_item_nr_dictionary_required[] + INIT(= N_("E1284: Argument 1, list item %d: Dictionary required")); +#endif diff --git a/src/popupwin.c b/src/popupwin.c index 96874011e..5074eaa65 100644 --- a/src/popupwin.c +++ b/src/popupwin.c @@ -1047,7 +1047,7 @@ add_popup_dicts(buf_T *buf, list_T *l) { if (li->li_tv.v_type != VAR_DICT) { - emsg(_(e_dictionary_required)); + semsg(_(e_argument_1_list_item_nr_dictionary_required), lnum + 1); return; } dict = li->li_tv.vval.v_dict; @@ -1685,7 +1685,9 @@ popup_set_buffer_text(buf_T *buf, typval_T text) if (l != NULL && l->lv_len > 0) { - if (l->lv_first->li_tv.v_type == VAR_STRING) + if (l->lv_first == &range_list_item) + emsg(_(e_using_number_as_string)); + else if (l->lv_first->li_tv.v_type == VAR_STRING) // list of strings add_popup_strings(buf, l); else diff --git a/src/testdir/dumps/Test_popup_settext_07.dump b/src/testdir/dumps/Test_popup_settext_07.dump index 146dec677..2362aa714 100644 --- a/src/testdir/dumps/Test_popup_settext_07.dump +++ b/src/testdir/dumps/Test_popup_settext_07.dump @@ -7,4 +7,4 @@ |~| @73 |~| @73 |~| @73 -|E+0#ffffff16#e000002|7|1|5|:| |D|i|c|t|i|o|n|a|r|y| |r|e|q|u|i|r|e|d| +0#0000000#ffffff0@31|0|,|0|-|1| @8|A|l@1| +|E+0#ffffff16#e000002|1|0|2|4|:| |U|s|i|n|g| |a| |N|u|m|b|e|r| |a|s| |a| |S|t|r|i|n|g| +0#0000000#ffffff0@23|0|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim index 178f23568..a78816b80 100644 --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -1072,7 +1072,7 @@ func Test_popup_invalid_arguments() call assert_fails('call popup_create("text", #{borderchars: "none"})', 'E714:') call popup_clear() - call assert_fails('call popup_create([#{text: "text"}, 666], {})', 'E715:') + call assert_fails('call popup_create([#{text: "text"}, 666], {})', 'E1284: Argument 1, list item 2: Dictionary required') call popup_clear() call assert_fails('call popup_create([#{text: "text", props: "none"}], {})', 'E714:') call popup_clear() @@ -1091,6 +1091,11 @@ func Test_popup_invalid_arguments() call popup_clear() call assert_fails('call popup_create("text", #{tabpage : 4})', 'E997:') call popup_clear() + + call assert_fails('call popup_create(range(10), {})', 'E1024:') + call popup_clear() + call assert_fails('call popup_create([1, 2], {})', 'E1284: Argument 1, list item 1: Dictionary required') + call popup_clear() endfunc func Test_win_execute_closing_curwin() diff --git a/src/version.c b/src/version.c index cc9768747..9e51afe33 100644 --- a/src/version.c +++ b/src/version.c @@ -735,6 +735,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 5039, +/**/ 5038, /**/ 5037, |