Mercurial > vim
comparison src/evalfunc.c @ 19564:06f29b6ea04a v8.2.0339
patch 8.2.0339: Vim9: function return type may depend on arguments
Commit: https://github.com/vim/vim/commit/fbdd08ed9b1798885915c7f27c94786906d258e4
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Mar 1 14:04:46 2020 +0100
patch 8.2.0339: Vim9: function return type may depend on arguments
Problem: Vim9: function return type may depend on arguments.
Solution: Instead of a fixed return type use a function to figure out the
return type.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 01 Mar 2020 14:15:04 +0100 |
parents | b38d73f36467 |
children | 87379c82e9c9 |
comparison
equal
deleted
inserted
replaced
19563:5d3a4b28a95b | 19564:06f29b6ea04a |
---|---|
262 static void f_wildmenumode(typval_T *argvars, typval_T *rettv); | 262 static void f_wildmenumode(typval_T *argvars, typval_T *rettv); |
263 static void f_windowsversion(typval_T *argvars, typval_T *rettv); | 263 static void f_windowsversion(typval_T *argvars, typval_T *rettv); |
264 static void f_wordcount(typval_T *argvars, typval_T *rettv); | 264 static void f_wordcount(typval_T *argvars, typval_T *rettv); |
265 static void f_xor(typval_T *argvars, typval_T *rettv); | 265 static void f_xor(typval_T *argvars, typval_T *rettv); |
266 | 266 |
267 | |
268 static type_T * | |
269 ret_void(int argcount UNUSED, type_T **argtypes UNUSED) | |
270 { | |
271 return &t_void; | |
272 } | |
273 static type_T * | |
274 ret_any(int argcount UNUSED, type_T **argtypes UNUSED) | |
275 { | |
276 return &t_any; | |
277 } | |
278 static type_T * | |
279 ret_number(int argcount UNUSED, type_T **argtypes UNUSED) | |
280 { | |
281 return &t_number; | |
282 } | |
283 static type_T * | |
284 ret_float(int argcount UNUSED, type_T **argtypes UNUSED) | |
285 { | |
286 return &t_float; | |
287 } | |
288 static type_T * | |
289 ret_string(int argcount UNUSED, type_T **argtypes UNUSED) | |
290 { | |
291 return &t_string; | |
292 } | |
293 static type_T * ret_list_any(int argcount UNUSED, type_T **argtypes UNUSED) | |
294 { | |
295 return &t_list_any; | |
296 } | |
297 static type_T * | |
298 ret_list_number(int argcount UNUSED, type_T **argtypes UNUSED) | |
299 { | |
300 return &t_list_number; | |
301 } | |
302 static type_T * | |
303 ret_list_string(int argcount UNUSED, type_T **argtypes UNUSED) | |
304 { | |
305 return &t_list_string; | |
306 } | |
307 static type_T * | |
308 ret_list_dict_any(int argcount UNUSED, type_T **argtypes UNUSED) | |
309 { | |
310 return &t_list_dict_any; | |
311 } | |
312 static type_T * | |
313 ret_dict_any(int argcount UNUSED, type_T **argtypes UNUSED) | |
314 { | |
315 return &t_dict_any; | |
316 } | |
317 static type_T * | |
318 ret_dict_number(int argcount UNUSED, type_T **argtypes UNUSED) | |
319 { | |
320 return &t_dict_number; | |
321 } | |
322 static type_T * | |
323 ret_dict_string(int argcount UNUSED, type_T **argtypes UNUSED) | |
324 { | |
325 return &t_dict_string; | |
326 } | |
327 static type_T * | |
328 ret_blob(int argcount UNUSED, type_T **argtypes UNUSED) | |
329 { | |
330 return &t_blob; | |
331 } | |
332 static type_T * | |
333 ret_partial_void(int argcount UNUSED, type_T **argtypes UNUSED) | |
334 { | |
335 return &t_partial_void; | |
336 } | |
337 #ifdef FEAT_JOB_CHANNEL | |
338 static type_T * | |
339 ret_channel(int argcount UNUSED, type_T **argtypes UNUSED) | |
340 { | |
341 return &t_channel; | |
342 } | |
343 static type_T * | |
344 ret_job(int argcount UNUSED, type_T **argtypes UNUSED) | |
345 { | |
346 return &t_job; | |
347 } | |
348 #endif | |
349 | |
350 static type_T *ret_f_function(int argcount, type_T **argtypes); | |
351 | |
267 /* | 352 /* |
268 * Array with names and number of arguments of all internal functions | 353 * Array with names and number of arguments of all internal functions |
269 * MUST BE KEPT SORTED IN strcmp() ORDER FOR BINARY SEARCH! | 354 * MUST BE KEPT SORTED IN strcmp() ORDER FOR BINARY SEARCH! |
270 */ | 355 */ |
271 typedef struct | 356 typedef struct |
272 { | 357 { |
273 char *f_name; // function name | 358 char *f_name; // function name |
274 char f_min_argc; // minimal number of arguments | 359 char f_min_argc; // minimal number of arguments |
275 char f_max_argc; // maximal number of arguments | 360 char f_max_argc; // maximal number of arguments |
276 char f_argtype; // for method: FEARG_ values | 361 char f_argtype; // for method: FEARG_ values |
277 type_T *f_rettype; // return type | 362 type_T *(*f_retfunc)(int argcount, type_T **argtypes); |
363 // return type function | |
278 void (*f_func)(typval_T *args, typval_T *rvar); | 364 void (*f_func)(typval_T *args, typval_T *rvar); |
279 // implementation of function | 365 // implementation of function |
280 } funcentry_T; | 366 } funcentry_T; |
281 | 367 |
282 // values for f_argtype; zero means it cannot be used as a method | 368 // values for f_argtype; zero means it cannot be used as a method |
287 #define FEARG_LAST 9 // base is the last argument | 373 #define FEARG_LAST 9 // base is the last argument |
288 | 374 |
289 static funcentry_T global_functions[] = | 375 static funcentry_T global_functions[] = |
290 { | 376 { |
291 #ifdef FEAT_FLOAT | 377 #ifdef FEAT_FLOAT |
292 {"abs", 1, 1, FEARG_1, &t_any, f_abs}, | 378 {"abs", 1, 1, FEARG_1, ret_any, f_abs}, |
293 {"acos", 1, 1, FEARG_1, &t_float, f_acos}, // WJMc | 379 {"acos", 1, 1, FEARG_1, ret_float, f_acos}, // WJMc |
294 #endif | 380 #endif |
295 {"add", 2, 2, FEARG_1, &t_any, f_add}, | 381 {"add", 2, 2, FEARG_1, ret_any, f_add}, |
296 {"and", 2, 2, FEARG_1, &t_number, f_and}, | 382 {"and", 2, 2, FEARG_1, ret_number, f_and}, |
297 {"append", 2, 2, FEARG_LAST, &t_number, f_append}, | 383 {"append", 2, 2, FEARG_LAST, ret_number, f_append}, |
298 {"appendbufline", 3, 3, FEARG_LAST, &t_number, f_appendbufline}, | 384 {"appendbufline", 3, 3, FEARG_LAST, ret_number, f_appendbufline}, |
299 {"argc", 0, 1, 0, &t_number, f_argc}, | 385 {"argc", 0, 1, 0, ret_number, f_argc}, |
300 {"argidx", 0, 0, 0, &t_number, f_argidx}, | 386 {"argidx", 0, 0, 0, ret_number, f_argidx}, |
301 {"arglistid", 0, 2, 0, &t_number, f_arglistid}, | 387 {"arglistid", 0, 2, 0, ret_number, f_arglistid}, |
302 {"argv", 0, 2, 0, &t_any, f_argv}, | 388 {"argv", 0, 2, 0, ret_any, f_argv}, |
303 #ifdef FEAT_FLOAT | 389 #ifdef FEAT_FLOAT |
304 {"asin", 1, 1, FEARG_1, &t_float, f_asin}, // WJMc | 390 {"asin", 1, 1, FEARG_1, ret_float, f_asin}, // WJMc |
305 #endif | 391 #endif |
306 {"assert_beeps", 1, 2, FEARG_1, &t_number, f_assert_beeps}, | 392 {"assert_beeps", 1, 2, FEARG_1, ret_number, f_assert_beeps}, |
307 {"assert_equal", 2, 3, FEARG_2, &t_number, f_assert_equal}, | 393 {"assert_equal", 2, 3, FEARG_2, ret_number, f_assert_equal}, |
308 {"assert_equalfile", 2, 2, FEARG_1, &t_number, f_assert_equalfile}, | 394 {"assert_equalfile", 2, 2, FEARG_1, ret_number, f_assert_equalfile}, |
309 {"assert_exception", 1, 2, 0, &t_number, f_assert_exception}, | 395 {"assert_exception", 1, 2, 0, ret_number, f_assert_exception}, |
310 {"assert_fails", 1, 3, FEARG_1, &t_number, f_assert_fails}, | 396 {"assert_fails", 1, 3, FEARG_1, ret_number, f_assert_fails}, |
311 {"assert_false", 1, 2, FEARG_1, &t_number, f_assert_false}, | 397 {"assert_false", 1, 2, FEARG_1, ret_number, f_assert_false}, |
312 {"assert_inrange", 3, 4, FEARG_3, &t_number, f_assert_inrange}, | 398 {"assert_inrange", 3, 4, FEARG_3, ret_number, f_assert_inrange}, |
313 {"assert_match", 2, 3, FEARG_2, &t_number, f_assert_match}, | 399 {"assert_match", 2, 3, FEARG_2, ret_number, f_assert_match}, |
314 {"assert_notequal", 2, 3, FEARG_2, &t_number, f_assert_notequal}, | 400 {"assert_notequal", 2, 3, FEARG_2, ret_number, f_assert_notequal}, |
315 {"assert_notmatch", 2, 3, FEARG_2, &t_number, f_assert_notmatch}, | 401 {"assert_notmatch", 2, 3, FEARG_2, ret_number, f_assert_notmatch}, |
316 {"assert_report", 1, 1, FEARG_1, &t_number, f_assert_report}, | 402 {"assert_report", 1, 1, FEARG_1, ret_number, f_assert_report}, |
317 {"assert_true", 1, 2, FEARG_1, &t_number, f_assert_true}, | 403 {"assert_true", 1, 2, FEARG_1, ret_number, f_assert_true}, |
318 #ifdef FEAT_FLOAT | 404 #ifdef FEAT_FLOAT |
319 {"atan", 1, 1, FEARG_1, &t_float, f_atan}, | 405 {"atan", 1, 1, FEARG_1, ret_float, f_atan}, |
320 {"atan2", 2, 2, FEARG_1, &t_float, f_atan2}, | 406 {"atan2", 2, 2, FEARG_1, ret_float, f_atan2}, |
321 #endif | 407 #endif |
322 #ifdef FEAT_BEVAL | 408 #ifdef FEAT_BEVAL |
323 {"balloon_gettext", 0, 0, 0, &t_string, f_balloon_gettext}, | 409 {"balloon_gettext", 0, 0, 0, ret_string, f_balloon_gettext}, |
324 {"balloon_show", 1, 1, FEARG_1, &t_void, f_balloon_show}, | 410 {"balloon_show", 1, 1, FEARG_1, ret_void, f_balloon_show}, |
325 # if defined(FEAT_BEVAL_TERM) | 411 # if defined(FEAT_BEVAL_TERM) |
326 {"balloon_split", 1, 1, FEARG_1, &t_list_string, f_balloon_split}, | 412 {"balloon_split", 1, 1, FEARG_1, ret_list_string, f_balloon_split}, |
327 # endif | 413 # endif |
328 #endif | 414 #endif |
329 {"browse", 4, 4, 0, &t_string, f_browse}, | 415 {"browse", 4, 4, 0, ret_string, f_browse}, |
330 {"browsedir", 2, 2, 0, &t_string, f_browsedir}, | 416 {"browsedir", 2, 2, 0, ret_string, f_browsedir}, |
331 {"bufadd", 1, 1, FEARG_1, &t_number, f_bufadd}, | 417 {"bufadd", 1, 1, FEARG_1, ret_number, f_bufadd}, |
332 {"bufexists", 1, 1, FEARG_1, &t_number, f_bufexists}, | 418 {"bufexists", 1, 1, FEARG_1, ret_number, f_bufexists}, |
333 {"buffer_exists", 1, 1, FEARG_1, &t_number, f_bufexists}, // obsolete | 419 {"buffer_exists", 1, 1, FEARG_1, ret_number, f_bufexists}, // obsolete |
334 {"buffer_name", 0, 1, FEARG_1, &t_string, f_bufname}, // obsolete | 420 {"buffer_name", 0, 1, FEARG_1, ret_string, f_bufname}, // obsolete |
335 {"buffer_number", 0, 1, FEARG_1, &t_number, f_bufnr}, // obsolete | 421 {"buffer_number", 0, 1, FEARG_1, ret_number, f_bufnr}, // obsolete |
336 {"buflisted", 1, 1, FEARG_1, &t_number, f_buflisted}, | 422 {"buflisted", 1, 1, FEARG_1, ret_number, f_buflisted}, |
337 {"bufload", 1, 1, FEARG_1, &t_void, f_bufload}, | 423 {"bufload", 1, 1, FEARG_1, ret_void, f_bufload}, |
338 {"bufloaded", 1, 1, FEARG_1, &t_number, f_bufloaded}, | 424 {"bufloaded", 1, 1, FEARG_1, ret_number, f_bufloaded}, |
339 {"bufname", 0, 1, FEARG_1, &t_string, f_bufname}, | 425 {"bufname", 0, 1, FEARG_1, ret_string, f_bufname}, |
340 {"bufnr", 0, 2, FEARG_1, &t_number, f_bufnr}, | 426 {"bufnr", 0, 2, FEARG_1, ret_number, f_bufnr}, |
341 {"bufwinid", 1, 1, FEARG_1, &t_number, f_bufwinid}, | 427 {"bufwinid", 1, 1, FEARG_1, ret_number, f_bufwinid}, |
342 {"bufwinnr", 1, 1, FEARG_1, &t_number, f_bufwinnr}, | 428 {"bufwinnr", 1, 1, FEARG_1, ret_number, f_bufwinnr}, |
343 {"byte2line", 1, 1, FEARG_1, &t_number, f_byte2line}, | 429 {"byte2line", 1, 1, FEARG_1, ret_number, f_byte2line}, |
344 {"byteidx", 2, 2, FEARG_1, &t_number, f_byteidx}, | 430 {"byteidx", 2, 2, FEARG_1, ret_number, f_byteidx}, |
345 {"byteidxcomp", 2, 2, FEARG_1, &t_number, f_byteidxcomp}, | 431 {"byteidxcomp", 2, 2, FEARG_1, ret_number, f_byteidxcomp}, |
346 {"call", 2, 3, FEARG_1, &t_any, f_call}, | 432 {"call", 2, 3, FEARG_1, ret_any, f_call}, |
347 #ifdef FEAT_FLOAT | 433 #ifdef FEAT_FLOAT |
348 {"ceil", 1, 1, FEARG_1, &t_float, f_ceil}, | 434 {"ceil", 1, 1, FEARG_1, ret_float, f_ceil}, |
349 #endif | 435 #endif |
350 #ifdef FEAT_JOB_CHANNEL | 436 #ifdef FEAT_JOB_CHANNEL |
351 {"ch_canread", 1, 1, FEARG_1, &t_number, f_ch_canread}, | 437 {"ch_canread", 1, 1, FEARG_1, ret_number, f_ch_canread}, |
352 {"ch_close", 1, 1, FEARG_1, &t_void, f_ch_close}, | 438 {"ch_close", 1, 1, FEARG_1, ret_void, f_ch_close}, |
353 {"ch_close_in", 1, 1, FEARG_1, &t_void, f_ch_close_in}, | 439 {"ch_close_in", 1, 1, FEARG_1, ret_void, f_ch_close_in}, |
354 {"ch_evalexpr", 2, 3, FEARG_1, &t_any, f_ch_evalexpr}, | 440 {"ch_evalexpr", 2, 3, FEARG_1, ret_any, f_ch_evalexpr}, |
355 {"ch_evalraw", 2, 3, FEARG_1, &t_any, f_ch_evalraw}, | 441 {"ch_evalraw", 2, 3, FEARG_1, ret_any, f_ch_evalraw}, |
356 {"ch_getbufnr", 2, 2, FEARG_1, &t_number, f_ch_getbufnr}, | 442 {"ch_getbufnr", 2, 2, FEARG_1, ret_number, f_ch_getbufnr}, |
357 {"ch_getjob", 1, 1, FEARG_1, &t_job, f_ch_getjob}, | 443 {"ch_getjob", 1, 1, FEARG_1, ret_job, f_ch_getjob}, |
358 {"ch_info", 1, 1, FEARG_1, &t_dict_any, f_ch_info}, | 444 {"ch_info", 1, 1, FEARG_1, ret_dict_any, f_ch_info}, |
359 {"ch_log", 1, 2, FEARG_1, &t_void, f_ch_log}, | 445 {"ch_log", 1, 2, FEARG_1, ret_void, f_ch_log}, |
360 {"ch_logfile", 1, 2, FEARG_1, &t_void, f_ch_logfile}, | 446 {"ch_logfile", 1, 2, FEARG_1, ret_void, f_ch_logfile}, |
361 {"ch_open", 1, 2, FEARG_1, &t_channel, f_ch_open}, | 447 {"ch_open", 1, 2, FEARG_1, ret_channel, f_ch_open}, |
362 {"ch_read", 1, 2, FEARG_1, &t_string, f_ch_read}, | 448 {"ch_read", 1, 2, FEARG_1, ret_string, f_ch_read}, |
363 {"ch_readblob", 1, 2, FEARG_1, &t_blob, f_ch_readblob}, | 449 {"ch_readblob", 1, 2, FEARG_1, ret_blob, f_ch_readblob}, |
364 {"ch_readraw", 1, 2, FEARG_1, &t_string, f_ch_readraw}, | 450 {"ch_readraw", 1, 2, FEARG_1, ret_string, f_ch_readraw}, |
365 {"ch_sendexpr", 2, 3, FEARG_1, &t_void, f_ch_sendexpr}, | 451 {"ch_sendexpr", 2, 3, FEARG_1, ret_void, f_ch_sendexpr}, |
366 {"ch_sendraw", 2, 3, FEARG_1, &t_void, f_ch_sendraw}, | 452 {"ch_sendraw", 2, 3, FEARG_1, ret_void, f_ch_sendraw}, |
367 {"ch_setoptions", 2, 2, FEARG_1, &t_void, f_ch_setoptions}, | 453 {"ch_setoptions", 2, 2, FEARG_1, ret_void, f_ch_setoptions}, |
368 {"ch_status", 1, 2, FEARG_1, &t_string, f_ch_status}, | 454 {"ch_status", 1, 2, FEARG_1, ret_string, f_ch_status}, |
369 #endif | 455 #endif |
370 {"changenr", 0, 0, 0, &t_number, f_changenr}, | 456 {"changenr", 0, 0, 0, ret_number, f_changenr}, |
371 {"char2nr", 1, 2, FEARG_1, &t_number, f_char2nr}, | 457 {"char2nr", 1, 2, FEARG_1, ret_number, f_char2nr}, |
372 {"chdir", 1, 1, FEARG_1, &t_string, f_chdir}, | 458 {"chdir", 1, 1, FEARG_1, ret_string, f_chdir}, |
373 {"cindent", 1, 1, FEARG_1, &t_number, f_cindent}, | 459 {"cindent", 1, 1, FEARG_1, ret_number, f_cindent}, |
374 {"clearmatches", 0, 1, FEARG_1, &t_void, f_clearmatches}, | 460 {"clearmatches", 0, 1, FEARG_1, ret_void, f_clearmatches}, |
375 {"col", 1, 1, FEARG_1, &t_number, f_col}, | 461 {"col", 1, 1, FEARG_1, ret_number, f_col}, |
376 {"complete", 2, 2, FEARG_2, &t_void, f_complete}, | 462 {"complete", 2, 2, FEARG_2, ret_void, f_complete}, |
377 {"complete_add", 1, 1, FEARG_1, &t_number, f_complete_add}, | 463 {"complete_add", 1, 1, FEARG_1, ret_number, f_complete_add}, |
378 {"complete_check", 0, 0, 0, &t_number, f_complete_check}, | 464 {"complete_check", 0, 0, 0, ret_number, f_complete_check}, |
379 {"complete_info", 0, 1, FEARG_1, &t_dict_any, f_complete_info}, | 465 {"complete_info", 0, 1, FEARG_1, ret_dict_any, f_complete_info}, |
380 {"confirm", 1, 4, FEARG_1, &t_number, f_confirm}, | 466 {"confirm", 1, 4, FEARG_1, ret_number, f_confirm}, |
381 {"copy", 1, 1, FEARG_1, &t_any, f_copy}, | 467 {"copy", 1, 1, FEARG_1, ret_any, f_copy}, |
382 #ifdef FEAT_FLOAT | 468 #ifdef FEAT_FLOAT |
383 {"cos", 1, 1, FEARG_1, &t_float, f_cos}, | 469 {"cos", 1, 1, FEARG_1, ret_float, f_cos}, |
384 {"cosh", 1, 1, FEARG_1, &t_float, f_cosh}, | 470 {"cosh", 1, 1, FEARG_1, ret_float, f_cosh}, |
385 #endif | 471 #endif |
386 {"count", 2, 4, FEARG_1, &t_number, f_count}, | 472 {"count", 2, 4, FEARG_1, ret_number, f_count}, |
387 {"cscope_connection",0,3, 0, &t_number, f_cscope_connection}, | 473 {"cscope_connection",0,3, 0, ret_number, f_cscope_connection}, |
388 {"cursor", 1, 3, FEARG_1, &t_number, f_cursor}, | 474 {"cursor", 1, 3, FEARG_1, ret_number, f_cursor}, |
389 #ifdef MSWIN | 475 #ifdef MSWIN |
390 {"debugbreak", 1, 1, FEARG_1, &t_number, f_debugbreak}, | 476 {"debugbreak", 1, 1, FEARG_1, ret_number, f_debugbreak}, |
391 #endif | 477 #endif |
392 {"deepcopy", 1, 2, FEARG_1, &t_any, f_deepcopy}, | 478 {"deepcopy", 1, 2, FEARG_1, ret_any, f_deepcopy}, |
393 {"delete", 1, 2, FEARG_1, &t_number, f_delete}, | 479 {"delete", 1, 2, FEARG_1, ret_number, f_delete}, |
394 {"deletebufline", 2, 3, FEARG_1, &t_number, f_deletebufline}, | 480 {"deletebufline", 2, 3, FEARG_1, ret_number, f_deletebufline}, |
395 {"did_filetype", 0, 0, 0, &t_number, f_did_filetype}, | 481 {"did_filetype", 0, 0, 0, ret_number, f_did_filetype}, |
396 {"diff_filler", 1, 1, FEARG_1, &t_number, f_diff_filler}, | 482 {"diff_filler", 1, 1, FEARG_1, ret_number, f_diff_filler}, |
397 {"diff_hlID", 2, 2, FEARG_1, &t_number, f_diff_hlID}, | 483 {"diff_hlID", 2, 2, FEARG_1, ret_number, f_diff_hlID}, |
398 {"echoraw", 1, 1, FEARG_1, &t_number, f_echoraw}, | 484 {"echoraw", 1, 1, FEARG_1, ret_number, f_echoraw}, |
399 {"empty", 1, 1, FEARG_1, &t_number, f_empty}, | 485 {"empty", 1, 1, FEARG_1, ret_number, f_empty}, |
400 {"environ", 0, 0, 0, &t_dict_string, f_environ}, | 486 {"environ", 0, 0, 0, ret_dict_string, f_environ}, |
401 {"escape", 2, 2, FEARG_1, &t_string, f_escape}, | 487 {"escape", 2, 2, FEARG_1, ret_string, f_escape}, |
402 {"eval", 1, 1, FEARG_1, &t_any, f_eval}, | 488 {"eval", 1, 1, FEARG_1, ret_any, f_eval}, |
403 {"eventhandler", 0, 0, 0, &t_number, f_eventhandler}, | 489 {"eventhandler", 0, 0, 0, ret_number, f_eventhandler}, |
404 {"executable", 1, 1, FEARG_1, &t_number, f_executable}, | 490 {"executable", 1, 1, FEARG_1, ret_number, f_executable}, |
405 {"execute", 1, 2, FEARG_1, &t_string, f_execute}, | 491 {"execute", 1, 2, FEARG_1, ret_string, f_execute}, |
406 {"exepath", 1, 1, FEARG_1, &t_string, f_exepath}, | 492 {"exepath", 1, 1, FEARG_1, ret_string, f_exepath}, |
407 {"exists", 1, 1, FEARG_1, &t_number, f_exists}, | 493 {"exists", 1, 1, FEARG_1, ret_number, f_exists}, |
408 #ifdef FEAT_FLOAT | 494 #ifdef FEAT_FLOAT |
409 {"exp", 1, 1, FEARG_1, &t_float, f_exp}, | 495 {"exp", 1, 1, FEARG_1, ret_float, f_exp}, |
410 #endif | 496 #endif |
411 {"expand", 1, 3, FEARG_1, &t_any, f_expand}, | 497 {"expand", 1, 3, FEARG_1, ret_any, f_expand}, |
412 {"expandcmd", 1, 1, FEARG_1, &t_string, f_expandcmd}, | 498 {"expandcmd", 1, 1, FEARG_1, ret_string, f_expandcmd}, |
413 {"extend", 2, 3, FEARG_1, &t_any, f_extend}, | 499 {"extend", 2, 3, FEARG_1, ret_any, f_extend}, |
414 {"feedkeys", 1, 2, FEARG_1, &t_void, f_feedkeys}, | 500 {"feedkeys", 1, 2, FEARG_1, ret_void, f_feedkeys}, |
415 {"file_readable", 1, 1, FEARG_1, &t_number, f_filereadable}, // obsolete | 501 {"file_readable", 1, 1, FEARG_1, ret_number, f_filereadable}, // obsolete |
416 {"filereadable", 1, 1, FEARG_1, &t_number, f_filereadable}, | 502 {"filereadable", 1, 1, FEARG_1, ret_number, f_filereadable}, |
417 {"filewritable", 1, 1, FEARG_1, &t_number, f_filewritable}, | 503 {"filewritable", 1, 1, FEARG_1, ret_number, f_filewritable}, |
418 {"filter", 2, 2, FEARG_1, &t_any, f_filter}, | 504 {"filter", 2, 2, FEARG_1, ret_any, f_filter}, |
419 {"finddir", 1, 3, FEARG_1, &t_string, f_finddir}, | 505 {"finddir", 1, 3, FEARG_1, ret_string, f_finddir}, |
420 {"findfile", 1, 3, FEARG_1, &t_string, f_findfile}, | 506 {"findfile", 1, 3, FEARG_1, ret_string, f_findfile}, |
421 #ifdef FEAT_FLOAT | 507 #ifdef FEAT_FLOAT |
422 {"float2nr", 1, 1, FEARG_1, &t_number, f_float2nr}, | 508 {"float2nr", 1, 1, FEARG_1, ret_number, f_float2nr}, |
423 {"floor", 1, 1, FEARG_1, &t_float, f_floor}, | 509 {"floor", 1, 1, FEARG_1, ret_float, f_floor}, |
424 {"fmod", 2, 2, FEARG_1, &t_float, f_fmod}, | 510 {"fmod", 2, 2, FEARG_1, ret_float, f_fmod}, |
425 #endif | 511 #endif |
426 {"fnameescape", 1, 1, FEARG_1, &t_string, f_fnameescape}, | 512 {"fnameescape", 1, 1, FEARG_1, ret_string, f_fnameescape}, |
427 {"fnamemodify", 2, 2, FEARG_1, &t_string, f_fnamemodify}, | 513 {"fnamemodify", 2, 2, FEARG_1, ret_string, f_fnamemodify}, |
428 {"foldclosed", 1, 1, FEARG_1, &t_number, f_foldclosed}, | 514 {"foldclosed", 1, 1, FEARG_1, ret_number, f_foldclosed}, |
429 {"foldclosedend", 1, 1, FEARG_1, &t_number, f_foldclosedend}, | 515 {"foldclosedend", 1, 1, FEARG_1, ret_number, f_foldclosedend}, |
430 {"foldlevel", 1, 1, FEARG_1, &t_number, f_foldlevel}, | 516 {"foldlevel", 1, 1, FEARG_1, ret_number, f_foldlevel}, |
431 {"foldtext", 0, 0, 0, &t_string, f_foldtext}, | 517 {"foldtext", 0, 0, 0, ret_string, f_foldtext}, |
432 {"foldtextresult", 1, 1, FEARG_1, &t_string, f_foldtextresult}, | 518 {"foldtextresult", 1, 1, FEARG_1, ret_string, f_foldtextresult}, |
433 {"foreground", 0, 0, 0, &t_void, f_foreground}, | 519 {"foreground", 0, 0, 0, ret_void, f_foreground}, |
434 {"funcref", 1, 3, FEARG_1, &t_any, f_funcref}, | 520 {"funcref", 1, 3, FEARG_1, ret_partial_void, f_funcref}, |
435 {"function", 1, 3, FEARG_1, &t_any, f_function}, | 521 {"function", 1, 3, FEARG_1, ret_f_function, f_function}, |
436 {"garbagecollect", 0, 1, 0, &t_void, f_garbagecollect}, | 522 {"garbagecollect", 0, 1, 0, ret_void, f_garbagecollect}, |
437 {"get", 2, 3, FEARG_1, &t_any, f_get}, | 523 {"get", 2, 3, FEARG_1, ret_any, f_get}, |
438 {"getbufinfo", 0, 1, 0, &t_list_dict_any, f_getbufinfo}, | 524 {"getbufinfo", 0, 1, 0, ret_list_dict_any, f_getbufinfo}, |
439 {"getbufline", 2, 3, FEARG_1, &t_list_string, f_getbufline}, | 525 {"getbufline", 2, 3, FEARG_1, ret_list_string, f_getbufline}, |
440 {"getbufvar", 2, 3, FEARG_1, &t_any, f_getbufvar}, | 526 {"getbufvar", 2, 3, FEARG_1, ret_any, f_getbufvar}, |
441 {"getchangelist", 0, 1, FEARG_1, &t_list_any, f_getchangelist}, | 527 {"getchangelist", 0, 1, FEARG_1, ret_list_any, f_getchangelist}, |
442 {"getchar", 0, 1, 0, &t_number, f_getchar}, | 528 {"getchar", 0, 1, 0, ret_number, f_getchar}, |
443 {"getcharmod", 0, 0, 0, &t_number, f_getcharmod}, | 529 {"getcharmod", 0, 0, 0, ret_number, f_getcharmod}, |
444 {"getcharsearch", 0, 0, 0, &t_dict_any, f_getcharsearch}, | 530 {"getcharsearch", 0, 0, 0, ret_dict_any, f_getcharsearch}, |
445 {"getcmdline", 0, 0, 0, &t_string, f_getcmdline}, | 531 {"getcmdline", 0, 0, 0, ret_string, f_getcmdline}, |
446 {"getcmdpos", 0, 0, 0, &t_number, f_getcmdpos}, | 532 {"getcmdpos", 0, 0, 0, ret_number, f_getcmdpos}, |
447 {"getcmdtype", 0, 0, 0, &t_string, f_getcmdtype}, | 533 {"getcmdtype", 0, 0, 0, ret_string, f_getcmdtype}, |
448 {"getcmdwintype", 0, 0, 0, &t_string, f_getcmdwintype}, | 534 {"getcmdwintype", 0, 0, 0, ret_string, f_getcmdwintype}, |
449 {"getcompletion", 2, 3, FEARG_1, &t_list_string, f_getcompletion}, | 535 {"getcompletion", 2, 3, FEARG_1, ret_list_string, f_getcompletion}, |
450 {"getcurpos", 0, 0, 0, &t_list_number, f_getcurpos}, | 536 {"getcurpos", 0, 0, 0, ret_list_number, f_getcurpos}, |
451 {"getcwd", 0, 2, FEARG_1, &t_string, f_getcwd}, | 537 {"getcwd", 0, 2, FEARG_1, ret_string, f_getcwd}, |
452 {"getenv", 1, 1, FEARG_1, &t_string, f_getenv}, | 538 {"getenv", 1, 1, FEARG_1, ret_string, f_getenv}, |
453 {"getfontname", 0, 1, 0, &t_string, f_getfontname}, | 539 {"getfontname", 0, 1, 0, ret_string, f_getfontname}, |
454 {"getfperm", 1, 1, FEARG_1, &t_string, f_getfperm}, | 540 {"getfperm", 1, 1, FEARG_1, ret_string, f_getfperm}, |
455 {"getfsize", 1, 1, FEARG_1, &t_number, f_getfsize}, | 541 {"getfsize", 1, 1, FEARG_1, ret_number, f_getfsize}, |
456 {"getftime", 1, 1, FEARG_1, &t_number, f_getftime}, | 542 {"getftime", 1, 1, FEARG_1, ret_number, f_getftime}, |
457 {"getftype", 1, 1, FEARG_1, &t_string, f_getftype}, | 543 {"getftype", 1, 1, FEARG_1, ret_string, f_getftype}, |
458 {"getimstatus", 0, 0, 0, &t_number, f_getimstatus}, | 544 {"getimstatus", 0, 0, 0, ret_number, f_getimstatus}, |
459 {"getjumplist", 0, 2, FEARG_1, &t_list_any, f_getjumplist}, | 545 {"getjumplist", 0, 2, FEARG_1, ret_list_any, f_getjumplist}, |
460 {"getline", 1, 2, FEARG_1, &t_string, f_getline}, | 546 {"getline", 1, 2, FEARG_1, ret_f_getline, f_getline}, |
461 {"getloclist", 1, 2, 0, &t_list_dict_any, f_getloclist}, | 547 {"getloclist", 1, 2, 0, ret_list_dict_any, f_getloclist}, |
462 {"getmatches", 0, 1, 0, &t_list_dict_any, f_getmatches}, | 548 {"getmatches", 0, 1, 0, ret_list_dict_any, f_getmatches}, |
463 {"getmousepos", 0, 0, 0, &t_dict_number, f_getmousepos}, | 549 {"getmousepos", 0, 0, 0, ret_dict_number, f_getmousepos}, |
464 {"getpid", 0, 0, 0, &t_number, f_getpid}, | 550 {"getpid", 0, 0, 0, ret_number, f_getpid}, |
465 {"getpos", 1, 1, FEARG_1, &t_list_number, f_getpos}, | 551 {"getpos", 1, 1, FEARG_1, ret_list_number, f_getpos}, |
466 {"getqflist", 0, 1, 0, &t_list_dict_any, f_getqflist}, | 552 {"getqflist", 0, 1, 0, ret_list_dict_any, f_getqflist}, |
467 {"getreg", 0, 3, FEARG_1, &t_string, f_getreg}, | 553 {"getreg", 0, 3, FEARG_1, ret_string, f_getreg}, |
468 {"getregtype", 0, 1, FEARG_1, &t_string, f_getregtype}, | 554 {"getregtype", 0, 1, FEARG_1, ret_string, f_getregtype}, |
469 {"gettabinfo", 0, 1, FEARG_1, &t_list_dict_any, f_gettabinfo}, | 555 {"gettabinfo", 0, 1, FEARG_1, ret_list_dict_any, f_gettabinfo}, |
470 {"gettabvar", 2, 3, FEARG_1, &t_any, f_gettabvar}, | 556 {"gettabvar", 2, 3, FEARG_1, ret_any, f_gettabvar}, |
471 {"gettabwinvar", 3, 4, FEARG_1, &t_any, f_gettabwinvar}, | 557 {"gettabwinvar", 3, 4, FEARG_1, ret_any, f_gettabwinvar}, |
472 {"gettagstack", 0, 1, FEARG_1, &t_dict_any, f_gettagstack}, | 558 {"gettagstack", 0, 1, FEARG_1, ret_dict_any, f_gettagstack}, |
473 {"getwininfo", 0, 1, FEARG_1, &t_list_dict_any, f_getwininfo}, | 559 {"getwininfo", 0, 1, FEARG_1, ret_list_dict_any, f_getwininfo}, |
474 {"getwinpos", 0, 1, FEARG_1, &t_list_number, f_getwinpos}, | 560 {"getwinpos", 0, 1, FEARG_1, ret_list_number, f_getwinpos}, |
475 {"getwinposx", 0, 0, 0, &t_number, f_getwinposx}, | 561 {"getwinposx", 0, 0, 0, ret_number, f_getwinposx}, |
476 {"getwinposy", 0, 0, 0, &t_number, f_getwinposy}, | 562 {"getwinposy", 0, 0, 0, ret_number, f_getwinposy}, |
477 {"getwinvar", 2, 3, FEARG_1, &t_any, f_getwinvar}, | 563 {"getwinvar", 2, 3, FEARG_1, ret_any, f_getwinvar}, |
478 {"glob", 1, 4, FEARG_1, &t_any, f_glob}, | 564 {"glob", 1, 4, FEARG_1, ret_any, f_glob}, |
479 {"glob2regpat", 1, 1, FEARG_1, &t_string, f_glob2regpat}, | 565 {"glob2regpat", 1, 1, FEARG_1, ret_string, f_glob2regpat}, |
480 {"globpath", 2, 5, FEARG_2, &t_any, f_globpath}, | 566 {"globpath", 2, 5, FEARG_2, ret_any, f_globpath}, |
481 {"has", 1, 1, 0, &t_number, f_has}, | 567 {"has", 1, 1, 0, ret_number, f_has}, |
482 {"has_key", 2, 2, FEARG_1, &t_number, f_has_key}, | 568 {"has_key", 2, 2, FEARG_1, ret_number, f_has_key}, |
483 {"haslocaldir", 0, 2, FEARG_1, &t_number, f_haslocaldir}, | 569 {"haslocaldir", 0, 2, FEARG_1, ret_number, f_haslocaldir}, |
484 {"hasmapto", 1, 3, FEARG_1, &t_number, f_hasmapto}, | 570 {"hasmapto", 1, 3, FEARG_1, ret_number, f_hasmapto}, |
485 {"highlightID", 1, 1, FEARG_1, &t_number, f_hlID}, // obsolete | 571 {"highlightID", 1, 1, FEARG_1, ret_number, f_hlID}, // obsolete |
486 {"highlight_exists",1, 1, FEARG_1, &t_number, f_hlexists}, // obsolete | 572 {"highlight_exists",1, 1, FEARG_1, ret_number, f_hlexists}, // obsolete |
487 {"histadd", 2, 2, FEARG_2, &t_number, f_histadd}, | 573 {"histadd", 2, 2, FEARG_2, ret_number, f_histadd}, |
488 {"histdel", 1, 2, FEARG_1, &t_number, f_histdel}, | 574 {"histdel", 1, 2, FEARG_1, ret_number, f_histdel}, |
489 {"histget", 1, 2, FEARG_1, &t_string, f_histget}, | 575 {"histget", 1, 2, FEARG_1, ret_string, f_histget}, |
490 {"histnr", 1, 1, FEARG_1, &t_number, f_histnr}, | 576 {"histnr", 1, 1, FEARG_1, ret_number, f_histnr}, |
491 {"hlID", 1, 1, FEARG_1, &t_number, f_hlID}, | 577 {"hlID", 1, 1, FEARG_1, ret_number, f_hlID}, |
492 {"hlexists", 1, 1, FEARG_1, &t_number, f_hlexists}, | 578 {"hlexists", 1, 1, FEARG_1, ret_number, f_hlexists}, |
493 {"hostname", 0, 0, 0, &t_string, f_hostname}, | 579 {"hostname", 0, 0, 0, ret_string, f_hostname}, |
494 {"iconv", 3, 3, FEARG_1, &t_string, f_iconv}, | 580 {"iconv", 3, 3, FEARG_1, ret_string, f_iconv}, |
495 {"indent", 1, 1, FEARG_1, &t_number, f_indent}, | 581 {"indent", 1, 1, FEARG_1, ret_number, f_indent}, |
496 {"index", 2, 4, FEARG_1, &t_number, f_index}, | 582 {"index", 2, 4, FEARG_1, ret_number, f_index}, |
497 {"input", 1, 3, FEARG_1, &t_string, f_input}, | 583 {"input", 1, 3, FEARG_1, ret_string, f_input}, |
498 {"inputdialog", 1, 3, FEARG_1, &t_string, f_inputdialog}, | 584 {"inputdialog", 1, 3, FEARG_1, ret_string, f_inputdialog}, |
499 {"inputlist", 1, 1, FEARG_1, &t_number, f_inputlist}, | 585 {"inputlist", 1, 1, FEARG_1, ret_number, f_inputlist}, |
500 {"inputrestore", 0, 0, 0, &t_number, f_inputrestore}, | 586 {"inputrestore", 0, 0, 0, ret_number, f_inputrestore}, |
501 {"inputsave", 0, 0, 0, &t_number, f_inputsave}, | 587 {"inputsave", 0, 0, 0, ret_number, f_inputsave}, |
502 {"inputsecret", 1, 2, FEARG_1, &t_string, f_inputsecret}, | 588 {"inputsecret", 1, 2, FEARG_1, ret_string, f_inputsecret}, |
503 {"insert", 2, 3, FEARG_1, &t_any, f_insert}, | 589 {"insert", 2, 3, FEARG_1, ret_any, f_insert}, |
504 {"interrupt", 0, 0, 0, &t_void, f_interrupt}, | 590 {"interrupt", 0, 0, 0, ret_void, f_interrupt}, |
505 {"invert", 1, 1, FEARG_1, &t_number, f_invert}, | 591 {"invert", 1, 1, FEARG_1, ret_number, f_invert}, |
506 {"isdirectory", 1, 1, FEARG_1, &t_number, f_isdirectory}, | 592 {"isdirectory", 1, 1, FEARG_1, ret_number, f_isdirectory}, |
507 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) | 593 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) |
508 {"isinf", 1, 1, FEARG_1, &t_number, f_isinf}, | 594 {"isinf", 1, 1, FEARG_1, ret_number, f_isinf}, |
509 #endif | 595 #endif |
510 {"islocked", 1, 1, FEARG_1, &t_number, f_islocked}, | 596 {"islocked", 1, 1, FEARG_1, ret_number, f_islocked}, |
511 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) | 597 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) |
512 {"isnan", 1, 1, FEARG_1, &t_number, f_isnan}, | 598 {"isnan", 1, 1, FEARG_1, ret_number, f_isnan}, |
513 #endif | 599 #endif |
514 {"items", 1, 1, FEARG_1, &t_list_any, f_items}, | 600 {"items", 1, 1, FEARG_1, ret_list_any, f_items}, |
515 #ifdef FEAT_JOB_CHANNEL | 601 #ifdef FEAT_JOB_CHANNEL |
516 {"job_getchannel", 1, 1, FEARG_1, &t_channel, f_job_getchannel}, | 602 {"job_getchannel", 1, 1, FEARG_1, ret_channel, f_job_getchannel}, |
517 {"job_info", 0, 1, FEARG_1, &t_dict_any, f_job_info}, | 603 {"job_info", 0, 1, FEARG_1, ret_dict_any, f_job_info}, |
518 {"job_setoptions", 2, 2, FEARG_1, &t_void, f_job_setoptions}, | 604 {"job_setoptions", 2, 2, FEARG_1, ret_void, f_job_setoptions}, |
519 {"job_start", 1, 2, FEARG_1, &t_job, f_job_start}, | 605 {"job_start", 1, 2, FEARG_1, ret_job, f_job_start}, |
520 {"job_status", 1, 1, FEARG_1, &t_string, f_job_status}, | 606 {"job_status", 1, 1, FEARG_1, ret_string, f_job_status}, |
521 {"job_stop", 1, 2, FEARG_1, &t_number, f_job_stop}, | 607 {"job_stop", 1, 2, FEARG_1, ret_number, f_job_stop}, |
522 #endif | 608 #endif |
523 {"join", 1, 2, FEARG_1, &t_string, f_join}, | 609 {"join", 1, 2, FEARG_1, ret_string, f_join}, |
524 {"js_decode", 1, 1, FEARG_1, &t_any, f_js_decode}, | 610 {"js_decode", 1, 1, FEARG_1, ret_any, f_js_decode}, |
525 {"js_encode", 1, 1, FEARG_1, &t_string, f_js_encode}, | 611 {"js_encode", 1, 1, FEARG_1, ret_string, f_js_encode}, |
526 {"json_decode", 1, 1, FEARG_1, &t_any, f_json_decode}, | 612 {"json_decode", 1, 1, FEARG_1, ret_any, f_json_decode}, |
527 {"json_encode", 1, 1, FEARG_1, &t_string, f_json_encode}, | 613 {"json_encode", 1, 1, FEARG_1, ret_string, f_json_encode}, |
528 {"keys", 1, 1, FEARG_1, &t_list_any, f_keys}, | 614 {"keys", 1, 1, FEARG_1, ret_list_any, f_keys}, |
529 {"last_buffer_nr", 0, 0, 0, &t_number, f_last_buffer_nr}, // obsolete | 615 {"last_buffer_nr", 0, 0, 0, ret_number, f_last_buffer_nr}, // obsolete |
530 {"len", 1, 1, FEARG_1, &t_number, f_len}, | 616 {"len", 1, 1, FEARG_1, ret_number, f_len}, |
531 {"libcall", 3, 3, FEARG_3, &t_string, f_libcall}, | 617 {"libcall", 3, 3, FEARG_3, ret_string, f_libcall}, |
532 {"libcallnr", 3, 3, FEARG_3, &t_number, f_libcallnr}, | 618 {"libcallnr", 3, 3, FEARG_3, ret_number, f_libcallnr}, |
533 {"line", 1, 2, FEARG_1, &t_number, f_line}, | 619 {"line", 1, 2, FEARG_1, ret_number, f_line}, |
534 {"line2byte", 1, 1, FEARG_1, &t_number, f_line2byte}, | 620 {"line2byte", 1, 1, FEARG_1, ret_number, f_line2byte}, |
535 {"lispindent", 1, 1, FEARG_1, &t_number, f_lispindent}, | 621 {"lispindent", 1, 1, FEARG_1, ret_number, f_lispindent}, |
536 {"list2str", 1, 2, FEARG_1, &t_string, f_list2str}, | 622 {"list2str", 1, 2, FEARG_1, ret_string, f_list2str}, |
537 {"listener_add", 1, 2, FEARG_2, &t_number, f_listener_add}, | 623 {"listener_add", 1, 2, FEARG_2, ret_number, f_listener_add}, |
538 {"listener_flush", 0, 1, FEARG_1, &t_void, f_listener_flush}, | 624 {"listener_flush", 0, 1, FEARG_1, ret_void, f_listener_flush}, |
539 {"listener_remove", 1, 1, FEARG_1, &t_number, f_listener_remove}, | 625 {"listener_remove", 1, 1, FEARG_1, ret_number, f_listener_remove}, |
540 {"localtime", 0, 0, 0, &t_number, f_localtime}, | 626 {"localtime", 0, 0, 0, ret_number, f_localtime}, |
541 #ifdef FEAT_FLOAT | 627 #ifdef FEAT_FLOAT |
542 {"log", 1, 1, FEARG_1, &t_float, f_log}, | 628 {"log", 1, 1, FEARG_1, ret_float, f_log}, |
543 {"log10", 1, 1, FEARG_1, &t_float, f_log10}, | 629 {"log10", 1, 1, FEARG_1, ret_float, f_log10}, |
544 #endif | 630 #endif |
545 #ifdef FEAT_LUA | 631 #ifdef FEAT_LUA |
546 {"luaeval", 1, 2, FEARG_1, &t_any, f_luaeval}, | 632 {"luaeval", 1, 2, FEARG_1, ret_any, f_luaeval}, |
547 #endif | 633 #endif |
548 {"map", 2, 2, FEARG_1, &t_any, f_map}, | 634 {"map", 2, 2, FEARG_1, ret_any, f_map}, |
549 {"maparg", 1, 4, FEARG_1, &t_string, f_maparg}, | 635 {"maparg", 1, 4, FEARG_1, ret_string, f_maparg}, |
550 {"mapcheck", 1, 3, FEARG_1, &t_string, f_mapcheck}, | 636 {"mapcheck", 1, 3, FEARG_1, ret_string, f_mapcheck}, |
551 {"match", 2, 4, FEARG_1, &t_any, f_match}, | 637 {"match", 2, 4, FEARG_1, ret_any, f_match}, |
552 {"matchadd", 2, 5, FEARG_1, &t_number, f_matchadd}, | 638 {"matchadd", 2, 5, FEARG_1, ret_number, f_matchadd}, |
553 {"matchaddpos", 2, 5, FEARG_1, &t_number, f_matchaddpos}, | 639 {"matchaddpos", 2, 5, FEARG_1, ret_number, f_matchaddpos}, |
554 {"matcharg", 1, 1, FEARG_1, &t_list_string, f_matcharg}, | 640 {"matcharg", 1, 1, FEARG_1, ret_list_string, f_matcharg}, |
555 {"matchdelete", 1, 2, FEARG_1, &t_number, f_matchdelete}, | 641 {"matchdelete", 1, 2, FEARG_1, ret_number, f_matchdelete}, |
556 {"matchend", 2, 4, FEARG_1, &t_number, f_matchend}, | 642 {"matchend", 2, 4, FEARG_1, ret_number, f_matchend}, |
557 {"matchlist", 2, 4, FEARG_1, &t_list_string, f_matchlist}, | 643 {"matchlist", 2, 4, FEARG_1, ret_list_string, f_matchlist}, |
558 {"matchstr", 2, 4, FEARG_1, &t_string, f_matchstr}, | 644 {"matchstr", 2, 4, FEARG_1, ret_string, f_matchstr}, |
559 {"matchstrpos", 2, 4, FEARG_1, &t_list_any, f_matchstrpos}, | 645 {"matchstrpos", 2, 4, FEARG_1, ret_list_any, f_matchstrpos}, |
560 {"max", 1, 1, FEARG_1, &t_any, f_max}, | 646 {"max", 1, 1, FEARG_1, ret_any, f_max}, |
561 {"min", 1, 1, FEARG_1, &t_any, f_min}, | 647 {"min", 1, 1, FEARG_1, ret_any, f_min}, |
562 {"mkdir", 1, 3, FEARG_1, &t_number, f_mkdir}, | 648 {"mkdir", 1, 3, FEARG_1, ret_number, f_mkdir}, |
563 {"mode", 0, 1, FEARG_1, &t_string, f_mode}, | 649 {"mode", 0, 1, FEARG_1, ret_string, f_mode}, |
564 #ifdef FEAT_MZSCHEME | 650 #ifdef FEAT_MZSCHEME |
565 {"mzeval", 1, 1, FEARG_1, &t_any, f_mzeval}, | 651 {"mzeval", 1, 1, FEARG_1, ret_any, f_mzeval}, |
566 #endif | 652 #endif |
567 {"nextnonblank", 1, 1, FEARG_1, &t_number, f_nextnonblank}, | 653 {"nextnonblank", 1, 1, FEARG_1, ret_number, f_nextnonblank}, |
568 {"nr2char", 1, 2, FEARG_1, &t_string, f_nr2char}, | 654 {"nr2char", 1, 2, FEARG_1, ret_string, f_nr2char}, |
569 {"or", 2, 2, FEARG_1, &t_number, f_or}, | 655 {"or", 2, 2, FEARG_1, ret_number, f_or}, |
570 {"pathshorten", 1, 1, FEARG_1, &t_string, f_pathshorten}, | 656 {"pathshorten", 1, 1, FEARG_1, ret_string, f_pathshorten}, |
571 #ifdef FEAT_PERL | 657 #ifdef FEAT_PERL |
572 {"perleval", 1, 1, FEARG_1, &t_any, f_perleval}, | 658 {"perleval", 1, 1, FEARG_1, ret_any, f_perleval}, |
573 #endif | 659 #endif |
574 #ifdef FEAT_PROP_POPUP | 660 #ifdef FEAT_PROP_POPUP |
575 {"popup_atcursor", 2, 2, FEARG_1, &t_number, f_popup_atcursor}, | 661 {"popup_atcursor", 2, 2, FEARG_1, ret_number, f_popup_atcursor}, |
576 {"popup_beval", 2, 2, FEARG_1, &t_number, f_popup_beval}, | 662 {"popup_beval", 2, 2, FEARG_1, ret_number, f_popup_beval}, |
577 {"popup_clear", 0, 0, 0, &t_void, f_popup_clear}, | 663 {"popup_clear", 0, 0, 0, ret_void, f_popup_clear}, |
578 {"popup_close", 1, 2, FEARG_1, &t_void, f_popup_close}, | 664 {"popup_close", 1, 2, FEARG_1, ret_void, f_popup_close}, |
579 {"popup_create", 2, 2, FEARG_1, &t_number, f_popup_create}, | 665 {"popup_create", 2, 2, FEARG_1, ret_number, f_popup_create}, |
580 {"popup_dialog", 2, 2, FEARG_1, &t_number, f_popup_dialog}, | 666 {"popup_dialog", 2, 2, FEARG_1, ret_number, f_popup_dialog}, |
581 {"popup_filter_menu", 2, 2, 0, &t_number, f_popup_filter_menu}, | 667 {"popup_filter_menu", 2, 2, 0, ret_number, f_popup_filter_menu}, |
582 {"popup_filter_yesno", 2, 2, 0, &t_number, f_popup_filter_yesno}, | 668 {"popup_filter_yesno", 2, 2, 0, ret_number, f_popup_filter_yesno}, |
583 {"popup_findinfo", 0, 0, 0, &t_number, f_popup_findinfo}, | 669 {"popup_findinfo", 0, 0, 0, ret_number, f_popup_findinfo}, |
584 {"popup_findpreview", 0, 0, 0, &t_number, f_popup_findpreview}, | 670 {"popup_findpreview", 0, 0, 0, ret_number, f_popup_findpreview}, |
585 {"popup_getoptions", 1, 1, FEARG_1, &t_dict_any, f_popup_getoptions}, | 671 {"popup_getoptions", 1, 1, FEARG_1, ret_dict_any, f_popup_getoptions}, |
586 {"popup_getpos", 1, 1, FEARG_1, &t_dict_any, f_popup_getpos}, | 672 {"popup_getpos", 1, 1, FEARG_1, ret_dict_any, f_popup_getpos}, |
587 {"popup_hide", 1, 1, FEARG_1, &t_void, f_popup_hide}, | 673 {"popup_hide", 1, 1, FEARG_1, ret_void, f_popup_hide}, |
588 {"popup_locate", 2, 2, 0, &t_number, f_popup_locate}, | 674 {"popup_locate", 2, 2, 0, ret_number, f_popup_locate}, |
589 {"popup_menu", 2, 2, FEARG_1, &t_number, f_popup_menu}, | 675 {"popup_menu", 2, 2, FEARG_1, ret_number, f_popup_menu}, |
590 {"popup_move", 2, 2, FEARG_1, &t_void, f_popup_move}, | 676 {"popup_move", 2, 2, FEARG_1, ret_void, f_popup_move}, |
591 {"popup_notification", 2, 2, FEARG_1, &t_number, f_popup_notification}, | 677 {"popup_notification", 2, 2, FEARG_1, ret_number, f_popup_notification}, |
592 {"popup_setoptions", 2, 2, FEARG_1, &t_void, f_popup_setoptions}, | 678 {"popup_setoptions", 2, 2, FEARG_1, ret_void, f_popup_setoptions}, |
593 {"popup_settext", 2, 2, FEARG_1, &t_void, f_popup_settext}, | 679 {"popup_settext", 2, 2, FEARG_1, ret_void, f_popup_settext}, |
594 {"popup_show", 1, 1, FEARG_1, &t_void, f_popup_show}, | 680 {"popup_show", 1, 1, FEARG_1, ret_void, f_popup_show}, |
595 #endif | 681 #endif |
596 #ifdef FEAT_FLOAT | 682 #ifdef FEAT_FLOAT |
597 {"pow", 2, 2, FEARG_1, &t_float, f_pow}, | 683 {"pow", 2, 2, FEARG_1, ret_float, f_pow}, |
598 #endif | 684 #endif |
599 {"prevnonblank", 1, 1, FEARG_1, &t_number, f_prevnonblank}, | 685 {"prevnonblank", 1, 1, FEARG_1, ret_number, f_prevnonblank}, |
600 {"printf", 1, 19, FEARG_2, &t_string, f_printf}, | 686 {"printf", 1, 19, FEARG_2, ret_string, f_printf}, |
601 #ifdef FEAT_JOB_CHANNEL | 687 #ifdef FEAT_JOB_CHANNEL |
602 {"prompt_setcallback", 2, 2, FEARG_1, &t_void, f_prompt_setcallback}, | 688 {"prompt_setcallback", 2, 2, FEARG_1, ret_void, f_prompt_setcallback}, |
603 {"prompt_setinterrupt", 2, 2, FEARG_1,&t_void, f_prompt_setinterrupt}, | 689 {"prompt_setinterrupt", 2, 2, FEARG_1,ret_void, f_prompt_setinterrupt}, |
604 {"prompt_setprompt", 2, 2, FEARG_1, &t_void, f_prompt_setprompt}, | 690 {"prompt_setprompt", 2, 2, FEARG_1, ret_void, f_prompt_setprompt}, |
605 #endif | 691 #endif |
606 #ifdef FEAT_PROP_POPUP | 692 #ifdef FEAT_PROP_POPUP |
607 {"prop_add", 3, 3, FEARG_1, &t_void, f_prop_add}, | 693 {"prop_add", 3, 3, FEARG_1, ret_void, f_prop_add}, |
608 {"prop_clear", 1, 3, FEARG_1, &t_void, f_prop_clear}, | 694 {"prop_clear", 1, 3, FEARG_1, ret_void, f_prop_clear}, |
609 {"prop_find", 1, 2, FEARG_1, &t_dict_any, f_prop_find}, | 695 {"prop_find", 1, 2, FEARG_1, ret_dict_any, f_prop_find}, |
610 {"prop_list", 1, 2, FEARG_1, &t_list_dict_any, f_prop_list}, | 696 {"prop_list", 1, 2, FEARG_1, ret_list_dict_any, f_prop_list}, |
611 {"prop_remove", 1, 3, FEARG_1, &t_number, f_prop_remove}, | 697 {"prop_remove", 1, 3, FEARG_1, ret_number, f_prop_remove}, |
612 {"prop_type_add", 2, 2, FEARG_1, &t_void, f_prop_type_add}, | 698 {"prop_type_add", 2, 2, FEARG_1, ret_void, f_prop_type_add}, |
613 {"prop_type_change", 2, 2, FEARG_1, &t_void, f_prop_type_change}, | 699 {"prop_type_change", 2, 2, FEARG_1, ret_void, f_prop_type_change}, |
614 {"prop_type_delete", 1, 2, FEARG_1, &t_void, f_prop_type_delete}, | 700 {"prop_type_delete", 1, 2, FEARG_1, ret_void, f_prop_type_delete}, |
615 {"prop_type_get", 1, 2, FEARG_1, &t_dict_any, f_prop_type_get}, | 701 {"prop_type_get", 1, 2, FEARG_1, ret_dict_any, f_prop_type_get}, |
616 {"prop_type_list", 0, 1, FEARG_1, &t_list_string, f_prop_type_list}, | 702 {"prop_type_list", 0, 1, FEARG_1, ret_list_string, f_prop_type_list}, |
617 #endif | 703 #endif |
618 {"pum_getpos", 0, 0, 0, &t_dict_number, f_pum_getpos}, | 704 {"pum_getpos", 0, 0, 0, ret_dict_number, f_pum_getpos}, |
619 {"pumvisible", 0, 0, 0, &t_number, f_pumvisible}, | 705 {"pumvisible", 0, 0, 0, ret_number, f_pumvisible}, |
620 #ifdef FEAT_PYTHON3 | 706 #ifdef FEAT_PYTHON3 |
621 {"py3eval", 1, 1, FEARG_1, &t_any, f_py3eval}, | 707 {"py3eval", 1, 1, FEARG_1, ret_any, f_py3eval}, |
622 #endif | 708 #endif |
623 #ifdef FEAT_PYTHON | 709 #ifdef FEAT_PYTHON |
624 {"pyeval", 1, 1, FEARG_1, &t_any, f_pyeval}, | 710 {"pyeval", 1, 1, FEARG_1, ret_any, f_pyeval}, |
625 #endif | 711 #endif |
626 #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) | 712 #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) |
627 {"pyxeval", 1, 1, FEARG_1, &t_any, f_pyxeval}, | 713 {"pyxeval", 1, 1, FEARG_1, ret_any, f_pyxeval}, |
628 #endif | 714 #endif |
629 {"rand", 0, 1, FEARG_1, &t_number, f_rand}, | 715 {"rand", 0, 1, FEARG_1, ret_number, f_rand}, |
630 {"range", 1, 3, FEARG_1, &t_list_number, f_range}, | 716 {"range", 1, 3, FEARG_1, ret_list_number, f_range}, |
631 {"readdir", 1, 2, FEARG_1, &t_list_string, f_readdir}, | 717 {"readdir", 1, 2, FEARG_1, ret_list_string, f_readdir}, |
632 {"readfile", 1, 3, FEARG_1, &t_any, f_readfile}, | 718 {"readfile", 1, 3, FEARG_1, ret_any, f_readfile}, |
633 {"reg_executing", 0, 0, 0, &t_string, f_reg_executing}, | 719 {"reg_executing", 0, 0, 0, ret_string, f_reg_executing}, |
634 {"reg_recording", 0, 0, 0, &t_string, f_reg_recording}, | 720 {"reg_recording", 0, 0, 0, ret_string, f_reg_recording}, |
635 {"reltime", 0, 2, FEARG_1, &t_list_any, f_reltime}, | 721 {"reltime", 0, 2, FEARG_1, ret_list_any, f_reltime}, |
636 #ifdef FEAT_FLOAT | 722 #ifdef FEAT_FLOAT |
637 {"reltimefloat", 1, 1, FEARG_1, &t_float, f_reltimefloat}, | 723 {"reltimefloat", 1, 1, FEARG_1, ret_float, f_reltimefloat}, |
638 #endif | 724 #endif |
639 {"reltimestr", 1, 1, FEARG_1, &t_string, f_reltimestr}, | 725 {"reltimestr", 1, 1, FEARG_1, ret_string, f_reltimestr}, |
640 {"remote_expr", 2, 4, FEARG_1, &t_string, f_remote_expr}, | 726 {"remote_expr", 2, 4, FEARG_1, ret_string, f_remote_expr}, |
641 {"remote_foreground", 1, 1, FEARG_1, &t_string, f_remote_foreground}, | 727 {"remote_foreground", 1, 1, FEARG_1, ret_string, f_remote_foreground}, |
642 {"remote_peek", 1, 2, FEARG_1, &t_number, f_remote_peek}, | 728 {"remote_peek", 1, 2, FEARG_1, ret_number, f_remote_peek}, |
643 {"remote_read", 1, 2, FEARG_1, &t_string, f_remote_read}, | 729 {"remote_read", 1, 2, FEARG_1, ret_string, f_remote_read}, |
644 {"remote_send", 2, 3, FEARG_1, &t_string, f_remote_send}, | 730 {"remote_send", 2, 3, FEARG_1, ret_string, f_remote_send}, |
645 {"remote_startserver", 1, 1, FEARG_1, &t_void, f_remote_startserver}, | 731 {"remote_startserver", 1, 1, FEARG_1, ret_void, f_remote_startserver}, |
646 {"remove", 2, 3, FEARG_1, &t_any, f_remove}, | 732 {"remove", 2, 3, FEARG_1, ret_any, f_remove}, |
647 {"rename", 2, 2, FEARG_1, &t_number, f_rename}, | 733 {"rename", 2, 2, FEARG_1, ret_number, f_rename}, |
648 {"repeat", 2, 2, FEARG_1, &t_any, f_repeat}, | 734 {"repeat", 2, 2, FEARG_1, ret_any, f_repeat}, |
649 {"resolve", 1, 1, FEARG_1, &t_string, f_resolve}, | 735 {"resolve", 1, 1, FEARG_1, ret_string, f_resolve}, |
650 {"reverse", 1, 1, FEARG_1, &t_any, f_reverse}, | 736 {"reverse", 1, 1, FEARG_1, ret_any, f_reverse}, |
651 #ifdef FEAT_FLOAT | 737 #ifdef FEAT_FLOAT |
652 {"round", 1, 1, FEARG_1, &t_float, f_round}, | 738 {"round", 1, 1, FEARG_1, ret_float, f_round}, |
653 #endif | 739 #endif |
654 #ifdef FEAT_RUBY | 740 #ifdef FEAT_RUBY |
655 {"rubyeval", 1, 1, FEARG_1, &t_any, f_rubyeval}, | 741 {"rubyeval", 1, 1, FEARG_1, ret_any, f_rubyeval}, |
656 #endif | 742 #endif |
657 {"screenattr", 2, 2, FEARG_1, &t_number, f_screenattr}, | 743 {"screenattr", 2, 2, FEARG_1, ret_number, f_screenattr}, |
658 {"screenchar", 2, 2, FEARG_1, &t_number, f_screenchar}, | 744 {"screenchar", 2, 2, FEARG_1, ret_number, f_screenchar}, |
659 {"screenchars", 2, 2, FEARG_1, &t_list_number, f_screenchars}, | 745 {"screenchars", 2, 2, FEARG_1, ret_list_number, f_screenchars}, |
660 {"screencol", 0, 0, 0, &t_number, f_screencol}, | 746 {"screencol", 0, 0, 0, ret_number, f_screencol}, |
661 {"screenpos", 3, 3, FEARG_1, &t_dict_number, f_screenpos}, | 747 {"screenpos", 3, 3, FEARG_1, ret_dict_number, f_screenpos}, |
662 {"screenrow", 0, 0, 0, &t_number, f_screenrow}, | 748 {"screenrow", 0, 0, 0, ret_number, f_screenrow}, |
663 {"screenstring", 2, 2, FEARG_1, &t_string, f_screenstring}, | 749 {"screenstring", 2, 2, FEARG_1, ret_string, f_screenstring}, |
664 {"search", 1, 4, FEARG_1, &t_number, f_search}, | 750 {"search", 1, 4, FEARG_1, ret_number, f_search}, |
665 {"searchdecl", 1, 3, FEARG_1, &t_number, f_searchdecl}, | 751 {"searchdecl", 1, 3, FEARG_1, ret_number, f_searchdecl}, |
666 {"searchpair", 3, 7, 0, &t_number, f_searchpair}, | 752 {"searchpair", 3, 7, 0, ret_number, f_searchpair}, |
667 {"searchpairpos", 3, 7, 0, &t_list_number, f_searchpairpos}, | 753 {"searchpairpos", 3, 7, 0, ret_list_number, f_searchpairpos}, |
668 {"searchpos", 1, 4, FEARG_1, &t_list_number, f_searchpos}, | 754 {"searchpos", 1, 4, FEARG_1, ret_list_number, f_searchpos}, |
669 {"server2client", 2, 2, FEARG_1, &t_number, f_server2client}, | 755 {"server2client", 2, 2, FEARG_1, ret_number, f_server2client}, |
670 {"serverlist", 0, 0, 0, &t_string, f_serverlist}, | 756 {"serverlist", 0, 0, 0, ret_string, f_serverlist}, |
671 {"setbufline", 3, 3, FEARG_3, &t_number, f_setbufline}, | 757 {"setbufline", 3, 3, FEARG_3, ret_number, f_setbufline}, |
672 {"setbufvar", 3, 3, FEARG_3, &t_void, f_setbufvar}, | 758 {"setbufvar", 3, 3, FEARG_3, ret_void, f_setbufvar}, |
673 {"setcharsearch", 1, 1, FEARG_1, &t_void, f_setcharsearch}, | 759 {"setcharsearch", 1, 1, FEARG_1, ret_void, f_setcharsearch}, |
674 {"setcmdpos", 1, 1, FEARG_1, &t_number, f_setcmdpos}, | 760 {"setcmdpos", 1, 1, FEARG_1, ret_number, f_setcmdpos}, |
675 {"setenv", 2, 2, FEARG_2, &t_void, f_setenv}, | 761 {"setenv", 2, 2, FEARG_2, ret_void, f_setenv}, |
676 {"setfperm", 2, 2, FEARG_1, &t_number, f_setfperm}, | 762 {"setfperm", 2, 2, FEARG_1, ret_number, f_setfperm}, |
677 {"setline", 2, 2, FEARG_2, &t_number, f_setline}, | 763 {"setline", 2, 2, FEARG_2, ret_number, f_setline}, |
678 {"setloclist", 2, 4, FEARG_2, &t_number, f_setloclist}, | 764 {"setloclist", 2, 4, FEARG_2, ret_number, f_setloclist}, |
679 {"setmatches", 1, 2, FEARG_1, &t_number, f_setmatches}, | 765 {"setmatches", 1, 2, FEARG_1, ret_number, f_setmatches}, |
680 {"setpos", 2, 2, FEARG_2, &t_number, f_setpos}, | 766 {"setpos", 2, 2, FEARG_2, ret_number, f_setpos}, |
681 {"setqflist", 1, 3, FEARG_1, &t_number, f_setqflist}, | 767 {"setqflist", 1, 3, FEARG_1, ret_number, f_setqflist}, |
682 {"setreg", 2, 3, FEARG_2, &t_number, f_setreg}, | 768 {"setreg", 2, 3, FEARG_2, ret_number, f_setreg}, |
683 {"settabvar", 3, 3, FEARG_3, &t_void, f_settabvar}, | 769 {"settabvar", 3, 3, FEARG_3, ret_void, f_settabvar}, |
684 {"settabwinvar", 4, 4, FEARG_4, &t_void, f_settabwinvar}, | 770 {"settabwinvar", 4, 4, FEARG_4, ret_void, f_settabwinvar}, |
685 {"settagstack", 2, 3, FEARG_2, &t_number, f_settagstack}, | 771 {"settagstack", 2, 3, FEARG_2, ret_number, f_settagstack}, |
686 {"setwinvar", 3, 3, FEARG_3, &t_void, f_setwinvar}, | 772 {"setwinvar", 3, 3, FEARG_3, ret_void, f_setwinvar}, |
687 #ifdef FEAT_CRYPT | 773 #ifdef FEAT_CRYPT |
688 {"sha256", 1, 1, FEARG_1, &t_string, f_sha256}, | 774 {"sha256", 1, 1, FEARG_1, ret_string, f_sha256}, |
689 #endif | 775 #endif |
690 {"shellescape", 1, 2, FEARG_1, &t_string, f_shellescape}, | 776 {"shellescape", 1, 2, FEARG_1, ret_string, f_shellescape}, |
691 {"shiftwidth", 0, 1, FEARG_1, &t_number, f_shiftwidth}, | 777 {"shiftwidth", 0, 1, FEARG_1, ret_number, f_shiftwidth}, |
692 #ifdef FEAT_SIGNS | 778 #ifdef FEAT_SIGNS |
693 {"sign_define", 1, 2, FEARG_1, &t_any, f_sign_define}, | 779 {"sign_define", 1, 2, FEARG_1, ret_any, f_sign_define}, |
694 {"sign_getdefined", 0, 1, FEARG_1, &t_list_dict_any, f_sign_getdefined}, | 780 {"sign_getdefined", 0, 1, FEARG_1, ret_list_dict_any, f_sign_getdefined}, |
695 {"sign_getplaced", 0, 2, FEARG_1, &t_list_dict_any, f_sign_getplaced}, | 781 {"sign_getplaced", 0, 2, FEARG_1, ret_list_dict_any, f_sign_getplaced}, |
696 {"sign_jump", 3, 3, FEARG_1, &t_number, f_sign_jump}, | 782 {"sign_jump", 3, 3, FEARG_1, ret_number, f_sign_jump}, |
697 {"sign_place", 4, 5, FEARG_1, &t_number, f_sign_place}, | 783 {"sign_place", 4, 5, FEARG_1, ret_number, f_sign_place}, |
698 {"sign_placelist", 1, 1, FEARG_1, &t_list_number, f_sign_placelist}, | 784 {"sign_placelist", 1, 1, FEARG_1, ret_list_number, f_sign_placelist}, |
699 {"sign_undefine", 0, 1, FEARG_1, &t_number, f_sign_undefine}, | 785 {"sign_undefine", 0, 1, FEARG_1, ret_number, f_sign_undefine}, |
700 {"sign_unplace", 1, 2, FEARG_1, &t_number, f_sign_unplace}, | 786 {"sign_unplace", 1, 2, FEARG_1, ret_number, f_sign_unplace}, |
701 {"sign_unplacelist", 1, 2, FEARG_1, &t_list_number, f_sign_unplacelist}, | 787 {"sign_unplacelist", 1, 2, FEARG_1, ret_list_number, f_sign_unplacelist}, |
702 #endif | 788 #endif |
703 {"simplify", 1, 1, 0, &t_string, f_simplify}, | 789 {"simplify", 1, 1, 0, ret_string, f_simplify}, |
704 #ifdef FEAT_FLOAT | 790 #ifdef FEAT_FLOAT |
705 {"sin", 1, 1, FEARG_1, &t_float, f_sin}, | 791 {"sin", 1, 1, FEARG_1, ret_float, f_sin}, |
706 {"sinh", 1, 1, FEARG_1, &t_float, f_sinh}, | 792 {"sinh", 1, 1, FEARG_1, ret_float, f_sinh}, |
707 #endif | 793 #endif |
708 {"sort", 1, 3, FEARG_1, &t_list_any, f_sort}, | 794 {"sort", 1, 3, FEARG_1, ret_list_any, f_sort}, |
709 #ifdef FEAT_SOUND | 795 #ifdef FEAT_SOUND |
710 {"sound_clear", 0, 0, 0, &t_void, f_sound_clear}, | 796 {"sound_clear", 0, 0, 0, ret_void, f_sound_clear}, |
711 {"sound_playevent", 1, 2, FEARG_1, &t_number, f_sound_playevent}, | 797 {"sound_playevent", 1, 2, FEARG_1, ret_number, f_sound_playevent}, |
712 {"sound_playfile", 1, 2, FEARG_1, &t_number, f_sound_playfile}, | 798 {"sound_playfile", 1, 2, FEARG_1, ret_number, f_sound_playfile}, |
713 {"sound_stop", 1, 1, FEARG_1, &t_void, f_sound_stop}, | 799 {"sound_stop", 1, 1, FEARG_1, ret_void, f_sound_stop}, |
714 #endif | 800 #endif |
715 {"soundfold", 1, 1, FEARG_1, &t_string, f_soundfold}, | 801 {"soundfold", 1, 1, FEARG_1, ret_string, f_soundfold}, |
716 {"spellbadword", 0, 1, FEARG_1, &t_list_string, f_spellbadword}, | 802 {"spellbadword", 0, 1, FEARG_1, ret_list_string, f_spellbadword}, |
717 {"spellsuggest", 1, 3, FEARG_1, &t_list_string, f_spellsuggest}, | 803 {"spellsuggest", 1, 3, FEARG_1, ret_list_string, f_spellsuggest}, |
718 {"split", 1, 3, FEARG_1, &t_list_string, f_split}, | 804 {"split", 1, 3, FEARG_1, ret_list_string, f_split}, |
719 #ifdef FEAT_FLOAT | 805 #ifdef FEAT_FLOAT |
720 {"sqrt", 1, 1, FEARG_1, &t_float, f_sqrt}, | 806 {"sqrt", 1, 1, FEARG_1, ret_float, f_sqrt}, |
721 #endif | 807 #endif |
722 {"srand", 0, 1, FEARG_1, &t_list_number, f_srand}, | 808 {"srand", 0, 1, FEARG_1, ret_list_number, f_srand}, |
723 {"state", 0, 1, FEARG_1, &t_string, f_state}, | 809 {"state", 0, 1, FEARG_1, ret_string, f_state}, |
724 #ifdef FEAT_FLOAT | 810 #ifdef FEAT_FLOAT |
725 {"str2float", 1, 1, FEARG_1, &t_float, f_str2float}, | 811 {"str2float", 1, 1, FEARG_1, ret_float, f_str2float}, |
726 #endif | 812 #endif |
727 {"str2list", 1, 2, FEARG_1, &t_list_number, f_str2list}, | 813 {"str2list", 1, 2, FEARG_1, ret_list_number, f_str2list}, |
728 {"str2nr", 1, 3, FEARG_1, &t_number, f_str2nr}, | 814 {"str2nr", 1, 3, FEARG_1, ret_number, f_str2nr}, |
729 {"strcharpart", 2, 3, FEARG_1, &t_string, f_strcharpart}, | 815 {"strcharpart", 2, 3, FEARG_1, ret_string, f_strcharpart}, |
730 {"strchars", 1, 2, FEARG_1, &t_number, f_strchars}, | 816 {"strchars", 1, 2, FEARG_1, ret_number, f_strchars}, |
731 {"strdisplaywidth", 1, 2, FEARG_1, &t_number, f_strdisplaywidth}, | 817 {"strdisplaywidth", 1, 2, FEARG_1, ret_number, f_strdisplaywidth}, |
732 #ifdef HAVE_STRFTIME | 818 #ifdef HAVE_STRFTIME |
733 {"strftime", 1, 2, FEARG_1, &t_string, f_strftime}, | 819 {"strftime", 1, 2, FEARG_1, ret_string, f_strftime}, |
734 #endif | 820 #endif |
735 {"strgetchar", 2, 2, FEARG_1, &t_number, f_strgetchar}, | 821 {"strgetchar", 2, 2, FEARG_1, ret_number, f_strgetchar}, |
736 {"stridx", 2, 3, FEARG_1, &t_number, f_stridx}, | 822 {"stridx", 2, 3, FEARG_1, ret_number, f_stridx}, |
737 {"string", 1, 1, FEARG_1, &t_string, f_string}, | 823 {"string", 1, 1, FEARG_1, ret_string, f_string}, |
738 {"strlen", 1, 1, FEARG_1, &t_number, f_strlen}, | 824 {"strlen", 1, 1, FEARG_1, ret_number, f_strlen}, |
739 {"strpart", 2, 3, FEARG_1, &t_string, f_strpart}, | 825 {"strpart", 2, 3, FEARG_1, ret_string, f_strpart}, |
740 #ifdef HAVE_STRPTIME | 826 #ifdef HAVE_STRPTIME |
741 {"strptime", 2, 2, FEARG_1, &t_number, f_strptime}, | 827 {"strptime", 2, 2, FEARG_1, ret_number, f_strptime}, |
742 #endif | 828 #endif |
743 {"strridx", 2, 3, FEARG_1, &t_number, f_strridx}, | 829 {"strridx", 2, 3, FEARG_1, ret_number, f_strridx}, |
744 {"strtrans", 1, 1, FEARG_1, &t_string, f_strtrans}, | 830 {"strtrans", 1, 1, FEARG_1, ret_string, f_strtrans}, |
745 {"strwidth", 1, 1, FEARG_1, &t_number, f_strwidth}, | 831 {"strwidth", 1, 1, FEARG_1, ret_number, f_strwidth}, |
746 {"submatch", 1, 2, FEARG_1, &t_string, f_submatch}, | 832 {"submatch", 1, 2, FEARG_1, ret_string, f_submatch}, |
747 {"substitute", 4, 4, FEARG_1, &t_string, f_substitute}, | 833 {"substitute", 4, 4, FEARG_1, ret_string, f_substitute}, |
748 {"swapinfo", 1, 1, FEARG_1, &t_dict_any, f_swapinfo}, | 834 {"swapinfo", 1, 1, FEARG_1, ret_dict_any, f_swapinfo}, |
749 {"swapname", 1, 1, FEARG_1, &t_string, f_swapname}, | 835 {"swapname", 1, 1, FEARG_1, ret_string, f_swapname}, |
750 {"synID", 3, 3, 0, &t_number, f_synID}, | 836 {"synID", 3, 3, 0, ret_number, f_synID}, |
751 {"synIDattr", 2, 3, FEARG_1, &t_string, f_synIDattr}, | 837 {"synIDattr", 2, 3, FEARG_1, ret_string, f_synIDattr}, |
752 {"synIDtrans", 1, 1, FEARG_1, &t_number, f_synIDtrans}, | 838 {"synIDtrans", 1, 1, FEARG_1, ret_number, f_synIDtrans}, |
753 {"synconcealed", 2, 2, 0, &t_list_any, f_synconcealed}, | 839 {"synconcealed", 2, 2, 0, ret_list_any, f_synconcealed}, |
754 {"synstack", 2, 2, 0, &t_list_number, f_synstack}, | 840 {"synstack", 2, 2, 0, ret_list_number, f_synstack}, |
755 {"system", 1, 2, FEARG_1, &t_string, f_system}, | 841 {"system", 1, 2, FEARG_1, ret_string, f_system}, |
756 {"systemlist", 1, 2, FEARG_1, &t_list_string, f_systemlist}, | 842 {"systemlist", 1, 2, FEARG_1, ret_list_string, f_systemlist}, |
757 {"tabpagebuflist", 0, 1, FEARG_1, &t_list_number, f_tabpagebuflist}, | 843 {"tabpagebuflist", 0, 1, FEARG_1, ret_list_number, f_tabpagebuflist}, |
758 {"tabpagenr", 0, 1, 0, &t_number, f_tabpagenr}, | 844 {"tabpagenr", 0, 1, 0, ret_number, f_tabpagenr}, |
759 {"tabpagewinnr", 1, 2, FEARG_1, &t_number, f_tabpagewinnr}, | 845 {"tabpagewinnr", 1, 2, FEARG_1, ret_number, f_tabpagewinnr}, |
760 {"tagfiles", 0, 0, 0, &t_list_string, f_tagfiles}, | 846 {"tagfiles", 0, 0, 0, ret_list_string, f_tagfiles}, |
761 {"taglist", 1, 2, FEARG_1, &t_list_dict_any, f_taglist}, | 847 {"taglist", 1, 2, FEARG_1, ret_list_dict_any, f_taglist}, |
762 #ifdef FEAT_FLOAT | 848 #ifdef FEAT_FLOAT |
763 {"tan", 1, 1, FEARG_1, &t_float, f_tan}, | 849 {"tan", 1, 1, FEARG_1, ret_float, f_tan}, |
764 {"tanh", 1, 1, FEARG_1, &t_float, f_tanh}, | 850 {"tanh", 1, 1, FEARG_1, ret_float, f_tanh}, |
765 #endif | 851 #endif |
766 {"tempname", 0, 0, 0, &t_string, f_tempname}, | 852 {"tempname", 0, 0, 0, ret_string, f_tempname}, |
767 #ifdef FEAT_TERMINAL | 853 #ifdef FEAT_TERMINAL |
768 {"term_dumpdiff", 2, 3, FEARG_1, &t_number, f_term_dumpdiff}, | 854 {"term_dumpdiff", 2, 3, FEARG_1, ret_number, f_term_dumpdiff}, |
769 {"term_dumpload", 1, 2, FEARG_1, &t_number, f_term_dumpload}, | 855 {"term_dumpload", 1, 2, FEARG_1, ret_number, f_term_dumpload}, |
770 {"term_dumpwrite", 2, 3, FEARG_2, &t_void, f_term_dumpwrite}, | 856 {"term_dumpwrite", 2, 3, FEARG_2, ret_void, f_term_dumpwrite}, |
771 {"term_getaltscreen", 1, 1, FEARG_1, &t_number, f_term_getaltscreen}, | 857 {"term_getaltscreen", 1, 1, FEARG_1, ret_number, f_term_getaltscreen}, |
772 # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS) | 858 # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS) |
773 {"term_getansicolors", 1, 1, FEARG_1, &t_list_string, f_term_getansicolors}, | 859 {"term_getansicolors", 1, 1, FEARG_1, ret_list_string, f_term_getansicolors}, |
774 # endif | 860 # endif |
775 {"term_getattr", 2, 2, FEARG_1, &t_number, f_term_getattr}, | 861 {"term_getattr", 2, 2, FEARG_1, ret_number, f_term_getattr}, |
776 {"term_getcursor", 1, 1, FEARG_1, &t_list_any, f_term_getcursor}, | 862 {"term_getcursor", 1, 1, FEARG_1, ret_list_any, f_term_getcursor}, |
777 {"term_getjob", 1, 1, FEARG_1, &t_job, f_term_getjob}, | 863 {"term_getjob", 1, 1, FEARG_1, ret_job, f_term_getjob}, |
778 {"term_getline", 2, 2, FEARG_1, &t_string, f_term_getline}, | 864 {"term_getline", 2, 2, FEARG_1, ret_string, f_term_getline}, |
779 {"term_getscrolled", 1, 1, FEARG_1, &t_number, f_term_getscrolled}, | 865 {"term_getscrolled", 1, 1, FEARG_1, ret_number, f_term_getscrolled}, |
780 {"term_getsize", 1, 1, FEARG_1, &t_list_number, f_term_getsize}, | 866 {"term_getsize", 1, 1, FEARG_1, ret_list_number, f_term_getsize}, |
781 {"term_getstatus", 1, 1, FEARG_1, &t_string, f_term_getstatus}, | 867 {"term_getstatus", 1, 1, FEARG_1, ret_string, f_term_getstatus}, |
782 {"term_gettitle", 1, 1, FEARG_1, &t_string, f_term_gettitle}, | 868 {"term_gettitle", 1, 1, FEARG_1, ret_string, f_term_gettitle}, |
783 {"term_gettty", 1, 2, FEARG_1, &t_string, f_term_gettty}, | 869 {"term_gettty", 1, 2, FEARG_1, ret_string, f_term_gettty}, |
784 {"term_list", 0, 0, 0, &t_list_number, f_term_list}, | 870 {"term_list", 0, 0, 0, ret_list_number, f_term_list}, |
785 {"term_scrape", 2, 2, FEARG_1, &t_list_dict_any, f_term_scrape}, | 871 {"term_scrape", 2, 2, FEARG_1, ret_list_dict_any, f_term_scrape}, |
786 {"term_sendkeys", 2, 2, FEARG_1, &t_void, f_term_sendkeys}, | 872 {"term_sendkeys", 2, 2, FEARG_1, ret_void, f_term_sendkeys}, |
787 # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS) | 873 # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS) |
788 {"term_setansicolors", 2, 2, FEARG_1, &t_void, f_term_setansicolors}, | 874 {"term_setansicolors", 2, 2, FEARG_1, ret_void, f_term_setansicolors}, |
789 # endif | 875 # endif |
790 {"term_setapi", 2, 2, FEARG_1, &t_void, f_term_setapi}, | 876 {"term_setapi", 2, 2, FEARG_1, ret_void, f_term_setapi}, |
791 {"term_setkill", 2, 2, FEARG_1, &t_void, f_term_setkill}, | 877 {"term_setkill", 2, 2, FEARG_1, ret_void, f_term_setkill}, |
792 {"term_setrestore", 2, 2, FEARG_1, &t_void, f_term_setrestore}, | 878 {"term_setrestore", 2, 2, FEARG_1, ret_void, f_term_setrestore}, |
793 {"term_setsize", 3, 3, FEARG_1, &t_void, f_term_setsize}, | 879 {"term_setsize", 3, 3, FEARG_1, ret_void, f_term_setsize}, |
794 {"term_start", 1, 2, FEARG_1, &t_number, f_term_start}, | 880 {"term_start", 1, 2, FEARG_1, ret_number, f_term_start}, |
795 {"term_wait", 1, 2, FEARG_1, &t_void, f_term_wait}, | 881 {"term_wait", 1, 2, FEARG_1, ret_void, f_term_wait}, |
796 #endif | 882 #endif |
797 {"test_alloc_fail", 3, 3, FEARG_1, &t_void, f_test_alloc_fail}, | 883 {"test_alloc_fail", 3, 3, FEARG_1, ret_void, f_test_alloc_fail}, |
798 {"test_autochdir", 0, 0, 0, &t_void, f_test_autochdir}, | 884 {"test_autochdir", 0, 0, 0, ret_void, f_test_autochdir}, |
799 {"test_feedinput", 1, 1, FEARG_1, &t_void, f_test_feedinput}, | 885 {"test_feedinput", 1, 1, FEARG_1, ret_void, f_test_feedinput}, |
800 {"test_garbagecollect_now", 0, 0, 0, &t_void, f_test_garbagecollect_now}, | 886 {"test_garbagecollect_now", 0, 0, 0, ret_void, f_test_garbagecollect_now}, |
801 {"test_garbagecollect_soon", 0, 0, 0, &t_void, f_test_garbagecollect_soon}, | 887 {"test_garbagecollect_soon", 0, 0, 0, ret_void, f_test_garbagecollect_soon}, |
802 {"test_getvalue", 1, 1, FEARG_1, &t_number, f_test_getvalue}, | 888 {"test_getvalue", 1, 1, FEARG_1, ret_number, f_test_getvalue}, |
803 {"test_ignore_error", 1, 1, FEARG_1, &t_void, f_test_ignore_error}, | 889 {"test_ignore_error", 1, 1, FEARG_1, ret_void, f_test_ignore_error}, |
804 {"test_null_blob", 0, 0, 0, &t_blob, f_test_null_blob}, | 890 {"test_null_blob", 0, 0, 0, ret_blob, f_test_null_blob}, |
805 #ifdef FEAT_JOB_CHANNEL | 891 #ifdef FEAT_JOB_CHANNEL |
806 {"test_null_channel", 0, 0, 0, &t_channel, f_test_null_channel}, | 892 {"test_null_channel", 0, 0, 0, ret_channel, f_test_null_channel}, |
807 #endif | 893 #endif |
808 {"test_null_dict", 0, 0, 0, &t_dict_any, f_test_null_dict}, | 894 {"test_null_dict", 0, 0, 0, ret_dict_any, f_test_null_dict}, |
809 #ifdef FEAT_JOB_CHANNEL | 895 #ifdef FEAT_JOB_CHANNEL |
810 {"test_null_job", 0, 0, 0, &t_job, f_test_null_job}, | 896 {"test_null_job", 0, 0, 0, ret_job, f_test_null_job}, |
811 #endif | 897 #endif |
812 {"test_null_list", 0, 0, 0, &t_list_any, f_test_null_list}, | 898 {"test_null_list", 0, 0, 0, ret_list_any, f_test_null_list}, |
813 {"test_null_partial", 0, 0, 0, &t_partial_void, f_test_null_partial}, | 899 {"test_null_partial", 0, 0, 0, ret_partial_void, f_test_null_partial}, |
814 {"test_null_string", 0, 0, 0, &t_string, f_test_null_string}, | 900 {"test_null_string", 0, 0, 0, ret_string, f_test_null_string}, |
815 {"test_option_not_set", 1, 1, FEARG_1,&t_void, f_test_option_not_set}, | 901 {"test_option_not_set", 1, 1, FEARG_1,ret_void, f_test_option_not_set}, |
816 {"test_override", 2, 2, FEARG_2, &t_void, f_test_override}, | 902 {"test_override", 2, 2, FEARG_2, ret_void, f_test_override}, |
817 {"test_refcount", 1, 1, FEARG_1, &t_number, f_test_refcount}, | 903 {"test_refcount", 1, 1, FEARG_1, ret_number, f_test_refcount}, |
818 #ifdef FEAT_GUI | 904 #ifdef FEAT_GUI |
819 {"test_scrollbar", 3, 3, FEARG_2, &t_void, f_test_scrollbar}, | 905 {"test_scrollbar", 3, 3, FEARG_2, ret_void, f_test_scrollbar}, |
820 #endif | 906 #endif |
821 {"test_setmouse", 2, 2, 0, &t_void, f_test_setmouse}, | 907 {"test_setmouse", 2, 2, 0, ret_void, f_test_setmouse}, |
822 {"test_settime", 1, 1, FEARG_1, &t_void, f_test_settime}, | 908 {"test_settime", 1, 1, FEARG_1, ret_void, f_test_settime}, |
823 {"test_srand_seed", 0, 1, FEARG_1, &t_void, f_test_srand_seed}, | 909 {"test_srand_seed", 0, 1, FEARG_1, ret_void, f_test_srand_seed}, |
824 {"test_unknown", 0, 0, 0, &t_any, f_test_unknown}, | 910 {"test_unknown", 0, 0, 0, ret_any, f_test_unknown}, |
825 {"test_void", 0, 0, 0, &t_any, f_test_void}, | 911 {"test_void", 0, 0, 0, ret_any, f_test_void}, |
826 #ifdef FEAT_TIMERS | 912 #ifdef FEAT_TIMERS |
827 {"timer_info", 0, 1, FEARG_1, &t_list_dict_any, f_timer_info}, | 913 {"timer_info", 0, 1, FEARG_1, ret_list_dict_any, f_timer_info}, |
828 {"timer_pause", 2, 2, FEARG_1, &t_void, f_timer_pause}, | 914 {"timer_pause", 2, 2, FEARG_1, ret_void, f_timer_pause}, |
829 {"timer_start", 2, 3, FEARG_1, &t_number, f_timer_start}, | 915 {"timer_start", 2, 3, FEARG_1, ret_number, f_timer_start}, |
830 {"timer_stop", 1, 1, FEARG_1, &t_void, f_timer_stop}, | 916 {"timer_stop", 1, 1, FEARG_1, ret_void, f_timer_stop}, |
831 {"timer_stopall", 0, 0, 0, &t_void, f_timer_stopall}, | 917 {"timer_stopall", 0, 0, 0, ret_void, f_timer_stopall}, |
832 #endif | 918 #endif |
833 {"tolower", 1, 1, FEARG_1, &t_string, f_tolower}, | 919 {"tolower", 1, 1, FEARG_1, ret_string, f_tolower}, |
834 {"toupper", 1, 1, FEARG_1, &t_string, f_toupper}, | 920 {"toupper", 1, 1, FEARG_1, ret_string, f_toupper}, |
835 {"tr", 3, 3, FEARG_1, &t_string, f_tr}, | 921 {"tr", 3, 3, FEARG_1, ret_string, f_tr}, |
836 {"trim", 1, 2, FEARG_1, &t_string, f_trim}, | 922 {"trim", 1, 2, FEARG_1, ret_string, f_trim}, |
837 #ifdef FEAT_FLOAT | 923 #ifdef FEAT_FLOAT |
838 {"trunc", 1, 1, FEARG_1, &t_float, f_trunc}, | 924 {"trunc", 1, 1, FEARG_1, ret_float, f_trunc}, |
839 #endif | 925 #endif |
840 {"type", 1, 1, FEARG_1, &t_number, f_type}, | 926 {"type", 1, 1, FEARG_1, ret_number, f_type}, |
841 {"undofile", 1, 1, FEARG_1, &t_string, f_undofile}, | 927 {"undofile", 1, 1, FEARG_1, ret_string, f_undofile}, |
842 {"undotree", 0, 0, 0, &t_dict_any, f_undotree}, | 928 {"undotree", 0, 0, 0, ret_dict_any, f_undotree}, |
843 {"uniq", 1, 3, FEARG_1, &t_list_any, f_uniq}, | 929 {"uniq", 1, 3, FEARG_1, ret_list_any, f_uniq}, |
844 {"values", 1, 1, FEARG_1, &t_list_any, f_values}, | 930 {"values", 1, 1, FEARG_1, ret_list_any, f_values}, |
845 {"virtcol", 1, 1, FEARG_1, &t_number, f_virtcol}, | 931 {"virtcol", 1, 1, FEARG_1, ret_number, f_virtcol}, |
846 {"visualmode", 0, 1, 0, &t_string, f_visualmode}, | 932 {"visualmode", 0, 1, 0, ret_string, f_visualmode}, |
847 {"wildmenumode", 0, 0, 0, &t_number, f_wildmenumode}, | 933 {"wildmenumode", 0, 0, 0, ret_number, f_wildmenumode}, |
848 {"win_execute", 2, 3, FEARG_2, &t_string, f_win_execute}, | 934 {"win_execute", 2, 3, FEARG_2, ret_string, f_win_execute}, |
849 {"win_findbuf", 1, 1, FEARG_1, &t_list_number, f_win_findbuf}, | 935 {"win_findbuf", 1, 1, FEARG_1, ret_list_number, f_win_findbuf}, |
850 {"win_getid", 0, 2, FEARG_1, &t_number, f_win_getid}, | 936 {"win_getid", 0, 2, FEARG_1, ret_number, f_win_getid}, |
851 {"win_gettype", 0, 1, FEARG_1, &t_string, f_win_gettype}, | 937 {"win_gettype", 0, 1, FEARG_1, ret_string, f_win_gettype}, |
852 {"win_gotoid", 1, 1, FEARG_1, &t_number, f_win_gotoid}, | 938 {"win_gotoid", 1, 1, FEARG_1, ret_number, f_win_gotoid}, |
853 {"win_id2tabwin", 1, 1, FEARG_1, &t_list_number, f_win_id2tabwin}, | 939 {"win_id2tabwin", 1, 1, FEARG_1, ret_list_number, f_win_id2tabwin}, |
854 {"win_id2win", 1, 1, FEARG_1, &t_number, f_win_id2win}, | 940 {"win_id2win", 1, 1, FEARG_1, ret_number, f_win_id2win}, |
855 {"win_screenpos", 1, 1, FEARG_1, &t_list_number, f_win_screenpos}, | 941 {"win_screenpos", 1, 1, FEARG_1, ret_list_number, f_win_screenpos}, |
856 {"win_splitmove", 2, 3, FEARG_1, &t_number, f_win_splitmove}, | 942 {"win_splitmove", 2, 3, FEARG_1, ret_number, f_win_splitmove}, |
857 {"winbufnr", 1, 1, FEARG_1, &t_number, f_winbufnr}, | 943 {"winbufnr", 1, 1, FEARG_1, ret_number, f_winbufnr}, |
858 {"wincol", 0, 0, 0, &t_number, f_wincol}, | 944 {"wincol", 0, 0, 0, ret_number, f_wincol}, |
859 {"windowsversion", 0, 0, 0, &t_string, f_windowsversion}, | 945 {"windowsversion", 0, 0, 0, ret_string, f_windowsversion}, |
860 {"winheight", 1, 1, FEARG_1, &t_number, f_winheight}, | 946 {"winheight", 1, 1, FEARG_1, ret_number, f_winheight}, |
861 {"winlayout", 0, 1, FEARG_1, &t_list_any, f_winlayout}, | 947 {"winlayout", 0, 1, FEARG_1, ret_list_any, f_winlayout}, |
862 {"winline", 0, 0, 0, &t_number, f_winline}, | 948 {"winline", 0, 0, 0, ret_number, f_winline}, |
863 {"winnr", 0, 1, FEARG_1, &t_number, f_winnr}, | 949 {"winnr", 0, 1, FEARG_1, ret_number, f_winnr}, |
864 {"winrestcmd", 0, 0, 0, &t_string, f_winrestcmd}, | 950 {"winrestcmd", 0, 0, 0, ret_string, f_winrestcmd}, |
865 {"winrestview", 1, 1, FEARG_1, &t_void, f_winrestview}, | 951 {"winrestview", 1, 1, FEARG_1, ret_void, f_winrestview}, |
866 {"winsaveview", 0, 0, 0, &t_dict_any, f_winsaveview}, | 952 {"winsaveview", 0, 0, 0, ret_dict_any, f_winsaveview}, |
867 {"winwidth", 1, 1, FEARG_1, &t_number, f_winwidth}, | 953 {"winwidth", 1, 1, FEARG_1, ret_number, f_winwidth}, |
868 {"wordcount", 0, 0, 0, &t_dict_number, f_wordcount}, | 954 {"wordcount", 0, 0, 0, ret_dict_number, f_wordcount}, |
869 {"writefile", 2, 3, FEARG_1, &t_number, f_writefile}, | 955 {"writefile", 2, 3, FEARG_1, ret_number, f_writefile}, |
870 {"xor", 2, 2, FEARG_1, &t_number, f_xor}, | 956 {"xor", 2, 2, FEARG_1, ret_number, f_xor}, |
871 }; | 957 }; |
872 | 958 |
873 /* | 959 /* |
874 * Function given to ExpandGeneric() to obtain the list of internal | 960 * Function given to ExpandGeneric() to obtain the list of internal |
875 * or user defined function names. | 961 * or user defined function names. |
961 { | 1047 { |
962 return global_functions[idx].f_name; | 1048 return global_functions[idx].f_name; |
963 } | 1049 } |
964 | 1050 |
965 type_T * | 1051 type_T * |
966 internal_func_ret_type(int idx, int argcount) | 1052 internal_func_ret_type(int idx, int argcount, type_T **argtypes) |
967 { | 1053 { |
968 funcentry_T *fe = &global_functions[idx]; | 1054 return global_functions[idx].f_retfunc(argcount, argtypes); |
969 | |
970 if (fe->f_func == f_getline) | |
971 return argcount == 1 ? &t_string : &t_list_string; | |
972 return fe->f_rettype; | |
973 } | 1055 } |
974 | 1056 |
975 /* | 1057 /* |
976 * Check the argument count to use for internal function "idx". | 1058 * Check the argument count to use for internal function "idx". |
977 * Returns OK or FAIL; | 1059 * Returns OK or FAIL; |
2716 f_funcref(typval_T *argvars, typval_T *rettv) | 2798 f_funcref(typval_T *argvars, typval_T *rettv) |
2717 { | 2799 { |
2718 common_function(argvars, rettv, TRUE); | 2800 common_function(argvars, rettv, TRUE); |
2719 } | 2801 } |
2720 | 2802 |
2803 static type_T * | |
2804 ret_f_function(int argcount, type_T **argtypes UNUSED) | |
2805 { | |
2806 if (argcount == 1 && argtypes[0]->tt_type == VAR_STRING) | |
2807 return &t_func_any; | |
2808 return &t_partial_void; | |
2809 } | |
2810 | |
2721 /* | 2811 /* |
2722 * "function()" function | 2812 * "function()" function |
2723 */ | 2813 */ |
2724 static void | 2814 static void |
2725 f_function(typval_T *argvars, typval_T *rettv) | 2815 f_function(typval_T *argvars, typval_T *rettv) |