diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-11-11 10:32:32 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-11-18 07:56:58 -0300 |
commit | 375db3b19ac7d5e956af83660bdd7472de50f70c (patch) | |
tree | 94763f668decf325daf0e758dd628b43ab42d3b8 /src/nvim/eval.c | |
parent | 268b2eff4a5b69329e21ea8d1019984983a04f78 (diff) | |
download | rneovim-375db3b19ac7d5e956af83660bdd7472de50f70c.tar.gz rneovim-375db3b19ac7d5e956af83660bdd7472de50f70c.tar.bz2 rneovim-375db3b19ac7d5e956af83660bdd7472de50f70c.zip |
eval/ex_cmds2/ops: Implement providers with eval_call_provider
Replace references to provider_call/provider_has with the new functions
eval_call_provider/eval_has_provider.
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index f4d117c391..2106c36345 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -5152,7 +5152,7 @@ void list_append_string(list_T *l, char_u *str, int len) /* * Append "n" to list "l". */ -static void list_append_number(list_T *l, varnumber_T n) +void list_append_number(list_T *l, varnumber_T n) { listitem_T *li = listitem_alloc(); li->li_tv.v_type = VAR_NUMBER; @@ -9987,7 +9987,7 @@ static void f_has(typval_T *argvars, typval_T *rettv) } } - if (n == FALSE && provider_has_feature((char *)name)) { + if (n == FALSE && eval_has_provider((char *)name)) { n = TRUE; } @@ -11695,7 +11695,7 @@ static void f_pumvisible(typval_T *argvars, typval_T *rettv) */ static void f_pyeval(typval_T *argvars, typval_T *rettv) { - script_host_eval("python_eval", argvars, rettv); + script_host_eval("python", argvars, rettv); } /* @@ -19712,23 +19712,19 @@ static void apply_job_autocmds(int id, char *name, char *type, } } -static void script_host_eval(char *method, typval_T *argvars, typval_T *rettv) +static void script_host_eval(char *name, typval_T *argvars, typval_T *rettv) { - Array args = ARRAY_DICT_INIT; - ADD(args, vim_to_object(argvars)); - Object result = provider_call(method, args); - - if (result.type == kObjectTypeNil) { + if (check_restricted() || check_secure()) { return; } - Error err = ERROR_INIT; - - if (!object_to_vim(result, rettv, &err)){ - EMSG("Error converting value back to vim"); + if (argvars[0].v_type != VAR_STRING) { + EMSG(_(e_invarg)); } - api_free_object(result); + list_T *args = list_alloc(); + list_append_string(args, argvars[0].vval.v_string, -1); + *rettv = eval_call_provider(name, "eval", args); } typval_T eval_call_provider(char *provider, char *method, list_T *arguments) |