@@ -1451,14 +1451,8 @@ list_glob_vars(int *first)
14511451 static void
14521452list_buf_vars (int * first )
14531453{
1454- char_u numbuf [NUMBUFLEN ];
1455-
14561454 list_hashtable_vars (& curbuf -> b_vars -> dv_hashtab , (char_u * )"b:" ,
14571455 TRUE, first );
1458-
1459- sprintf ((char * )numbuf , "%ld" , (long )curbuf -> b_changedtick );
1460- list_one_var_a ((char_u * )"b:" , (char_u * )"changedtick" , VAR_NUMBER ,
1461- numbuf , first );
14621456}
14631457
14641458/*
@@ -1805,20 +1799,6 @@ ex_let_one(
18051799 return arg_end ;
18061800}
18071801
1808- /*
1809- * If "arg" is equal to "b:changedtick" give an error and return TRUE.
1810- */
1811- int
1812- check_changedtick (char_u * arg )
1813- {
1814- if (STRNCMP (arg , "b:changedtick" , 13 ) == 0 && !eval_isnamec (arg [13 ]))
1815- {
1816- EMSG2 (_ (e_readonlyvar ), arg );
1817- return TRUE;
1818- }
1819- return FALSE;
1820- }
1821-
18221802/*
18231803 * Get an lval: variable, Dict item or List item that can be assigned a value
18241804 * to: "name", "na{me}", "name[expr]", "name[expr:expr]", "name[expr][expr]",
@@ -2208,32 +2188,29 @@ set_var_lval(
22082188
22092189 if (lp -> ll_tv == NULL )
22102190 {
2211- if (!check_changedtick (lp -> ll_name ))
2191+ cc = * endp ;
2192+ * endp = NUL ;
2193+ if (op != NULL && * op != '=' )
22122194 {
2213- cc = * endp ;
2214- * endp = NUL ;
2215- if (op != NULL && * op != '=' )
2216- {
2217- typval_T tv ;
2195+ typval_T tv ;
22182196
2219- /* handle +=, -= and .= */
2220- di = NULL ;
2221- if (get_var_tv (lp -> ll_name , (int )STRLEN (lp -> ll_name ),
2222- & tv , & di , TRUE, FALSE) == OK )
2223- {
2224- if ((di == NULL
2225- || (!var_check_ro (di -> di_flags , lp -> ll_name , FALSE)
2226- && !tv_check_lock (di -> di_tv .v_lock , lp -> ll_name ,
2227- FALSE)))
2228- && tv_op (& tv , rettv , op ) == OK )
2229- set_var (lp -> ll_name , & tv , FALSE);
2230- clear_tv (& tv );
2231- }
2197+ /* handle +=, -= and .= */
2198+ di = NULL ;
2199+ if (get_var_tv (lp -> ll_name , (int )STRLEN (lp -> ll_name ),
2200+ & tv , & di , TRUE, FALSE) == OK )
2201+ {
2202+ if ((di == NULL
2203+ || (!var_check_ro (di -> di_flags , lp -> ll_name , FALSE)
2204+ && !tv_check_lock (di -> di_tv .v_lock , lp -> ll_name ,
2205+ FALSE)))
2206+ && tv_op (& tv , rettv , op ) == OK )
2207+ set_var (lp -> ll_name , & tv , FALSE);
2208+ clear_tv (& tv );
22322209 }
2233- else
2234- set_var (lp -> ll_name , rettv , copy );
2235- * endp = cc ;
22362210 }
2211+ else
2212+ set_var (lp -> ll_name , rettv , copy );
2213+ * endp = cc ;
22372214 }
22382215 else if (tv_check_lock (lp -> ll_newkey == NULL
22392216 ? lp -> ll_tv -> v_lock
@@ -2776,9 +2753,7 @@ do_unlet_var(
27762753 * name_end = NUL ;
27772754
27782755 /* Normal name or expanded name. */
2779- if (check_changedtick (lp -> ll_name ))
2780- ret = FAIL ;
2781- else if (do_unlet (lp -> ll_name , forceit ) == FAIL )
2756+ if (do_unlet (lp -> ll_name , forceit ) == FAIL )
27822757 ret = FAIL ;
27832758 * name_end = cc ;
27842759 }
@@ -2904,21 +2879,16 @@ do_lock_var(
29042879 * name_end = NUL ;
29052880
29062881 /* Normal name or expanded name. */
2907- if (check_changedtick (lp -> ll_name ))
2882+ di = find_var (lp -> ll_name , NULL , TRUE);
2883+ if (di == NULL )
29082884 ret = FAIL ;
29092885 else
29102886 {
2911- di = find_var (lp -> ll_name , NULL , TRUE);
2912- if (di == NULL )
2913- ret = FAIL ;
2887+ if (lock )
2888+ di -> di_flags |= DI_FLAGS_LOCK ;
29142889 else
2915- {
2916- if (lock )
2917- di -> di_flags |= DI_FLAGS_LOCK ;
2918- else
2919- di -> di_flags &= ~DI_FLAGS_LOCK ;
2920- item_lock (& di -> di_tv , deep , lock );
2921- }
2890+ di -> di_flags &= ~DI_FLAGS_LOCK ;
2891+ item_lock (& di -> di_tv , deep , lock );
29222892 }
29232893 * name_end = cc ;
29242894 }
@@ -3139,11 +3109,6 @@ get_user_var_name(expand_T *xp, int idx)
31393109 ++ hi ;
31403110 return cat_prefix_varname ('b' , hi -> hi_key );
31413111 }
3142- if (bdone == ht -> ht_used )
3143- {
3144- ++ bdone ;
3145- return (char_u * )"b:changedtick" ;
3146- }
31473112
31483113 /* w: variables */
31493114 ht = & curwin -> w_vars -> dv_hashtab ;
@@ -6815,36 +6780,22 @@ get_var_tv(
68156780{
68166781 int ret = OK ;
68176782 typval_T * tv = NULL ;
6818- typval_T atv ;
68196783 dictitem_T * v ;
68206784 int cc ;
68216785
68226786 /* truncate the name, so that we can use strcmp() */
68236787 cc = name [len ];
68246788 name [len ] = NUL ;
68256789
6826- /*
6827- * Check for "b:changedtick".
6828- */
6829- if (STRCMP (name , "b:changedtick" ) == 0 )
6830- {
6831- atv .v_type = VAR_NUMBER ;
6832- atv .vval .v_number = curbuf -> b_changedtick ;
6833- tv = & atv ;
6834- }
6835-
68366790 /*
68376791 * Check for user-defined variables.
68386792 */
6839- else
6793+ v = find_var (name , NULL , no_autoload );
6794+ if (v != NULL )
68406795 {
6841- v = find_var (name , NULL , no_autoload );
6842- if (v != NULL )
6843- {
6844- tv = & v -> di_tv ;
6845- if (dip != NULL )
6846- * dip = v ;
6847- }
6796+ tv = & v -> di_tv ;
6797+ if (dip != NULL )
6798+ * dip = v ;
68486799 }
68496800
68506801 if (tv == NULL )
0 commit comments