comparison src/evalfunc.c @ 18000:7a19c8d6bb9e v8.1.1996

patch 8.1.1996: more functions can be used as methods Commit: https://github.com/vim/vim/commit/aad222c9c9a1e4fe6ae5a1fe95bb084619be0e65 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Sep 6 22:46:09 2019 +0200 patch 8.1.1996: more functions can be used as methods Problem: More functions can be used as methods. Solution: Make various functions usable as a method.
author Bram Moolenaar <Bram@vim.org>
date Fri, 06 Sep 2019 23:00:03 +0200
parents ea916dbbb9b9
children 8ae333756614
comparison
equal deleted inserted replaced
17999:9fd4d58b3e5b 18000:7a19c8d6bb9e
334 334
335 // values for f_argtype; zero means it cannot be used as a method 335 // values for f_argtype; zero means it cannot be used as a method
336 #define FEARG_1 1 // base is the first argument 336 #define FEARG_1 1 // base is the first argument
337 #define FEARG_2 2 // base is the second argument 337 #define FEARG_2 2 // base is the second argument
338 #define FEARG_3 3 // base is the third argument 338 #define FEARG_3 3 // base is the third argument
339 #define FEARG_4 4 // base is the fourth argument
339 #define FEARG_LAST 9 // base is the last argument 340 #define FEARG_LAST 9 // base is the last argument
340 341
341 static funcentry_T global_functions[] = 342 static funcentry_T global_functions[] =
342 { 343 {
343 #ifdef FEAT_FLOAT 344 #ifdef FEAT_FLOAT
719 {"setcharsearch", 1, 1, FEARG_1, f_setcharsearch}, 720 {"setcharsearch", 1, 1, FEARG_1, f_setcharsearch},
720 {"setcmdpos", 1, 1, FEARG_1, f_setcmdpos}, 721 {"setcmdpos", 1, 1, FEARG_1, f_setcmdpos},
721 {"setenv", 2, 2, FEARG_2, f_setenv}, 722 {"setenv", 2, 2, FEARG_2, f_setenv},
722 {"setfperm", 2, 2, FEARG_1, f_setfperm}, 723 {"setfperm", 2, 2, FEARG_1, f_setfperm},
723 {"setline", 2, 2, FEARG_2, f_setline}, 724 {"setline", 2, 2, FEARG_2, f_setline},
724 {"setloclist", 2, 4, 0, f_setloclist}, 725 {"setloclist", 2, 4, FEARG_2, f_setloclist},
725 {"setmatches", 1, 2, 0, f_setmatches}, 726 {"setmatches", 1, 2, FEARG_1, f_setmatches},
726 {"setpos", 2, 2, 0, f_setpos}, 727 {"setpos", 2, 2, FEARG_2, f_setpos},
727 {"setqflist", 1, 3, 0, f_setqflist}, 728 {"setqflist", 1, 3, FEARG_1, f_setqflist},
728 {"setreg", 2, 3, 0, f_setreg}, 729 {"setreg", 2, 3, FEARG_2, f_setreg},
729 {"settabvar", 3, 3, 0, f_settabvar}, 730 {"settabvar", 3, 3, FEARG_3, f_settabvar},
730 {"settabwinvar", 4, 4, 0, f_settabwinvar}, 731 {"settabwinvar", 4, 4, FEARG_4, f_settabwinvar},
731 {"settagstack", 2, 3, 0, f_settagstack}, 732 {"settagstack", 2, 3, FEARG_2, f_settagstack},
732 {"setwinvar", 3, 3, 0, f_setwinvar}, 733 {"setwinvar", 3, 3, FEARG_3, f_setwinvar},
733 #ifdef FEAT_CRYPT 734 #ifdef FEAT_CRYPT
734 {"sha256", 1, 1, 0, f_sha256}, 735 {"sha256", 1, 1, FEARG_1, f_sha256},
735 #endif 736 #endif
736 {"shellescape", 1, 2, 0, f_shellescape}, 737 {"shellescape", 1, 2, FEARG_1, f_shellescape},
737 {"shiftwidth", 0, 1, 0, f_shiftwidth}, 738 {"shiftwidth", 0, 1, FEARG_1, f_shiftwidth},
738 #ifdef FEAT_SIGNS 739 #ifdef FEAT_SIGNS
739 {"sign_define", 1, 2, FEARG_1, f_sign_define}, 740 {"sign_define", 1, 2, FEARG_1, f_sign_define},
740 {"sign_getdefined", 0, 1, FEARG_1, f_sign_getdefined}, 741 {"sign_getdefined", 0, 1, FEARG_1, f_sign_getdefined},
741 {"sign_getplaced", 0, 2, FEARG_1, f_sign_getplaced}, 742 {"sign_getplaced", 0, 2, FEARG_1, f_sign_getplaced},
742 {"sign_jump", 3, 3, FEARG_1, f_sign_jump}, 743 {"sign_jump", 3, 3, FEARG_1, f_sign_jump},
1056 // base value goes third 1057 // base value goes third
1057 argv[0] = argvars[0]; 1058 argv[0] = argvars[0];
1058 argv[1] = argvars[1]; 1059 argv[1] = argvars[1];
1059 argv[2] = *basetv; 1060 argv[2] = *basetv;
1060 for (i = 2; i < argcount; ++i) 1061 for (i = 2; i < argcount; ++i)
1062 argv[i + 1] = argvars[i];
1063 }
1064 else if (global_functions[fi].f_argtype == FEARG_4)
1065 {
1066 // base value goes fourth
1067 argv[0] = argvars[0];
1068 argv[1] = argvars[1];
1069 argv[2] = argvars[2];
1070 argv[3] = *basetv;
1071 for (i = 3; i < argcount; ++i)
1061 argv[i + 1] = argvars[i]; 1072 argv[i + 1] = argvars[i];
1062 } 1073 }
1063 else 1074 else
1064 { 1075 {
1065 // FEARG_1: base value goes first 1076 // FEARG_1: base value goes first