diff options
Diffstat (limited to 'src')
| -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 */  }; | 
