diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-09 14:45:18 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-13 09:33:41 -0300 |
commit | 9dd1d2cd003d2567fcd47c8cb54603cc348dec01 (patch) | |
tree | f9949c67bb113ed15eb426bc60dc10406d097102 /src | |
parent | c001cfdba064a87c28fe010dbc745eddcf6dbf33 (diff) | |
download | rneovim-9dd1d2cd003d2567fcd47c8cb54603cc348dec01.tar.gz rneovim-9dd1d2cd003d2567fcd47c8cb54603cc348dec01.tar.bz2 rneovim-9dd1d2cd003d2567fcd47c8cb54603cc348dec01.zip |
API: Implement buffer switching functions
Diffstat (limited to 'src')
-rw-r--r-- | src/api/vim.c | 24 | ||||
-rw-r--r-- | src/api/vim.h | 10 |
2 files changed, 18 insertions, 16 deletions
diff --git a/src/api/vim.c b/src/api/vim.c index c23ac8affd..6b04c4b7a5 100644 --- a/src/api/vim.c +++ b/src/api/vim.c @@ -8,6 +8,7 @@ #include "api/defs.h" #include "api/buffer.h" #include "../vim.h" +#include "../buffer.h" #include "types.h" #include "ascii.h" #include "ex_docmd.h" @@ -184,19 +185,26 @@ int64_t vim_get_buffer_count(void) return n; } -Buffer vim_get_buffer(int64_t num, Error *err) -{ - abort(); -} - Buffer vim_get_current_buffer(void) { - abort(); + return curbuf->b_fnum; } -void vim_set_current_buffer(Buffer buffer) +void vim_set_current_buffer(Buffer buffer, Error *err) { - abort(); + try_start(); + if (do_buffer(DOBUF_GOTO, DOBUF_FIRST, FORWARD, buffer, 0) == FAIL) { + if (try_end(err)) { + return; + } + + char msg[256]; + snprintf(msg, sizeof(msg), "failed to switch to buffer %d", (int)buffer); + set_api_error(msg, err); + return; + } + + try_end(err); } int64_t vim_get_window_count(void) diff --git a/src/api/vim.h b/src/api/vim.h index 81aadb2014..e310842e5b 100644 --- a/src/api/vim.h +++ b/src/api/vim.h @@ -101,13 +101,6 @@ void vim_err_write(String str); /// @return The number of buffers int64_t vim_get_buffer_count(void); -/// Gets a buffer by index -/// -/// @param num The buffer number -/// @param[out] err Details of an error that may have occurred -/// @return The buffer handle -Buffer vim_get_buffer(int64_t num, Error *err); - /// Return the current buffer /// /// @reqturn The buffer handle @@ -116,7 +109,8 @@ Buffer vim_get_current_buffer(void); /// Sets the current buffer /// /// @param id The buffer handle -void vim_set_current_buffer(Buffer buffer); +/// @param[out] err Details of an error that may have occurred +void vim_set_current_buffer(Buffer buffer, Error *err); /// Gets the number of windows /// |