diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-11 09:50:40 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-13 14:11:32 -0300 |
commit | b7c5d294c11dafe698ad7a05c14b1be781916a4e (patch) | |
tree | 3654b7e336dca035343772f43cfa8a1deb4b3522 /src/api/window.c | |
parent | 6c850bd6b9e4639d62e7630ac8f06166965db7d9 (diff) | |
download | rneovim-b7c5d294c11dafe698ad7a05c14b1be781916a4e.tar.gz rneovim-b7c5d294c11dafe698ad7a05c14b1be781916a4e.tar.bz2 rneovim-b7c5d294c11dafe698ad7a05c14b1be781916a4e.zip |
API: Implement window_{get,set}_cursor
Diffstat (limited to 'src/api/window.c')
-rw-r--r-- | src/api/window.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/api/window.c b/src/api/window.c index 8896735447..655f9ff47f 100644 --- a/src/api/window.c +++ b/src/api/window.c @@ -5,6 +5,9 @@ #include "api/window.h" #include "api/defs.h" #include "api/helpers.h" +#include "../vim.h" +#include "screen.h" +#include "misc2.h" Buffer window_get_buffer(Window window, Error *err) @@ -20,12 +23,36 @@ Buffer window_get_buffer(Window window, Error *err) Position window_get_cursor(Window window, Error *err) { - abort(); + Position rv = {.row = 0, .col = 0}; + win_T *win = find_window(window, err); + + if (win) { + rv.row = win->w_cursor.lnum; + rv.col = win->w_cursor.col; + } + + return rv; } void window_set_cursor(Window window, Position pos, Error *err) { - abort(); + win_T *win = find_window(window, err); + + if (!win) { + return; + } + + if (pos.row <= 0 || pos.row > win->w_buffer->b_ml.ml_line_count) { + set_api_error("cursor position outside buffer", err); + return; + } + + win->w_cursor.lnum = pos.row; + win->w_cursor.col = pos.col; + win->w_cursor.coladd = 0; + // When column is out of range silently correct it. + check_cursor_col_win(win); + update_screen(VALID); } int64_t window_get_height(Window window, Error *err) |