diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-08 14:36:33 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-13 09:33:40 -0300 |
commit | e07099cb7892a4786416c516eea29480e159b128 (patch) | |
tree | 04e420496f4a806e7bdbdfe487b066f807649cbd /src/api/vim.c | |
parent | d8f8521915984a00623562d8606c04e247fa2967 (diff) | |
download | rneovim-e07099cb7892a4786416c516eea29480e159b128.tar.gz rneovim-e07099cb7892a4786416c516eea29480e159b128.tar.bz2 rneovim-e07099cb7892a4786416c516eea29480e159b128.zip |
API: Implement vim_change_directory
Diffstat (limited to 'src/api/vim.c')
-rw-r--r-- | src/api/vim.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/api/vim.c b/src/api/vim.c index 361a57218c..bc17772bc9 100644 --- a/src/api/vim.c +++ b/src/api/vim.c @@ -125,9 +125,25 @@ StringArray vim_list_runtime_paths(void) return rv; } -void vim_change_directory(String dir) +void vim_change_directory(String dir, Error *err) { - abort(); + char string[dir.size + 1]; + memcpy(string, dir.data, dir.size); + string[dir.size] = NUL; + + try_start(); + + if (vim_chdir((char_u *)string)) { + if (!try_end(err)) { + char msg[] = "failed to change directory"; + strncpy(err->msg, msg, sizeof(err->msg)); + err->set = true; + } + return; + } + + post_chdir(FALSE); + try_end(err); } String vim_get_current_line(void) |