To: vim_dev@googlegroups.com Subject: Patch 8.2.1111 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.1111 Problem: Inconsistent naming of get_list_tv() and eval_dict(). Solution: Rename get_list_tv() to eval_list(). Similarly for eval_number(), eval_string(), eval_lit_string() and a few others. Files: src/eval.c, src/list.c, src/proto/list.pro, src/vim9compile.c, src/typval.c, src/proto/typval.pro, src/vim9script.c, src/evalfunc.c, src/evalvars.c, src/proto/evalvars.pro, src/vim9execute.c *** ../vim-8.2.1110/src/eval.c 2020-07-01 17:28:30.343443234 +0200 --- src/eval.c 2020-07-01 18:26:26.106119016 +0200 *************** *** 1224,1230 **** // handle +=, -=, *=, /=, %= and .= di = NULL; ! if (get_var_tv(lp->ll_name, (int)STRLEN(lp->ll_name), &tv, &di, TRUE, FALSE) == OK) { if ((di == NULL --- 1224,1230 ---- // handle +=, -=, *=, /=, %= and .= di = NULL; ! if (eval_variable(lp->ll_name, (int)STRLEN(lp->ll_name), &tv, &di, TRUE, FALSE) == OK) { if ((di == NULL *************** *** 2901,2907 **** case '7': case '8': case '9': ! case '.': ret = get_number_tv(arg, rettv, evaluate, want_string); // Apply prefixed "-" and "+" now. Matters especially when // "->" follows. --- 2901,2907 ---- case '7': case '8': case '9': ! case '.': ret = eval_number(arg, rettv, evaluate, want_string); // Apply prefixed "-" and "+" now. Matters especially when // "->" follows. *************** *** 2912,2930 **** /* * String constant: "string". */ ! case '"': ret = get_string_tv(arg, rettv, evaluate); break; /* * Literal string constant: 'str''ing'. */ ! case '\'': ret = get_lit_string_tv(arg, rettv, evaluate); break; /* * List: [expr, expr] */ ! case '[': ret = get_list_tv(arg, rettv, evalarg, TRUE); break; /* --- 2912,2930 ---- /* * String constant: "string". */ ! case '"': ret = eval_string(arg, rettv, evaluate); break; /* * Literal string constant: 'str''ing'. */ ! case '\'': ret = eval_lit_string(arg, rettv, evaluate); break; /* * List: [expr, expr] */ ! case '[': ret = eval_list(arg, rettv, evalarg, TRUE); break; /* *************** *** 2951,2963 **** /* * Option value: &name */ ! case '&': ret = get_option_tv(arg, rettv, evaluate); break; /* * Environment variable: $VAR. */ ! case '$': ret = get_env_tv(arg, rettv, evaluate); break; /* --- 2951,2963 ---- /* * Option value: &name */ ! case '&': ret = eval_option(arg, rettv, evaluate); break; /* * Environment variable: $VAR. */ ! case '$': ret = eval_env_var(arg, rettv, evaluate); break; /* *************** *** 3012,3025 **** ret = FAIL; else { ! if (**arg == '(') // recursive! ret = eval_func(arg, evalarg, s, len, rettv, flags, NULL); else if (flags & EVAL_CONSTANT) ret = FAIL; else if (evaluate) ! ret = get_var_tv(s, len, rettv, NULL, TRUE, FALSE); else { check_vars(s, len); ret = OK; } --- 3012,3028 ---- ret = FAIL; else { ! if (**arg == '(') ! // "name(..." recursive! ret = eval_func(arg, evalarg, s, len, rettv, flags, NULL); else if (flags & EVAL_CONSTANT) ret = FAIL; else if (evaluate) ! // get value of variable ! ret = eval_variable(s, len, rettv, NULL, TRUE, FALSE); else { + // skip the name check_vars(s, len); ret = OK; } *** ../vim-8.2.1110/src/list.c 2020-07-01 17:28:30.343443234 +0200 --- src/list.c 2020-07-01 18:11:50.442919494 +0200 *************** *** 1160,1166 **** * Return OK or FAIL. */ int ! get_list_tv(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int do_error) { int evaluate = evalarg == NULL ? FALSE : evalarg->eval_flags & EVAL_EVALUATE; --- 1160,1166 ---- * Return OK or FAIL. */ int ! eval_list(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int do_error) { int evaluate = evalarg == NULL ? FALSE : evalarg->eval_flags & EVAL_EVALUATE; *** ../vim-8.2.1110/src/proto/list.pro 2020-06-26 22:46:23.233370940 +0200 --- src/proto/list.pro 2020-07-01 18:15:35.801686543 +0200 *************** *** 39,45 **** char_u *list2string(typval_T *tv, int copyID, int restore_copyID); int list_join(garray_T *gap, list_T *l, char_u *sep, int echo_style, int restore_copyID, int copyID); void f_join(typval_T *argvars, typval_T *rettv); ! int get_list_tv(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int do_error); int write_list(FILE *fd, list_T *list, int binary); void init_static_list(staticList10_T *sl); void f_list2str(typval_T *argvars, typval_T *rettv); --- 39,45 ---- char_u *list2string(typval_T *tv, int copyID, int restore_copyID); int list_join(garray_T *gap, list_T *l, char_u *sep, int echo_style, int restore_copyID, int copyID); void f_join(typval_T *argvars, typval_T *rettv); ! int eval_list(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int do_error); int write_list(FILE *fd, list_T *list, int binary); void init_static_list(staticList10_T *sl); void f_list2str(typval_T *argvars, typval_T *rettv); *** ../vim-8.2.1110/src/vim9compile.c 2020-07-01 16:00:39.936953109 +0200 --- src/vim9compile.c 2020-07-01 18:18:20.496783998 +0200 *************** *** 2868,2876 **** argvars[0].v_type = VAR_UNKNOWN; if (*s == '"') ! (void)get_string_tv(&s, &argvars[0], TRUE); else if (*s == '\'') ! (void)get_lit_string_tv(&s, &argvars[0], TRUE); s = skipwhite(s); if (*s == ')' && argvars[0].v_type == VAR_STRING) { --- 2868,2876 ---- argvars[0].v_type = VAR_UNKNOWN; if (*s == '"') ! (void)eval_string(&s, &argvars[0], TRUE); else if (*s == '\'') ! (void)eval_lit_string(&s, &argvars[0], TRUE); s = skipwhite(s); if (*s == ')' && argvars[0].v_type == VAR_STRING) { *************** *** 2992,2998 **** { // Can be "[1, 2, 3]->Func()". ! if (get_list_tv(&p, &rettv, NULL, FALSE) == FAIL) p = arg; } else if (p == arg && *arg == '#' && arg[1] == '{') --- 2992,2998 ---- { // Can be "[1, 2, 3]->Func()". ! if (eval_list(&p, &rettv, NULL, FALSE) == FAIL) p = arg; } else if (p == arg && *arg == '#' && arg[1] == '{') *************** *** 3270,3279 **** // parse the option and get the current value to get the type. rettv.v_type = VAR_UNKNOWN; ! ret = get_option_tv(arg, &rettv, TRUE); if (ret == OK) { ! // include the '&' in the name, get_option_tv() expects it. char_u *name = vim_strnsave(start, *arg - start); type_T *type = rettv.v_type == VAR_NUMBER ? &t_number : &t_string; --- 3270,3279 ---- // parse the option and get the current value to get the type. rettv.v_type = VAR_UNKNOWN; ! ret = eval_option(arg, &rettv, TRUE); if (ret == OK) { ! // include the '&' in the name, eval_option() expects it. char_u *name = vim_strnsave(start, *arg - start); type_T *type = rettv.v_type == VAR_NUMBER ? &t_number : &t_string; *************** *** 3304,3310 **** return FAIL; } ! // include the '$' in the name, get_env_tv() expects it. name = vim_strnsave(start, len + 1); ret = generate_LOAD(cctx, ISN_LOADENV, 0, name, &t_string); vim_free(name); --- 3304,3310 ---- return FAIL; } ! // include the '$' in the name, eval_env_var() expects it. name = vim_strnsave(start, len + 1); ret = generate_LOAD(cctx, ISN_LOADENV, 0, name, &t_string); vim_free(name); *************** *** 3761,3781 **** case '7': case '8': case '9': ! case '.': if (get_number_tv(arg, rettv, TRUE, FALSE) == FAIL) return FAIL; break; /* * String constant: "string". */ ! case '"': if (get_string_tv(arg, rettv, TRUE) == FAIL) return FAIL; break; /* * Literal string constant: 'str''ing'. */ ! case '\'': if (get_lit_string_tv(arg, rettv, TRUE) == FAIL) return FAIL; break; --- 3761,3781 ---- case '7': case '8': case '9': ! case '.': if (eval_number(arg, rettv, TRUE, FALSE) == FAIL) return FAIL; break; /* * String constant: "string". */ ! case '"': if (eval_string(arg, rettv, TRUE) == FAIL) return FAIL; break; /* * Literal string constant: 'str''ing'. */ ! case '\'': if (eval_lit_string(arg, rettv, TRUE) == FAIL) return FAIL; break; *** ../vim-8.2.1110/src/typval.c 2020-06-19 19:30:50.177338803 +0200 --- src/typval.c 2020-07-01 18:18:17.816798693 +0200 *************** *** 992,998 **** * Return OK or FAIL. */ int ! get_option_tv( char_u **arg, typval_T *rettv, // when NULL, only check if option exists int evaluate) --- 992,998 ---- * Return OK or FAIL. */ int ! eval_option( char_u **arg, typval_T *rettv, // when NULL, only check if option exists int evaluate) *************** *** 1069,1075 **** * Return OK or FAIL. */ int ! get_number_tv( char_u **arg, typval_T *rettv, int evaluate, --- 1069,1075 ---- * Return OK or FAIL. */ int ! eval_number( char_u **arg, typval_T *rettv, int evaluate, *************** *** 1179,1185 **** * Return OK or FAIL. */ int ! get_string_tv(char_u **arg, typval_T *rettv, int evaluate) { char_u *p; char_u *end; --- 1179,1185 ---- * Return OK or FAIL. */ int ! eval_string(char_u **arg, typval_T *rettv, int evaluate) { char_u *p; char_u *end; *************** *** 1297,1303 **** { end += extra; if (end >= rettv->vval.v_string + len) ! iemsg("get_string_tv() used more space than allocated"); break; } } --- 1297,1303 ---- { end += extra; if (end >= rettv->vval.v_string + len) ! iemsg("eval_string() used more space than allocated"); break; } } *************** *** 1323,1329 **** * Return OK or FAIL. */ int ! get_lit_string_tv(char_u **arg, typval_T *rettv, int evaluate) { char_u *p; char_u *str; --- 1323,1329 ---- * Return OK or FAIL. */ int ! eval_lit_string(char_u **arg, typval_T *rettv, int evaluate) { char_u *p; char_u *str; *************** *** 1401,1407 **** * Return FAIL if the name is invalid. */ int ! get_env_tv(char_u **arg, typval_T *rettv, int evaluate) { char_u *string = NULL; int len; --- 1401,1407 ---- * Return FAIL if the name is invalid. */ int ! eval_env_var(char_u **arg, typval_T *rettv, int evaluate) { char_u *string = NULL; int len; *** ../vim-8.2.1110/src/proto/typval.pro 2020-05-30 17:05:57.032692393 +0200 --- src/proto/typval.pro 2020-07-01 18:18:26.816749345 +0200 *************** *** 4,21 **** void free_tv(typval_T *varp); void clear_tv(typval_T *varp); void init_tv(typval_T *varp); - int tv_check_lock(typval_T *tv, char_u *name, int use_gettext); - void copy_tv(typval_T *from, typval_T *to); - int typval_compare(typval_T *typ1, typval_T *typ2, exptype_T type, int ic); - char_u *typval_tostring(typval_T *arg); - int tv_islocked(typval_T *tv); - int tv_equal(typval_T *tv1, typval_T *tv2, int ic, int recursive); - int get_option_tv(char_u **arg, typval_T *rettv, int evaluate); - int get_number_tv(char_u **arg, typval_T *rettv, int evaluate, int want_string); - int get_string_tv(char_u **arg, typval_T *rettv, int evaluate); - int get_lit_string_tv(char_u **arg, typval_T *rettv, int evaluate); - char_u *tv2string(typval_T *tv, char_u **tofree, char_u *numbuf, int copyID); - int get_env_tv(char_u **arg, typval_T *rettv, int evaluate); varnumber_T tv_get_number(typval_T *varp); varnumber_T tv_get_number_chk(typval_T *varp, int *denote); float_T tv_get_float(typval_T *varp); --- 4,9 ---- *************** *** 23,30 **** char_u *tv_get_string_buf(typval_T *varp, char_u *buf); char_u *tv_get_string_chk(typval_T *varp); char_u *tv_get_string_buf_chk(typval_T *varp, char_u *buf); linenr_T tv_get_lnum(typval_T *argvars); linenr_T tv_get_lnum_buf(typval_T *argvars, buf_T *buf); buf_T *tv_get_buf(typval_T *tv, int curtab_only); - char_u *tv_stringify(typval_T *varp, char_u *buf); /* vim: set ft=c : */ --- 11,30 ---- char_u *tv_get_string_buf(typval_T *varp, char_u *buf); char_u *tv_get_string_chk(typval_T *varp); char_u *tv_get_string_buf_chk(typval_T *varp, char_u *buf); + char_u *tv_stringify(typval_T *varp, char_u *buf); + int tv_check_lock(typval_T *tv, char_u *name, int use_gettext); + void copy_tv(typval_T *from, typval_T *to); + int typval_compare(typval_T *typ1, typval_T *typ2, exptype_T type, int ic); + char_u *typval_tostring(typval_T *arg); + int tv_islocked(typval_T *tv); + int tv_equal(typval_T *tv1, typval_T *tv2, int ic, int recursive); + int eval_option(char_u **arg, typval_T *rettv, int evaluate); + int eval_number(char_u **arg, typval_T *rettv, int evaluate, int want_string); + int eval_string(char_u **arg, typval_T *rettv, int evaluate); + int eval_lit_string(char_u **arg, typval_T *rettv, int evaluate); + char_u *tv2string(typval_T *tv, char_u **tofree, char_u *numbuf, int copyID); + int eval_env_var(char_u **arg, typval_T *rettv, int evaluate); linenr_T tv_get_lnum(typval_T *argvars); linenr_T tv_get_lnum_buf(typval_T *argvars, buf_T *buf); buf_T *tv_get_buf(typval_T *tv, int curtab_only); /* vim: set ft=c : */ *** ../vim-8.2.1110/src/vim9compile.c 2020-07-01 16:00:39.936953109 +0200 --- src/vim9compile.c 2020-07-01 18:18:20.496783998 +0200 *************** *** 2868,2876 **** argvars[0].v_type = VAR_UNKNOWN; if (*s == '"') ! (void)get_string_tv(&s, &argvars[0], TRUE); else if (*s == '\'') ! (void)get_lit_string_tv(&s, &argvars[0], TRUE); s = skipwhite(s); if (*s == ')' && argvars[0].v_type == VAR_STRING) { --- 2868,2876 ---- argvars[0].v_type = VAR_UNKNOWN; if (*s == '"') ! (void)eval_string(&s, &argvars[0], TRUE); else if (*s == '\'') ! (void)eval_lit_string(&s, &argvars[0], TRUE); s = skipwhite(s); if (*s == ')' && argvars[0].v_type == VAR_STRING) { *************** *** 2992,2998 **** { // Can be "[1, 2, 3]->Func()". ! if (get_list_tv(&p, &rettv, NULL, FALSE) == FAIL) p = arg; } else if (p == arg && *arg == '#' && arg[1] == '{') --- 2992,2998 ---- { // Can be "[1, 2, 3]->Func()". ! if (eval_list(&p, &rettv, NULL, FALSE) == FAIL) p = arg; } else if (p == arg && *arg == '#' && arg[1] == '{') *************** *** 3270,3279 **** // parse the option and get the current value to get the type. rettv.v_type = VAR_UNKNOWN; ! ret = get_option_tv(arg, &rettv, TRUE); if (ret == OK) { ! // include the '&' in the name, get_option_tv() expects it. char_u *name = vim_strnsave(start, *arg - start); type_T *type = rettv.v_type == VAR_NUMBER ? &t_number : &t_string; --- 3270,3279 ---- // parse the option and get the current value to get the type. rettv.v_type = VAR_UNKNOWN; ! ret = eval_option(arg, &rettv, TRUE); if (ret == OK) { ! // include the '&' in the name, eval_option() expects it. char_u *name = vim_strnsave(start, *arg - start); type_T *type = rettv.v_type == VAR_NUMBER ? &t_number : &t_string; *************** *** 3304,3310 **** return FAIL; } ! // include the '$' in the name, get_env_tv() expects it. name = vim_strnsave(start, len + 1); ret = generate_LOAD(cctx, ISN_LOADENV, 0, name, &t_string); vim_free(name); --- 3304,3310 ---- return FAIL; } ! // include the '$' in the name, eval_env_var() expects it. name = vim_strnsave(start, len + 1); ret = generate_LOAD(cctx, ISN_LOADENV, 0, name, &t_string); vim_free(name); *************** *** 3761,3781 **** case '7': case '8': case '9': ! case '.': if (get_number_tv(arg, rettv, TRUE, FALSE) == FAIL) return FAIL; break; /* * String constant: "string". */ ! case '"': if (get_string_tv(arg, rettv, TRUE) == FAIL) return FAIL; break; /* * Literal string constant: 'str''ing'. */ ! case '\'': if (get_lit_string_tv(arg, rettv, TRUE) == FAIL) return FAIL; break; --- 3761,3781 ---- case '7': case '8': case '9': ! case '.': if (eval_number(arg, rettv, TRUE, FALSE) == FAIL) return FAIL; break; /* * String constant: "string". */ ! case '"': if (eval_string(arg, rettv, TRUE) == FAIL) return FAIL; break; /* * Literal string constant: 'str''ing'. */ ! case '\'': if (eval_lit_string(arg, rettv, TRUE) == FAIL) return FAIL; break; *** ../vim-8.2.1110/src/vim9script.c 2020-06-19 19:01:39.038497746 +0200 --- src/vim9script.c 2020-07-01 18:15:28.141728497 +0200 *************** *** 302,310 **** tv.v_type = VAR_UNKNOWN; // TODO: should we accept any expression? if (*arg == '\'') ! ret = get_lit_string_tv(&arg, &tv, TRUE); else if (*arg == '"') ! ret = get_string_tv(&arg, &tv, TRUE); if (ret == FAIL || tv.vval.v_string == NULL || *tv.vval.v_string == NUL) { emsg(_("E1071: Invalid string after \"from\"")); --- 302,310 ---- tv.v_type = VAR_UNKNOWN; // TODO: should we accept any expression? if (*arg == '\'') ! ret = eval_lit_string(&arg, &tv, TRUE); else if (*arg == '"') ! ret = eval_string(&arg, &tv, TRUE); if (ret == FAIL || tv.vval.v_string == NULL || *tv.vval.v_string == NUL) { emsg(_("E1071: Invalid string after \"from\"")); *** ../vim-8.2.1110/src/evalfunc.c 2020-06-30 13:37:57.931017122 +0200 --- src/evalfunc.c 2020-07-01 18:16:23.889423103 +0200 *************** *** 2324,2330 **** } else if (*p == '&' || *p == '+') // option { ! n = (get_option_tv(&p, NULL, TRUE) == OK); if (*skipwhite(p) != NUL) n = FALSE; // trailing garbage } --- 2324,2330 ---- } else if (*p == '&' || *p == '+') // option { ! n = (eval_option(&p, NULL, TRUE) == OK); if (*skipwhite(p) != NUL) n = FALSE; // trailing garbage } *** ../vim-8.2.1110/src/evalvars.c 2020-06-28 15:51:12.145674365 +0200 --- src/evalvars.c 2020-07-01 18:26:56.577951627 +0200 *************** *** 1124,1130 **** { if (tofree != NULL) name = tofree; ! if (get_var_tv(name, len, &tv, NULL, TRUE, FALSE) == FAIL) error = TRUE; else { --- 1124,1130 ---- { if (tofree != NULL) name = tofree; ! if (eval_variable(name, len, &tv, NULL, TRUE, FALSE) == FAIL) error = TRUE; else { *************** *** 2365,2371 **** * Return OK or FAIL. If OK is returned "rettv" must be cleared. */ int ! get_var_tv( char_u *name, int len, // length of "name" typval_T *rettv, // NULL when only checking existence --- 2365,2371 ---- * Return OK or FAIL. If OK is returned "rettv" must be cleared. */ int ! eval_variable( char_u *name, int len, // length of "name" typval_T *rettv, // NULL when only checking existence *************** *** 3206,3212 **** done = TRUE; } } ! else if (get_option_tv(&varname, rettv, 1) == OK) // window-local-option done = TRUE; } --- 3206,3212 ---- done = TRUE; } } ! else if (eval_option(&varname, rettv, 1) == OK) // window-local-option done = TRUE; } *************** *** 3342,3348 **** { if (tofree != NULL) name = tofree; ! n = (get_var_tv(name, len, &tv, NULL, FALSE, TRUE) == OK); if (n) { // handle d.key, l[idx], f(expr) --- 3342,3348 ---- { if (tofree != NULL) name = tofree; ! n = (eval_variable(name, len, &tv, NULL, FALSE, TRUE) == OK); if (n) { // handle d.key, l[idx], f(expr) *************** *** 3609,3615 **** done = TRUE; } } ! else if (get_option_tv(&varname, rettv, TRUE) == OK) // buffer-local-option done = TRUE; --- 3609,3615 ---- done = TRUE; } } ! else if (eval_option(&varname, rettv, TRUE) == OK) // buffer-local-option done = TRUE; *** ../vim-8.2.1110/src/proto/evalvars.pro 2020-06-14 23:05:06.368915209 +0200 --- src/proto/evalvars.pro 2020-07-01 18:27:02.329920031 +0200 *************** *** 52,58 **** char_u *v_exception(char_u *oldval); char_u *v_throwpoint(char_u *oldval); char_u *set_cmdarg(exarg_T *eap, char_u *oldarg); ! int get_var_tv(char_u *name, int len, typval_T *rettv, dictitem_T **dip, int verbose, int no_autoload); void check_vars(char_u *name, int len); dictitem_T *find_var(char_u *name, hashtab_T **htp, int no_autoload); dictitem_T *find_var_in_ht(hashtab_T *ht, int htname, char_u *varname, int no_autoload); --- 52,58 ---- char_u *v_exception(char_u *oldval); char_u *v_throwpoint(char_u *oldval); char_u *set_cmdarg(exarg_T *eap, char_u *oldarg); ! int eval_variable(char_u *name, int len, typval_T *rettv, dictitem_T **dip, int verbose, int no_autoload); void check_vars(char_u *name, int len); dictitem_T *find_var(char_u *name, hashtab_T **htp, int no_autoload); dictitem_T *find_var_in_ht(hashtab_T *ht, int htname, char_u *varname, int no_autoload); *** ../vim-8.2.1110/src/vim9execute.c 2020-06-20 18:19:05.920877872 +0200 --- src/vim9execute.c 2020-07-01 18:18:22.724771782 +0200 *************** *** 1089,1095 **** // compilation: don't set SOURCING_LNUM. if (GA_GROW(&ectx.ec_stack, 1) == FAIL) goto failed; ! if (get_option_tv(&name, &optval, TRUE) == FAIL) goto failed; *STACK_TV_BOT(0) = optval; ++ectx.ec_stack.ga_len; --- 1089,1095 ---- // compilation: don't set SOURCING_LNUM. if (GA_GROW(&ectx.ec_stack, 1) == FAIL) goto failed; ! if (eval_option(&name, &optval, TRUE) == FAIL) goto failed; *STACK_TV_BOT(0) = optval; ++ectx.ec_stack.ga_len; *************** *** 1105,1111 **** if (GA_GROW(&ectx.ec_stack, 1) == FAIL) goto failed; // name is always valid, checked when compiling ! (void)get_env_tv(&name, &optval, TRUE); *STACK_TV_BOT(0) = optval; ++ectx.ec_stack.ga_len; } --- 1105,1111 ---- if (GA_GROW(&ectx.ec_stack, 1) == FAIL) goto failed; // name is always valid, checked when compiling ! (void)eval_env_var(&name, &optval, TRUE); *STACK_TV_BOT(0) = optval; ++ectx.ec_stack.ga_len; } *** ../vim-8.2.1110/src/version.c 2020-07-01 17:28:30.343443234 +0200 --- src/version.c 2020-07-01 18:27:22.649808416 +0200 *************** *** 756,757 **** --- 756,759 ---- { /* Add new patch number below this line */ + /**/ + 1111, /**/ -- BODY: I'm not dead! CART DRIVER: 'Ere. He says he's not dead. LARGE MAN: Yes he is. BODY: I'm not! "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///