forked from aniani/vim
patch 9.0.0634: evaluating "expr" options has more overhead than needed
Problem: Evaluating "expr" options has more overhead than needed.
Solution: Use call_simple_func() for 'foldtext', 'includeexpr', 'printexpr',
"expr" of 'spellsuggest', 'diffexpr', 'patchexpr', 'balloonexpr',
'formatexpr', 'indentexpr' and 'charconvert'.
This commit is contained in:
@@ -4,7 +4,7 @@ varnumber_T num_modulus(varnumber_T n1, varnumber_T n2, int *failed);
|
||||
void eval_init(void);
|
||||
void eval_clear(void);
|
||||
void fill_evalarg_from_eap(evalarg_T *evalarg, exarg_T *eap, int skip);
|
||||
int eval_to_bool(char_u *arg, int *error, exarg_T *eap, int skip);
|
||||
int eval_to_bool(char_u *arg, int *error, exarg_T *eap, int skip, int use_simple_function);
|
||||
int eval_expr_valid_arg(typval_T *tv);
|
||||
funccall_T *eval_expr_get_funccal(typval_T *expr, typval_T *rettv);
|
||||
int eval_expr_typval(typval_T *expr, typval_T *argv, int argc, funccall_T *fc_arg, typval_T *rettv);
|
||||
@@ -15,11 +15,12 @@ void clear_evalarg(evalarg_T *evalarg, exarg_T *eap);
|
||||
int skip_expr(char_u **pp, evalarg_T *evalarg);
|
||||
int skip_expr_concatenate(char_u **arg, char_u **start, char_u **end, evalarg_T *evalarg);
|
||||
char_u *typval2string(typval_T *tv, int convert);
|
||||
char_u *eval_to_string_eap(char_u *arg, int convert, exarg_T *eap);
|
||||
char_u *eval_to_string(char_u *arg, int convert);
|
||||
char_u *eval_to_string_safe(char_u *arg, int use_sandbox, int keep_script_version);
|
||||
varnumber_T eval_to_number(char_u *expr);
|
||||
char_u *eval_to_string_eap(char_u *arg, int convert, exarg_T *eap, int use_simple_function);
|
||||
char_u *eval_to_string(char_u *arg, int convert, int use_simple_function);
|
||||
char_u *eval_to_string_safe(char_u *arg, int use_sandbox, int keep_script_version, int use_simple_function);
|
||||
varnumber_T eval_to_number(char_u *expr, int use_simple_function);
|
||||
typval_T *eval_expr(char_u *arg, exarg_T *eap);
|
||||
typval_T *eval_expr_ext(char_u *arg, exarg_T *eap, int use_simple_function);
|
||||
int call_vim_function(char_u *func, int argc, typval_T *argv, typval_T *rettv);
|
||||
void *call_func_retstr(char_u *func, int argc, typval_T *argv);
|
||||
void *call_func_retlist(char_u *func, int argc, typval_T *argv);
|
||||
@@ -38,6 +39,8 @@ char_u *eval_next_non_blank(char_u *arg, evalarg_T *evalarg, int *getnext);
|
||||
char_u *eval_next_line(char_u *arg, evalarg_T *evalarg);
|
||||
char_u *skipwhite_and_linebreak(char_u *arg, evalarg_T *evalarg);
|
||||
int eval0(char_u *arg, typval_T *rettv, exarg_T *eap, evalarg_T *evalarg);
|
||||
int may_call_simple_func(char_u *arg, typval_T *rettv);
|
||||
int eval0_simple_funccal(char_u *arg, typval_T *rettv, exarg_T *eap, evalarg_T *evalarg);
|
||||
int eval0_retarg(char_u *arg, typval_T *rettv, exarg_T *eap, evalarg_T *evalarg, char_u **retarg);
|
||||
int eval1(char_u **arg, typval_T *rettv, evalarg_T *evalarg);
|
||||
void eval_addblob(typval_T *tv1, typval_T *tv2);
|
||||
|
||||
Reference in New Issue
Block a user