Mercurial > vim
comparison src/evalfunc.c @ 19805:2dc5e6ddeb4c v8.2.0459
patch 8.2.0459: cannot check if a function name is correct
Commit: https://github.com/vim/vim/commit/15c476023f3c5fb32eb1936c5eb5f0f5f413f3c7
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Mar 26 22:16:48 2020 +0100
patch 8.2.0459: cannot check if a function name is correct
Problem: Cannot check if a function name is correct.
Solution: Add "?funcname" to exists().
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 26 Mar 2020 22:30:03 +0100 |
parents | 810eee1b42e3 |
children | 13f34e46c269 |
comparison
equal
deleted
inserted
replaced
19804:503120273ab7 | 19805:2dc5e6ddeb4c |
---|---|
372 #define FEARG_2 2 // base is the second argument | 372 #define FEARG_2 2 // base is the second argument |
373 #define FEARG_3 3 // base is the third argument | 373 #define FEARG_3 3 // base is the third argument |
374 #define FEARG_4 4 // base is the fourth argument | 374 #define FEARG_4 4 // base is the fourth argument |
375 #define FEARG_LAST 9 // base is the last argument | 375 #define FEARG_LAST 9 // base is the last argument |
376 | 376 |
377 #ifdef FEAT_FLOAT | |
378 # define FLOAT_FUNC(name) name | |
379 #else | |
380 # define FLOAT_FUNC(name) NULL | |
381 #endif | |
382 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) | |
383 # define MATH_FUNC(name) name | |
384 #else | |
385 # define MATH_FUNC(name) NULL | |
386 #endif | |
387 #ifdef FEAT_TIMERS | |
388 # define TIMER_FUNC(name) name | |
389 #else | |
390 # define TIMER_FUNC(name) NULL | |
391 #endif | |
392 #ifdef FEAT_JOB_CHANNEL | |
393 # define JOB_FUNC(name) name | |
394 #else | |
395 # define JOB_FUNC(name) NULL | |
396 #endif | |
397 #ifdef FEAT_PROP_POPUP | |
398 # define PROP_FUNC(name) name | |
399 #else | |
400 # define PROP_FUNC(name) NULL | |
401 #endif | |
402 #ifdef FEAT_SIGNS | |
403 # define SIGN_FUNC(name) name | |
404 #else | |
405 # define SIGN_FUNC(name) NULL | |
406 #endif | |
407 #ifdef FEAT_SOUND | |
408 # define SOUND_FUNC(name) name | |
409 #else | |
410 # define SOUND_FUNC(name) NULL | |
411 #endif | |
412 #ifdef FEAT_TERMINAL | |
413 # define TERM_FUNC(name) name | |
414 #else | |
415 # define TERM_FUNC(name) NULL | |
416 #endif | |
417 | |
377 static funcentry_T global_functions[] = | 418 static funcentry_T global_functions[] = |
378 { | 419 { |
379 #ifdef FEAT_FLOAT | 420 {"abs", 1, 1, FEARG_1, ret_any, FLOAT_FUNC(f_abs)}, |
380 {"abs", 1, 1, FEARG_1, ret_any, f_abs}, | 421 {"acos", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_acos)}, |
381 {"acos", 1, 1, FEARG_1, ret_float, f_acos}, // WJMc | |
382 #endif | |
383 {"add", 2, 2, FEARG_1, ret_any, f_add}, | 422 {"add", 2, 2, FEARG_1, ret_any, f_add}, |
384 {"and", 2, 2, FEARG_1, ret_number, f_and}, | 423 {"and", 2, 2, FEARG_1, ret_number, f_and}, |
385 {"append", 2, 2, FEARG_LAST, ret_number, f_append}, | 424 {"append", 2, 2, FEARG_LAST, ret_number, f_append}, |
386 {"appendbufline", 3, 3, FEARG_LAST, ret_number, f_appendbufline}, | 425 {"appendbufline", 3, 3, FEARG_LAST, ret_number, f_appendbufline}, |
387 {"argc", 0, 1, 0, ret_number, f_argc}, | 426 {"argc", 0, 1, 0, ret_number, f_argc}, |
388 {"argidx", 0, 0, 0, ret_number, f_argidx}, | 427 {"argidx", 0, 0, 0, ret_number, f_argidx}, |
389 {"arglistid", 0, 2, 0, ret_number, f_arglistid}, | 428 {"arglistid", 0, 2, 0, ret_number, f_arglistid}, |
390 {"argv", 0, 2, 0, ret_any, f_argv}, | 429 {"argv", 0, 2, 0, ret_any, f_argv}, |
391 #ifdef FEAT_FLOAT | 430 {"asin", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_asin)}, |
392 {"asin", 1, 1, FEARG_1, ret_float, f_asin}, // WJMc | |
393 #endif | |
394 {"assert_beeps", 1, 2, FEARG_1, ret_number, f_assert_beeps}, | 431 {"assert_beeps", 1, 2, FEARG_1, ret_number, f_assert_beeps}, |
395 {"assert_equal", 2, 3, FEARG_2, ret_number, f_assert_equal}, | 432 {"assert_equal", 2, 3, FEARG_2, ret_number, f_assert_equal}, |
396 {"assert_equalfile", 2, 2, FEARG_1, ret_number, f_assert_equalfile}, | 433 {"assert_equalfile", 2, 2, FEARG_1, ret_number, f_assert_equalfile}, |
397 {"assert_exception", 1, 2, 0, ret_number, f_assert_exception}, | 434 {"assert_exception", 1, 2, 0, ret_number, f_assert_exception}, |
398 {"assert_fails", 1, 3, FEARG_1, ret_number, f_assert_fails}, | 435 {"assert_fails", 1, 3, FEARG_1, ret_number, f_assert_fails}, |
401 {"assert_match", 2, 3, FEARG_2, ret_number, f_assert_match}, | 438 {"assert_match", 2, 3, FEARG_2, ret_number, f_assert_match}, |
402 {"assert_notequal", 2, 3, FEARG_2, ret_number, f_assert_notequal}, | 439 {"assert_notequal", 2, 3, FEARG_2, ret_number, f_assert_notequal}, |
403 {"assert_notmatch", 2, 3, FEARG_2, ret_number, f_assert_notmatch}, | 440 {"assert_notmatch", 2, 3, FEARG_2, ret_number, f_assert_notmatch}, |
404 {"assert_report", 1, 1, FEARG_1, ret_number, f_assert_report}, | 441 {"assert_report", 1, 1, FEARG_1, ret_number, f_assert_report}, |
405 {"assert_true", 1, 2, FEARG_1, ret_number, f_assert_true}, | 442 {"assert_true", 1, 2, FEARG_1, ret_number, f_assert_true}, |
406 #ifdef FEAT_FLOAT | 443 {"atan", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_atan)}, |
407 {"atan", 1, 1, FEARG_1, ret_float, f_atan}, | 444 {"atan2", 2, 2, FEARG_1, ret_float, FLOAT_FUNC(f_atan2)}, |
408 {"atan2", 2, 2, FEARG_1, ret_float, f_atan2}, | 445 {"balloon_gettext", 0, 0, 0, ret_string, |
409 #endif | |
410 #ifdef FEAT_BEVAL | 446 #ifdef FEAT_BEVAL |
411 {"balloon_gettext", 0, 0, 0, ret_string, f_balloon_gettext}, | 447 f_balloon_gettext |
412 {"balloon_show", 1, 1, FEARG_1, ret_void, f_balloon_show}, | 448 #else |
413 # if defined(FEAT_BEVAL_TERM) | 449 NULL |
414 {"balloon_split", 1, 1, FEARG_1, ret_list_string, f_balloon_split}, | 450 #endif |
415 # endif | 451 }, |
416 #endif | 452 {"balloon_show", 1, 1, FEARG_1, ret_void, |
453 #ifdef FEAT_BEVAL | |
454 f_balloon_show | |
455 #else | |
456 NULL | |
457 #endif | |
458 }, | |
459 {"balloon_split", 1, 1, FEARG_1, ret_list_string, | |
460 #if defined(FEAT_BEVAL_TERM) | |
461 f_balloon_split | |
462 #else | |
463 NULL | |
464 #endif | |
465 }, | |
417 {"browse", 4, 4, 0, ret_string, f_browse}, | 466 {"browse", 4, 4, 0, ret_string, f_browse}, |
418 {"browsedir", 2, 2, 0, ret_string, f_browsedir}, | 467 {"browsedir", 2, 2, 0, ret_string, f_browsedir}, |
419 {"bufadd", 1, 1, FEARG_1, ret_number, f_bufadd}, | 468 {"bufadd", 1, 1, FEARG_1, ret_number, f_bufadd}, |
420 {"bufexists", 1, 1, FEARG_1, ret_number, f_bufexists}, | 469 {"bufexists", 1, 1, FEARG_1, ret_number, f_bufexists}, |
421 {"buffer_exists", 1, 1, FEARG_1, ret_number, f_bufexists}, // obsolete | 470 {"buffer_exists", 1, 1, FEARG_1, ret_number, f_bufexists}, // obsolete |
430 {"bufwinnr", 1, 1, FEARG_1, ret_number, f_bufwinnr}, | 479 {"bufwinnr", 1, 1, FEARG_1, ret_number, f_bufwinnr}, |
431 {"byte2line", 1, 1, FEARG_1, ret_number, f_byte2line}, | 480 {"byte2line", 1, 1, FEARG_1, ret_number, f_byte2line}, |
432 {"byteidx", 2, 2, FEARG_1, ret_number, f_byteidx}, | 481 {"byteidx", 2, 2, FEARG_1, ret_number, f_byteidx}, |
433 {"byteidxcomp", 2, 2, FEARG_1, ret_number, f_byteidxcomp}, | 482 {"byteidxcomp", 2, 2, FEARG_1, ret_number, f_byteidxcomp}, |
434 {"call", 2, 3, FEARG_1, ret_any, f_call}, | 483 {"call", 2, 3, FEARG_1, ret_any, f_call}, |
435 #ifdef FEAT_FLOAT | 484 {"ceil", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_ceil)}, |
436 {"ceil", 1, 1, FEARG_1, ret_float, f_ceil}, | 485 {"ch_canread", 1, 1, FEARG_1, ret_number, JOB_FUNC(f_ch_canread)}, |
437 #endif | 486 {"ch_close", 1, 1, FEARG_1, ret_void, JOB_FUNC(f_ch_close)}, |
438 #ifdef FEAT_JOB_CHANNEL | 487 {"ch_close_in", 1, 1, FEARG_1, ret_void, JOB_FUNC(f_ch_close_in)}, |
439 {"ch_canread", 1, 1, FEARG_1, ret_number, f_ch_canread}, | 488 {"ch_evalexpr", 2, 3, FEARG_1, ret_any, JOB_FUNC(f_ch_evalexpr)}, |
440 {"ch_close", 1, 1, FEARG_1, ret_void, f_ch_close}, | 489 {"ch_evalraw", 2, 3, FEARG_1, ret_any, JOB_FUNC(f_ch_evalraw)}, |
441 {"ch_close_in", 1, 1, FEARG_1, ret_void, f_ch_close_in}, | 490 {"ch_getbufnr", 2, 2, FEARG_1, ret_number, JOB_FUNC(f_ch_getbufnr)}, |
442 {"ch_evalexpr", 2, 3, FEARG_1, ret_any, f_ch_evalexpr}, | 491 {"ch_getjob", 1, 1, FEARG_1, ret_job, JOB_FUNC(f_ch_getjob)}, |
443 {"ch_evalraw", 2, 3, FEARG_1, ret_any, f_ch_evalraw}, | 492 {"ch_info", 1, 1, FEARG_1, ret_dict_any, JOB_FUNC(f_ch_info)}, |
444 {"ch_getbufnr", 2, 2, FEARG_1, ret_number, f_ch_getbufnr}, | 493 {"ch_log", 1, 2, FEARG_1, ret_void, JOB_FUNC(f_ch_log)}, |
445 {"ch_getjob", 1, 1, FEARG_1, ret_job, f_ch_getjob}, | 494 {"ch_logfile", 1, 2, FEARG_1, ret_void, JOB_FUNC(f_ch_logfile)}, |
446 {"ch_info", 1, 1, FEARG_1, ret_dict_any, f_ch_info}, | 495 {"ch_open", 1, 2, FEARG_1, ret_channel, JOB_FUNC(f_ch_open)}, |
447 {"ch_log", 1, 2, FEARG_1, ret_void, f_ch_log}, | 496 {"ch_read", 1, 2, FEARG_1, ret_string, JOB_FUNC(f_ch_read)}, |
448 {"ch_logfile", 1, 2, FEARG_1, ret_void, f_ch_logfile}, | 497 {"ch_readblob", 1, 2, FEARG_1, ret_blob, JOB_FUNC(f_ch_readblob)}, |
449 {"ch_open", 1, 2, FEARG_1, ret_channel, f_ch_open}, | 498 {"ch_readraw", 1, 2, FEARG_1, ret_string, JOB_FUNC(f_ch_readraw)}, |
450 {"ch_read", 1, 2, FEARG_1, ret_string, f_ch_read}, | 499 {"ch_sendexpr", 2, 3, FEARG_1, ret_void, JOB_FUNC(f_ch_sendexpr)}, |
451 {"ch_readblob", 1, 2, FEARG_1, ret_blob, f_ch_readblob}, | 500 {"ch_sendraw", 2, 3, FEARG_1, ret_void, JOB_FUNC(f_ch_sendraw)}, |
452 {"ch_readraw", 1, 2, FEARG_1, ret_string, f_ch_readraw}, | 501 {"ch_setoptions", 2, 2, FEARG_1, ret_void, JOB_FUNC(f_ch_setoptions)}, |
453 {"ch_sendexpr", 2, 3, FEARG_1, ret_void, f_ch_sendexpr}, | 502 {"ch_status", 1, 2, FEARG_1, ret_string, JOB_FUNC(f_ch_status)}, |
454 {"ch_sendraw", 2, 3, FEARG_1, ret_void, f_ch_sendraw}, | |
455 {"ch_setoptions", 2, 2, FEARG_1, ret_void, f_ch_setoptions}, | |
456 {"ch_status", 1, 2, FEARG_1, ret_string, f_ch_status}, | |
457 #endif | |
458 {"changenr", 0, 0, 0, ret_number, f_changenr}, | 503 {"changenr", 0, 0, 0, ret_number, f_changenr}, |
459 {"char2nr", 1, 2, FEARG_1, ret_number, f_char2nr}, | 504 {"char2nr", 1, 2, FEARG_1, ret_number, f_char2nr}, |
460 {"chdir", 1, 1, FEARG_1, ret_string, f_chdir}, | 505 {"chdir", 1, 1, FEARG_1, ret_string, f_chdir}, |
461 {"cindent", 1, 1, FEARG_1, ret_number, f_cindent}, | 506 {"cindent", 1, 1, FEARG_1, ret_number, f_cindent}, |
462 {"clearmatches", 0, 1, FEARG_1, ret_void, f_clearmatches}, | 507 {"clearmatches", 0, 1, FEARG_1, ret_void, f_clearmatches}, |
465 {"complete_add", 1, 1, FEARG_1, ret_number, f_complete_add}, | 510 {"complete_add", 1, 1, FEARG_1, ret_number, f_complete_add}, |
466 {"complete_check", 0, 0, 0, ret_number, f_complete_check}, | 511 {"complete_check", 0, 0, 0, ret_number, f_complete_check}, |
467 {"complete_info", 0, 1, FEARG_1, ret_dict_any, f_complete_info}, | 512 {"complete_info", 0, 1, FEARG_1, ret_dict_any, f_complete_info}, |
468 {"confirm", 1, 4, FEARG_1, ret_number, f_confirm}, | 513 {"confirm", 1, 4, FEARG_1, ret_number, f_confirm}, |
469 {"copy", 1, 1, FEARG_1, ret_any, f_copy}, | 514 {"copy", 1, 1, FEARG_1, ret_any, f_copy}, |
470 #ifdef FEAT_FLOAT | 515 {"cos", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_cos)}, |
471 {"cos", 1, 1, FEARG_1, ret_float, f_cos}, | 516 {"cosh", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_cosh)}, |
472 {"cosh", 1, 1, FEARG_1, ret_float, f_cosh}, | |
473 #endif | |
474 {"count", 2, 4, FEARG_1, ret_number, f_count}, | 517 {"count", 2, 4, FEARG_1, ret_number, f_count}, |
475 {"cscope_connection",0,3, 0, ret_number, f_cscope_connection}, | 518 {"cscope_connection",0,3, 0, ret_number, f_cscope_connection}, |
476 {"cursor", 1, 3, FEARG_1, ret_number, f_cursor}, | 519 {"cursor", 1, 3, FEARG_1, ret_number, f_cursor}, |
520 {"debugbreak", 1, 1, FEARG_1, ret_number, | |
477 #ifdef MSWIN | 521 #ifdef MSWIN |
478 {"debugbreak", 1, 1, FEARG_1, ret_number, f_debugbreak}, | 522 f_debugbreak |
479 #endif | 523 #else |
524 NULL | |
525 #endif | |
526 }, | |
480 {"deepcopy", 1, 2, FEARG_1, ret_any, f_deepcopy}, | 527 {"deepcopy", 1, 2, FEARG_1, ret_any, f_deepcopy}, |
481 {"delete", 1, 2, FEARG_1, ret_number, f_delete}, | 528 {"delete", 1, 2, FEARG_1, ret_number, f_delete}, |
482 {"deletebufline", 2, 3, FEARG_1, ret_number, f_deletebufline}, | 529 {"deletebufline", 2, 3, FEARG_1, ret_number, f_deletebufline}, |
483 {"did_filetype", 0, 0, 0, ret_number, f_did_filetype}, | 530 {"did_filetype", 0, 0, 0, ret_number, f_did_filetype}, |
484 {"diff_filler", 1, 1, FEARG_1, ret_number, f_diff_filler}, | 531 {"diff_filler", 1, 1, FEARG_1, ret_number, f_diff_filler}, |
491 {"eventhandler", 0, 0, 0, ret_number, f_eventhandler}, | 538 {"eventhandler", 0, 0, 0, ret_number, f_eventhandler}, |
492 {"executable", 1, 1, FEARG_1, ret_number, f_executable}, | 539 {"executable", 1, 1, FEARG_1, ret_number, f_executable}, |
493 {"execute", 1, 2, FEARG_1, ret_string, f_execute}, | 540 {"execute", 1, 2, FEARG_1, ret_string, f_execute}, |
494 {"exepath", 1, 1, FEARG_1, ret_string, f_exepath}, | 541 {"exepath", 1, 1, FEARG_1, ret_string, f_exepath}, |
495 {"exists", 1, 1, FEARG_1, ret_number, f_exists}, | 542 {"exists", 1, 1, FEARG_1, ret_number, f_exists}, |
496 #ifdef FEAT_FLOAT | 543 {"exp", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_exp)}, |
497 {"exp", 1, 1, FEARG_1, ret_float, f_exp}, | |
498 #endif | |
499 {"expand", 1, 3, FEARG_1, ret_any, f_expand}, | 544 {"expand", 1, 3, FEARG_1, ret_any, f_expand}, |
500 {"expandcmd", 1, 1, FEARG_1, ret_string, f_expandcmd}, | 545 {"expandcmd", 1, 1, FEARG_1, ret_string, f_expandcmd}, |
501 {"extend", 2, 3, FEARG_1, ret_any, f_extend}, | 546 {"extend", 2, 3, FEARG_1, ret_any, f_extend}, |
502 {"feedkeys", 1, 2, FEARG_1, ret_void, f_feedkeys}, | 547 {"feedkeys", 1, 2, FEARG_1, ret_void, f_feedkeys}, |
503 {"file_readable", 1, 1, FEARG_1, ret_number, f_filereadable}, // obsolete | 548 {"file_readable", 1, 1, FEARG_1, ret_number, f_filereadable}, // obsolete |
504 {"filereadable", 1, 1, FEARG_1, ret_number, f_filereadable}, | 549 {"filereadable", 1, 1, FEARG_1, ret_number, f_filereadable}, |
505 {"filewritable", 1, 1, FEARG_1, ret_number, f_filewritable}, | 550 {"filewritable", 1, 1, FEARG_1, ret_number, f_filewritable}, |
506 {"filter", 2, 2, FEARG_1, ret_any, f_filter}, | 551 {"filter", 2, 2, FEARG_1, ret_any, f_filter}, |
507 {"finddir", 1, 3, FEARG_1, ret_string, f_finddir}, | 552 {"finddir", 1, 3, FEARG_1, ret_string, f_finddir}, |
508 {"findfile", 1, 3, FEARG_1, ret_string, f_findfile}, | 553 {"findfile", 1, 3, FEARG_1, ret_string, f_findfile}, |
509 #ifdef FEAT_FLOAT | 554 {"float2nr", 1, 1, FEARG_1, ret_number, FLOAT_FUNC(f_float2nr)}, |
510 {"float2nr", 1, 1, FEARG_1, ret_number, f_float2nr}, | 555 {"floor", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_floor)}, |
511 {"floor", 1, 1, FEARG_1, ret_float, f_floor}, | 556 {"fmod", 2, 2, FEARG_1, ret_float, FLOAT_FUNC(f_fmod)}, |
512 {"fmod", 2, 2, FEARG_1, ret_float, f_fmod}, | |
513 #endif | |
514 {"fnameescape", 1, 1, FEARG_1, ret_string, f_fnameescape}, | 557 {"fnameescape", 1, 1, FEARG_1, ret_string, f_fnameescape}, |
515 {"fnamemodify", 2, 2, FEARG_1, ret_string, f_fnamemodify}, | 558 {"fnamemodify", 2, 2, FEARG_1, ret_string, f_fnamemodify}, |
516 {"foldclosed", 1, 1, FEARG_1, ret_number, f_foldclosed}, | 559 {"foldclosed", 1, 1, FEARG_1, ret_number, f_foldclosed}, |
517 {"foldclosedend", 1, 1, FEARG_1, ret_number, f_foldclosedend}, | 560 {"foldclosedend", 1, 1, FEARG_1, ret_number, f_foldclosedend}, |
518 {"foldlevel", 1, 1, FEARG_1, ret_number, f_foldlevel}, | 561 {"foldlevel", 1, 1, FEARG_1, ret_number, f_foldlevel}, |
590 {"inputsecret", 1, 2, FEARG_1, ret_string, f_inputsecret}, | 633 {"inputsecret", 1, 2, FEARG_1, ret_string, f_inputsecret}, |
591 {"insert", 2, 3, FEARG_1, ret_any, f_insert}, | 634 {"insert", 2, 3, FEARG_1, ret_any, f_insert}, |
592 {"interrupt", 0, 0, 0, ret_void, f_interrupt}, | 635 {"interrupt", 0, 0, 0, ret_void, f_interrupt}, |
593 {"invert", 1, 1, FEARG_1, ret_number, f_invert}, | 636 {"invert", 1, 1, FEARG_1, ret_number, f_invert}, |
594 {"isdirectory", 1, 1, FEARG_1, ret_number, f_isdirectory}, | 637 {"isdirectory", 1, 1, FEARG_1, ret_number, f_isdirectory}, |
595 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) | 638 {"isinf", 1, 1, FEARG_1, ret_number, MATH_FUNC(f_isinf)}, |
596 {"isinf", 1, 1, FEARG_1, ret_number, f_isinf}, | |
597 #endif | |
598 {"islocked", 1, 1, FEARG_1, ret_number, f_islocked}, | 639 {"islocked", 1, 1, FEARG_1, ret_number, f_islocked}, |
599 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) | 640 {"isnan", 1, 1, FEARG_1, ret_number, MATH_FUNC(f_isnan)}, |
600 {"isnan", 1, 1, FEARG_1, ret_number, f_isnan}, | |
601 #endif | |
602 {"items", 1, 1, FEARG_1, ret_list_any, f_items}, | 641 {"items", 1, 1, FEARG_1, ret_list_any, f_items}, |
603 #ifdef FEAT_JOB_CHANNEL | 642 {"job_getchannel", 1, 1, FEARG_1, ret_channel, JOB_FUNC(f_job_getchannel)}, |
604 {"job_getchannel", 1, 1, FEARG_1, ret_channel, f_job_getchannel}, | 643 {"job_info", 0, 1, FEARG_1, ret_dict_any, JOB_FUNC(f_job_info)}, |
605 {"job_info", 0, 1, FEARG_1, ret_dict_any, f_job_info}, | 644 {"job_setoptions", 2, 2, FEARG_1, ret_void, JOB_FUNC(f_job_setoptions)}, |
606 {"job_setoptions", 2, 2, FEARG_1, ret_void, f_job_setoptions}, | 645 {"job_start", 1, 2, FEARG_1, ret_job, JOB_FUNC(f_job_start)}, |
607 {"job_start", 1, 2, FEARG_1, ret_job, f_job_start}, | 646 {"job_status", 1, 1, FEARG_1, ret_string, JOB_FUNC(f_job_status)}, |
608 {"job_status", 1, 1, FEARG_1, ret_string, f_job_status}, | 647 {"job_stop", 1, 2, FEARG_1, ret_number, JOB_FUNC(f_job_stop)}, |
609 {"job_stop", 1, 2, FEARG_1, ret_number, f_job_stop}, | |
610 #endif | |
611 {"join", 1, 2, FEARG_1, ret_string, f_join}, | 648 {"join", 1, 2, FEARG_1, ret_string, f_join}, |
612 {"js_decode", 1, 1, FEARG_1, ret_any, f_js_decode}, | 649 {"js_decode", 1, 1, FEARG_1, ret_any, f_js_decode}, |
613 {"js_encode", 1, 1, FEARG_1, ret_string, f_js_encode}, | 650 {"js_encode", 1, 1, FEARG_1, ret_string, f_js_encode}, |
614 {"json_decode", 1, 1, FEARG_1, ret_any, f_json_decode}, | 651 {"json_decode", 1, 1, FEARG_1, ret_any, f_json_decode}, |
615 {"json_encode", 1, 1, FEARG_1, ret_string, f_json_encode}, | 652 {"json_encode", 1, 1, FEARG_1, ret_string, f_json_encode}, |
624 {"list2str", 1, 2, FEARG_1, ret_string, f_list2str}, | 661 {"list2str", 1, 2, FEARG_1, ret_string, f_list2str}, |
625 {"listener_add", 1, 2, FEARG_2, ret_number, f_listener_add}, | 662 {"listener_add", 1, 2, FEARG_2, ret_number, f_listener_add}, |
626 {"listener_flush", 0, 1, FEARG_1, ret_void, f_listener_flush}, | 663 {"listener_flush", 0, 1, FEARG_1, ret_void, f_listener_flush}, |
627 {"listener_remove", 1, 1, FEARG_1, ret_number, f_listener_remove}, | 664 {"listener_remove", 1, 1, FEARG_1, ret_number, f_listener_remove}, |
628 {"localtime", 0, 0, 0, ret_number, f_localtime}, | 665 {"localtime", 0, 0, 0, ret_number, f_localtime}, |
629 #ifdef FEAT_FLOAT | 666 {"log", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_log)}, |
630 {"log", 1, 1, FEARG_1, ret_float, f_log}, | 667 {"log10", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_log10)}, |
631 {"log10", 1, 1, FEARG_1, ret_float, f_log10}, | 668 {"luaeval", 1, 2, FEARG_1, ret_any, |
632 #endif | |
633 #ifdef FEAT_LUA | 669 #ifdef FEAT_LUA |
634 {"luaeval", 1, 2, FEARG_1, ret_any, f_luaeval}, | 670 f_luaeval |
635 #endif | 671 #else |
672 NULL | |
673 #endif | |
674 }, | |
636 {"map", 2, 2, FEARG_1, ret_any, f_map}, | 675 {"map", 2, 2, FEARG_1, ret_any, f_map}, |
637 {"maparg", 1, 4, FEARG_1, ret_string, f_maparg}, | 676 {"maparg", 1, 4, FEARG_1, ret_string, f_maparg}, |
638 {"mapcheck", 1, 3, FEARG_1, ret_string, f_mapcheck}, | 677 {"mapcheck", 1, 3, FEARG_1, ret_string, f_mapcheck}, |
639 {"match", 2, 4, FEARG_1, ret_any, f_match}, | 678 {"match", 2, 4, FEARG_1, ret_any, f_match}, |
640 {"matchadd", 2, 5, FEARG_1, ret_number, f_matchadd}, | 679 {"matchadd", 2, 5, FEARG_1, ret_number, f_matchadd}, |
644 {"matchend", 2, 4, FEARG_1, ret_number, f_matchend}, | 683 {"matchend", 2, 4, FEARG_1, ret_number, f_matchend}, |
645 {"matchlist", 2, 4, FEARG_1, ret_list_string, f_matchlist}, | 684 {"matchlist", 2, 4, FEARG_1, ret_list_string, f_matchlist}, |
646 {"matchstr", 2, 4, FEARG_1, ret_string, f_matchstr}, | 685 {"matchstr", 2, 4, FEARG_1, ret_string, f_matchstr}, |
647 {"matchstrpos", 2, 4, FEARG_1, ret_list_any, f_matchstrpos}, | 686 {"matchstrpos", 2, 4, FEARG_1, ret_list_any, f_matchstrpos}, |
648 {"max", 1, 1, FEARG_1, ret_any, f_max}, | 687 {"max", 1, 1, FEARG_1, ret_any, f_max}, |
688 {"menu_info", 1, 2, FEARG_1, ret_dict_any, | |
649 #ifdef FEAT_MENU | 689 #ifdef FEAT_MENU |
650 {"menu_info", 1, 2, FEARG_1, ret_dict_any, f_menu_info}, | 690 f_menu_info |
651 #endif | 691 #else |
692 NULL | |
693 #endif | |
694 }, | |
652 {"min", 1, 1, FEARG_1, ret_any, f_min}, | 695 {"min", 1, 1, FEARG_1, ret_any, f_min}, |
653 {"mkdir", 1, 3, FEARG_1, ret_number, f_mkdir}, | 696 {"mkdir", 1, 3, FEARG_1, ret_number, f_mkdir}, |
654 {"mode", 0, 1, FEARG_1, ret_string, f_mode}, | 697 {"mode", 0, 1, FEARG_1, ret_string, f_mode}, |
698 {"mzeval", 1, 1, FEARG_1, ret_any, | |
655 #ifdef FEAT_MZSCHEME | 699 #ifdef FEAT_MZSCHEME |
656 {"mzeval", 1, 1, FEARG_1, ret_any, f_mzeval}, | 700 f_mzeval |
657 #endif | 701 #else |
702 NULL | |
703 #endif | |
704 }, | |
658 {"nextnonblank", 1, 1, FEARG_1, ret_number, f_nextnonblank}, | 705 {"nextnonblank", 1, 1, FEARG_1, ret_number, f_nextnonblank}, |
659 {"nr2char", 1, 2, FEARG_1, ret_string, f_nr2char}, | 706 {"nr2char", 1, 2, FEARG_1, ret_string, f_nr2char}, |
660 {"or", 2, 2, FEARG_1, ret_number, f_or}, | 707 {"or", 2, 2, FEARG_1, ret_number, f_or}, |
661 {"pathshorten", 1, 1, FEARG_1, ret_string, f_pathshorten}, | 708 {"pathshorten", 1, 1, FEARG_1, ret_string, f_pathshorten}, |
709 {"perleval", 1, 1, FEARG_1, ret_any, | |
662 #ifdef FEAT_PERL | 710 #ifdef FEAT_PERL |
663 {"perleval", 1, 1, FEARG_1, ret_any, f_perleval}, | 711 f_perleval |
664 #endif | 712 #else |
665 #ifdef FEAT_PROP_POPUP | 713 NULL |
666 {"popup_atcursor", 2, 2, FEARG_1, ret_number, f_popup_atcursor}, | 714 #endif |
667 {"popup_beval", 2, 2, FEARG_1, ret_number, f_popup_beval}, | 715 }, |
668 {"popup_clear", 0, 0, 0, ret_void, f_popup_clear}, | 716 {"popup_atcursor", 2, 2, FEARG_1, ret_number, PROP_FUNC(f_popup_atcursor)}, |
669 {"popup_close", 1, 2, FEARG_1, ret_void, f_popup_close}, | 717 {"popup_beval", 2, 2, FEARG_1, ret_number, PROP_FUNC(f_popup_beval)}, |
670 {"popup_create", 2, 2, FEARG_1, ret_number, f_popup_create}, | 718 {"popup_clear", 0, 0, 0, ret_void, PROP_FUNC(f_popup_clear)}, |
671 {"popup_dialog", 2, 2, FEARG_1, ret_number, f_popup_dialog}, | 719 {"popup_close", 1, 2, FEARG_1, ret_void, PROP_FUNC(f_popup_close)}, |
672 {"popup_filter_menu", 2, 2, 0, ret_number, f_popup_filter_menu}, | 720 {"popup_create", 2, 2, FEARG_1, ret_number, PROP_FUNC(f_popup_create)}, |
673 {"popup_filter_yesno", 2, 2, 0, ret_number, f_popup_filter_yesno}, | 721 {"popup_dialog", 2, 2, FEARG_1, ret_number, PROP_FUNC(f_popup_dialog)}, |
674 {"popup_findinfo", 0, 0, 0, ret_number, f_popup_findinfo}, | 722 {"popup_filter_menu", 2, 2, 0, ret_number, PROP_FUNC(f_popup_filter_menu)}, |
675 {"popup_findpreview", 0, 0, 0, ret_number, f_popup_findpreview}, | 723 {"popup_filter_yesno", 2, 2, 0, ret_number, PROP_FUNC(f_popup_filter_yesno)}, |
676 {"popup_getoptions", 1, 1, FEARG_1, ret_dict_any, f_popup_getoptions}, | 724 {"popup_findinfo", 0, 0, 0, ret_number, PROP_FUNC(f_popup_findinfo)}, |
677 {"popup_getpos", 1, 1, FEARG_1, ret_dict_any, f_popup_getpos}, | 725 {"popup_findpreview", 0, 0, 0, ret_number, PROP_FUNC(f_popup_findpreview)}, |
678 {"popup_hide", 1, 1, FEARG_1, ret_void, f_popup_hide}, | 726 {"popup_getoptions", 1, 1, FEARG_1, ret_dict_any, PROP_FUNC(f_popup_getoptions)}, |
679 {"popup_locate", 2, 2, 0, ret_number, f_popup_locate}, | 727 {"popup_getpos", 1, 1, FEARG_1, ret_dict_any, PROP_FUNC(f_popup_getpos)}, |
680 {"popup_menu", 2, 2, FEARG_1, ret_number, f_popup_menu}, | 728 {"popup_hide", 1, 1, FEARG_1, ret_void, PROP_FUNC(f_popup_hide)}, |
681 {"popup_move", 2, 2, FEARG_1, ret_void, f_popup_move}, | 729 {"popup_locate", 2, 2, 0, ret_number, PROP_FUNC(f_popup_locate)}, |
682 {"popup_notification", 2, 2, FEARG_1, ret_number, f_popup_notification}, | 730 {"popup_menu", 2, 2, FEARG_1, ret_number, PROP_FUNC(f_popup_menu)}, |
683 {"popup_setoptions", 2, 2, FEARG_1, ret_void, f_popup_setoptions}, | 731 {"popup_move", 2, 2, FEARG_1, ret_void, PROP_FUNC(f_popup_move)}, |
684 {"popup_settext", 2, 2, FEARG_1, ret_void, f_popup_settext}, | 732 {"popup_notification", 2, 2, FEARG_1, ret_number, PROP_FUNC(f_popup_notification)}, |
685 {"popup_show", 1, 1, FEARG_1, ret_void, f_popup_show}, | 733 {"popup_setoptions", 2, 2, FEARG_1, ret_void, PROP_FUNC(f_popup_setoptions)}, |
686 #endif | 734 {"popup_settext", 2, 2, FEARG_1, ret_void, PROP_FUNC(f_popup_settext)}, |
687 #ifdef FEAT_FLOAT | 735 {"popup_show", 1, 1, FEARG_1, ret_void, PROP_FUNC(f_popup_show)}, |
688 {"pow", 2, 2, FEARG_1, ret_float, f_pow}, | 736 {"pow", 2, 2, FEARG_1, ret_float, FLOAT_FUNC(f_pow)}, |
689 #endif | |
690 {"prevnonblank", 1, 1, FEARG_1, ret_number, f_prevnonblank}, | 737 {"prevnonblank", 1, 1, FEARG_1, ret_number, f_prevnonblank}, |
691 {"printf", 1, 19, FEARG_2, ret_string, f_printf}, | 738 {"printf", 1, 19, FEARG_2, ret_string, f_printf}, |
692 #ifdef FEAT_JOB_CHANNEL | 739 {"prompt_setcallback", 2, 2, FEARG_1, ret_void, JOB_FUNC(f_prompt_setcallback)}, |
693 {"prompt_setcallback", 2, 2, FEARG_1, ret_void, f_prompt_setcallback}, | 740 {"prompt_setinterrupt", 2, 2, FEARG_1,ret_void, JOB_FUNC(f_prompt_setinterrupt)}, |
694 {"prompt_setinterrupt", 2, 2, FEARG_1,ret_void, f_prompt_setinterrupt}, | 741 {"prompt_setprompt", 2, 2, FEARG_1, ret_void, JOB_FUNC(f_prompt_setprompt)}, |
695 {"prompt_setprompt", 2, 2, FEARG_1, ret_void, f_prompt_setprompt}, | 742 {"prop_add", 3, 3, FEARG_1, ret_void, PROP_FUNC(f_prop_add)}, |
696 #endif | 743 {"prop_clear", 1, 3, FEARG_1, ret_void, PROP_FUNC(f_prop_clear)}, |
697 #ifdef FEAT_PROP_POPUP | 744 {"prop_find", 1, 2, FEARG_1, ret_dict_any, PROP_FUNC(f_prop_find)}, |
698 {"prop_add", 3, 3, FEARG_1, ret_void, f_prop_add}, | 745 {"prop_list", 1, 2, FEARG_1, ret_list_dict_any, PROP_FUNC(f_prop_list)}, |
699 {"prop_clear", 1, 3, FEARG_1, ret_void, f_prop_clear}, | 746 {"prop_remove", 1, 3, FEARG_1, ret_number, PROP_FUNC(f_prop_remove)}, |
700 {"prop_find", 1, 2, FEARG_1, ret_dict_any, f_prop_find}, | 747 {"prop_type_add", 2, 2, FEARG_1, ret_void, PROP_FUNC(f_prop_type_add)}, |
701 {"prop_list", 1, 2, FEARG_1, ret_list_dict_any, f_prop_list}, | 748 {"prop_type_change", 2, 2, FEARG_1, ret_void, PROP_FUNC(f_prop_type_change)}, |
702 {"prop_remove", 1, 3, FEARG_1, ret_number, f_prop_remove}, | 749 {"prop_type_delete", 1, 2, FEARG_1, ret_void, PROP_FUNC(f_prop_type_delete)}, |
703 {"prop_type_add", 2, 2, FEARG_1, ret_void, f_prop_type_add}, | 750 {"prop_type_get", 1, 2, FEARG_1, ret_dict_any, PROP_FUNC(f_prop_type_get)}, |
704 {"prop_type_change", 2, 2, FEARG_1, ret_void, f_prop_type_change}, | 751 {"prop_type_list", 0, 1, FEARG_1, ret_list_string, PROP_FUNC(f_prop_type_list)}, |
705 {"prop_type_delete", 1, 2, FEARG_1, ret_void, f_prop_type_delete}, | |
706 {"prop_type_get", 1, 2, FEARG_1, ret_dict_any, f_prop_type_get}, | |
707 {"prop_type_list", 0, 1, FEARG_1, ret_list_string, f_prop_type_list}, | |
708 #endif | |
709 {"pum_getpos", 0, 0, 0, ret_dict_number, f_pum_getpos}, | 752 {"pum_getpos", 0, 0, 0, ret_dict_number, f_pum_getpos}, |
710 {"pumvisible", 0, 0, 0, ret_number, f_pumvisible}, | 753 {"pumvisible", 0, 0, 0, ret_number, f_pumvisible}, |
754 {"py3eval", 1, 1, FEARG_1, ret_any, | |
711 #ifdef FEAT_PYTHON3 | 755 #ifdef FEAT_PYTHON3 |
712 {"py3eval", 1, 1, FEARG_1, ret_any, f_py3eval}, | 756 f_py3eval |
713 #endif | 757 #else |
758 NULL | |
759 #endif | |
760 }, | |
761 {"pyeval", 1, 1, FEARG_1, ret_any, | |
714 #ifdef FEAT_PYTHON | 762 #ifdef FEAT_PYTHON |
715 {"pyeval", 1, 1, FEARG_1, ret_any, f_pyeval}, | 763 f_pyeval |
716 #endif | 764 #else |
765 NULL | |
766 #endif | |
767 }, | |
768 {"pyxeval", 1, 1, FEARG_1, ret_any, | |
717 #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) | 769 #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) |
718 {"pyxeval", 1, 1, FEARG_1, ret_any, f_pyxeval}, | 770 f_pyxeval |
719 #endif | 771 #else |
772 NULL | |
773 #endif | |
774 }, | |
720 {"rand", 0, 1, FEARG_1, ret_number, f_rand}, | 775 {"rand", 0, 1, FEARG_1, ret_number, f_rand}, |
721 {"range", 1, 3, FEARG_1, ret_list_number, f_range}, | 776 {"range", 1, 3, FEARG_1, ret_list_number, f_range}, |
722 {"readdir", 1, 2, FEARG_1, ret_list_string, f_readdir}, | 777 {"readdir", 1, 2, FEARG_1, ret_list_string, f_readdir}, |
723 {"readfile", 1, 3, FEARG_1, ret_any, f_readfile}, | 778 {"readfile", 1, 3, FEARG_1, ret_any, f_readfile}, |
724 {"reg_executing", 0, 0, 0, ret_string, f_reg_executing}, | 779 {"reg_executing", 0, 0, 0, ret_string, f_reg_executing}, |
725 {"reg_recording", 0, 0, 0, ret_string, f_reg_recording}, | 780 {"reg_recording", 0, 0, 0, ret_string, f_reg_recording}, |
726 {"reltime", 0, 2, FEARG_1, ret_list_any, f_reltime}, | 781 {"reltime", 0, 2, FEARG_1, ret_list_any, f_reltime}, |
727 #ifdef FEAT_FLOAT | 782 {"reltimefloat", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_reltimefloat)}, |
728 {"reltimefloat", 1, 1, FEARG_1, ret_float, f_reltimefloat}, | |
729 #endif | |
730 {"reltimestr", 1, 1, FEARG_1, ret_string, f_reltimestr}, | 783 {"reltimestr", 1, 1, FEARG_1, ret_string, f_reltimestr}, |
731 {"remote_expr", 2, 4, FEARG_1, ret_string, f_remote_expr}, | 784 {"remote_expr", 2, 4, FEARG_1, ret_string, f_remote_expr}, |
732 {"remote_foreground", 1, 1, FEARG_1, ret_string, f_remote_foreground}, | 785 {"remote_foreground", 1, 1, FEARG_1, ret_string, f_remote_foreground}, |
733 {"remote_peek", 1, 2, FEARG_1, ret_number, f_remote_peek}, | 786 {"remote_peek", 1, 2, FEARG_1, ret_number, f_remote_peek}, |
734 {"remote_read", 1, 2, FEARG_1, ret_string, f_remote_read}, | 787 {"remote_read", 1, 2, FEARG_1, ret_string, f_remote_read}, |
737 {"remove", 2, 3, FEARG_1, ret_any, f_remove}, | 790 {"remove", 2, 3, FEARG_1, ret_any, f_remove}, |
738 {"rename", 2, 2, FEARG_1, ret_number, f_rename}, | 791 {"rename", 2, 2, FEARG_1, ret_number, f_rename}, |
739 {"repeat", 2, 2, FEARG_1, ret_any, f_repeat}, | 792 {"repeat", 2, 2, FEARG_1, ret_any, f_repeat}, |
740 {"resolve", 1, 1, FEARG_1, ret_string, f_resolve}, | 793 {"resolve", 1, 1, FEARG_1, ret_string, f_resolve}, |
741 {"reverse", 1, 1, FEARG_1, ret_any, f_reverse}, | 794 {"reverse", 1, 1, FEARG_1, ret_any, f_reverse}, |
742 #ifdef FEAT_FLOAT | 795 {"round", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_round)}, |
743 {"round", 1, 1, FEARG_1, ret_float, f_round}, | 796 {"rubyeval", 1, 1, FEARG_1, ret_any, |
744 #endif | |
745 #ifdef FEAT_RUBY | 797 #ifdef FEAT_RUBY |
746 {"rubyeval", 1, 1, FEARG_1, ret_any, f_rubyeval}, | 798 f_rubyeval |
747 #endif | 799 #else |
800 NULL | |
801 #endif | |
802 }, | |
748 {"screenattr", 2, 2, FEARG_1, ret_number, f_screenattr}, | 803 {"screenattr", 2, 2, FEARG_1, ret_number, f_screenattr}, |
749 {"screenchar", 2, 2, FEARG_1, ret_number, f_screenchar}, | 804 {"screenchar", 2, 2, FEARG_1, ret_number, f_screenchar}, |
750 {"screenchars", 2, 2, FEARG_1, ret_list_number, f_screenchars}, | 805 {"screenchars", 2, 2, FEARG_1, ret_list_number, f_screenchars}, |
751 {"screencol", 0, 0, 0, ret_number, f_screencol}, | 806 {"screencol", 0, 0, 0, ret_number, f_screencol}, |
752 {"screenpos", 3, 3, FEARG_1, ret_dict_number, f_screenpos}, | 807 {"screenpos", 3, 3, FEARG_1, ret_dict_number, f_screenpos}, |
773 {"setreg", 2, 3, FEARG_2, ret_number, f_setreg}, | 828 {"setreg", 2, 3, FEARG_2, ret_number, f_setreg}, |
774 {"settabvar", 3, 3, FEARG_3, ret_void, f_settabvar}, | 829 {"settabvar", 3, 3, FEARG_3, ret_void, f_settabvar}, |
775 {"settabwinvar", 4, 4, FEARG_4, ret_void, f_settabwinvar}, | 830 {"settabwinvar", 4, 4, FEARG_4, ret_void, f_settabwinvar}, |
776 {"settagstack", 2, 3, FEARG_2, ret_number, f_settagstack}, | 831 {"settagstack", 2, 3, FEARG_2, ret_number, f_settagstack}, |
777 {"setwinvar", 3, 3, FEARG_3, ret_void, f_setwinvar}, | 832 {"setwinvar", 3, 3, FEARG_3, ret_void, f_setwinvar}, |
833 {"sha256", 1, 1, FEARG_1, ret_string, | |
778 #ifdef FEAT_CRYPT | 834 #ifdef FEAT_CRYPT |
779 {"sha256", 1, 1, FEARG_1, ret_string, f_sha256}, | 835 f_sha256 |
780 #endif | 836 #else |
837 NULL | |
838 #endif | |
839 }, | |
781 {"shellescape", 1, 2, FEARG_1, ret_string, f_shellescape}, | 840 {"shellescape", 1, 2, FEARG_1, ret_string, f_shellescape}, |
782 {"shiftwidth", 0, 1, FEARG_1, ret_number, f_shiftwidth}, | 841 {"shiftwidth", 0, 1, FEARG_1, ret_number, f_shiftwidth}, |
783 #ifdef FEAT_SIGNS | 842 {"sign_define", 1, 2, FEARG_1, ret_any, SIGN_FUNC(f_sign_define)}, |
784 {"sign_define", 1, 2, FEARG_1, ret_any, f_sign_define}, | 843 {"sign_getdefined", 0, 1, FEARG_1, ret_list_dict_any, SIGN_FUNC(f_sign_getdefined)}, |
785 {"sign_getdefined", 0, 1, FEARG_1, ret_list_dict_any, f_sign_getdefined}, | 844 {"sign_getplaced", 0, 2, FEARG_1, ret_list_dict_any, SIGN_FUNC(f_sign_getplaced)}, |
786 {"sign_getplaced", 0, 2, FEARG_1, ret_list_dict_any, f_sign_getplaced}, | 845 {"sign_jump", 3, 3, FEARG_1, ret_number, SIGN_FUNC(f_sign_jump)}, |
787 {"sign_jump", 3, 3, FEARG_1, ret_number, f_sign_jump}, | 846 {"sign_place", 4, 5, FEARG_1, ret_number, SIGN_FUNC(f_sign_place)}, |
788 {"sign_place", 4, 5, FEARG_1, ret_number, f_sign_place}, | 847 {"sign_placelist", 1, 1, FEARG_1, ret_list_number, SIGN_FUNC(f_sign_placelist)}, |
789 {"sign_placelist", 1, 1, FEARG_1, ret_list_number, f_sign_placelist}, | 848 {"sign_undefine", 0, 1, FEARG_1, ret_number, SIGN_FUNC(f_sign_undefine)}, |
790 {"sign_undefine", 0, 1, FEARG_1, ret_number, f_sign_undefine}, | 849 {"sign_unplace", 1, 2, FEARG_1, ret_number, SIGN_FUNC(f_sign_unplace)}, |
791 {"sign_unplace", 1, 2, FEARG_1, ret_number, f_sign_unplace}, | 850 {"sign_unplacelist", 1, 2, FEARG_1, ret_list_number, SIGN_FUNC(f_sign_unplacelist)}, |
792 {"sign_unplacelist", 1, 2, FEARG_1, ret_list_number, f_sign_unplacelist}, | |
793 #endif | |
794 {"simplify", 1, 1, 0, ret_string, f_simplify}, | 851 {"simplify", 1, 1, 0, ret_string, f_simplify}, |
795 #ifdef FEAT_FLOAT | 852 {"sin", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_sin)}, |
796 {"sin", 1, 1, FEARG_1, ret_float, f_sin}, | 853 {"sinh", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_sinh)}, |
797 {"sinh", 1, 1, FEARG_1, ret_float, f_sinh}, | |
798 #endif | |
799 {"sort", 1, 3, FEARG_1, ret_list_any, f_sort}, | 854 {"sort", 1, 3, FEARG_1, ret_list_any, f_sort}, |
800 #ifdef FEAT_SOUND | 855 {"sound_clear", 0, 0, 0, ret_void, SOUND_FUNC(f_sound_clear)}, |
801 {"sound_clear", 0, 0, 0, ret_void, f_sound_clear}, | 856 {"sound_playevent", 1, 2, FEARG_1, ret_number, SOUND_FUNC(f_sound_playevent)}, |
802 {"sound_playevent", 1, 2, FEARG_1, ret_number, f_sound_playevent}, | 857 {"sound_playfile", 1, 2, FEARG_1, ret_number, SOUND_FUNC(f_sound_playfile)}, |
803 {"sound_playfile", 1, 2, FEARG_1, ret_number, f_sound_playfile}, | 858 {"sound_stop", 1, 1, FEARG_1, ret_void, SOUND_FUNC(f_sound_stop)}, |
804 {"sound_stop", 1, 1, FEARG_1, ret_void, f_sound_stop}, | |
805 #endif | |
806 {"soundfold", 1, 1, FEARG_1, ret_string, f_soundfold}, | 859 {"soundfold", 1, 1, FEARG_1, ret_string, f_soundfold}, |
807 {"spellbadword", 0, 1, FEARG_1, ret_list_string, f_spellbadword}, | 860 {"spellbadword", 0, 1, FEARG_1, ret_list_string, f_spellbadword}, |
808 {"spellsuggest", 1, 3, FEARG_1, ret_list_string, f_spellsuggest}, | 861 {"spellsuggest", 1, 3, FEARG_1, ret_list_string, f_spellsuggest}, |
809 {"split", 1, 3, FEARG_1, ret_list_string, f_split}, | 862 {"split", 1, 3, FEARG_1, ret_list_string, f_split}, |
810 #ifdef FEAT_FLOAT | 863 {"sqrt", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_sqrt)}, |
811 {"sqrt", 1, 1, FEARG_1, ret_float, f_sqrt}, | |
812 #endif | |
813 {"srand", 0, 1, FEARG_1, ret_list_number, f_srand}, | 864 {"srand", 0, 1, FEARG_1, ret_list_number, f_srand}, |
814 {"state", 0, 1, FEARG_1, ret_string, f_state}, | 865 {"state", 0, 1, FEARG_1, ret_string, f_state}, |
815 #ifdef FEAT_FLOAT | 866 {"str2float", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_str2float)}, |
816 {"str2float", 1, 1, FEARG_1, ret_float, f_str2float}, | |
817 #endif | |
818 {"str2list", 1, 2, FEARG_1, ret_list_number, f_str2list}, | 867 {"str2list", 1, 2, FEARG_1, ret_list_number, f_str2list}, |
819 {"str2nr", 1, 3, FEARG_1, ret_number, f_str2nr}, | 868 {"str2nr", 1, 3, FEARG_1, ret_number, f_str2nr}, |
820 {"strcharpart", 2, 3, FEARG_1, ret_string, f_strcharpart}, | 869 {"strcharpart", 2, 3, FEARG_1, ret_string, f_strcharpart}, |
821 {"strchars", 1, 2, FEARG_1, ret_number, f_strchars}, | 870 {"strchars", 1, 2, FEARG_1, ret_number, f_strchars}, |
822 {"strdisplaywidth", 1, 2, FEARG_1, ret_number, f_strdisplaywidth}, | 871 {"strdisplaywidth", 1, 2, FEARG_1, ret_number, f_strdisplaywidth}, |
872 {"strftime", 1, 2, FEARG_1, ret_string, | |
823 #ifdef HAVE_STRFTIME | 873 #ifdef HAVE_STRFTIME |
824 {"strftime", 1, 2, FEARG_1, ret_string, f_strftime}, | 874 f_strftime |
825 #endif | 875 #else |
876 NULL | |
877 #endif | |
878 }, | |
826 {"strgetchar", 2, 2, FEARG_1, ret_number, f_strgetchar}, | 879 {"strgetchar", 2, 2, FEARG_1, ret_number, f_strgetchar}, |
827 {"stridx", 2, 3, FEARG_1, ret_number, f_stridx}, | 880 {"stridx", 2, 3, FEARG_1, ret_number, f_stridx}, |
828 {"string", 1, 1, FEARG_1, ret_string, f_string}, | 881 {"string", 1, 1, FEARG_1, ret_string, f_string}, |
829 {"strlen", 1, 1, FEARG_1, ret_number, f_strlen}, | 882 {"strlen", 1, 1, FEARG_1, ret_number, f_strlen}, |
830 {"strpart", 2, 3, FEARG_1, ret_string, f_strpart}, | 883 {"strpart", 2, 3, FEARG_1, ret_string, f_strpart}, |
884 {"strptime", 2, 2, FEARG_1, ret_number, | |
831 #ifdef HAVE_STRPTIME | 885 #ifdef HAVE_STRPTIME |
832 {"strptime", 2, 2, FEARG_1, ret_number, f_strptime}, | 886 f_strptime |
833 #endif | 887 #else |
888 NULL | |
889 #endif | |
890 }, | |
834 {"strridx", 2, 3, FEARG_1, ret_number, f_strridx}, | 891 {"strridx", 2, 3, FEARG_1, ret_number, f_strridx}, |
835 {"strtrans", 1, 1, FEARG_1, ret_string, f_strtrans}, | 892 {"strtrans", 1, 1, FEARG_1, ret_string, f_strtrans}, |
836 {"strwidth", 1, 1, FEARG_1, ret_number, f_strwidth}, | 893 {"strwidth", 1, 1, FEARG_1, ret_number, f_strwidth}, |
837 {"submatch", 1, 2, FEARG_1, ret_string, f_submatch}, | 894 {"submatch", 1, 2, FEARG_1, ret_string, f_submatch}, |
838 {"substitute", 4, 4, FEARG_1, ret_string, f_substitute}, | 895 {"substitute", 4, 4, FEARG_1, ret_string, f_substitute}, |
848 {"tabpagebuflist", 0, 1, FEARG_1, ret_list_number, f_tabpagebuflist}, | 905 {"tabpagebuflist", 0, 1, FEARG_1, ret_list_number, f_tabpagebuflist}, |
849 {"tabpagenr", 0, 1, 0, ret_number, f_tabpagenr}, | 906 {"tabpagenr", 0, 1, 0, ret_number, f_tabpagenr}, |
850 {"tabpagewinnr", 1, 2, FEARG_1, ret_number, f_tabpagewinnr}, | 907 {"tabpagewinnr", 1, 2, FEARG_1, ret_number, f_tabpagewinnr}, |
851 {"tagfiles", 0, 0, 0, ret_list_string, f_tagfiles}, | 908 {"tagfiles", 0, 0, 0, ret_list_string, f_tagfiles}, |
852 {"taglist", 1, 2, FEARG_1, ret_list_dict_any, f_taglist}, | 909 {"taglist", 1, 2, FEARG_1, ret_list_dict_any, f_taglist}, |
853 #ifdef FEAT_FLOAT | 910 {"tan", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_tan)}, |
854 {"tan", 1, 1, FEARG_1, ret_float, f_tan}, | 911 {"tanh", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_tanh)}, |
855 {"tanh", 1, 1, FEARG_1, ret_float, f_tanh}, | |
856 #endif | |
857 {"tempname", 0, 0, 0, ret_string, f_tempname}, | 912 {"tempname", 0, 0, 0, ret_string, f_tempname}, |
858 #ifdef FEAT_TERMINAL | 913 {"term_dumpdiff", 2, 3, FEARG_1, ret_number, TERM_FUNC(f_term_dumpdiff)}, |
859 {"term_dumpdiff", 2, 3, FEARG_1, ret_number, f_term_dumpdiff}, | 914 {"term_dumpload", 1, 2, FEARG_1, ret_number, TERM_FUNC(f_term_dumpload)}, |
860 {"term_dumpload", 1, 2, FEARG_1, ret_number, f_term_dumpload}, | 915 {"term_dumpwrite", 2, 3, FEARG_2, ret_void, TERM_FUNC(f_term_dumpwrite)}, |
861 {"term_dumpwrite", 2, 3, FEARG_2, ret_void, f_term_dumpwrite}, | 916 {"term_getaltscreen", 1, 1, FEARG_1, ret_number, TERM_FUNC(f_term_getaltscreen)}, |
862 {"term_getaltscreen", 1, 1, FEARG_1, ret_number, f_term_getaltscreen}, | 917 {"term_getansicolors", 1, 1, FEARG_1, ret_list_string, |
863 # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS) | 918 #if defined(TERMINAL) && (defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)) |
864 {"term_getansicolors", 1, 1, FEARG_1, ret_list_string, f_term_getansicolors}, | 919 f_term_getansicolors |
865 # endif | 920 #else |
866 {"term_getattr", 2, 2, FEARG_1, ret_number, f_term_getattr}, | 921 NULL |
867 {"term_getcursor", 1, 1, FEARG_1, ret_list_any, f_term_getcursor}, | 922 #endif |
868 {"term_getjob", 1, 1, FEARG_1, ret_job, f_term_getjob}, | 923 }, |
869 {"term_getline", 2, 2, FEARG_1, ret_string, f_term_getline}, | 924 {"term_getattr", 2, 2, FEARG_1, ret_number, TERM_FUNC(f_term_getattr)}, |
870 {"term_getscrolled", 1, 1, FEARG_1, ret_number, f_term_getscrolled}, | 925 {"term_getcursor", 1, 1, FEARG_1, ret_list_any, TERM_FUNC(f_term_getcursor)}, |
871 {"term_getsize", 1, 1, FEARG_1, ret_list_number, f_term_getsize}, | 926 {"term_getjob", 1, 1, FEARG_1, ret_job, TERM_FUNC(f_term_getjob)}, |
872 {"term_getstatus", 1, 1, FEARG_1, ret_string, f_term_getstatus}, | 927 {"term_getline", 2, 2, FEARG_1, ret_string, TERM_FUNC(f_term_getline)}, |
873 {"term_gettitle", 1, 1, FEARG_1, ret_string, f_term_gettitle}, | 928 {"term_getscrolled", 1, 1, FEARG_1, ret_number, TERM_FUNC(f_term_getscrolled)}, |
874 {"term_gettty", 1, 2, FEARG_1, ret_string, f_term_gettty}, | 929 {"term_getsize", 1, 1, FEARG_1, ret_list_number, TERM_FUNC(f_term_getsize)}, |
875 {"term_list", 0, 0, 0, ret_list_number, f_term_list}, | 930 {"term_getstatus", 1, 1, FEARG_1, ret_string, TERM_FUNC(f_term_getstatus)}, |
876 {"term_scrape", 2, 2, FEARG_1, ret_list_dict_any, f_term_scrape}, | 931 {"term_gettitle", 1, 1, FEARG_1, ret_string, TERM_FUNC(f_term_gettitle)}, |
877 {"term_sendkeys", 2, 2, FEARG_1, ret_void, f_term_sendkeys}, | 932 {"term_gettty", 1, 2, FEARG_1, ret_string, TERM_FUNC(f_term_gettty)}, |
878 # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS) | 933 {"term_list", 0, 0, 0, ret_list_number, TERM_FUNC(f_term_list)}, |
879 {"term_setansicolors", 2, 2, FEARG_1, ret_void, f_term_setansicolors}, | 934 {"term_scrape", 2, 2, FEARG_1, ret_list_dict_any, TERM_FUNC(f_term_scrape)}, |
880 # endif | 935 {"term_sendkeys", 2, 2, FEARG_1, ret_void, TERM_FUNC(f_term_sendkeys)}, |
881 {"term_setapi", 2, 2, FEARG_1, ret_void, f_term_setapi}, | 936 {"term_setansicolors", 2, 2, FEARG_1, ret_void, |
882 {"term_setkill", 2, 2, FEARG_1, ret_void, f_term_setkill}, | 937 #if defined(TERMINAL) && (defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)) |
883 {"term_setrestore", 2, 2, FEARG_1, ret_void, f_term_setrestore}, | 938 f_term_setansicolors |
884 {"term_setsize", 3, 3, FEARG_1, ret_void, f_term_setsize}, | 939 #else |
885 {"term_start", 1, 2, FEARG_1, ret_number, f_term_start}, | 940 NULL |
886 {"term_wait", 1, 2, FEARG_1, ret_void, f_term_wait}, | 941 #endif |
887 #endif | 942 }, |
943 {"term_setapi", 2, 2, FEARG_1, ret_void, TERM_FUNC(f_term_setapi)}, | |
944 {"term_setkill", 2, 2, FEARG_1, ret_void, TERM_FUNC(f_term_setkill)}, | |
945 {"term_setrestore", 2, 2, FEARG_1, ret_void, TERM_FUNC(f_term_setrestore)}, | |
946 {"term_setsize", 3, 3, FEARG_1, ret_void, TERM_FUNC(f_term_setsize)}, | |
947 {"term_start", 1, 2, FEARG_1, ret_number, TERM_FUNC(f_term_start)}, | |
948 {"term_wait", 1, 2, FEARG_1, ret_void, TERM_FUNC(f_term_wait)}, | |
888 {"test_alloc_fail", 3, 3, FEARG_1, ret_void, f_test_alloc_fail}, | 949 {"test_alloc_fail", 3, 3, FEARG_1, ret_void, f_test_alloc_fail}, |
889 {"test_autochdir", 0, 0, 0, ret_void, f_test_autochdir}, | 950 {"test_autochdir", 0, 0, 0, ret_void, f_test_autochdir}, |
890 {"test_feedinput", 1, 1, FEARG_1, ret_void, f_test_feedinput}, | 951 {"test_feedinput", 1, 1, FEARG_1, ret_void, f_test_feedinput}, |
891 {"test_garbagecollect_now", 0, 0, 0, ret_void, f_test_garbagecollect_now}, | 952 {"test_garbagecollect_now", 0, 0, 0, ret_void, f_test_garbagecollect_now}, |
892 {"test_garbagecollect_soon", 0, 0, 0, ret_void, f_test_garbagecollect_soon}, | 953 {"test_garbagecollect_soon", 0, 0, 0, ret_void, f_test_garbagecollect_soon}, |
893 {"test_getvalue", 1, 1, FEARG_1, ret_number, f_test_getvalue}, | 954 {"test_getvalue", 1, 1, FEARG_1, ret_number, f_test_getvalue}, |
894 {"test_ignore_error", 1, 1, FEARG_1, ret_void, f_test_ignore_error}, | 955 {"test_ignore_error", 1, 1, FEARG_1, ret_void, f_test_ignore_error}, |
895 {"test_null_blob", 0, 0, 0, ret_blob, f_test_null_blob}, | 956 {"test_null_blob", 0, 0, 0, ret_blob, f_test_null_blob}, |
896 #ifdef FEAT_JOB_CHANNEL | 957 {"test_null_channel", 0, 0, 0, ret_channel, JOB_FUNC(f_test_null_channel)}, |
897 {"test_null_channel", 0, 0, 0, ret_channel, f_test_null_channel}, | |
898 #endif | |
899 {"test_null_dict", 0, 0, 0, ret_dict_any, f_test_null_dict}, | 958 {"test_null_dict", 0, 0, 0, ret_dict_any, f_test_null_dict}, |
900 #ifdef FEAT_JOB_CHANNEL | 959 {"test_null_job", 0, 0, 0, ret_job, JOB_FUNC(f_test_null_job)}, |
901 {"test_null_job", 0, 0, 0, ret_job, f_test_null_job}, | |
902 #endif | |
903 {"test_null_list", 0, 0, 0, ret_list_any, f_test_null_list}, | 960 {"test_null_list", 0, 0, 0, ret_list_any, f_test_null_list}, |
904 {"test_null_partial", 0, 0, 0, ret_partial_void, f_test_null_partial}, | 961 {"test_null_partial", 0, 0, 0, ret_partial_void, f_test_null_partial}, |
905 {"test_null_string", 0, 0, 0, ret_string, f_test_null_string}, | 962 {"test_null_string", 0, 0, 0, ret_string, f_test_null_string}, |
906 {"test_option_not_set", 1, 1, FEARG_1,ret_void, f_test_option_not_set}, | 963 {"test_option_not_set", 1, 1, FEARG_1,ret_void, f_test_option_not_set}, |
907 {"test_override", 2, 2, FEARG_2, ret_void, f_test_override}, | 964 {"test_override", 2, 2, FEARG_2, ret_void, f_test_override}, |
908 {"test_refcount", 1, 1, FEARG_1, ret_number, f_test_refcount}, | 965 {"test_refcount", 1, 1, FEARG_1, ret_number, f_test_refcount}, |
966 {"test_scrollbar", 3, 3, FEARG_2, ret_void, | |
909 #ifdef FEAT_GUI | 967 #ifdef FEAT_GUI |
910 {"test_scrollbar", 3, 3, FEARG_2, ret_void, f_test_scrollbar}, | 968 f_test_scrollbar |
911 #endif | 969 #else |
970 NULL | |
971 #endif | |
972 }, | |
912 {"test_setmouse", 2, 2, 0, ret_void, f_test_setmouse}, | 973 {"test_setmouse", 2, 2, 0, ret_void, f_test_setmouse}, |
913 {"test_settime", 1, 1, FEARG_1, ret_void, f_test_settime}, | 974 {"test_settime", 1, 1, FEARG_1, ret_void, f_test_settime}, |
914 {"test_srand_seed", 0, 1, FEARG_1, ret_void, f_test_srand_seed}, | 975 {"test_srand_seed", 0, 1, FEARG_1, ret_void, f_test_srand_seed}, |
915 {"test_unknown", 0, 0, 0, ret_any, f_test_unknown}, | 976 {"test_unknown", 0, 0, 0, ret_any, f_test_unknown}, |
916 {"test_void", 0, 0, 0, ret_any, f_test_void}, | 977 {"test_void", 0, 0, 0, ret_any, f_test_void}, |
917 #ifdef FEAT_TIMERS | 978 {"timer_info", 0, 1, FEARG_1, ret_list_dict_any, TIMER_FUNC(f_timer_info)}, |
918 {"timer_info", 0, 1, FEARG_1, ret_list_dict_any, f_timer_info}, | 979 {"timer_pause", 2, 2, FEARG_1, ret_void, TIMER_FUNC(f_timer_pause)}, |
919 {"timer_pause", 2, 2, FEARG_1, ret_void, f_timer_pause}, | 980 {"timer_start", 2, 3, FEARG_1, ret_number, TIMER_FUNC(f_timer_start)}, |
920 {"timer_start", 2, 3, FEARG_1, ret_number, f_timer_start}, | 981 {"timer_stop", 1, 1, FEARG_1, ret_void, TIMER_FUNC(f_timer_stop)}, |
921 {"timer_stop", 1, 1, FEARG_1, ret_void, f_timer_stop}, | 982 {"timer_stopall", 0, 0, 0, ret_void, TIMER_FUNC(f_timer_stopall)}, |
922 {"timer_stopall", 0, 0, 0, ret_void, f_timer_stopall}, | |
923 #endif | |
924 {"tolower", 1, 1, FEARG_1, ret_string, f_tolower}, | 983 {"tolower", 1, 1, FEARG_1, ret_string, f_tolower}, |
925 {"toupper", 1, 1, FEARG_1, ret_string, f_toupper}, | 984 {"toupper", 1, 1, FEARG_1, ret_string, f_toupper}, |
926 {"tr", 3, 3, FEARG_1, ret_string, f_tr}, | 985 {"tr", 3, 3, FEARG_1, ret_string, f_tr}, |
927 {"trim", 1, 2, FEARG_1, ret_string, f_trim}, | 986 {"trim", 1, 2, FEARG_1, ret_string, f_trim}, |
928 #ifdef FEAT_FLOAT | 987 {"trunc", 1, 1, FEARG_1, ret_float, FLOAT_FUNC(f_trunc)}, |
929 {"trunc", 1, 1, FEARG_1, ret_float, f_trunc}, | |
930 #endif | |
931 {"type", 1, 1, FEARG_1, ret_number, f_type}, | 988 {"type", 1, 1, FEARG_1, ret_number, f_type}, |
932 {"undofile", 1, 1, FEARG_1, ret_string, f_undofile}, | 989 {"undofile", 1, 1, FEARG_1, ret_string, f_undofile}, |
933 {"undotree", 0, 0, 0, ret_dict_any, f_undotree}, | 990 {"undotree", 0, 0, 0, ret_dict_any, f_undotree}, |
934 {"uniq", 1, 3, FEARG_1, ret_list_any, f_uniq}, | 991 {"uniq", 1, 3, FEARG_1, ret_list_any, f_uniq}, |
935 {"values", 1, 1, FEARG_1, ret_list_any, f_values}, | 992 {"values", 1, 1, FEARG_1, ret_list_any, f_values}, |
1012 return get_user_var_name(xp, ++intidx); | 1069 return get_user_var_name(xp, ++intidx); |
1013 } | 1070 } |
1014 | 1071 |
1015 /* | 1072 /* |
1016 * Find internal function "name" in table "global_functions". | 1073 * Find internal function "name" in table "global_functions". |
1017 * Return index, or -1 if not found | 1074 * Return index, or -1 if not found or "implemented" is TRUE and the function |
1018 */ | 1075 * is not implemented. |
1019 int | 1076 */ |
1020 find_internal_func(char_u *name) | 1077 static int |
1078 find_internal_func_opt(char_u *name, int implemented) | |
1021 { | 1079 { |
1022 int first = 0; | 1080 int first = 0; |
1023 int last; | 1081 int last; |
1024 int cmp; | 1082 int cmp; |
1025 int x; | 1083 int x; |
1033 cmp = STRCMP(name, global_functions[x].f_name); | 1091 cmp = STRCMP(name, global_functions[x].f_name); |
1034 if (cmp < 0) | 1092 if (cmp < 0) |
1035 last = x - 1; | 1093 last = x - 1; |
1036 else if (cmp > 0) | 1094 else if (cmp > 0) |
1037 first = x + 1; | 1095 first = x + 1; |
1096 else if (implemented && global_functions[x].f_func == NULL) | |
1097 break; | |
1038 else | 1098 else |
1039 return x; | 1099 return x; |
1040 } | 1100 } |
1041 return -1; | 1101 return -1; |
1042 } | 1102 } |
1043 | 1103 |
1104 /* | |
1105 * Find internal function "name" in table "global_functions". | |
1106 * Return index, or -1 if not found or the function is not implemented. | |
1107 */ | |
1108 int | |
1109 find_internal_func(char_u *name) | |
1110 { | |
1111 return find_internal_func_opt(name, TRUE); | |
1112 } | |
1113 | |
1044 int | 1114 int |
1045 has_internal_func(char_u *name) | 1115 has_internal_func(char_u *name) |
1046 { | 1116 { |
1047 return find_internal_func(name) >= 0; | 1117 return find_internal_func_opt(name, TRUE) >= 0; |
1118 } | |
1119 | |
1120 static int | |
1121 has_internal_func_name(char_u *name) | |
1122 { | |
1123 return find_internal_func_opt(name, FALSE) >= 0; | |
1048 } | 1124 } |
1049 | 1125 |
1050 char * | 1126 char * |
1051 internal_func_name(int idx) | 1127 internal_func_name(int idx) |
1052 { | 1128 { |
2285 n = FALSE; // trailing garbage | 2361 n = FALSE; // trailing garbage |
2286 } | 2362 } |
2287 else if (*p == '*') // internal or user defined function | 2363 else if (*p == '*') // internal or user defined function |
2288 { | 2364 { |
2289 n = function_exists(p + 1, FALSE); | 2365 n = function_exists(p + 1, FALSE); |
2366 } | |
2367 else if (*p == '?') // internal function only | |
2368 { | |
2369 n = has_internal_func_name(p + 1); | |
2290 } | 2370 } |
2291 else if (*p == ':') | 2371 else if (*p == ':') |
2292 { | 2372 { |
2293 n = cmd_exists(p + 1); | 2373 n = cmd_exists(p + 1); |
2294 } | 2374 } |