diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-06-05 08:25:53 -0300 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2014-10-28 23:12:41 -0400 |
commit | 94f59fc9be03cf0ee3ac20f2715738f017439502 (patch) | |
tree | c53a9e96293d7294ada34636eb26eb7a99bdb0fd | |
parent | c28adf15e6c2079c732bb77fb99c50b80a4d7fe2 (diff) | |
download | rneovim-94f59fc9be03cf0ee3ac20f2715738f017439502.tar.gz rneovim-94f59fc9be03cf0ee3ac20f2715738f017439502.tar.bz2 rneovim-94f59fc9be03cf0ee3ac20f2715738f017439502.zip |
api: Implement vim_command_output function
This function can be used by API clients to execute a command and capture the
output.
-rw-r--r-- | src/nvim/api/vim.c | 13 | ||||
-rw-r--r-- | src/nvim/eval.c | 3 | ||||
-rw-r--r-- | src/nvim/eval.h | 1 |
3 files changed, 16 insertions, 1 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index c90e7039ce..9afefd6fa3 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -96,6 +96,19 @@ String vim_replace_termcodes(String str, Boolean from_part, Boolean do_lt, return cstr_as_string(ptr); } +String vim_command_output(String str, Error *err) +{ + do_cmdline_cmd((char_u *)"redir => v:command_output"); + vim_command(str, err); + do_cmdline_cmd((char_u *)"redir END"); + + if (err->set) { + return (String) STRING_INIT; + } + + return cstr_to_string((char *)get_vim_var_str(VV_COMMAND_OUTPUT)); +} + /// Evaluates the expression str using the vim internal expression /// evaluator (see |expression|). /// Dictionaries and lists are recursively expanded. diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 61606012ee..59fb82134d 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -424,7 +424,8 @@ static struct vimvar { {VV_NAME("oldfiles", VAR_LIST), 0}, {VV_NAME("windowid", VAR_NUMBER), VV_RO}, {VV_NAME("progpath", VAR_STRING), VV_RO}, - {VV_NAME("job_data", VAR_LIST), 0} + {VV_NAME("job_data", VAR_LIST), 0}, + {VV_NAME("command_output", VAR_STRING), 0} }; /* shorthand */ diff --git a/src/nvim/eval.h b/src/nvim/eval.h index 2f36a46f70..e96106dfb3 100644 --- a/src/nvim/eval.h +++ b/src/nvim/eval.h @@ -64,6 +64,7 @@ enum { VV_WINDOWID, VV_PROGPATH, VV_JOB_DATA, + VV_COMMAND_OUTPUT, VV_LEN, /* number of v: vars */ }; |