aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2014-09-10 09:32:29 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2014-09-12 13:25:29 -0300
commit50609029301d0baac36d7500c2d80da9efb41861 (patch)
treebcb0c40efe2c9b30edb437929429a12b61f75fd4 /src/nvim/eval.c
parent03f4d17fc9d72c8862daf575804e0104e3aeb31b (diff)
downloadrneovim-50609029301d0baac36d7500c2d80da9efb41861.tar.gz
rneovim-50609029301d0baac36d7500c2d80da9efb41861.tar.bz2
rneovim-50609029301d0baac36d7500c2d80da9efb41861.zip
api/msgpack-rpc: Implement `channel_close` and expose to vimscript
Simple function for closing a channel by id
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 8b370e9948..8becb29b26 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -6306,6 +6306,7 @@ static struct fst {
{"acos", 1, 1, f_acos}, /* WJMc */
{"add", 2, 2, f_add},
{"and", 2, 2, f_and},
+ {"api_close", 1, 1, f_api_close},
{"api_spawn", 1, 2, f_api_spawn},
{"append", 2, 2, f_append},
{"argc", 0, 0, f_argc},
@@ -7054,6 +7055,26 @@ static void f_and(typval_T *argvars, typval_T *rettv)
& get_tv_number_chk(&argvars[1], NULL);
}
+// "api_close(prog, argv)" function
+static void f_api_close(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) {
+ // Wrong argument types
+ EMSG(_(e_invarg));
+ return;
+ }
+
+ rettv->vval.v_number = channel_close(argvars[0].vval.v_number);
+}
+
+
// "api_spawn(prog, argv)" function
static void f_api_spawn(typval_T *argvars, typval_T *rettv)
{