diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-26 14:10:38 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-26 14:10:38 -0300 |
commit | 7df7d6bb5baff62942af94f41de142159657569e (patch) | |
tree | 76a99c2b9214e33fb7eac1c30f7ae0f586f818a6 /src/nvim/eval.c | |
parent | fc7bc0412ee111cdea61c89f3ec2461601013fa2 (diff) | |
parent | cbf9564ee01535e3a2168219ef8f84f857519da3 (diff) | |
download | rneovim-7df7d6bb5baff62942af94f41de142159657569e.tar.gz rneovim-7df7d6bb5baff62942af94f41de142159657569e.tar.bz2 rneovim-7df7d6bb5baff62942af94f41de142159657569e.zip |
Merge branch 'api-events'
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 102 |
1 files changed, 33 insertions, 69 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 4ddf037f64..87054aa9df 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -12,7 +12,6 @@ #include <string.h> #include <stdlib.h> - #include "nvim/vim.h" #include "nvim/eval.h" #include "nvim/buffer.h" @@ -67,6 +66,7 @@ #include "nvim/os/rstream.h" #include "nvim/os/rstream_defs.h" #include "nvim/os/time.h" +#include "nvim/os/channel.h" #if defined(FEAT_FLOAT) # include <math.h> @@ -680,11 +680,6 @@ static void f_range(typval_T *argvars, typval_T *rettv); static void f_readfile(typval_T *argvars, typval_T *rettv); static void f_reltime(typval_T *argvars, typval_T *rettv); static void f_reltimestr(typval_T *argvars, typval_T *rettv); -static void f_remote_expr(typval_T *argvars, typval_T *rettv); -static void f_remote_foreground(typval_T *argvars, typval_T *rettv); -static void f_remote_peek(typval_T *argvars, typval_T *rettv); -static void f_remote_read(typval_T *argvars, typval_T *rettv); -static void f_remote_send(typval_T *argvars, typval_T *rettv); static void f_remove(typval_T *argvars, typval_T *rettv); static void f_rename(typval_T *argvars, typval_T *rettv); static void f_repeat(typval_T *argvars, typval_T *rettv); @@ -700,8 +695,7 @@ static void f_searchdecl(typval_T *argvars, typval_T *rettv); static void f_searchpair(typval_T *argvars, typval_T *rettv); static void f_searchpairpos(typval_T *argvars, typval_T *rettv); static void f_searchpos(typval_T *argvars, typval_T *rettv); -static void f_server2client(typval_T *argvars, typval_T *rettv); -static void f_serverlist(typval_T *argvars, typval_T *rettv); +static void f_send_event(typval_T *argvars, typval_T *rettv); static void f_setbufvar(typval_T *argvars, typval_T *rettv); static void f_setcmdpos(typval_T *argvars, typval_T *rettv); static void f_setline(typval_T *argvars, typval_T *rettv); @@ -6936,11 +6930,6 @@ static struct fst { {"readfile", 1, 3, f_readfile}, {"reltime", 0, 2, f_reltime}, {"reltimestr", 1, 1, f_reltimestr}, - {"remote_expr", 2, 3, f_remote_expr}, - {"remote_foreground", 1, 1, f_remote_foreground}, - {"remote_peek", 1, 2, f_remote_peek}, - {"remote_read", 1, 1, f_remote_read}, - {"remote_send", 2, 3, f_remote_send}, {"remove", 2, 3, f_remove}, {"rename", 2, 2, f_rename}, {"repeat", 2, 2, f_repeat}, @@ -6956,8 +6945,7 @@ static struct fst { {"searchpair", 3, 7, f_searchpair}, {"searchpairpos", 3, 7, f_searchpairpos}, {"searchpos", 1, 4, f_searchpos}, - {"server2client", 2, 2, f_server2client}, - {"serverlist", 0, 0, f_serverlist}, + {"send_event", 3, 3, f_send_event}, {"setbufvar", 3, 3, f_setbufvar}, {"setcmdpos", 1, 1, f_setcmdpos}, {"setline", 2, 2, f_setline}, @@ -12226,46 +12214,6 @@ static void f_reltimestr(typval_T *argvars, typval_T *rettv) rettv->vval.v_string = vim_strsave((char_u *)profile_msg(&tm)); } - - -/* - * "remote_expr()" function - */ -static void f_remote_expr(typval_T *argvars, typval_T *rettv) -{ - rettv->v_type = VAR_STRING; - rettv->vval.v_string = NULL; -} - -/* - * "remote_foreground()" function - */ -static void f_remote_foreground(typval_T *argvars, typval_T *rettv) -{ -} - -static void f_remote_peek(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = -1; -} - -static void f_remote_read(typval_T *argvars, typval_T *rettv) -{ - char_u *r = NULL; - - rettv->v_type = VAR_STRING; - rettv->vval.v_string = r; -} - -/* - * "remote_send()" function - */ -static void f_remote_send(typval_T *argvars, typval_T *rettv) -{ - rettv->v_type = VAR_STRING; - rettv->vval.v_string = NULL; -} - /* * "remove()" function */ @@ -13111,6 +13059,36 @@ do_searchpair ( return retval; } +// "send_event()" function +static void f_send_event(typval_T *argvars, typval_T *rettv) +{ + rettv->v_type = VAR_NUMBER; + rettv->vval.v_number = 0; + + if (check_restricted() || check_secure()) { + return; + } + + if (argvars[0].v_type != VAR_NUMBER || argvars[0].vval.v_number <= 0) { + EMSG2(_(e_invarg2), "Channel id must be a positive integer"); + return; + } + + if (argvars[1].v_type != VAR_STRING) { + EMSG2(_(e_invarg2), "Event type must be a string"); + return; + } + + if (!channel_send_event((uint64_t)argvars[0].vval.v_number, + (char *)argvars[1].vval.v_string, + &argvars[2])) { + EMSG2(_(e_invarg2), "Channel doesn't exist"); + return; + } + + rettv->vval.v_number = 1; +} + /* * "searchpos()" function */ @@ -13136,20 +13114,6 @@ static void f_searchpos(typval_T *argvars, typval_T *rettv) list_append_number(rettv->vval.v_list, (varnumber_T)n); } - -static void f_server2client(typval_T *argvars, typval_T *rettv) -{ - rettv->vval.v_number = -1; -} - -static void f_serverlist(typval_T *argvars, typval_T *rettv) -{ - char_u *r = NULL; - - rettv->v_type = VAR_STRING; - rettv->vval.v_string = r; -} - /* * "setbufvar()" function */ |