From e07099cb7892a4786416c516eea29480e159b128 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Thu, 8 May 2014 14:36:33 -0300 Subject: API: Implement vim_change_directory --- src/api/vim.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/api/vim.c') 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) -- cgit