Mercurial > vim
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 |