Mercurial > vim
comparison src/eval.c @ 819:23f82b5d2814 v7.0c10
updated for version 7.0c10
author | vimboss |
---|---|
date | Wed, 05 Apr 2006 20:41:53 +0000 |
parents | 1f929f3ca806 |
children | 1cdd2661f34c |
comparison
equal
deleted
inserted
replaced
818:1f929f3ca806 | 819:23f82b5d2814 |
---|---|
367 static char_u *skip_var_one __ARGS((char_u *arg)); | 367 static char_u *skip_var_one __ARGS((char_u *arg)); |
368 static void list_hashtable_vars __ARGS((hashtab_T *ht, char_u *prefix, int empty)); | 368 static void list_hashtable_vars __ARGS((hashtab_T *ht, char_u *prefix, int empty)); |
369 static void list_glob_vars __ARGS((void)); | 369 static void list_glob_vars __ARGS((void)); |
370 static void list_buf_vars __ARGS((void)); | 370 static void list_buf_vars __ARGS((void)); |
371 static void list_win_vars __ARGS((void)); | 371 static void list_win_vars __ARGS((void)); |
372 #ifdef FEAT_WINDOWS | |
373 static void list_tab_vars __ARGS((void)); | |
374 #endif | |
372 static void list_vim_vars __ARGS((void)); | 375 static void list_vim_vars __ARGS((void)); |
373 static void list_script_vars __ARGS((void)); | 376 static void list_script_vars __ARGS((void)); |
374 static void list_func_vars __ARGS((void)); | 377 static void list_func_vars __ARGS((void)); |
375 static char_u *list_arg_vars __ARGS((exarg_T *eap, char_u *arg)); | 378 static char_u *list_arg_vars __ARGS((exarg_T *eap, char_u *arg)); |
376 static char_u *ex_let_one __ARGS((char_u *arg, typval_T *tv, int copy, char_u *endchars, char_u *op)); | 379 static char_u *ex_let_one __ARGS((char_u *arg, typval_T *tv, int copy, char_u *endchars, char_u *op)); |
565 static void f_localtime __ARGS((typval_T *argvars, typval_T *rettv)); | 568 static void f_localtime __ARGS((typval_T *argvars, typval_T *rettv)); |
566 static void f_map __ARGS((typval_T *argvars, typval_T *rettv)); | 569 static void f_map __ARGS((typval_T *argvars, typval_T *rettv)); |
567 static void f_maparg __ARGS((typval_T *argvars, typval_T *rettv)); | 570 static void f_maparg __ARGS((typval_T *argvars, typval_T *rettv)); |
568 static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv)); | 571 static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv)); |
569 static void f_match __ARGS((typval_T *argvars, typval_T *rettv)); | 572 static void f_match __ARGS((typval_T *argvars, typval_T *rettv)); |
573 static void f_matcharg __ARGS((typval_T *argvars, typval_T *rettv)); | |
570 static void f_matchend __ARGS((typval_T *argvars, typval_T *rettv)); | 574 static void f_matchend __ARGS((typval_T *argvars, typval_T *rettv)); |
571 static void f_matchlist __ARGS((typval_T *argvars, typval_T *rettv)); | 575 static void f_matchlist __ARGS((typval_T *argvars, typval_T *rettv)); |
572 static void f_matchstr __ARGS((typval_T *argvars, typval_T *rettv)); | 576 static void f_matchstr __ARGS((typval_T *argvars, typval_T *rettv)); |
573 static void f_max __ARGS((typval_T *argvars, typval_T *rettv)); | 577 static void f_max __ARGS((typval_T *argvars, typval_T *rettv)); |
574 static void f_min __ARGS((typval_T *argvars, typval_T *rettv)); | 578 static void f_min __ARGS((typval_T *argvars, typval_T *rettv)); |
576 static void f_mkdir __ARGS((typval_T *argvars, typval_T *rettv)); | 580 static void f_mkdir __ARGS((typval_T *argvars, typval_T *rettv)); |
577 #endif | 581 #endif |
578 static void f_mode __ARGS((typval_T *argvars, typval_T *rettv)); | 582 static void f_mode __ARGS((typval_T *argvars, typval_T *rettv)); |
579 static void f_nextnonblank __ARGS((typval_T *argvars, typval_T *rettv)); | 583 static void f_nextnonblank __ARGS((typval_T *argvars, typval_T *rettv)); |
580 static void f_nr2char __ARGS((typval_T *argvars, typval_T *rettv)); | 584 static void f_nr2char __ARGS((typval_T *argvars, typval_T *rettv)); |
585 static void f_pathshorten __ARGS((typval_T *argvars, typval_T *rettv)); | |
581 static void f_prevnonblank __ARGS((typval_T *argvars, typval_T *rettv)); | 586 static void f_prevnonblank __ARGS((typval_T *argvars, typval_T *rettv)); |
582 static void f_printf __ARGS((typval_T *argvars, typval_T *rettv)); | 587 static void f_printf __ARGS((typval_T *argvars, typval_T *rettv)); |
583 static void f_pumvisible __ARGS((typval_T *argvars, typval_T *rettv)); | 588 static void f_pumvisible __ARGS((typval_T *argvars, typval_T *rettv)); |
584 static void f_range __ARGS((typval_T *argvars, typval_T *rettv)); | 589 static void f_range __ARGS((typval_T *argvars, typval_T *rettv)); |
585 static void f_readfile __ARGS((typval_T *argvars, typval_T *rettv)); | 590 static void f_readfile __ARGS((typval_T *argvars, typval_T *rettv)); |
1683 { | 1688 { |
1684 /* ":let" */ | 1689 /* ":let" */ |
1685 list_glob_vars(); | 1690 list_glob_vars(); |
1686 list_buf_vars(); | 1691 list_buf_vars(); |
1687 list_win_vars(); | 1692 list_win_vars(); |
1693 #ifdef FEAT_WINDOWS | |
1694 list_tab_vars(); | |
1695 #endif | |
1688 list_script_vars(); | 1696 list_script_vars(); |
1689 list_func_vars(); | 1697 list_func_vars(); |
1690 list_vim_vars(); | 1698 list_vim_vars(); |
1691 } | 1699 } |
1692 eap->nextcmd = check_nextcmd(arg); | 1700 eap->nextcmd = check_nextcmd(arg); |
1944 static void | 1952 static void |
1945 list_win_vars() | 1953 list_win_vars() |
1946 { | 1954 { |
1947 list_hashtable_vars(&curwin->w_vars.dv_hashtab, (char_u *)"w:", TRUE); | 1955 list_hashtable_vars(&curwin->w_vars.dv_hashtab, (char_u *)"w:", TRUE); |
1948 } | 1956 } |
1957 | |
1958 #ifdef FEAT_WINDOWS | |
1959 /* | |
1960 * List tab page variables. | |
1961 */ | |
1962 static void | |
1963 list_tab_vars() | |
1964 { | |
1965 list_hashtable_vars(&curtab->tp_vars.dv_hashtab, (char_u *)"t:", TRUE); | |
1966 } | |
1967 #endif | |
1949 | 1968 |
1950 /* | 1969 /* |
1951 * List Vim variables. | 1970 * List Vim variables. |
1952 */ | 1971 */ |
1953 static void | 1972 static void |
2041 switch (*name) | 2060 switch (*name) |
2042 { | 2061 { |
2043 case 'g': list_glob_vars(); break; | 2062 case 'g': list_glob_vars(); break; |
2044 case 'b': list_buf_vars(); break; | 2063 case 'b': list_buf_vars(); break; |
2045 case 'w': list_win_vars(); break; | 2064 case 'w': list_win_vars(); break; |
2065 #ifdef FEAT_WINDOWS | |
2066 case 't': list_tab_vars(); break; | |
2067 #endif | |
2046 case 'v': list_vim_vars(); break; | 2068 case 'v': list_vim_vars(); break; |
2047 case 's': list_script_vars(); break; | 2069 case 's': list_script_vars(); break; |
2048 case 'l': list_func_vars(); break; | 2070 case 'l': list_func_vars(); break; |
2049 default: | 2071 default: |
2050 EMSG2(_("E738: Can't list variables for %s"), name); | 2072 EMSG2(_("E738: Can't list variables for %s"), name); |
3575 int idx; | 3597 int idx; |
3576 { | 3598 { |
3577 static long_u gdone; | 3599 static long_u gdone; |
3578 static long_u bdone; | 3600 static long_u bdone; |
3579 static long_u wdone; | 3601 static long_u wdone; |
3602 #ifdef FEAT_WINDOWS | |
3603 static long_u tdone; | |
3604 #endif | |
3580 static int vidx; | 3605 static int vidx; |
3581 static hashitem_T *hi; | 3606 static hashitem_T *hi; |
3582 hashtab_T *ht; | 3607 hashtab_T *ht; |
3583 | 3608 |
3584 if (idx == 0) | 3609 if (idx == 0) |
3610 { | |
3585 gdone = bdone = wdone = vidx = 0; | 3611 gdone = bdone = wdone = vidx = 0; |
3612 #ifdef FEAT_WINDOWS | |
3613 tdone = 0; | |
3614 #endif | |
3615 } | |
3586 | 3616 |
3587 /* Global variables */ | 3617 /* Global variables */ |
3588 if (gdone < globvarht.ht_used) | 3618 if (gdone < globvarht.ht_used) |
3589 { | 3619 { |
3590 if (gdone++ == 0) | 3620 if (gdone++ == 0) |
3626 ++hi; | 3656 ++hi; |
3627 while (HASHITEM_EMPTY(hi)) | 3657 while (HASHITEM_EMPTY(hi)) |
3628 ++hi; | 3658 ++hi; |
3629 return cat_prefix_varname('w', hi->hi_key); | 3659 return cat_prefix_varname('w', hi->hi_key); |
3630 } | 3660 } |
3661 | |
3662 #ifdef FEAT_WINDOWS | |
3663 /* t: variables */ | |
3664 ht = &curtab->tp_vars.dv_hashtab; | |
3665 if (tdone < ht->ht_used) | |
3666 { | |
3667 if (tdone++ == 0) | |
3668 hi = ht->ht_array; | |
3669 else | |
3670 ++hi; | |
3671 while (HASHITEM_EMPTY(hi)) | |
3672 ++hi; | |
3673 return cat_prefix_varname('t', hi->hi_key); | |
3674 } | |
3675 #endif | |
3631 | 3676 |
3632 /* v: variables */ | 3677 /* v: variables */ |
3633 if (vidx < VV_LEN) | 3678 if (vidx < VV_LEN) |
3634 return cat_prefix_varname('v', (char_u *)vimvars[vidx++].vv_name); | 3679 return cat_prefix_varname('v', (char_u *)vimvars[vidx++].vv_name); |
3635 | 3680 |
5695 if (li == NULL) | 5740 if (li == NULL) |
5696 return FAIL; | 5741 return FAIL; |
5697 list_append(l, li); | 5742 list_append(l, li); |
5698 li->li_tv.v_type = VAR_STRING; | 5743 li->li_tv.v_type = VAR_STRING; |
5699 li->li_tv.v_lock = 0; | 5744 li->li_tv.v_lock = 0; |
5700 if ((li->li_tv.vval.v_string = (len >= 0 ? vim_strnsave(str, len) | 5745 if (str == NULL) |
5746 li->li_tv.vval.v_string = NULL; | |
5747 else if ((li->li_tv.vval.v_string = (len >= 0 ? vim_strnsave(str, len) | |
5701 : vim_strsave(str))) == NULL) | 5748 : vim_strsave(str))) == NULL) |
5702 return FAIL; | 5749 return FAIL; |
5703 return OK; | 5750 return OK; |
5704 } | 5751 } |
5705 | 5752 |
5993 buf_T *buf; | 6040 buf_T *buf; |
5994 win_T *wp; | 6041 win_T *wp; |
5995 int i; | 6042 int i; |
5996 funccall_T *fc; | 6043 funccall_T *fc; |
5997 int did_free = FALSE; | 6044 int did_free = FALSE; |
6045 #ifdef FEAT_WINDOWS | |
6046 tabpage_T *tp; | |
6047 #endif | |
5998 | 6048 |
5999 /* | 6049 /* |
6000 * 1. Go through all accessible variables and mark all lists and dicts | 6050 * 1. Go through all accessible variables and mark all lists and dicts |
6001 * with copyID. | 6051 * with copyID. |
6002 */ | 6052 */ |
6007 /* buffer-local variables */ | 6057 /* buffer-local variables */ |
6008 for (buf = firstbuf; buf != NULL; buf = buf->b_next) | 6058 for (buf = firstbuf; buf != NULL; buf = buf->b_next) |
6009 set_ref_in_ht(&buf->b_vars.dv_hashtab, copyID); | 6059 set_ref_in_ht(&buf->b_vars.dv_hashtab, copyID); |
6010 | 6060 |
6011 /* window-local variables */ | 6061 /* window-local variables */ |
6012 FOR_ALL_WINDOWS(wp) | 6062 FOR_ALL_TAB_WINDOWS(tp, wp) |
6013 set_ref_in_ht(&wp->w_vars.dv_hashtab, copyID); | 6063 set_ref_in_ht(&wp->w_vars.dv_hashtab, copyID); |
6064 | |
6065 #ifdef FEAT_WINDOWS | |
6066 /* tabpage-local variables */ | |
6067 for (tp = first_tabpage; tp != NULL; tp = tp->tp_next) | |
6068 set_ref_in_ht(&tp->tp_vars.dv_hashtab, copyID); | |
6069 #endif | |
6014 | 6070 |
6015 /* global variables */ | 6071 /* global variables */ |
6016 set_ref_in_ht(&globvarht, copyID); | 6072 set_ref_in_ht(&globvarht, copyID); |
6017 | 6073 |
6018 /* function-local variables */ | 6074 /* function-local variables */ |
7019 {"localtime", 0, 0, f_localtime}, | 7075 {"localtime", 0, 0, f_localtime}, |
7020 {"map", 2, 2, f_map}, | 7076 {"map", 2, 2, f_map}, |
7021 {"maparg", 1, 3, f_maparg}, | 7077 {"maparg", 1, 3, f_maparg}, |
7022 {"mapcheck", 1, 3, f_mapcheck}, | 7078 {"mapcheck", 1, 3, f_mapcheck}, |
7023 {"match", 2, 4, f_match}, | 7079 {"match", 2, 4, f_match}, |
7080 {"matcharg", 1, 1, f_matcharg}, | |
7024 {"matchend", 2, 4, f_matchend}, | 7081 {"matchend", 2, 4, f_matchend}, |
7025 {"matchlist", 2, 4, f_matchlist}, | 7082 {"matchlist", 2, 4, f_matchlist}, |
7026 {"matchstr", 2, 4, f_matchstr}, | 7083 {"matchstr", 2, 4, f_matchstr}, |
7027 {"max", 1, 1, f_max}, | 7084 {"max", 1, 1, f_max}, |
7028 {"min", 1, 1, f_min}, | 7085 {"min", 1, 1, f_min}, |
7030 {"mkdir", 1, 3, f_mkdir}, | 7087 {"mkdir", 1, 3, f_mkdir}, |
7031 #endif | 7088 #endif |
7032 {"mode", 0, 0, f_mode}, | 7089 {"mode", 0, 0, f_mode}, |
7033 {"nextnonblank", 1, 1, f_nextnonblank}, | 7090 {"nextnonblank", 1, 1, f_nextnonblank}, |
7034 {"nr2char", 1, 1, f_nr2char}, | 7091 {"nr2char", 1, 1, f_nr2char}, |
7092 {"pathshorten", 1, 1, f_pathshorten}, | |
7035 {"prevnonblank", 1, 1, f_prevnonblank}, | 7093 {"prevnonblank", 1, 1, f_prevnonblank}, |
7036 {"printf", 2, 19, f_printf}, | 7094 {"printf", 2, 19, f_printf}, |
7037 {"pumvisible", 0, 0, f_pumvisible}, | 7095 {"pumvisible", 0, 0, f_pumvisible}, |
7038 {"range", 1, 3, f_range}, | 7096 {"range", 1, 3, f_range}, |
7039 {"readfile", 1, 3, f_readfile}, | 7097 {"readfile", 1, 3, f_readfile}, |
11482 || tv_islocked(&di->di_tv)); | 11540 || tv_islocked(&di->di_tv)); |
11483 } | 11541 } |
11484 } | 11542 } |
11485 } | 11543 } |
11486 else if (lv.ll_range) | 11544 else if (lv.ll_range) |
11487 EMSG(_("E745: Range not allowed")); | 11545 EMSG(_("E786: Range not allowed")); |
11488 else if (lv.ll_newkey != NULL) | 11546 else if (lv.ll_newkey != NULL) |
11489 EMSG2(_(e_dictkey), lv.ll_newkey); | 11547 EMSG2(_(e_dictkey), lv.ll_newkey); |
11490 else if (lv.ll_list != NULL) | 11548 else if (lv.ll_list != NULL) |
11491 /* List item. */ | 11549 /* List item. */ |
11492 rettv->vval.v_number = tv_islocked(&lv.ll_li->li_tv); | 11550 rettv->vval.v_number = tv_islocked(&lv.ll_li->li_tv); |
12118 { | 12176 { |
12119 find_some_match(argvars, rettv, 1); | 12177 find_some_match(argvars, rettv, 1); |
12120 } | 12178 } |
12121 | 12179 |
12122 /* | 12180 /* |
12181 * "matcharg()" function | |
12182 */ | |
12183 static void | |
12184 f_matcharg(argvars, rettv) | |
12185 typval_T *argvars; | |
12186 typval_T *rettv; | |
12187 { | |
12188 if (rettv_list_alloc(rettv) == OK) | |
12189 { | |
12190 #ifdef FEAT_SEARCH_EXTRA | |
12191 int mi = get_tv_number(&argvars[0]); | |
12192 | |
12193 if (mi >= 1 && mi <= 3) | |
12194 { | |
12195 list_append_string(rettv->vval.v_list, | |
12196 syn_id2name(curwin->w_match_id[mi - 1]), -1); | |
12197 list_append_string(rettv->vval.v_list, | |
12198 curwin->w_match_pat[mi - 1], -1); | |
12199 } | |
12200 #endif | |
12201 } | |
12202 } | |
12203 | |
12204 /* | |
12123 * "matchend()" function | 12205 * "matchend()" function |
12124 */ | 12206 */ |
12125 static void | 12207 static void |
12126 f_matchend(argvars, rettv) | 12208 f_matchend(argvars, rettv) |
12127 typval_T *argvars; | 12209 typval_T *argvars; |
12387 buf[0] = (char_u)get_tv_number(&argvars[0]); | 12469 buf[0] = (char_u)get_tv_number(&argvars[0]); |
12388 buf[1] = NUL; | 12470 buf[1] = NUL; |
12389 } | 12471 } |
12390 rettv->v_type = VAR_STRING; | 12472 rettv->v_type = VAR_STRING; |
12391 rettv->vval.v_string = vim_strsave(buf); | 12473 rettv->vval.v_string = vim_strsave(buf); |
12474 } | |
12475 | |
12476 /* | |
12477 * "pathshorten()" function | |
12478 */ | |
12479 static void | |
12480 f_pathshorten(argvars, rettv) | |
12481 typval_T *argvars; | |
12482 typval_T *rettv; | |
12483 { | |
12484 char_u *p; | |
12485 | |
12486 rettv->v_type = VAR_STRING; | |
12487 p = get_tv_string_chk(&argvars[0]); | |
12488 if (p == NULL) | |
12489 rettv->vval.v_string = NULL; | |
12490 else | |
12491 { | |
12492 p = vim_strsave(p); | |
12493 rettv->vval.v_string = p; | |
12494 if (p != NULL) | |
12495 shorten_dir(p); | |
12496 } | |
12392 } | 12497 } |
12393 | 12498 |
12394 /* | 12499 /* |
12395 * "prevnonblank()" function | 12500 * "prevnonblank()" function |
12396 */ | 12501 */ |
16656 len = 6; | 16761 len = 6; |
16657 else if (eap->force_bin == FORCE_NOBIN) | 16762 else if (eap->force_bin == FORCE_NOBIN) |
16658 len = 8; | 16763 len = 8; |
16659 else | 16764 else |
16660 len = 0; | 16765 len = 0; |
16766 | |
16767 if (eap->read_edit) | |
16768 len += 7; | |
16769 | |
16661 if (eap->force_ff != 0) | 16770 if (eap->force_ff != 0) |
16662 len += (unsigned)STRLEN(eap->cmd + eap->force_ff) + 6; | 16771 len += (unsigned)STRLEN(eap->cmd + eap->force_ff) + 6; |
16663 # ifdef FEAT_MBYTE | 16772 # ifdef FEAT_MBYTE |
16664 if (eap->force_enc != 0) | 16773 if (eap->force_enc != 0) |
16665 len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7; | 16774 len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7; |
16675 sprintf((char *)newval, " ++bin"); | 16784 sprintf((char *)newval, " ++bin"); |
16676 else if (eap->force_bin == FORCE_NOBIN) | 16785 else if (eap->force_bin == FORCE_NOBIN) |
16677 sprintf((char *)newval, " ++nobin"); | 16786 sprintf((char *)newval, " ++nobin"); |
16678 else | 16787 else |
16679 *newval = NUL; | 16788 *newval = NUL; |
16789 | |
16790 if (eap->read_edit) | |
16791 STRCAT(newval, " ++edit"); | |
16792 | |
16680 if (eap->force_ff != 0) | 16793 if (eap->force_ff != 0) |
16681 sprintf((char *)newval + STRLEN(newval), " ++ff=%s", | 16794 sprintf((char *)newval + STRLEN(newval), " ++ff=%s", |
16682 eap->cmd + eap->force_ff); | 16795 eap->cmd + eap->force_ff); |
16683 # ifdef FEAT_MBYTE | 16796 # ifdef FEAT_MBYTE |
16684 if (eap->force_enc != 0) | 16797 if (eap->force_enc != 0) |
17142 case 's': return &SCRIPT_SV(current_SID).sv_var; | 17255 case 's': return &SCRIPT_SV(current_SID).sv_var; |
17143 case 'g': return &globvars_var; | 17256 case 'g': return &globvars_var; |
17144 case 'v': return &vimvars_var; | 17257 case 'v': return &vimvars_var; |
17145 case 'b': return &curbuf->b_bufvar; | 17258 case 'b': return &curbuf->b_bufvar; |
17146 case 'w': return &curwin->w_winvar; | 17259 case 'w': return &curwin->w_winvar; |
17260 #ifdef FEAT_WINDOWS | |
17261 case 't': return &curtab->tp_winvar; | |
17262 #endif | |
17147 case 'l': return current_funccal == NULL | 17263 case 'l': return current_funccal == NULL |
17148 ? NULL : ¤t_funccal->l_vars_var; | 17264 ? NULL : ¤t_funccal->l_vars_var; |
17149 case 'a': return current_funccal == NULL | 17265 case 'a': return current_funccal == NULL |
17150 ? NULL : ¤t_funccal->l_avars_var; | 17266 ? NULL : ¤t_funccal->l_avars_var; |
17151 } | 17267 } |
17205 return NULL; | 17321 return NULL; |
17206 if (*name == 'b') /* buffer variable */ | 17322 if (*name == 'b') /* buffer variable */ |
17207 return &curbuf->b_vars.dv_hashtab; | 17323 return &curbuf->b_vars.dv_hashtab; |
17208 if (*name == 'w') /* window variable */ | 17324 if (*name == 'w') /* window variable */ |
17209 return &curwin->w_vars.dv_hashtab; | 17325 return &curwin->w_vars.dv_hashtab; |
17326 #ifdef FEAT_WINDOWS | |
17327 if (*name == 't') /* tab page variable */ | |
17328 return &curtab->tp_vars.dv_hashtab; | |
17329 #endif | |
17210 if (*name == 'v') /* v: variable */ | 17330 if (*name == 'v') /* v: variable */ |
17211 return &vimvarht; | 17331 return &vimvarht; |
17212 if (*name == 'a' && current_funccal != NULL) /* function argument */ | 17332 if (*name == 'a' && current_funccal != NULL) /* function argument */ |
17213 return ¤t_funccal->l_avars.dv_hashtab; | 17333 return ¤t_funccal->l_avars.dv_hashtab; |
17214 if (*name == 'l' && current_funccal != NULL) /* local function variable */ | 17334 if (*name == 'l' && current_funccal != NULL) /* local function variable */ |
18526 clear_tv(&fudi.fd_di->di_tv); | 18646 clear_tv(&fudi.fd_di->di_tv); |
18527 fudi.fd_di->di_tv.v_type = VAR_FUNC; | 18647 fudi.fd_di->di_tv.v_type = VAR_FUNC; |
18528 fudi.fd_di->di_tv.v_lock = 0; | 18648 fudi.fd_di->di_tv.v_lock = 0; |
18529 fudi.fd_di->di_tv.vval.v_string = vim_strsave(name); | 18649 fudi.fd_di->di_tv.vval.v_string = vim_strsave(name); |
18530 fp->uf_refcount = 1; | 18650 fp->uf_refcount = 1; |
18651 | |
18652 /* behave like "dict" was used */ | |
18653 flags |= FC_DICT; | |
18531 } | 18654 } |
18532 | 18655 |
18533 /* insert the new function in the function list */ | 18656 /* insert the new function in the function list */ |
18534 STRCPY(fp->uf_name, name); | 18657 STRCPY(fp->uf_name, name); |
18535 hash_add(&func_hashtab, UF2HIKEY(fp)); | 18658 hash_add(&func_hashtab, UF2HIKEY(fp)); |