diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/api/private/handle.c | 2 | ||||
-rw-r--r-- | src/nvim/api/private/handle.h | 1 | ||||
-rw-r--r-- | src/nvim/buffer_defs.h | 1 | ||||
-rw-r--r-- | src/nvim/window.c | 4 |
4 files changed, 8 insertions, 0 deletions
diff --git a/src/nvim/api/private/handle.c b/src/nvim/api/private/handle.c index 97f5cd88b5..3dfe05d59f 100644 --- a/src/nvim/api/private/handle.c +++ b/src/nvim/api/private/handle.c @@ -29,8 +29,10 @@ static uint64_t next_handle = 1; HANDLE_IMPL(buf_T, buffer) +HANDLE_IMPL(win_T, window) void handle_init() { HANDLE_INIT(buffer); + HANDLE_INIT(window); } diff --git a/src/nvim/api/private/handle.h b/src/nvim/api/private/handle.h index 846b20dff2..29c80e10d4 100644 --- a/src/nvim/api/private/handle.h +++ b/src/nvim/api/private/handle.h @@ -10,6 +10,7 @@ void handle_unregister_##name(type *name); HANDLE_DECLS(buf_T, buffer) +HANDLE_DECLS(win_T, window) void handle_init(void); diff --git a/src/nvim/buffer_defs.h b/src/nvim/buffer_defs.h index 6634ba72a6..68f70d7bf3 100644 --- a/src/nvim/buffer_defs.h +++ b/src/nvim/buffer_defs.h @@ -840,6 +840,7 @@ struct matchitem { * All row numbers are relative to the start of the window, except w_winrow. */ struct window_S { + uint64_t handle; buf_T *w_buffer; /* buffer we are a window into (used often, keep it the first item!) */ diff --git a/src/nvim/window.c b/src/nvim/window.c index 851e9cead7..a0a325f950 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -6,6 +6,7 @@ * See README.txt for an overview of the Vim source code. */ +#include "nvim/api/private/handle.h" #include "nvim/vim.h" #include "nvim/window.h" #include "nvim/buffer.h" @@ -3568,6 +3569,7 @@ static win_T *win_alloc(win_T *after, int hidden) * allocate window structure and linesizes arrays */ win_T *new_wp = xcalloc(1, sizeof(win_T)); + handle_register_window(new_wp); win_alloc_lines(new_wp); /* init w: variables */ @@ -3583,6 +3585,7 @@ static win_T *win_alloc(win_T *after, int hidden) */ if (!hidden) win_append(after, new_wp); + new_wp->w_wincol = 0; new_wp->w_width = Columns; @@ -3618,6 +3621,7 @@ win_free ( buf_T *buf; wininfo_T *wip; + handle_unregister_window(wp); clearFolding(wp); /* reduce the reference count to the argument list. */ |