comparison src/eval.c @ 505:7e6d264ec0a2 v7.0141

updated for version 7.0141
author vimboss
date Mon, 05 Sep 2005 22:14:46 +0000
parents 4772a5e3f9fa
children a1059cda45f2
comparison
equal deleted inserted replaced
504:35cde31bdcbd 505:7e6d264ec0a2
578 static void f_rename __ARGS((typval_T *argvars, typval_T *rettv)); 578 static void f_rename __ARGS((typval_T *argvars, typval_T *rettv));
579 static void f_repeat __ARGS((typval_T *argvars, typval_T *rettv)); 579 static void f_repeat __ARGS((typval_T *argvars, typval_T *rettv));
580 static void f_resolve __ARGS((typval_T *argvars, typval_T *rettv)); 580 static void f_resolve __ARGS((typval_T *argvars, typval_T *rettv));
581 static void f_reverse __ARGS((typval_T *argvars, typval_T *rettv)); 581 static void f_reverse __ARGS((typval_T *argvars, typval_T *rettv));
582 static void f_search __ARGS((typval_T *argvars, typval_T *rettv)); 582 static void f_search __ARGS((typval_T *argvars, typval_T *rettv));
583 static void f_searchdecl __ARGS((typval_T *argvars, typval_T *rettv));
583 static void f_searchpair __ARGS((typval_T *argvars, typval_T *rettv)); 584 static void f_searchpair __ARGS((typval_T *argvars, typval_T *rettv));
584 static void f_server2client __ARGS((typval_T *argvars, typval_T *rettv)); 585 static void f_server2client __ARGS((typval_T *argvars, typval_T *rettv));
585 static void f_serverlist __ARGS((typval_T *argvars, typval_T *rettv)); 586 static void f_serverlist __ARGS((typval_T *argvars, typval_T *rettv));
586 static void f_setbufvar __ARGS((typval_T *argvars, typval_T *rettv)); 587 static void f_setbufvar __ARGS((typval_T *argvars, typval_T *rettv));
587 static void f_setcmdpos __ARGS((typval_T *argvars, typval_T *rettv)); 588 static void f_setcmdpos __ARGS((typval_T *argvars, typval_T *rettv));
6816 {"rename", 2, 2, f_rename}, 6817 {"rename", 2, 2, f_rename},
6817 {"repeat", 2, 2, f_repeat}, 6818 {"repeat", 2, 2, f_repeat},
6818 {"resolve", 1, 1, f_resolve}, 6819 {"resolve", 1, 1, f_resolve},
6819 {"reverse", 1, 1, f_reverse}, 6820 {"reverse", 1, 1, f_reverse},
6820 {"search", 1, 2, f_search}, 6821 {"search", 1, 2, f_search},
6822 {"searchdecl", 1, 2, f_searchdecl},
6821 {"searchpair", 3, 5, f_searchpair}, 6823 {"searchpair", 3, 5, f_searchpair},
6822 {"server2client", 2, 2, f_server2client}, 6824 {"server2client", 2, 2, f_server2client},
6823 {"serverlist", 0, 0, f_serverlist}, 6825 {"serverlist", 0, 0, f_serverlist},
6824 {"setbufvar", 3, 3, f_setbufvar}, 6826 {"setbufvar", 3, 3, f_setbufvar},
6825 {"setcmdpos", 1, 1, f_setcmdpos}, 6827 {"setcmdpos", 1, 1, f_setcmdpos},
12971 /* If 'n' flag is used: restore cursor position. */ 12973 /* If 'n' flag is used: restore cursor position. */
12972 if (flags & SP_NOMOVE) 12974 if (flags & SP_NOMOVE)
12973 curwin->w_cursor = save_cursor; 12975 curwin->w_cursor = save_cursor;
12974 theend: 12976 theend:
12975 p_ws = save_p_ws; 12977 p_ws = save_p_ws;
12978 }
12979
12980 /*
12981 * "searchdecl()" function
12982 */
12983 static void
12984 f_searchdecl(argvars, rettv)
12985 typval_T *argvars;
12986 typval_T *rettv;
12987 {
12988 int locally = 1;
12989 int error = FALSE;
12990 char_u *name;
12991
12992 rettv->vval.v_number = 1; /* default: FAIL */
12993
12994 name = get_tv_string_chk(&argvars[0]);
12995 if (argvars[1].v_type != VAR_UNKNOWN)
12996 locally = get_tv_number_chk(&argvars[1], &error) == 0;
12997 if (!error && name != NULL)
12998 rettv->vval.v_number = find_decl(name, (int)STRLEN(name),
12999 locally, SEARCH_KEEP) == FAIL;
12976 } 13000 }
12977 13001
12978 /* 13002 /*
12979 * "searchpair()" function 13003 * "searchpair()" function
12980 */ 13004 */
16799 eap->nextcmd = check_nextcmd(eap->arg); 16823 eap->nextcmd = check_nextcmd(eap->arg);
16800 return; 16824 return;
16801 } 16825 }
16802 16826
16803 /* 16827 /*
16828 * ":function /pat": list functions matching pattern.
16829 */
16830 if (*eap->arg == '/')
16831 {
16832 p = skip_regexp(eap->arg + 1, '/', TRUE, NULL);
16833 if (!eap->skip)
16834 {
16835 regmatch_T regmatch;
16836
16837 c = *p;
16838 *p = NUL;
16839 regmatch.regprog = vim_regcomp(eap->arg + 1, RE_MAGIC);
16840 *p = c;
16841 if (regmatch.regprog != NULL)
16842 {
16843 regmatch.rm_ic = p_ic;
16844
16845 todo = func_hashtab.ht_used;
16846 for (hi = func_hashtab.ht_array; todo > 0 && !got_int; ++hi)
16847 {
16848 if (!HASHITEM_EMPTY(hi))
16849 {
16850 --todo;
16851 fp = HI2UF(hi);
16852 if (!isdigit(*fp->uf_name)
16853 && vim_regexec(&regmatch, fp->uf_name, 0))
16854 list_func_head(fp, FALSE);
16855 }
16856 }
16857 }
16858 }
16859 if (*p == '/')
16860 ++p;
16861 eap->nextcmd = check_nextcmd(p);
16862 return;
16863 }
16864
16865 /*
16804 * Get the function name. There are these situations: 16866 * Get the function name. There are these situations:
16805 * func normal function name 16867 * func normal function name
16806 * "name" == func, "fudi.fd_dict" == NULL 16868 * "name" == func, "fudi.fd_dict" == NULL
16807 * dict.func new dictionary entry 16869 * dict.func new dictionary entry
16808 * "name" == NULL, "fudi.fd_dict" set, 16870 * "name" == NULL, "fudi.fd_dict" set,