Mercurial > vim
comparison src/evalfunc.c @ 25252:acda780ffc3e v8.2.3162
patch 8.2.3162: Vim9: argument types are not checked at compile time
Commit: https://github.com/vim/vim/commit/1a71d31bf34b0b2b08517903826004ec6fd440e5
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Thu Jul 15 12:49:58 2021 +0200
patch 8.2.3162: Vim9: argument types are not checked at compile time
Problem: Vim9: argument types are not checked at compile time.
Solution: Add more type checks. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/8560)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 15 Jul 2021 13:00:06 +0200 |
parents | 11ed1f0adb01 |
children | 712e867f9721 |
comparison
equal
deleted
inserted
replaced
25251:6024f64e0d2b | 25252:acda780ffc3e |
---|---|
253 { | 253 { |
254 return check_arg_type(&t_dict_any, type, context); | 254 return check_arg_type(&t_dict_any, type, context); |
255 } | 255 } |
256 | 256 |
257 /* | 257 /* |
258 * Check "type" is a list of 'any'. | |
259 */ | |
260 static int | |
261 arg_list_any(type_T *type, argcontext_T *context) | |
262 { | |
263 return check_arg_type(&t_list_any, type, context); | |
264 } | |
265 | |
266 /* | |
258 * Check "type" is a list of numbers. | 267 * Check "type" is a list of numbers. |
259 */ | 268 */ |
260 static int | 269 static int |
261 arg_list_number(type_T *type, argcontext_T *context) | 270 arg_list_number(type_T *type, argcontext_T *context) |
262 { | 271 { |
285 * Check "type" is a bool or number 0 or 1. | 294 * Check "type" is a bool or number 0 or 1. |
286 */ | 295 */ |
287 static int | 296 static int |
288 arg_bool(type_T *type, argcontext_T *context) | 297 arg_bool(type_T *type, argcontext_T *context) |
289 { | 298 { |
290 if (type->tt_type == VAR_ANY | |
291 || type->tt_type == VAR_NUMBER || type->tt_type == VAR_BOOL) | |
292 return OK; | |
293 return check_arg_type(&t_bool, type, context); | 299 return check_arg_type(&t_bool, type, context); |
294 } | 300 } |
295 | 301 |
296 /* | 302 /* |
297 * Check "type" is a list or a blob. | 303 * Check "type" is a list or a blob. |
351 arg_type_mismatch(&t_string, type, context->arg_idx + 1); | 357 arg_type_mismatch(&t_string, type, context->arg_idx + 1); |
352 return FAIL; | 358 return FAIL; |
353 } | 359 } |
354 | 360 |
355 /* | 361 /* |
356 * Check "type" is a list or a dict. | 362 * Check "type" is a list of 'any' or a dict of 'any'. |
357 */ | 363 */ |
358 static int | 364 static int |
359 arg_list_or_dict(type_T *type, argcontext_T *context) | 365 arg_list_or_dict(type_T *type, argcontext_T *context) |
360 { | 366 { |
361 if (type->tt_type == VAR_ANY | 367 if (type->tt_type == VAR_ANY |
364 arg_type_mismatch(&t_list_any, type, context->arg_idx + 1); | 370 arg_type_mismatch(&t_list_any, type, context->arg_idx + 1); |
365 return FAIL; | 371 return FAIL; |
366 } | 372 } |
367 | 373 |
368 /* | 374 /* |
375 * Check "type" is a job. | |
376 */ | |
377 static int | |
378 arg_job(type_T *type, argcontext_T *context) | |
379 { | |
380 return check_arg_type(&t_job, type, context); | |
381 } | |
382 | |
383 /* | |
369 * Check "type" is a channel or a job. | 384 * Check "type" is a channel or a job. |
370 */ | 385 */ |
371 static int | 386 static int |
372 arg_chan_or_job(type_T *type, argcontext_T *context) | 387 arg_chan_or_job(type_T *type, argcontext_T *context) |
373 { | 388 { |
374 if (type->tt_type == VAR_CHANNEL || type->tt_type == VAR_JOB) | 389 if (type->tt_type == VAR_ANY || |
390 type->tt_type == VAR_CHANNEL || type->tt_type == VAR_JOB) | |
375 return OK; | 391 return OK; |
376 arg_type_mismatch(&t_channel, type, context->arg_idx + 1); | 392 arg_type_mismatch(&t_channel, type, context->arg_idx + 1); |
377 return FAIL; | 393 return FAIL; |
378 } | 394 } |
379 | 395 |
457 | 473 |
458 | 474 |
459 /* | 475 /* |
460 * Lists of functions that check the argument types of a builtin function. | 476 * Lists of functions that check the argument types of a builtin function. |
461 */ | 477 */ |
462 argcheck_T arg1_string[] = {arg_string}; | 478 static argcheck_T arg1_string[] = {arg_string}; |
463 argcheck_T arg1_number[] = {arg_number}; | 479 static argcheck_T arg1_number[] = {arg_number}; |
464 argcheck_T arg1_dict[] = {arg_dict_any}; | 480 static argcheck_T arg1_bool[] = {arg_bool}; |
465 argcheck_T arg1_list_nr[] = {arg_list_number}; | 481 static argcheck_T arg1_dict_any[] = {arg_dict_any}; |
466 argcheck_T arg1_list_string[] = {arg_list_string}; | 482 static argcheck_T arg1_job[] = {arg_job}; |
467 argcheck_T arg1_float_or_nr[] = {arg_float_or_nr}; | 483 static argcheck_T arg1_list_any[] = {arg_list_any}; |
468 argcheck_T arg1_string_or_nr[] = {arg_string_or_nr}; | 484 static argcheck_T arg1_list_nr[] = {arg_list_number}; |
469 argcheck_T arg1_string_or_list_any[] = {arg_string_or_list_any}; | 485 static argcheck_T arg1_list_string[] = {arg_list_string}; |
470 argcheck_T arg1_string_or_list_string[] = {arg_string_or_list_string}; | 486 static argcheck_T arg1_float_or_nr[] = {arg_float_or_nr}; |
471 argcheck_T arg1_list_or_blob[] = {arg_list_or_blob}; | 487 static argcheck_T arg1_string_or_nr[] = {arg_string_or_nr}; |
472 argcheck_T arg1_chan_or_job[] = {arg_chan_or_job}; | 488 static argcheck_T arg1_string_or_list_any[] = {arg_string_or_list_any}; |
473 argcheck_T arg2_float_or_nr[] = {arg_float_or_nr, arg_float_or_nr}; | 489 static argcheck_T arg1_string_or_list_string[] = {arg_string_or_list_string}; |
474 argcheck_T arg2_number[] = {arg_number, arg_number}; | 490 static argcheck_T arg1_list_or_blob[] = {arg_list_or_blob}; |
475 argcheck_T arg2_string[] = {arg_string, arg_string}; | 491 static argcheck_T arg1_list_or_dict[] = {arg_list_or_dict}; |
476 argcheck_T arg2_list_nr[] = {arg_list_number, arg_list_number}; | 492 static argcheck_T arg1_chan_or_job[] = {arg_chan_or_job}; |
477 argcheck_T arg2_dict_string[] = {arg_dict_any, arg_string}; | 493 static argcheck_T arg2_float_or_nr[] = {arg_float_or_nr, arg_float_or_nr}; |
478 argcheck_T arg2_dict_string_or_nr[] = {arg_dict_any, arg_string_or_nr}; | 494 static argcheck_T arg2_number[] = {arg_number, arg_number}; |
479 argcheck_T arg2_string_dict[] = {arg_string, arg_dict_any}; | 495 static argcheck_T arg2_string[] = {arg_string, arg_string}; |
480 argcheck_T arg2_listblob_item[] = {arg_list_or_blob, arg_item_of_prev}; | 496 static argcheck_T arg2_list_nr[] = {arg_list_number, arg_list_number}; |
481 argcheck_T arg2_str_or_nr_or_list_dict[] = {arg_str_or_nr_or_list, arg_dict_any}; | 497 static argcheck_T arg2_nr_string[] = {arg_number, arg_string}; |
482 argcheck_T arg2_string_or_list_dict[] = {arg_string_or_list_any, arg_dict_any}; | 498 static argcheck_T arg2_dict_string[] = {arg_dict_any, arg_string}; |
483 argcheck_T arg3_string[] = {arg_string, arg_string, arg_string}; | 499 static argcheck_T arg2_dict_string_or_nr[] = {arg_dict_any, arg_string_or_nr}; |
484 argcheck_T arg3_number[] = {arg_number, arg_number, arg_number}; | 500 static argcheck_T arg2_string_dict[] = {arg_string, arg_dict_any}; |
485 argcheck_T arg3_string_nr_bool[] = {arg_string, arg_number, arg_bool}; | 501 static argcheck_T arg2_string_nr[] = {arg_string, arg_number}; |
486 argcheck_T arg3_string_string_nr[] = {arg_string, arg_string, arg_number}; | 502 //static argcheck_T arg2_listblob_item[] = {arg_list_or_blob, arg_item_of_prev}; |
487 argcheck_T arg2_execute[] = {arg_string_or_list_string, arg_string}; | 503 static argcheck_T arg2_str_or_nr_or_list_dict[] = {arg_str_or_nr_or_list, arg_dict_any}; |
488 argcheck_T arg23_win_execute[] = {arg_number, arg_string_or_list_string, arg_string}; | 504 static argcheck_T arg2_string_or_list_dict[] = {arg_string_or_list_any, arg_dict_any}; |
489 argcheck_T arg2_setline[] = {arg_string_or_nr, arg_string_or_list_any}; | 505 static argcheck_T arg2_chan_or_job_dict[] = {arg_chan_or_job, arg_dict_any}; |
490 argcheck_T arg3_setbufline[] = {arg_string_or_nr, arg_string_or_nr, arg_string_or_list_any}; | 506 static argcheck_T arg2_nr_dict_any[] = {arg_number, arg_dict_any}; |
491 argcheck_T arg23_extend[] = {arg_list_or_dict, arg_same_as_prev, arg_extend3}; | 507 //static argcheck_T arg2_string_number[] = {arg_string, arg_number}; |
492 argcheck_T arg23_extendnew[] = {arg_list_or_dict, arg_same_struct_as_prev, arg_extend3}; | 508 static argcheck_T arg3_string[] = {arg_string, arg_string, arg_string}; |
493 argcheck_T arg3_insert[] = {arg_list_or_blob, arg_item_of_prev, arg_number}; | 509 static argcheck_T arg3_number[] = {arg_number, arg_number, arg_number}; |
510 static argcheck_T arg3_string_nr_bool[] = {arg_string, arg_number, arg_bool}; | |
511 static argcheck_T arg3_string_string_nr[] = {arg_string, arg_string, arg_number}; | |
512 static argcheck_T arg2_execute[] = {arg_string_or_list_string, arg_string}; | |
513 static argcheck_T arg23_win_execute[] = {arg_number, arg_string_or_list_string, arg_string}; | |
514 static argcheck_T arg2_setline[] = {arg_string_or_nr, NULL}; | |
515 static argcheck_T arg3_setbufline[] = {arg_string_or_nr, arg_string_or_nr, arg_str_or_nr_or_list}; | |
516 static argcheck_T arg23_extend[] = {arg_list_or_dict, arg_same_as_prev, arg_extend3}; | |
517 static argcheck_T arg23_extendnew[] = {arg_list_or_dict, arg_same_struct_as_prev, arg_extend3}; | |
518 static argcheck_T arg3_insert[] = {arg_list_or_blob, arg_item_of_prev, arg_number}; | |
494 | 519 |
495 /* | 520 /* |
496 * Functions that return the return type of a builtin function. | 521 * Functions that return the return type of a builtin function. |
497 * Note that "argtypes" is NULL if "argcount" is zero. | 522 * Note that "argtypes" is NULL if "argcount" is zero. |
498 */ | 523 */ |
760 ret_float, FLOAT_FUNC(f_acos)}, | 785 ret_float, FLOAT_FUNC(f_acos)}, |
761 {"add", 2, 2, FEARG_1, NULL /* arg2_listblob_item */, | 786 {"add", 2, 2, FEARG_1, NULL /* arg2_listblob_item */, |
762 ret_first_arg, f_add}, | 787 ret_first_arg, f_add}, |
763 {"and", 2, 2, FEARG_1, arg2_number, | 788 {"and", 2, 2, FEARG_1, arg2_number, |
764 ret_number, f_and}, | 789 ret_number, f_and}, |
765 {"append", 2, 2, FEARG_2, NULL, | 790 {"append", 2, 2, FEARG_2, arg2_setline, |
766 ret_number_bool, f_append}, | 791 ret_number_bool, f_append}, |
767 {"appendbufline", 3, 3, FEARG_3, NULL, | 792 {"appendbufline", 3, 3, FEARG_3, arg3_setbufline, |
768 ret_number_bool, f_appendbufline}, | 793 ret_number_bool, f_appendbufline}, |
769 {"argc", 0, 1, 0, arg1_number, | 794 {"argc", 0, 1, 0, arg1_number, |
770 ret_number, f_argc}, | 795 ret_number, f_argc}, |
771 {"argidx", 0, 0, 0, NULL, | 796 {"argidx", 0, 0, 0, NULL, |
772 ret_number, f_argidx}, | 797 ret_number, f_argidx}, |
774 ret_number, f_arglistid}, | 799 ret_number, f_arglistid}, |
775 {"argv", 0, 2, 0, arg2_number, | 800 {"argv", 0, 2, 0, arg2_number, |
776 ret_argv, f_argv}, | 801 ret_argv, f_argv}, |
777 {"asin", 1, 1, FEARG_1, arg1_float_or_nr, | 802 {"asin", 1, 1, FEARG_1, arg1_float_or_nr, |
778 ret_float, FLOAT_FUNC(f_asin)}, | 803 ret_float, FLOAT_FUNC(f_asin)}, |
779 {"assert_beeps", 1, 2, FEARG_1, NULL, | 804 {"assert_beeps", 1, 1, FEARG_1, arg1_string, |
780 ret_number_bool, f_assert_beeps}, | 805 ret_number_bool, f_assert_beeps}, |
781 {"assert_equal", 2, 3, FEARG_2, NULL, | 806 {"assert_equal", 2, 3, FEARG_2, NULL, |
782 ret_number_bool, f_assert_equal}, | 807 ret_number_bool, f_assert_equal}, |
783 {"assert_equalfile", 2, 3, FEARG_1, arg3_string, | 808 {"assert_equalfile", 2, 3, FEARG_1, arg3_string, |
784 ret_number_bool, f_assert_equalfile}, | 809 ret_number_bool, f_assert_equalfile}, |
790 ret_number_bool, f_assert_false}, | 815 ret_number_bool, f_assert_false}, |
791 {"assert_inrange", 3, 4, FEARG_3, NULL, | 816 {"assert_inrange", 3, 4, FEARG_3, NULL, |
792 ret_number_bool, f_assert_inrange}, | 817 ret_number_bool, f_assert_inrange}, |
793 {"assert_match", 2, 3, FEARG_2, arg3_string, | 818 {"assert_match", 2, 3, FEARG_2, arg3_string, |
794 ret_number_bool, f_assert_match}, | 819 ret_number_bool, f_assert_match}, |
795 {"assert_nobeep", 1, 2, FEARG_1, NULL, | 820 {"assert_nobeep", 1, 1, FEARG_1, arg1_string, |
796 ret_number_bool, f_assert_nobeep}, | 821 ret_number_bool, f_assert_nobeep}, |
797 {"assert_notequal", 2, 3, FEARG_2, NULL, | 822 {"assert_notequal", 2, 3, FEARG_2, NULL, |
798 ret_number_bool, f_assert_notequal}, | 823 ret_number_bool, f_assert_notequal}, |
799 {"assert_notmatch", 2, 3, FEARG_2, arg3_string, | 824 {"assert_notmatch", 2, 3, FEARG_2, arg3_string, |
800 ret_number_bool, f_assert_notmatch}, | 825 ret_number_bool, f_assert_notmatch}, |
858 ret_number, f_bufwinid}, | 883 ret_number, f_bufwinid}, |
859 {"bufwinnr", 1, 1, FEARG_1, arg1_string_or_nr, | 884 {"bufwinnr", 1, 1, FEARG_1, arg1_string_or_nr, |
860 ret_number, f_bufwinnr}, | 885 ret_number, f_bufwinnr}, |
861 {"byte2line", 1, 1, FEARG_1, arg1_number, | 886 {"byte2line", 1, 1, FEARG_1, arg1_number, |
862 ret_number, f_byte2line}, | 887 ret_number, f_byte2line}, |
863 {"byteidx", 2, 2, FEARG_1, NULL, | 888 {"byteidx", 2, 2, FEARG_1, arg2_string_nr, |
864 ret_number, f_byteidx}, | 889 ret_number, f_byteidx}, |
865 {"byteidxcomp", 2, 2, FEARG_1, NULL, | 890 {"byteidxcomp", 2, 2, FEARG_1, arg2_string_nr, |
866 ret_number, f_byteidxcomp}, | 891 ret_number, f_byteidxcomp}, |
867 {"call", 2, 3, FEARG_1, NULL, | 892 {"call", 2, 3, FEARG_1, NULL, |
868 ret_any, f_call}, | 893 ret_any, f_call}, |
869 {"ceil", 1, 1, FEARG_1, arg1_float_or_nr, | 894 {"ceil", 1, 1, FEARG_1, arg1_float_or_nr, |
870 ret_float, FLOAT_FUNC(f_ceil)}, | 895 ret_float, FLOAT_FUNC(f_ceil)}, |
878 ret_any, JOB_FUNC(f_ch_evalexpr)}, | 903 ret_any, JOB_FUNC(f_ch_evalexpr)}, |
879 {"ch_evalraw", 2, 3, FEARG_1, NULL, | 904 {"ch_evalraw", 2, 3, FEARG_1, NULL, |
880 ret_any, JOB_FUNC(f_ch_evalraw)}, | 905 ret_any, JOB_FUNC(f_ch_evalraw)}, |
881 {"ch_getbufnr", 2, 2, FEARG_1, NULL, | 906 {"ch_getbufnr", 2, 2, FEARG_1, NULL, |
882 ret_number, JOB_FUNC(f_ch_getbufnr)}, | 907 ret_number, JOB_FUNC(f_ch_getbufnr)}, |
883 {"ch_getjob", 1, 1, FEARG_1, NULL, | 908 {"ch_getjob", 1, 1, FEARG_1, arg1_chan_or_job, |
884 ret_job, JOB_FUNC(f_ch_getjob)}, | 909 ret_job, JOB_FUNC(f_ch_getjob)}, |
885 {"ch_info", 1, 1, FEARG_1, arg1_chan_or_job, | 910 {"ch_info", 1, 1, FEARG_1, arg1_chan_or_job, |
886 ret_dict_any, JOB_FUNC(f_ch_info)}, | 911 ret_dict_any, JOB_FUNC(f_ch_info)}, |
887 {"ch_log", 1, 2, FEARG_1, NULL, | 912 {"ch_log", 1, 2, FEARG_1, NULL, |
888 ret_void, JOB_FUNC(f_ch_log)}, | 913 ret_void, JOB_FUNC(f_ch_log)}, |
889 {"ch_logfile", 1, 2, FEARG_1, arg2_string, | 914 {"ch_logfile", 1, 2, FEARG_1, arg2_string, |
890 ret_void, JOB_FUNC(f_ch_logfile)}, | 915 ret_void, JOB_FUNC(f_ch_logfile)}, |
891 {"ch_open", 1, 2, FEARG_1, arg2_string_dict, | 916 {"ch_open", 1, 2, FEARG_1, arg2_string_dict, |
892 ret_channel, JOB_FUNC(f_ch_open)}, | 917 ret_channel, JOB_FUNC(f_ch_open)}, |
893 {"ch_read", 1, 2, FEARG_1, NULL, | 918 {"ch_read", 1, 2, FEARG_1, arg2_chan_or_job_dict, |
894 ret_string, JOB_FUNC(f_ch_read)}, | 919 ret_string, JOB_FUNC(f_ch_read)}, |
895 {"ch_readblob", 1, 2, FEARG_1, NULL, | 920 {"ch_readblob", 1, 2, FEARG_1, arg2_chan_or_job_dict, |
896 ret_blob, JOB_FUNC(f_ch_readblob)}, | 921 ret_blob, JOB_FUNC(f_ch_readblob)}, |
897 {"ch_readraw", 1, 2, FEARG_1, NULL, | 922 {"ch_readraw", 1, 2, FEARG_1, arg2_chan_or_job_dict, |
898 ret_string, JOB_FUNC(f_ch_readraw)}, | 923 ret_string, JOB_FUNC(f_ch_readraw)}, |
899 {"ch_sendexpr", 2, 3, FEARG_1, NULL, | 924 {"ch_sendexpr", 2, 3, FEARG_1, NULL, |
900 ret_void, JOB_FUNC(f_ch_sendexpr)}, | 925 ret_void, JOB_FUNC(f_ch_sendexpr)}, |
901 {"ch_sendraw", 2, 3, FEARG_1, NULL, | 926 {"ch_sendraw", 2, 3, FEARG_1, NULL, |
902 ret_void, JOB_FUNC(f_ch_sendraw)}, | 927 ret_void, JOB_FUNC(f_ch_sendraw)}, |
903 {"ch_setoptions", 2, 2, FEARG_1, NULL, | 928 {"ch_setoptions", 2, 2, FEARG_1, arg2_chan_or_job_dict, |
904 ret_void, JOB_FUNC(f_ch_setoptions)}, | 929 ret_void, JOB_FUNC(f_ch_setoptions)}, |
905 {"ch_status", 1, 2, FEARG_1, NULL, | 930 {"ch_status", 1, 2, FEARG_1, arg2_chan_or_job_dict, |
906 ret_string, JOB_FUNC(f_ch_status)}, | 931 ret_string, JOB_FUNC(f_ch_status)}, |
907 {"changenr", 0, 0, 0, NULL, | 932 {"changenr", 0, 0, 0, NULL, |
908 ret_number, f_changenr}, | 933 ret_number, f_changenr}, |
909 {"char2nr", 1, 2, FEARG_1, NULL, | 934 {"char2nr", 1, 2, FEARG_1, NULL, |
910 ret_number, f_char2nr}, | 935 ret_number, f_char2nr}, |
962 ret_number_bool, f_did_filetype}, | 987 ret_number_bool, f_did_filetype}, |
963 {"diff_filler", 1, 1, FEARG_1, arg1_string_or_nr, | 988 {"diff_filler", 1, 1, FEARG_1, arg1_string_or_nr, |
964 ret_number, f_diff_filler}, | 989 ret_number, f_diff_filler}, |
965 {"diff_hlID", 2, 2, FEARG_1, NULL, | 990 {"diff_hlID", 2, 2, FEARG_1, NULL, |
966 ret_number, f_diff_hlID}, | 991 ret_number, f_diff_hlID}, |
967 {"echoraw", 1, 1, FEARG_1, NULL, | 992 {"echoraw", 1, 1, FEARG_1, arg1_string, |
968 ret_void, f_echoraw}, | 993 ret_void, f_echoraw}, |
969 {"empty", 1, 1, FEARG_1, NULL, | 994 {"empty", 1, 1, FEARG_1, NULL, |
970 ret_number_bool, f_empty}, | 995 ret_number_bool, f_empty}, |
971 {"environ", 0, 0, 0, NULL, | 996 {"environ", 0, 0, 0, NULL, |
972 ret_dict_string, f_environ}, | 997 ret_dict_string, f_environ}, |
1038 ret_string, f_fullcommand}, | 1063 ret_string, f_fullcommand}, |
1039 {"funcref", 1, 3, FEARG_1, NULL, | 1064 {"funcref", 1, 3, FEARG_1, NULL, |
1040 ret_func_any, f_funcref}, | 1065 ret_func_any, f_funcref}, |
1041 {"function", 1, 3, FEARG_1, NULL, | 1066 {"function", 1, 3, FEARG_1, NULL, |
1042 ret_f_function, f_function}, | 1067 ret_f_function, f_function}, |
1043 {"garbagecollect", 0, 1, 0, NULL, | 1068 {"garbagecollect", 0, 1, 0, arg1_bool, |
1044 ret_void, f_garbagecollect}, | 1069 ret_void, f_garbagecollect}, |
1045 {"get", 2, 3, FEARG_1, NULL, | 1070 {"get", 2, 3, FEARG_1, NULL, |
1046 ret_any, f_get}, | 1071 ret_any, f_get}, |
1047 {"getbufinfo", 0, 1, FEARG_1, NULL, | 1072 {"getbufinfo", 0, 1, FEARG_1, NULL, |
1048 ret_list_dict_any, f_getbufinfo}, | 1073 ret_list_dict_any, f_getbufinfo}, |
1050 ret_list_string, f_getbufline}, | 1075 ret_list_string, f_getbufline}, |
1051 {"getbufvar", 2, 3, FEARG_1, NULL, | 1076 {"getbufvar", 2, 3, FEARG_1, NULL, |
1052 ret_any, f_getbufvar}, | 1077 ret_any, f_getbufvar}, |
1053 {"getchangelist", 0, 1, FEARG_1, arg1_string_or_nr, | 1078 {"getchangelist", 0, 1, FEARG_1, arg1_string_or_nr, |
1054 ret_list_any, f_getchangelist}, | 1079 ret_list_any, f_getchangelist}, |
1055 {"getchar", 0, 1, 0, NULL, | 1080 {"getchar", 0, 1, 0, arg1_bool, |
1056 ret_any, f_getchar}, | 1081 ret_any, f_getchar}, |
1057 {"getcharmod", 0, 0, 0, NULL, | 1082 {"getcharmod", 0, 0, 0, NULL, |
1058 ret_number, f_getcharmod}, | 1083 ret_number, f_getcharmod}, |
1059 {"getcharpos", 1, 1, FEARG_1, NULL, | 1084 {"getcharpos", 1, 1, FEARG_1, arg1_string, |
1060 ret_list_number, f_getcharpos}, | 1085 ret_list_number, f_getcharpos}, |
1061 {"getcharsearch", 0, 0, 0, NULL, | 1086 {"getcharsearch", 0, 0, 0, NULL, |
1062 ret_dict_any, f_getcharsearch}, | 1087 ret_dict_any, f_getcharsearch}, |
1063 {"getcharstr", 0, 1, 0, NULL, | 1088 {"getcharstr", 0, 1, 0, arg1_bool, |
1064 ret_string, f_getcharstr}, | 1089 ret_string, f_getcharstr}, |
1065 {"getcmdline", 0, 0, 0, NULL, | 1090 {"getcmdline", 0, 0, 0, NULL, |
1066 ret_string, f_getcmdline}, | 1091 ret_string, f_getcmdline}, |
1067 {"getcmdpos", 0, 0, 0, NULL, | 1092 {"getcmdpos", 0, 0, 0, NULL, |
1068 ret_number, f_getcmdpos}, | 1093 ret_number, f_getcmdpos}, |
1094 ret_number_bool, f_getimstatus}, | 1119 ret_number_bool, f_getimstatus}, |
1095 {"getjumplist", 0, 2, FEARG_1, arg2_number, | 1120 {"getjumplist", 0, 2, FEARG_1, arg2_number, |
1096 ret_list_any, f_getjumplist}, | 1121 ret_list_any, f_getjumplist}, |
1097 {"getline", 1, 2, FEARG_1, NULL, | 1122 {"getline", 1, 2, FEARG_1, NULL, |
1098 ret_f_getline, f_getline}, | 1123 ret_f_getline, f_getline}, |
1099 {"getloclist", 1, 2, 0, NULL, | 1124 {"getloclist", 1, 2, 0, arg2_nr_dict_any, |
1100 ret_list_or_dict_1, f_getloclist}, | 1125 ret_list_or_dict_1, f_getloclist}, |
1101 {"getmarklist", 0, 1, FEARG_1, arg1_string_or_nr, | 1126 {"getmarklist", 0, 1, FEARG_1, arg1_string_or_nr, |
1102 ret_list_dict_any, f_getmarklist}, | 1127 ret_list_dict_any, f_getmarklist}, |
1103 {"getmatches", 0, 1, 0, arg1_number, | 1128 {"getmatches", 0, 1, 0, arg1_number, |
1104 ret_list_dict_any, f_getmatches}, | 1129 ret_list_dict_any, f_getmatches}, |
1106 ret_dict_number, f_getmousepos}, | 1131 ret_dict_number, f_getmousepos}, |
1107 {"getpid", 0, 0, 0, NULL, | 1132 {"getpid", 0, 0, 0, NULL, |
1108 ret_number, f_getpid}, | 1133 ret_number, f_getpid}, |
1109 {"getpos", 1, 1, FEARG_1, arg1_string, | 1134 {"getpos", 1, 1, FEARG_1, arg1_string, |
1110 ret_list_number, f_getpos}, | 1135 ret_list_number, f_getpos}, |
1111 {"getqflist", 0, 1, 0, arg1_dict, | 1136 {"getqflist", 0, 1, 0, arg1_dict_any, |
1112 ret_list_or_dict_0, f_getqflist}, | 1137 ret_list_or_dict_0, f_getqflist}, |
1113 {"getreg", 0, 3, FEARG_1, NULL, | 1138 {"getreg", 0, 3, FEARG_1, NULL, |
1114 ret_getreg, f_getreg}, | 1139 ret_getreg, f_getreg}, |
1115 {"getreginfo", 0, 1, FEARG_1, arg1_string, | 1140 {"getreginfo", 0, 1, FEARG_1, arg1_string, |
1116 ret_dict_any, f_getreginfo}, | 1141 ret_dict_any, f_getreginfo}, |
1156 ret_number_bool, f_hlexists}, | 1181 ret_number_bool, f_hlexists}, |
1157 {"histadd", 2, 2, FEARG_2, arg2_string, | 1182 {"histadd", 2, 2, FEARG_2, arg2_string, |
1158 ret_number_bool, f_histadd}, | 1183 ret_number_bool, f_histadd}, |
1159 {"histdel", 1, 2, FEARG_1, NULL, | 1184 {"histdel", 1, 2, FEARG_1, NULL, |
1160 ret_number_bool, f_histdel}, | 1185 ret_number_bool, f_histdel}, |
1161 {"histget", 1, 2, FEARG_1, NULL, | 1186 {"histget", 1, 2, FEARG_1, arg2_string_nr, |
1162 ret_string, f_histget}, | 1187 ret_string, f_histget}, |
1163 {"histnr", 1, 1, FEARG_1, arg1_string, | 1188 {"histnr", 1, 1, FEARG_1, arg1_string, |
1164 ret_number, f_histnr}, | 1189 ret_number, f_histnr}, |
1165 {"hlID", 1, 1, FEARG_1, arg1_string, | 1190 {"hlID", 1, 1, FEARG_1, arg1_string, |
1166 ret_number, f_hlID}, | 1191 ret_number, f_hlID}, |
1194 ret_number, f_invert}, | 1219 ret_number, f_invert}, |
1195 {"isdirectory", 1, 1, FEARG_1, arg1_string, | 1220 {"isdirectory", 1, 1, FEARG_1, arg1_string, |
1196 ret_number_bool, f_isdirectory}, | 1221 ret_number_bool, f_isdirectory}, |
1197 {"isinf", 1, 1, FEARG_1, arg1_float_or_nr, | 1222 {"isinf", 1, 1, FEARG_1, arg1_float_or_nr, |
1198 ret_number, MATH_FUNC(f_isinf)}, | 1223 ret_number, MATH_FUNC(f_isinf)}, |
1199 {"islocked", 1, 1, FEARG_1, NULL, | 1224 {"islocked", 1, 1, FEARG_1, arg1_string, |
1200 ret_number_bool, f_islocked}, | 1225 ret_number_bool, f_islocked}, |
1201 {"isnan", 1, 1, FEARG_1, arg1_float_or_nr, | 1226 {"isnan", 1, 1, FEARG_1, arg1_float_or_nr, |
1202 ret_number_bool, MATH_FUNC(f_isnan)}, | 1227 ret_number_bool, MATH_FUNC(f_isnan)}, |
1203 {"items", 1, 1, FEARG_1, arg1_dict, | 1228 {"items", 1, 1, FEARG_1, arg1_dict_any, |
1204 ret_list_items, f_items}, | 1229 ret_list_items, f_items}, |
1205 {"job_getchannel", 1, 1, FEARG_1, NULL, | 1230 {"job_getchannel", 1, 1, FEARG_1, arg1_job, |
1206 ret_channel, JOB_FUNC(f_job_getchannel)}, | 1231 ret_channel, JOB_FUNC(f_job_getchannel)}, |
1207 {"job_info", 0, 1, FEARG_1, NULL, | 1232 {"job_info", 0, 1, FEARG_1, arg1_job, |
1208 ret_job_info, JOB_FUNC(f_job_info)}, | 1233 ret_job_info, JOB_FUNC(f_job_info)}, |
1209 {"job_setoptions", 2, 2, FEARG_1, NULL, | 1234 {"job_setoptions", 2, 2, FEARG_1, NULL, |
1210 ret_void, JOB_FUNC(f_job_setoptions)}, | 1235 ret_void, JOB_FUNC(f_job_setoptions)}, |
1211 {"job_start", 1, 2, FEARG_1, NULL, | 1236 {"job_start", 1, 2, FEARG_1, NULL, |
1212 ret_job, JOB_FUNC(f_job_start)}, | 1237 ret_job, JOB_FUNC(f_job_start)}, |
1213 {"job_status", 1, 1, FEARG_1, NULL, | 1238 {"job_status", 1, 1, FEARG_1, arg1_job, |
1214 ret_string, JOB_FUNC(f_job_status)}, | 1239 ret_string, JOB_FUNC(f_job_status)}, |
1215 {"job_stop", 1, 2, FEARG_1, NULL, | 1240 {"job_stop", 1, 2, FEARG_1, NULL, |
1216 ret_number_bool, JOB_FUNC(f_job_stop)}, | 1241 ret_number_bool, JOB_FUNC(f_job_stop)}, |
1217 {"join", 1, 2, FEARG_1, NULL, | 1242 {"join", 1, 2, FEARG_1, NULL, |
1218 ret_string, f_join}, | 1243 ret_string, f_join}, |
1222 ret_string, f_js_encode}, | 1247 ret_string, f_js_encode}, |
1223 {"json_decode", 1, 1, FEARG_1, arg1_string, | 1248 {"json_decode", 1, 1, FEARG_1, arg1_string, |
1224 ret_any, f_json_decode}, | 1249 ret_any, f_json_decode}, |
1225 {"json_encode", 1, 1, FEARG_1, NULL, | 1250 {"json_encode", 1, 1, FEARG_1, NULL, |
1226 ret_string, f_json_encode}, | 1251 ret_string, f_json_encode}, |
1227 {"keys", 1, 1, FEARG_1, arg1_dict, | 1252 {"keys", 1, 1, FEARG_1, arg1_dict_any, |
1228 ret_list_string, f_keys}, | 1253 ret_list_string, f_keys}, |
1229 {"last_buffer_nr", 0, 0, 0, arg1_string_or_nr, // obsolete | 1254 {"last_buffer_nr", 0, 0, 0, arg1_string_or_nr, // obsolete |
1230 ret_number, f_last_buffer_nr}, | 1255 ret_number, f_last_buffer_nr}, |
1231 {"len", 1, 1, FEARG_1, NULL, | 1256 {"len", 1, 1, FEARG_1, NULL, |
1232 ret_number, f_len}, | 1257 ret_number, f_len}, |
1233 {"libcall", 3, 3, FEARG_3, NULL, | 1258 {"libcall", 3, 3, FEARG_3, NULL, |
1234 ret_string, f_libcall}, | 1259 ret_string, f_libcall}, |
1235 {"libcallnr", 3, 3, FEARG_3, NULL, | 1260 {"libcallnr", 3, 3, FEARG_3, NULL, |
1236 ret_number, f_libcallnr}, | 1261 ret_number, f_libcallnr}, |
1237 {"line", 1, 2, FEARG_1, NULL, | 1262 {"line", 1, 2, FEARG_1, arg2_string_nr, |
1238 ret_number, f_line}, | 1263 ret_number, f_line}, |
1239 {"line2byte", 1, 1, FEARG_1, arg1_string_or_nr, | 1264 {"line2byte", 1, 1, FEARG_1, arg1_string_or_nr, |
1240 ret_number, f_line2byte}, | 1265 ret_number, f_line2byte}, |
1241 {"lispindent", 1, 1, FEARG_1, arg1_string_or_nr, | 1266 {"lispindent", 1, 1, FEARG_1, arg1_string_or_nr, |
1242 ret_number, f_lispindent}, | 1267 ret_number, f_lispindent}, |
1292 ret_list_string, f_matchlist}, | 1317 ret_list_string, f_matchlist}, |
1293 {"matchstr", 2, 4, FEARG_1, NULL, | 1318 {"matchstr", 2, 4, FEARG_1, NULL, |
1294 ret_string, f_matchstr}, | 1319 ret_string, f_matchstr}, |
1295 {"matchstrpos", 2, 4, FEARG_1, NULL, | 1320 {"matchstrpos", 2, 4, FEARG_1, NULL, |
1296 ret_list_any, f_matchstrpos}, | 1321 ret_list_any, f_matchstrpos}, |
1297 {"max", 1, 1, FEARG_1, NULL, | 1322 {"max", 1, 1, FEARG_1, arg1_list_or_dict, |
1298 ret_number, f_max}, | 1323 ret_number, f_max}, |
1299 {"menu_info", 1, 2, FEARG_1, arg2_string, | 1324 {"menu_info", 1, 2, FEARG_1, arg2_string, |
1300 ret_dict_any, | 1325 ret_dict_any, |
1301 #ifdef FEAT_MENU | 1326 #ifdef FEAT_MENU |
1302 f_menu_info | 1327 f_menu_info |
1303 #else | 1328 #else |
1304 NULL | 1329 NULL |
1305 #endif | 1330 #endif |
1306 }, | 1331 }, |
1307 {"min", 1, 1, FEARG_1, NULL, | 1332 {"min", 1, 1, FEARG_1, arg1_list_or_dict, |
1308 ret_number, f_min}, | 1333 ret_number, f_min}, |
1309 {"mkdir", 1, 3, FEARG_1, arg3_string_string_nr, | 1334 {"mkdir", 1, 3, FEARG_1, arg3_string_string_nr, |
1310 ret_number_bool, f_mkdir}, | 1335 ret_number_bool, f_mkdir}, |
1311 {"mode", 0, 1, FEARG_1, NULL, | 1336 {"mode", 0, 1, FEARG_1, arg1_bool, |
1312 ret_string, f_mode}, | 1337 ret_string, f_mode}, |
1313 {"mzeval", 1, 1, FEARG_1, NULL, | 1338 {"mzeval", 1, 1, FEARG_1, arg1_string, |
1314 ret_any, | 1339 ret_any, |
1315 #ifdef FEAT_MZSCHEME | 1340 #ifdef FEAT_MZSCHEME |
1316 f_mzeval | 1341 f_mzeval |
1317 #else | 1342 #else |
1318 NULL | 1343 NULL |
1322 ret_number, f_nextnonblank}, | 1347 ret_number, f_nextnonblank}, |
1323 {"nr2char", 1, 2, FEARG_1, NULL, | 1348 {"nr2char", 1, 2, FEARG_1, NULL, |
1324 ret_string, f_nr2char}, | 1349 ret_string, f_nr2char}, |
1325 {"or", 2, 2, FEARG_1, arg2_number, | 1350 {"or", 2, 2, FEARG_1, arg2_number, |
1326 ret_number, f_or}, | 1351 ret_number, f_or}, |
1327 {"pathshorten", 1, 2, FEARG_1, NULL, | 1352 {"pathshorten", 1, 2, FEARG_1, arg2_string_nr, |
1328 ret_string, f_pathshorten}, | 1353 ret_string, f_pathshorten}, |
1329 {"perleval", 1, 1, FEARG_1, NULL, | 1354 {"perleval", 1, 1, FEARG_1, arg1_string, |
1330 ret_any, | 1355 ret_any, |
1331 #ifdef FEAT_PERL | 1356 #ifdef FEAT_PERL |
1332 f_perleval | 1357 f_perleval |
1333 #else | 1358 #else |
1334 NULL | 1359 NULL |
1336 }, | 1361 }, |
1337 {"popup_atcursor", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, | 1362 {"popup_atcursor", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, |
1338 ret_number, PROP_FUNC(f_popup_atcursor)}, | 1363 ret_number, PROP_FUNC(f_popup_atcursor)}, |
1339 {"popup_beval", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, | 1364 {"popup_beval", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, |
1340 ret_number, PROP_FUNC(f_popup_beval)}, | 1365 ret_number, PROP_FUNC(f_popup_beval)}, |
1341 {"popup_clear", 0, 1, 0, NULL, | 1366 {"popup_clear", 0, 1, 0, arg1_bool, |
1342 ret_void, PROP_FUNC(f_popup_clear)}, | 1367 ret_void, PROP_FUNC(f_popup_clear)}, |
1343 {"popup_close", 1, 2, FEARG_1, NULL, | 1368 {"popup_close", 1, 2, FEARG_1, NULL, |
1344 ret_void, PROP_FUNC(f_popup_close)}, | 1369 ret_void, PROP_FUNC(f_popup_close)}, |
1345 {"popup_create", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, | 1370 {"popup_create", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, |
1346 ret_number, PROP_FUNC(f_popup_create)}, | 1371 ret_number, PROP_FUNC(f_popup_create)}, |
1347 {"popup_dialog", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, | 1372 {"popup_dialog", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, |
1348 ret_number, PROP_FUNC(f_popup_dialog)}, | 1373 ret_number, PROP_FUNC(f_popup_dialog)}, |
1349 {"popup_filter_menu", 2, 2, 0, NULL, | 1374 {"popup_filter_menu", 2, 2, 0, arg2_nr_string, |
1350 ret_bool, PROP_FUNC(f_popup_filter_menu)}, | 1375 ret_bool, PROP_FUNC(f_popup_filter_menu)}, |
1351 {"popup_filter_yesno", 2, 2, 0, NULL, | 1376 {"popup_filter_yesno", 2, 2, 0, arg2_nr_string, |
1352 ret_bool, PROP_FUNC(f_popup_filter_yesno)}, | 1377 ret_bool, PROP_FUNC(f_popup_filter_yesno)}, |
1353 {"popup_findinfo", 0, 0, 0, NULL, | 1378 {"popup_findinfo", 0, 0, 0, NULL, |
1354 ret_number, PROP_FUNC(f_popup_findinfo)}, | 1379 ret_number, PROP_FUNC(f_popup_findinfo)}, |
1355 {"popup_findpreview", 0, 0, 0, NULL, | 1380 {"popup_findpreview", 0, 0, 0, NULL, |
1356 ret_number, PROP_FUNC(f_popup_findpreview)}, | 1381 ret_number, PROP_FUNC(f_popup_findpreview)}, |
1357 {"popup_getoptions", 1, 1, FEARG_1, NULL, | 1382 {"popup_getoptions", 1, 1, FEARG_1, arg1_number, |
1358 ret_dict_any, PROP_FUNC(f_popup_getoptions)}, | 1383 ret_dict_any, PROP_FUNC(f_popup_getoptions)}, |
1359 {"popup_getpos", 1, 1, FEARG_1, NULL, | 1384 {"popup_getpos", 1, 1, FEARG_1, arg1_number, |
1360 ret_dict_any, PROP_FUNC(f_popup_getpos)}, | 1385 ret_dict_any, PROP_FUNC(f_popup_getpos)}, |
1361 {"popup_hide", 1, 1, FEARG_1, NULL, | 1386 {"popup_hide", 1, 1, FEARG_1, arg1_number, |
1362 ret_void, PROP_FUNC(f_popup_hide)}, | 1387 ret_void, PROP_FUNC(f_popup_hide)}, |
1363 {"popup_list", 0, 0, 0, NULL, | 1388 {"popup_list", 0, 0, 0, NULL, |
1364 ret_list_number, PROP_FUNC(f_popup_list)}, | 1389 ret_list_number, PROP_FUNC(f_popup_list)}, |
1365 {"popup_locate", 2, 2, 0, arg2_number, | 1390 {"popup_locate", 2, 2, 0, arg2_number, |
1366 ret_number, PROP_FUNC(f_popup_locate)}, | 1391 ret_number, PROP_FUNC(f_popup_locate)}, |
1367 {"popup_menu", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, | 1392 {"popup_menu", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, |
1368 ret_number, PROP_FUNC(f_popup_menu)}, | 1393 ret_number, PROP_FUNC(f_popup_menu)}, |
1369 {"popup_move", 2, 2, FEARG_1, NULL, | 1394 {"popup_move", 2, 2, FEARG_1, arg2_nr_dict_any, |
1370 ret_void, PROP_FUNC(f_popup_move)}, | 1395 ret_void, PROP_FUNC(f_popup_move)}, |
1371 {"popup_notification", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, | 1396 {"popup_notification", 2, 2, FEARG_1, arg2_str_or_nr_or_list_dict, |
1372 ret_number, PROP_FUNC(f_popup_notification)}, | 1397 ret_number, PROP_FUNC(f_popup_notification)}, |
1373 {"popup_setoptions", 2, 2, FEARG_1, NULL, | 1398 {"popup_setoptions", 2, 2, FEARG_1, arg2_nr_dict_any, |
1374 ret_void, PROP_FUNC(f_popup_setoptions)}, | 1399 ret_void, PROP_FUNC(f_popup_setoptions)}, |
1375 {"popup_settext", 2, 2, FEARG_1, NULL, | 1400 {"popup_settext", 2, 2, FEARG_1, NULL, |
1376 ret_void, PROP_FUNC(f_popup_settext)}, | 1401 ret_void, PROP_FUNC(f_popup_settext)}, |
1377 {"popup_show", 1, 1, FEARG_1, NULL, | 1402 {"popup_show", 1, 1, FEARG_1, arg1_number, |
1378 ret_void, PROP_FUNC(f_popup_show)}, | 1403 ret_void, PROP_FUNC(f_popup_show)}, |
1379 {"pow", 2, 2, FEARG_1, arg2_float_or_nr, | 1404 {"pow", 2, 2, FEARG_1, arg2_float_or_nr, |
1380 ret_float, FLOAT_FUNC(f_pow)}, | 1405 ret_float, FLOAT_FUNC(f_pow)}, |
1381 {"prevnonblank", 1, 1, FEARG_1, arg1_string_or_nr, | 1406 {"prevnonblank", 1, 1, FEARG_1, arg1_string_or_nr, |
1382 ret_number, f_prevnonblank}, | 1407 ret_number, f_prevnonblank}, |
1394 ret_void, PROP_FUNC(f_prop_add)}, | 1419 ret_void, PROP_FUNC(f_prop_add)}, |
1395 {"prop_clear", 1, 3, FEARG_1, NULL, | 1420 {"prop_clear", 1, 3, FEARG_1, NULL, |
1396 ret_void, PROP_FUNC(f_prop_clear)}, | 1421 ret_void, PROP_FUNC(f_prop_clear)}, |
1397 {"prop_find", 1, 2, FEARG_1, arg2_dict_string, | 1422 {"prop_find", 1, 2, FEARG_1, arg2_dict_string, |
1398 ret_dict_any, PROP_FUNC(f_prop_find)}, | 1423 ret_dict_any, PROP_FUNC(f_prop_find)}, |
1399 {"prop_list", 1, 2, FEARG_1, NULL, | 1424 {"prop_list", 1, 2, FEARG_1, arg2_nr_dict_any, |
1400 ret_list_dict_any, PROP_FUNC(f_prop_list)}, | 1425 ret_list_dict_any, PROP_FUNC(f_prop_list)}, |
1401 {"prop_remove", 1, 3, FEARG_1, NULL, | 1426 {"prop_remove", 1, 3, FEARG_1, NULL, |
1402 ret_number, PROP_FUNC(f_prop_remove)}, | 1427 ret_number, PROP_FUNC(f_prop_remove)}, |
1403 {"prop_type_add", 2, 2, FEARG_1, arg2_string_dict, | 1428 {"prop_type_add", 2, 2, FEARG_1, arg2_string_dict, |
1404 ret_void, PROP_FUNC(f_prop_type_add)}, | 1429 ret_void, PROP_FUNC(f_prop_type_add)}, |
1406 ret_void, PROP_FUNC(f_prop_type_change)}, | 1431 ret_void, PROP_FUNC(f_prop_type_change)}, |
1407 {"prop_type_delete", 1, 2, FEARG_1, arg2_string_dict, | 1432 {"prop_type_delete", 1, 2, FEARG_1, arg2_string_dict, |
1408 ret_void, PROP_FUNC(f_prop_type_delete)}, | 1433 ret_void, PROP_FUNC(f_prop_type_delete)}, |
1409 {"prop_type_get", 1, 2, FEARG_1, arg2_string_dict, | 1434 {"prop_type_get", 1, 2, FEARG_1, arg2_string_dict, |
1410 ret_dict_any, PROP_FUNC(f_prop_type_get)}, | 1435 ret_dict_any, PROP_FUNC(f_prop_type_get)}, |
1411 {"prop_type_list", 0, 1, FEARG_1, NULL, | 1436 {"prop_type_list", 0, 1, FEARG_1, arg1_dict_any, |
1412 ret_list_string, PROP_FUNC(f_prop_type_list)}, | 1437 ret_list_string, PROP_FUNC(f_prop_type_list)}, |
1413 {"pum_getpos", 0, 0, 0, NULL, | 1438 {"pum_getpos", 0, 0, 0, NULL, |
1414 ret_dict_number, f_pum_getpos}, | 1439 ret_dict_number, f_pum_getpos}, |
1415 {"pumvisible", 0, 0, 0, NULL, | 1440 {"pumvisible", 0, 0, 0, NULL, |
1416 ret_number_bool, f_pumvisible}, | 1441 ret_number_bool, f_pumvisible}, |
1417 {"py3eval", 1, 1, FEARG_1, NULL, | 1442 {"py3eval", 1, 1, FEARG_1, arg1_string, |
1418 ret_any, | 1443 ret_any, |
1419 #ifdef FEAT_PYTHON3 | 1444 #ifdef FEAT_PYTHON3 |
1420 f_py3eval | 1445 f_py3eval |
1421 #else | 1446 #else |
1422 NULL | 1447 NULL |
1423 #endif | 1448 #endif |
1424 }, | 1449 }, |
1425 {"pyeval", 1, 1, FEARG_1, NULL, | 1450 {"pyeval", 1, 1, FEARG_1, arg1_string, |
1426 ret_any, | 1451 ret_any, |
1427 #ifdef FEAT_PYTHON | 1452 #ifdef FEAT_PYTHON |
1428 f_pyeval | 1453 f_pyeval |
1429 #else | 1454 #else |
1430 NULL | 1455 NULL |
1431 #endif | 1456 #endif |
1432 }, | 1457 }, |
1433 {"pyxeval", 1, 1, FEARG_1, NULL, | 1458 {"pyxeval", 1, 1, FEARG_1, arg1_string, |
1434 ret_any, | 1459 ret_any, |
1435 #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) | 1460 #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) |
1436 f_pyxeval | 1461 f_pyxeval |
1437 #else | 1462 #else |
1438 NULL | 1463 NULL |
1466 ret_string, f_remote_expr}, | 1491 ret_string, f_remote_expr}, |
1467 {"remote_foreground", 1, 1, FEARG_1, arg1_string, | 1492 {"remote_foreground", 1, 1, FEARG_1, arg1_string, |
1468 ret_string, f_remote_foreground}, | 1493 ret_string, f_remote_foreground}, |
1469 {"remote_peek", 1, 2, FEARG_1, arg2_string, | 1494 {"remote_peek", 1, 2, FEARG_1, arg2_string, |
1470 ret_number, f_remote_peek}, | 1495 ret_number, f_remote_peek}, |
1471 {"remote_read", 1, 2, FEARG_1, NULL, | 1496 {"remote_read", 1, 2, FEARG_1, arg2_string_nr, |
1472 ret_string, f_remote_read}, | 1497 ret_string, f_remote_read}, |
1473 {"remote_send", 2, 3, FEARG_1, NULL, | 1498 {"remote_send", 2, 3, FEARG_1, NULL, |
1474 ret_string, f_remote_send}, | 1499 ret_string, f_remote_send}, |
1475 {"remote_startserver", 1, 1, FEARG_1, arg1_string, | 1500 {"remote_startserver", 1, 1, FEARG_1, arg1_string, |
1476 ret_void, f_remote_startserver}, | 1501 ret_void, f_remote_startserver}, |
1484 ret_string, f_resolve}, | 1509 ret_string, f_resolve}, |
1485 {"reverse", 1, 1, FEARG_1, arg1_list_or_blob, | 1510 {"reverse", 1, 1, FEARG_1, arg1_list_or_blob, |
1486 ret_first_arg, f_reverse}, | 1511 ret_first_arg, f_reverse}, |
1487 {"round", 1, 1, FEARG_1, arg1_float_or_nr, | 1512 {"round", 1, 1, FEARG_1, arg1_float_or_nr, |
1488 ret_float, FLOAT_FUNC(f_round)}, | 1513 ret_float, FLOAT_FUNC(f_round)}, |
1489 {"rubyeval", 1, 1, FEARG_1, NULL, | 1514 {"rubyeval", 1, 1, FEARG_1, arg1_string, |
1490 ret_any, | 1515 ret_any, |
1491 #ifdef FEAT_RUBY | 1516 #ifdef FEAT_RUBY |
1492 f_rubyeval | 1517 f_rubyeval |
1493 #else | 1518 #else |
1494 NULL | 1519 NULL |
1508 ret_number, f_screenrow}, | 1533 ret_number, f_screenrow}, |
1509 {"screenstring", 2, 2, FEARG_1, arg2_number, | 1534 {"screenstring", 2, 2, FEARG_1, arg2_number, |
1510 ret_string, f_screenstring}, | 1535 ret_string, f_screenstring}, |
1511 {"search", 1, 5, FEARG_1, NULL, | 1536 {"search", 1, 5, FEARG_1, NULL, |
1512 ret_number, f_search}, | 1537 ret_number, f_search}, |
1513 {"searchcount", 0, 1, FEARG_1, arg1_dict, | 1538 {"searchcount", 0, 1, FEARG_1, arg1_dict_any, |
1514 ret_dict_any, f_searchcount}, | 1539 ret_dict_any, f_searchcount}, |
1515 {"searchdecl", 1, 3, FEARG_1, NULL, | 1540 {"searchdecl", 1, 3, FEARG_1, NULL, |
1516 ret_number_bool, f_searchdecl}, | 1541 ret_number_bool, f_searchdecl}, |
1517 {"searchpair", 3, 7, 0, NULL, | 1542 {"searchpair", 3, 7, 0, NULL, |
1518 ret_number, f_searchpair}, | 1543 ret_number, f_searchpair}, |
1522 ret_list_number, f_searchpos}, | 1547 ret_list_number, f_searchpos}, |
1523 {"server2client", 2, 2, FEARG_1, arg2_string, | 1548 {"server2client", 2, 2, FEARG_1, arg2_string, |
1524 ret_number_bool, f_server2client}, | 1549 ret_number_bool, f_server2client}, |
1525 {"serverlist", 0, 0, 0, NULL, | 1550 {"serverlist", 0, 0, 0, NULL, |
1526 ret_string, f_serverlist}, | 1551 ret_string, f_serverlist}, |
1527 {"setbufline", 3, 3, FEARG_3, NULL, | 1552 {"setbufline", 3, 3, FEARG_3, arg3_setbufline, |
1528 ret_number_bool, f_setbufline}, | 1553 ret_number_bool, f_setbufline}, |
1529 {"setbufvar", 3, 3, FEARG_3, NULL, | 1554 {"setbufvar", 3, 3, FEARG_3, NULL, |
1530 ret_void, f_setbufvar}, | 1555 ret_void, f_setbufvar}, |
1531 {"setcellwidths", 1, 1, FEARG_1, NULL, | 1556 {"setcellwidths", 1, 1, FEARG_1, arg1_list_any, |
1532 ret_void, f_setcellwidths}, | 1557 ret_void, f_setcellwidths}, |
1533 {"setcharpos", 2, 2, FEARG_2, NULL, | 1558 {"setcharpos", 2, 2, FEARG_2, NULL, |
1534 ret_number_bool, f_setcharpos}, | 1559 ret_number_bool, f_setcharpos}, |
1535 {"setcharsearch", 1, 1, FEARG_1, arg1_dict, | 1560 {"setcharsearch", 1, 1, FEARG_1, arg1_dict_any, |
1536 ret_void, f_setcharsearch}, | 1561 ret_void, f_setcharsearch}, |
1537 {"setcmdpos", 1, 1, FEARG_1, arg1_number, | 1562 {"setcmdpos", 1, 1, FEARG_1, arg1_number, |
1538 ret_number_bool, f_setcmdpos}, | 1563 ret_number_bool, f_setcmdpos}, |
1539 {"setcursorcharpos", 1, 3, FEARG_1, NULL, | 1564 {"setcursorcharpos", 1, 3, FEARG_1, NULL, |
1540 ret_number_bool, f_setcursorcharpos}, | 1565 ret_number_bool, f_setcursorcharpos}, |
1541 {"setenv", 2, 2, FEARG_2, NULL, | 1566 {"setenv", 2, 2, FEARG_2, NULL, |
1542 ret_void, f_setenv}, | 1567 ret_void, f_setenv}, |
1543 {"setfperm", 2, 2, FEARG_1, arg2_string, | 1568 {"setfperm", 2, 2, FEARG_1, arg2_string, |
1544 ret_number_bool, f_setfperm}, | 1569 ret_number_bool, f_setfperm}, |
1545 {"setline", 2, 2, FEARG_2, NULL, | 1570 {"setline", 2, 2, FEARG_2, arg2_setline, |
1546 ret_number_bool, f_setline}, | 1571 ret_number_bool, f_setline}, |
1547 {"setloclist", 2, 4, FEARG_2, NULL, | 1572 {"setloclist", 2, 4, FEARG_2, NULL, |
1548 ret_number_bool, f_setloclist}, | 1573 ret_number_bool, f_setloclist}, |
1549 {"setmatches", 1, 2, FEARG_1, NULL, | 1574 {"setmatches", 1, 2, FEARG_1, NULL, |
1550 ret_number_bool, f_setmatches}, | 1575 ret_number_bool, f_setmatches}, |
1574 ret_string, f_shellescape}, | 1599 ret_string, f_shellescape}, |
1575 {"shiftwidth", 0, 1, FEARG_1, arg1_number, | 1600 {"shiftwidth", 0, 1, FEARG_1, arg1_number, |
1576 ret_number, f_shiftwidth}, | 1601 ret_number, f_shiftwidth}, |
1577 {"sign_define", 1, 2, FEARG_1, arg2_string_or_list_dict, | 1602 {"sign_define", 1, 2, FEARG_1, arg2_string_or_list_dict, |
1578 ret_any, SIGN_FUNC(f_sign_define)}, | 1603 ret_any, SIGN_FUNC(f_sign_define)}, |
1579 {"sign_getdefined", 0, 1, FEARG_1, NULL, | 1604 {"sign_getdefined", 0, 1, FEARG_1, arg1_string, |
1580 ret_list_dict_any, SIGN_FUNC(f_sign_getdefined)}, | 1605 ret_list_dict_any, SIGN_FUNC(f_sign_getdefined)}, |
1581 {"sign_getplaced", 0, 2, FEARG_1, NULL, | 1606 {"sign_getplaced", 0, 2, FEARG_1, NULL, |
1582 ret_list_dict_any, SIGN_FUNC(f_sign_getplaced)}, | 1607 ret_list_dict_any, SIGN_FUNC(f_sign_getplaced)}, |
1583 {"sign_jump", 3, 3, FEARG_1, NULL, | 1608 {"sign_jump", 3, 3, FEARG_1, NULL, |
1584 ret_number, SIGN_FUNC(f_sign_jump)}, | 1609 ret_number, SIGN_FUNC(f_sign_jump)}, |
1585 {"sign_place", 4, 5, FEARG_1, NULL, | 1610 {"sign_place", 4, 5, FEARG_1, NULL, |
1586 ret_number, SIGN_FUNC(f_sign_place)}, | 1611 ret_number, SIGN_FUNC(f_sign_place)}, |
1587 {"sign_placelist", 1, 1, FEARG_1, NULL, | 1612 {"sign_placelist", 1, 1, FEARG_1, arg1_list_any, |
1588 ret_list_number, SIGN_FUNC(f_sign_placelist)}, | 1613 ret_list_number, SIGN_FUNC(f_sign_placelist)}, |
1589 {"sign_undefine", 0, 1, FEARG_1, arg1_string_or_list_string, | 1614 {"sign_undefine", 0, 1, FEARG_1, arg1_string_or_list_string, |
1590 ret_number_bool, SIGN_FUNC(f_sign_undefine)}, | 1615 ret_number_bool, SIGN_FUNC(f_sign_undefine)}, |
1591 {"sign_unplace", 1, 2, FEARG_1, arg2_string_dict, | 1616 {"sign_unplace", 1, 2, FEARG_1, arg2_string_dict, |
1592 ret_number_bool, SIGN_FUNC(f_sign_unplace)}, | 1617 ret_number_bool, SIGN_FUNC(f_sign_unplace)}, |
1593 {"sign_unplacelist", 1, 2, FEARG_1, NULL, | 1618 {"sign_unplacelist", 1, 2, FEARG_1, arg1_list_any, |
1594 ret_list_number, SIGN_FUNC(f_sign_unplacelist)}, | 1619 ret_list_number, SIGN_FUNC(f_sign_unplacelist)}, |
1595 {"simplify", 1, 1, FEARG_1, arg1_string, | 1620 {"simplify", 1, 1, FEARG_1, arg1_string, |
1596 ret_string, f_simplify}, | 1621 ret_string, f_simplify}, |
1597 {"sin", 1, 1, FEARG_1, arg1_float_or_nr, | 1622 {"sin", 1, 1, FEARG_1, arg1_float_or_nr, |
1598 ret_float, FLOAT_FUNC(f_sin)}, | 1623 ret_float, FLOAT_FUNC(f_sin)}, |
1628 ret_float, FLOAT_FUNC(f_str2float)}, | 1653 ret_float, FLOAT_FUNC(f_str2float)}, |
1629 {"str2list", 1, 2, FEARG_1, NULL, | 1654 {"str2list", 1, 2, FEARG_1, NULL, |
1630 ret_list_number, f_str2list}, | 1655 ret_list_number, f_str2list}, |
1631 {"str2nr", 1, 3, FEARG_1, arg3_string_nr_bool, | 1656 {"str2nr", 1, 3, FEARG_1, arg3_string_nr_bool, |
1632 ret_number, f_str2nr}, | 1657 ret_number, f_str2nr}, |
1633 {"strcharlen", 1, 1, FEARG_1, NULL, | 1658 {"strcharlen", 1, 1, FEARG_1, arg1_string_or_nr, |
1634 ret_number, f_strcharlen}, | 1659 ret_number, f_strcharlen}, |
1635 {"strcharpart", 2, 4, FEARG_1, NULL, | 1660 {"strcharpart", 2, 4, FEARG_1, NULL, |
1636 ret_string, f_strcharpart}, | 1661 ret_string, f_strcharpart}, |
1637 {"strchars", 1, 2, FEARG_1, NULL, | 1662 {"strchars", 1, 2, FEARG_1, NULL, |
1638 ret_number, f_strchars}, | 1663 ret_number, f_strchars}, |
1639 {"strdisplaywidth", 1, 2, FEARG_1, NULL, | 1664 {"strdisplaywidth", 1, 2, FEARG_1, arg2_string_nr, |
1640 ret_number, f_strdisplaywidth}, | 1665 ret_number, f_strdisplaywidth}, |
1641 {"strftime", 1, 2, FEARG_1, NULL, | 1666 {"strftime", 1, 2, FEARG_1, arg2_string_nr, |
1642 ret_string, | 1667 ret_string, |
1643 #ifdef HAVE_STRFTIME | 1668 #ifdef HAVE_STRFTIME |
1644 f_strftime | 1669 f_strftime |
1645 #else | 1670 #else |
1646 NULL | 1671 NULL |
1647 #endif | 1672 #endif |
1648 }, | 1673 }, |
1649 {"strgetchar", 2, 2, FEARG_1, NULL, | 1674 {"strgetchar", 2, 2, FEARG_1, arg2_string_nr, |
1650 ret_number, f_strgetchar}, | 1675 ret_number, f_strgetchar}, |
1651 {"stridx", 2, 3, FEARG_1, arg3_string_string_nr, | 1676 {"stridx", 2, 3, FEARG_1, arg3_string_string_nr, |
1652 ret_number, f_stridx}, | 1677 ret_number, f_stridx}, |
1653 {"string", 1, 1, FEARG_1, NULL, | 1678 {"string", 1, 1, FEARG_1, NULL, |
1654 ret_string, f_string}, | 1679 ret_string, f_string}, |
1694 ret_list_string, f_systemlist}, | 1719 ret_list_string, f_systemlist}, |
1695 {"tabpagebuflist", 0, 1, FEARG_1, arg1_number, | 1720 {"tabpagebuflist", 0, 1, FEARG_1, arg1_number, |
1696 ret_list_number, f_tabpagebuflist}, | 1721 ret_list_number, f_tabpagebuflist}, |
1697 {"tabpagenr", 0, 1, 0, arg1_string, | 1722 {"tabpagenr", 0, 1, 0, arg1_string, |
1698 ret_number, f_tabpagenr}, | 1723 ret_number, f_tabpagenr}, |
1699 {"tabpagewinnr", 1, 2, FEARG_1, NULL, | 1724 {"tabpagewinnr", 1, 2, FEARG_1, arg2_nr_string, |
1700 ret_number, f_tabpagewinnr}, | 1725 ret_number, f_tabpagewinnr}, |
1701 {"tagfiles", 0, 0, 0, NULL, | 1726 {"tagfiles", 0, 0, 0, NULL, |
1702 ret_list_string, f_tagfiles}, | 1727 ret_list_string, f_tagfiles}, |
1703 {"taglist", 1, 2, FEARG_1, arg2_string, | 1728 {"taglist", 1, 2, FEARG_1, arg2_string, |
1704 ret_list_dict_any, f_taglist}, | 1729 ret_list_dict_any, f_taglist}, |
1722 f_term_getansicolors | 1747 f_term_getansicolors |
1723 #else | 1748 #else |
1724 NULL | 1749 NULL |
1725 #endif | 1750 #endif |
1726 }, | 1751 }, |
1727 {"term_getattr", 2, 2, FEARG_1, NULL, | 1752 {"term_getattr", 2, 2, FEARG_1, arg2_nr_string, |
1728 ret_number, TERM_FUNC(f_term_getattr)}, | 1753 ret_number, TERM_FUNC(f_term_getattr)}, |
1729 {"term_getcursor", 1, 1, FEARG_1, arg1_string_or_nr, | 1754 {"term_getcursor", 1, 1, FEARG_1, arg1_string_or_nr, |
1730 ret_list_any, TERM_FUNC(f_term_getcursor)}, | 1755 ret_list_any, TERM_FUNC(f_term_getcursor)}, |
1731 {"term_getjob", 1, 1, FEARG_1, arg1_string_or_nr, | 1756 {"term_getjob", 1, 1, FEARG_1, arg1_string_or_nr, |
1732 ret_job, TERM_FUNC(f_term_getjob)}, | 1757 ret_job, TERM_FUNC(f_term_getjob)}, |
1804 ret_func_any, f_test_null_partial}, | 1829 ret_func_any, f_test_null_partial}, |
1805 {"test_null_string", 0, 0, 0, NULL, | 1830 {"test_null_string", 0, 0, 0, NULL, |
1806 ret_string, f_test_null_string}, | 1831 ret_string, f_test_null_string}, |
1807 {"test_option_not_set", 1, 1, FEARG_1, arg1_string, | 1832 {"test_option_not_set", 1, 1, FEARG_1, arg1_string, |
1808 ret_void, f_test_option_not_set}, | 1833 ret_void, f_test_option_not_set}, |
1809 {"test_override", 2, 2, FEARG_2, NULL, | 1834 {"test_override", 2, 2, FEARG_2, arg2_string_nr, |
1810 ret_void, f_test_override}, | 1835 ret_void, f_test_override}, |
1811 {"test_refcount", 1, 1, FEARG_1, NULL, | 1836 {"test_refcount", 1, 1, FEARG_1, NULL, |
1812 ret_number, f_test_refcount}, | 1837 ret_number, f_test_refcount}, |
1813 {"test_scrollbar", 3, 3, FEARG_2, NULL, | 1838 {"test_scrollbar", 3, 3, FEARG_2, NULL, |
1814 ret_void, | 1839 ret_void, |
1856 ret_string, f_undofile}, | 1881 ret_string, f_undofile}, |
1857 {"undotree", 0, 0, 0, NULL, | 1882 {"undotree", 0, 0, 0, NULL, |
1858 ret_dict_any, f_undotree}, | 1883 ret_dict_any, f_undotree}, |
1859 {"uniq", 1, 3, FEARG_1, NULL, | 1884 {"uniq", 1, 3, FEARG_1, NULL, |
1860 ret_list_any, f_uniq}, | 1885 ret_list_any, f_uniq}, |
1861 {"values", 1, 1, FEARG_1, arg1_dict, | 1886 {"values", 1, 1, FEARG_1, arg1_dict_any, |
1862 ret_list_any, f_values}, | 1887 ret_list_any, f_values}, |
1863 {"virtcol", 1, 1, FEARG_1, arg1_string_or_list_any, | 1888 {"virtcol", 1, 1, FEARG_1, arg1_string_or_list_any, |
1864 ret_number, f_virtcol}, | 1889 ret_number, f_virtcol}, |
1865 {"visualmode", 0, 1, 0, NULL, | 1890 {"visualmode", 0, 1, 0, arg1_bool, |
1866 ret_string, f_visualmode}, | 1891 ret_string, f_visualmode}, |
1867 {"wildmenumode", 0, 0, 0, NULL, | 1892 {"wildmenumode", 0, 0, 0, NULL, |
1868 ret_number, f_wildmenumode}, | 1893 ret_number, f_wildmenumode}, |
1869 {"win_execute", 2, 3, FEARG_2, arg23_win_execute, | 1894 {"win_execute", 2, 3, FEARG_2, arg23_win_execute, |
1870 ret_string, f_win_execute}, | 1895 ret_string, f_win_execute}, |
1898 ret_number, f_winline}, | 1923 ret_number, f_winline}, |
1899 {"winnr", 0, 1, FEARG_1, arg1_string, | 1924 {"winnr", 0, 1, FEARG_1, arg1_string, |
1900 ret_number, f_winnr}, | 1925 ret_number, f_winnr}, |
1901 {"winrestcmd", 0, 0, 0, NULL, | 1926 {"winrestcmd", 0, 0, 0, NULL, |
1902 ret_string, f_winrestcmd}, | 1927 ret_string, f_winrestcmd}, |
1903 {"winrestview", 1, 1, FEARG_1, arg1_dict, | 1928 {"winrestview", 1, 1, FEARG_1, arg1_dict_any, |
1904 ret_void, f_winrestview}, | 1929 ret_void, f_winrestview}, |
1905 {"winsaveview", 0, 0, 0, NULL, | 1930 {"winsaveview", 0, 0, 0, NULL, |
1906 ret_dict_number, f_winsaveview}, | 1931 ret_dict_number, f_winsaveview}, |
1907 {"winwidth", 1, 1, FEARG_1, arg1_number, | 1932 {"winwidth", 1, 1, FEARG_1, arg1_number, |
1908 ret_number, f_winwidth}, | 1933 ret_number, f_winwidth}, |
2761 * "echoraw({expr})" function | 2786 * "echoraw({expr})" function |
2762 */ | 2787 */ |
2763 static void | 2788 static void |
2764 f_echoraw(typval_T *argvars, typval_T *rettv UNUSED) | 2789 f_echoraw(typval_T *argvars, typval_T *rettv UNUSED) |
2765 { | 2790 { |
2766 char_u *str = tv_get_string_chk(&argvars[0]); | 2791 char_u *str; |
2767 | 2792 |
2793 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) | |
2794 return; | |
2795 | |
2796 str = tv_get_string_chk(&argvars[0]); | |
2768 if (str != NULL && *str != NUL) | 2797 if (str != NULL && *str != NUL) |
2769 { | 2798 { |
2770 out_str(str); | 2799 out_str(str); |
2771 out_flush(); | 2800 out_flush(); |
2772 } | 2801 } |
5954 lval_T lv; | 5983 lval_T lv; |
5955 char_u *end; | 5984 char_u *end; |
5956 dictitem_T *di; | 5985 dictitem_T *di; |
5957 | 5986 |
5958 rettv->vval.v_number = -1; | 5987 rettv->vval.v_number = -1; |
5988 | |
5989 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) | |
5990 return; | |
5991 | |
5959 end = get_lval(tv_get_string(&argvars[0]), NULL, &lv, FALSE, FALSE, | 5992 end = get_lval(tv_get_string(&argvars[0]), NULL, &lv, FALSE, FALSE, |
5960 GLV_NO_AUTOLOAD | GLV_READ_ONLY, FNE_CHECK_START); | 5993 GLV_NO_AUTOLOAD | GLV_READ_ONLY, FNE_CHECK_START); |
5961 if (end != NULL && lv.ll_name != NULL) | 5994 if (end != NULL && lv.ll_name != NULL) |
5962 { | 5995 { |
5963 if (*end != NUL) | 5996 if (*end != NUL) |
6119 int id; | 6152 int id; |
6120 tabpage_T *tp; | 6153 tabpage_T *tp; |
6121 win_T *wp; | 6154 win_T *wp; |
6122 win_T *save_curwin; | 6155 win_T *save_curwin; |
6123 tabpage_T *save_curtab; | 6156 tabpage_T *save_curtab; |
6157 | |
6158 if (in_vim9script() | |
6159 && (check_for_string_arg(argvars, 0) == FAIL | |
6160 || (argvars[1].v_type != VAR_UNKNOWN | |
6161 && check_for_number_arg(argvars, 1) == FAIL))) | |
6162 return; | |
6124 | 6163 |
6125 if (argvars[1].v_type != VAR_UNKNOWN) | 6164 if (argvars[1].v_type != VAR_UNKNOWN) |
6126 { | 6165 { |
6127 // use window specified in the second argument | 6166 // use window specified in the second argument |
6128 id = (int)tv_get_number(&argvars[1]); | 6167 id = (int)tv_get_number(&argvars[1]); |