mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:9.0.0299: error messages for setcmdline() could be better (#20169)
Problem: Error messages for setcmdline() could be better.
Solution: Use more specific error messages. (Yegappan Lakshmanan,
closes vim/vim#10995)
25f1e55562
Cherry-pick tv_check_for_opt_number_arg() from Vim.
This commit is contained in:
parent
afe01842ef
commit
5bc0964b97
@ -3843,6 +3843,14 @@ int tv_check_for_number_arg(const typval_T *const args, const int idx)
|
||||
return OK;
|
||||
}
|
||||
|
||||
/// Check for an optional number argument at "idx"
|
||||
int tv_check_for_opt_number_arg(const typval_T *const args, const int idx)
|
||||
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_PURE
|
||||
{
|
||||
return (args[idx].v_type == VAR_UNKNOWN
|
||||
|| tv_check_for_number_arg(args, idx) != FAIL) ? OK : FAIL;
|
||||
}
|
||||
|
||||
/// Get the string value of a "stringish" VimL object.
|
||||
///
|
||||
/// @param[in] tv Object to get value of.
|
||||
|
@ -4050,8 +4050,8 @@ static int set_cmdline_pos(int pos)
|
||||
/// "setcmdline()" function
|
||||
void f_setcmdline(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
||||
{
|
||||
if (argvars[0].v_type != VAR_STRING || argvars[0].vval.v_string == NULL) {
|
||||
emsg(_(e_stringreq));
|
||||
if (tv_check_for_string_arg(argvars, 0) == FAIL
|
||||
|| tv_check_for_opt_number_arg(argvars, 1) == FAIL) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2226,8 +2226,8 @@ func Test_setcmdline()
|
||||
call assert_equal(a:pos, getcmdpos())
|
||||
|
||||
call assert_fails('call setcmdline("' .. a:text .. '", -1)', 'E487:')
|
||||
call assert_fails('call setcmdline({}, 0)', 'E928:')
|
||||
call assert_fails('call setcmdline("' .. a:text .. '", {})', 'E728:')
|
||||
call assert_fails('call setcmdline({}, 0)', 'E1174:')
|
||||
call assert_fails('call setcmdline("' .. a:text .. '", {})', 'E1210:')
|
||||
|
||||
return ''
|
||||
endfunc
|
||||
|
Loading…
Reference in New Issue
Block a user