mirror of
https://github.com/neovim/neovim.git
synced 2025-10-14 05:46:12 +00:00
API: Refactor: Return handles instead of indexes
- Define specialized arrays for each remote object type - Implement msgpack_rpc functions for dealing with the new types - Refactor all functions dealing with buffers, windows and tabpages to return/accept handles instead of list indexes.
This commit is contained in:
@@ -34,6 +34,9 @@ REMOTE_TYPE(Tabpage);
|
||||
|
||||
typedef struct object Object;
|
||||
|
||||
TYPED_ARRAY_OF(Buffer);
|
||||
TYPED_ARRAY_OF(Window);
|
||||
TYPED_ARRAY_OF(Tabpage);
|
||||
TYPED_ARRAY_OF(String);
|
||||
|
||||
typedef struct {
|
||||
|
@@ -4,6 +4,7 @@
|
||||
|
||||
#include "nvim/api/private/helpers.h"
|
||||
#include "nvim/api/private/defs.h"
|
||||
#include "nvim/api/private/handle.h"
|
||||
#include "nvim/vim.h"
|
||||
#include "nvim/buffer.h"
|
||||
#include "nvim/window.h"
|
||||
@@ -285,43 +286,29 @@ Object vim_to_object(typval_T *obj)
|
||||
|
||||
buf_T *find_buffer(Buffer buffer, Error *err)
|
||||
{
|
||||
if (buffer > INT_MAX) {
|
||||
set_api_error("Invalid buffer id", err);
|
||||
return NULL;
|
||||
}
|
||||
buf_T *rv = handle_get_buffer(buffer);
|
||||
|
||||
buf_T *buf = buflist_findnr((int)buffer);
|
||||
|
||||
if (buf == NULL) {
|
||||
if (!rv) {
|
||||
set_api_error("Invalid buffer id", err);
|
||||
}
|
||||
|
||||
return buf;
|
||||
return rv;
|
||||
}
|
||||
|
||||
win_T * find_window(Window window, Error *err)
|
||||
{
|
||||
tabpage_T *tp;
|
||||
win_T *wp;
|
||||
win_T *rv = handle_get_window(window);
|
||||
|
||||
FOR_ALL_TAB_WINDOWS(tp, wp) {
|
||||
if (!--window) {
|
||||
return wp;
|
||||
}
|
||||
if (!rv) {
|
||||
set_api_error("Invalid window id", err);
|
||||
}
|
||||
|
||||
set_api_error("Invalid window id", err);
|
||||
return NULL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
tabpage_T * find_tab(Tabpage tabpage, Error *err)
|
||||
{
|
||||
if (tabpage > INT_MAX) {
|
||||
set_api_error("Invalid tabpage id", err);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
tabpage_T *rv = find_tabpage((int)tabpage);
|
||||
tabpage_T *rv = handle_get_tabpage(tabpage);
|
||||
|
||||
if (!rv) {
|
||||
set_api_error("Invalid tabpage id", err);
|
||||
|
Reference in New Issue
Block a user