api: Establish API naming convention. (#5344)

old name:                   new name:
  --------------------------------------------------
  nvim_name_to_color          nvim_get_color_by_name
  nvim_get_current_buffer     nvim_get_current_buf
  nvim_get_current_window     nvim_get_current_win
  nvim_get_buffers            nvim_list_bufs
  nvim_get_tabpages           nvim_list_tabpages
  nvim_get_windows            nvim_list_wins
  nvim_set_current_buffer     nvim_set_current_buf
  nvim_set_current_window     nvim_set_current_win
  nvim_change_directory       nvim_set_current_dir
  nvim_tabpage_get_window     nvim_tabpage_get_win
  nvim_tabpage_get_windows    nvim_tabpage_list_wins
  nvim_win_get_buffer         nvim_win_get_buf
  nvim_report_error           nvim_err_writeln

Helped-by: Björn Linse <bjorn.linse@gmail.com>
Helped-by: ZyX <kp-pav@yandex.ru>
Helped-by: James McCoy <jamessan@jamessan.com>
This commit is contained in:
Justin M. Keyes
2016-09-17 06:30:36 +02:00
committed by GitHub
parent 3a9da803cc
commit dc6cc4787c
16 changed files with 208 additions and 169 deletions

View File

@@ -124,13 +124,26 @@ include the kitchen sink... but you can use it for plumbing."
==============================================================================
2. Design decisions *design-decisions*
Jargon *dev-jargon*
JARGON *dev-jargon*
API client ~
All external UIs and remote plugins (as opposed to regular Vim plugins) are
"clients" in general; but we call something an "API client" if its purpose is
to abstract or wrap the RPC API for the convenience of other applications
(just like a REST client or SDK such as boto3 for AWS: you can speak AWS REST
using an HTTP client like curl, but boto3 wraps that in a convenient python
interface). For example, the Nvim lua-client is an API client:
https://github.com/neovim/lua-client
Host ~
A plugin "host" is both a client (of the Nvim API) and a server (of an
external platform, e.g. python). It is a remote plugin that hosts other
plugins.
Remote plugin ~
Arbitrary code registered via |:UpdateRemotePlugins|, that runs in a separate
process and communicates with Nvim via the |api|.
Window ~
The word "window" is commonly used for several things: A window on the screen,
the xterm window, a window inside Vim to view a buffer.
@@ -145,7 +158,7 @@ window View on a buffer. There can be several windows in Vim,
together with the command line, menubar, toolbar, etc. they
fit in the shell.
Providers *dev-provider*
PROVIDERS *dev-provider*
A goal of Nvim is to allow extension of the editor without special knowledge
in the core. But some Vim components are too tightly coupled; in those cases
@@ -189,8 +202,35 @@ Python host isn't installed then the plugin will "think" it is running in
a Vim compiled without the |+python| feature.
RPC API
API client
remote plugin
API *dev-api*
Use this pattern to name new API functions:
nvim_{thing}_{action}_{arbitrary-qualifiers}
If the function acts on an object then {thing} is the name of that object
(e.g. "buf" or "win"). If the function operates in a "global" context then
{thing} is usually omitted (but consider "namespacing" your global operations
with a {thing} that groups functions under a common concept).
Use existing common {action} names if possible:
add append to, or insert into, a collection
get get a thing (or subset of things by some query)
set set a thing
del delete a thing (or group of things)
list get all things
Use consistent names for {thing} in all API function. E.g. a buffer is called
"buf" everywhere, not "buffer" in some places and "buf" in others.
Example: `nvim_get_current_line` acts on the global editor state; the common
{action} "get" is used but {thing} is omitted.
Example: `nvim_buf_add_highlight` acts on a `Buffer` object (the first
parameter) and uses the common {action} "add".
Example: `nvim_list_bufs` operates in a global context (first parameter is
_not_ a Buffer). The common {action} "list" indicates that it lists all
bufs (plural) in the global context.
vim:tw=78:ts=8:ft=help:norl:

View File

@@ -124,17 +124,16 @@ You can also embed an Nvim instance via |jobstart()|, and communicate using
==============================================================================
4. Implementing API clients *rpc-api-client* *api-client*
All external UIs and remote plugins (as opposed to regular Vim plugins) are
"clients" in general; but we call something an "API client" if its purpose is
to abstract or wrap the RPC API for the convenience of other applications
(just like a REST client or SDK such as boto3 for AWS: you can speak AWS REST
using an HTTP client like curl, but boto3 wraps that in a convenient python
interface). For example, the lua-client is an API client:
https://github.com/neovim/lua-client
"API clients" wrap the Nvim API to provide idiomatic "SDKs" for their
respective platforms (see |dev-jargon|). You can build a new API client for
your favorite platform or programming language.
The Python client (pip package "neovim") is the reference implementation of an
API client. It is always up-to-date with the Nvim API, so its source code and
test suite are an authoritative reference.
Existing API clients are listed here:
https://github.com/neovim/neovim/wiki/Related-projects#api-clients
The Python client is the reference implementation for API clients. It is
always up-to-date with the Nvim API, so its source code and test suite are
authoritative references.
https://github.com/neovim/python-client
API client implementation guidelines ~

View File

@@ -1,69 +1,69 @@
local deprecated_aliases = {
nvim_buf_line_count="buffer_line_count",
nvim_buf_get_lines="buffer_get_lines",
nvim_buf_set_lines="buffer_set_lines",
nvim_buf_get_var="buffer_get_var",
nvim_buf_get_option="buffer_get_option",
nvim_buf_set_option="buffer_set_option",
nvim_buf_get_number="buffer_get_number",
nvim_buf_get_name="buffer_get_name",
nvim_buf_set_name="buffer_set_name",
nvim_buf_is_valid="buffer_is_valid",
nvim_buf_get_mark="buffer_get_mark",
nvim_buf_add_highlight="buffer_add_highlight",
nvim_buf_clear_highlight="buffer_clear_highlight",
nvim_tabpage_get_windows="tabpage_get_windows",
nvim_tabpage_get_var="tabpage_get_var",
nvim_tabpage_get_window="tabpage_get_window",
nvim_tabpage_is_valid="tabpage_is_valid",
nvim_ui_detach="ui_detach",
nvim_ui_try_resize="ui_try_resize",
nvim_command="vim_command",
nvim_feedkeys="vim_feedkeys",
nvim_input="vim_input",
nvim_replace_termcodes="vim_replace_termcodes",
nvim_command_output="vim_command_output",
nvim_eval="vim_eval",
nvim_buf_get_lines="buffer_get_lines",
nvim_buf_get_mark="buffer_get_mark",
nvim_buf_get_name="buffer_get_name",
nvim_buf_get_number="buffer_get_number",
nvim_buf_get_option="buffer_get_option",
nvim_buf_get_var="buffer_get_var",
nvim_buf_is_valid="buffer_is_valid",
nvim_buf_line_count="buffer_line_count",
nvim_buf_set_lines="buffer_set_lines",
nvim_buf_set_name="buffer_set_name",
nvim_buf_set_option="buffer_set_option",
nvim_call_function="vim_call_function",
nvim_strwidth="vim_strwidth",
nvim_list_runtime_paths="vim_list_runtime_paths",
nvim_change_directory="vim_change_directory",
nvim_command="vim_command",
nvim_command_output="vim_command_output",
nvim_del_current_line="vim_del_current_line",
nvim_err_write="vim_err_write",
nvim_err_writeln="vim_report_error",
nvim_eval="vim_eval",
nvim_feedkeys="vim_feedkeys",
nvim_get_api_info="vim_get_api_info",
nvim_get_color_by_name="vim_name_to_color",
nvim_get_color_map="vim_get_color_map",
nvim_get_current_buf="vim_get_current_buffer",
nvim_get_current_line="vim_get_current_line",
nvim_get_current_tabpage="vim_get_current_tabpage",
nvim_get_current_win="vim_get_current_window",
nvim_get_option="vim_get_option",
nvim_get_var="vim_get_var",
nvim_get_vvar="vim_get_vvar",
nvim_get_option="vim_get_option",
nvim_set_option="vim_set_option",
nvim_input="vim_input",
nvim_list_bufs="vim_get_buffers",
nvim_list_runtime_paths="vim_list_runtime_paths",
nvim_list_tabpages="vim_get_tabpages",
nvim_list_wins="vim_get_windows",
nvim_out_write="vim_out_write",
nvim_err_write="vim_err_write",
nvim_report_error="vim_report_error",
nvim_get_buffers="vim_get_buffers",
nvim_get_current_buffer="vim_get_current_buffer",
nvim_set_current_buffer="vim_set_current_buffer",
nvim_get_windows="vim_get_windows",
nvim_get_current_window="vim_get_current_window",
nvim_set_current_window="vim_set_current_window",
nvim_get_tabpages="vim_get_tabpages",
nvim_get_current_tabpage="vim_get_current_tabpage",
nvim_set_current_tabpage="vim_set_current_tabpage",
nvim_replace_termcodes="vim_replace_termcodes",
nvim_set_current_buf="vim_set_current_buffer",
nvim_set_current_dir="vim_change_directory",
nvim_set_current_line="vim_set_current_line",
nvim_get_current_line="vim_get_current_line",
nvim_del_current_line="vim_del_current_line",
nvim_set_current_tabpage="vim_set_current_tabpage",
nvim_set_current_win="vim_set_current_window",
nvim_set_option="vim_set_option",
nvim_strwidth="vim_strwidth",
nvim_subscribe="vim_subscribe",
nvim_tabpage_get_var="tabpage_get_var",
nvim_tabpage_get_win="tabpage_get_window",
nvim_tabpage_is_valid="tabpage_is_valid",
nvim_tabpage_list_wins="tabpage_get_windows",
nvim_ui_detach="ui_detach",
nvim_ui_try_resize="ui_try_resize",
nvim_unsubscribe="vim_unsubscribe",
nvim_name_to_color="vim_name_to_color",
nvim_get_color_map="vim_get_color_map",
nvim_get_api_info="vim_get_api_info",
nvim_win_get_buffer="window_get_buffer",
nvim_win_get_buf="window_get_buffer",
nvim_win_get_cursor="window_get_cursor",
nvim_win_set_cursor="window_set_cursor",
nvim_win_get_height="window_get_height",
nvim_win_set_height="window_set_height",
nvim_win_get_width="window_get_width",
nvim_win_set_width="window_set_width",
nvim_win_get_var="window_get_var",
nvim_win_get_option="window_get_option",
nvim_win_set_option="window_set_option",
nvim_win_get_position="window_get_position",
nvim_win_get_tabpage="window_get_tabpage",
nvim_win_is_valid="window_is_valid"
nvim_win_get_var="window_get_var",
nvim_win_get_width="window_get_width",
nvim_win_is_valid="window_is_valid",
nvim_win_set_cursor="window_set_cursor",
nvim_win_set_height="window_set_height",
nvim_win_set_option="window_set_option",
nvim_win_set_width="window_set_width",
}
return deprecated_aliases

View File

@@ -14,7 +14,7 @@
/// @param tabpage The tabpage
/// @param[out] err Details of an error that may have occurred
/// @return The windows in `tabpage`
ArrayOf(Window) nvim_tabpage_get_windows(Tabpage tabpage, Error *err)
ArrayOf(Window) nvim_tabpage_list_wins(Tabpage tabpage, Error *err)
{
Array rv = ARRAY_DICT_INIT;
tabpage_T *tab = find_tab_by_handle(tabpage, err);
@@ -137,7 +137,7 @@ Object tabpage_del_var(Tabpage tabpage, String name, Error *err)
/// @param tabpage The tab page handle
/// @param[out] err Details of an error that may have occurred
/// @return The Window handle
Window nvim_tabpage_get_window(Tabpage tabpage, Error *err)
Window nvim_tabpage_get_win(Tabpage tabpage, Error *err)
{
Window rv = 0;
tabpage_T *tab = find_tab_by_handle(tabpage, err);
@@ -147,7 +147,7 @@ Window nvim_tabpage_get_window(Tabpage tabpage, Error *err)
}
if (tab == curtab) {
return nvim_get_current_window();
return nvim_get_current_win();
} else {
FOR_ALL_WINDOWS_IN_TAB(wp, tab) {
if (wp == tab->tp_curwin) {

View File

@@ -289,7 +289,7 @@ ArrayOf(String) nvim_list_runtime_paths(void)
///
/// @param dir The new working directory
/// @param[out] err Details of an error that may have occurred
void nvim_change_directory(String dir, Error *err)
void nvim_set_current_dir(String dir, Error *err)
{
if (dir.size >= MAXPATHL) {
api_set_error(err, Validation, _("Directory string is too long"));
@@ -446,7 +446,7 @@ void nvim_err_write(String str)
/// are written by sending a trailing linefeed to `nvim_err_write`
///
/// @param str The message
void nvim_report_error(String str)
void nvim_err_writeln(String str)
{
nvim_err_write(str);
nvim_err_write((String) { .data = "\n", .size = 1 });
@@ -455,7 +455,7 @@ void nvim_report_error(String str)
/// Gets the current list of buffer handles
///
/// @return The number of buffers
ArrayOf(Buffer) nvim_get_buffers(void)
ArrayOf(Buffer) nvim_list_bufs(void)
{
Array rv = ARRAY_DICT_INIT;
@@ -476,7 +476,7 @@ ArrayOf(Buffer) nvim_get_buffers(void)
/// Gets the current buffer
///
/// @reqturn The buffer handle
Buffer nvim_get_current_buffer(void)
Buffer nvim_get_current_buf(void)
{
return curbuf->handle;
}
@@ -485,7 +485,7 @@ Buffer nvim_get_current_buffer(void)
///
/// @param id The buffer handle
/// @param[out] err Details of an error that may have occurred
void nvim_set_current_buffer(Buffer buffer, Error *err)
void nvim_set_current_buf(Buffer buffer, Error *err)
{
buf_T *buf = find_buffer_by_handle(buffer, err);
@@ -506,7 +506,7 @@ void nvim_set_current_buffer(Buffer buffer, Error *err)
/// Gets the current list of window handles
///
/// @return The number of windows
ArrayOf(Window) nvim_get_windows(void)
ArrayOf(Window) nvim_list_wins(void)
{
Array rv = ARRAY_DICT_INIT;
@@ -527,7 +527,7 @@ ArrayOf(Window) nvim_get_windows(void)
/// Gets the current window
///
/// @return The window handle
Window nvim_get_current_window(void)
Window nvim_get_current_win(void)
{
return curwin->handle;
}
@@ -535,7 +535,7 @@ Window nvim_get_current_window(void)
/// Sets the current window
///
/// @param handle The window handle
void nvim_set_current_window(Window window, Error *err)
void nvim_set_current_win(Window window, Error *err)
{
win_T *win = find_window_by_handle(window, err);
@@ -556,7 +556,7 @@ void nvim_set_current_window(Window window, Error *err)
/// Gets the current list of tabpage handles
///
/// @return The number of tab pages
ArrayOf(Tabpage) nvim_get_tabpages(void)
ArrayOf(Tabpage) nvim_list_tabpages(void)
{
Array rv = ARRAY_DICT_INIT;
@@ -634,7 +634,7 @@ void nvim_unsubscribe(uint64_t channel_id, String event)
channel_unsubscribe(channel_id, e);
}
Integer nvim_name_to_color(String name)
Integer nvim_get_color_by_name(String name)
{
return name_to_color((uint8_t *)name.data);
}

View File

@@ -18,7 +18,7 @@
/// @param window The window handle
/// @param[out] err Details of an error that may have occurred
/// @return The buffer handle
Buffer nvim_win_get_buffer(Window window, Error *err)
Buffer nvim_win_get_buf(Window window, Error *err)
{
win_T *win = find_window_by_handle(window, err);

View File

@@ -7131,7 +7131,7 @@ static void api_wrapper(typval_T *argvars, typval_T *rettv, FunPtr fptr)
Object result = fn(INVALID_CHANNEL, NO_RESPONSE, args, &err);
if (err.set) {
nvim_report_error(cstr_as_string(err.msg));
nvim_err_writeln(cstr_as_string(err.msg));
goto end;
}
@@ -13743,7 +13743,7 @@ static void f_rpcrequest(typval_T *argvars, typval_T *rettv, FunPtr fptr)
}
if (err.set) {
nvim_report_error(cstr_as_string(err.msg));
nvim_err_writeln(cstr_as_string(err.msg));
goto end;
}

View File

@@ -299,7 +299,7 @@ describe('buffer_* functions', function()
describe('is_valid', function()
it('works', function()
nvim('command', 'new')
local b = nvim('get_current_buffer')
local b = nvim('get_current_buf')
ok(buffer('is_valid', b))
nvim('command', 'bw!')
ok(not buffer('is_valid', b))

View File

@@ -163,10 +163,10 @@ describe('server -> client', function()
end)
it('can communicate buffers, tabpages, and windows', function()
eq({1}, eval("rpcrequest(vim, 'vim_get_tabpages')"))
eq({1}, eval("rpcrequest(vim, 'vim_get_windows')"))
eq({1}, eval("rpcrequest(vim, 'nvim_list_tabpages')"))
eq({1}, eval("rpcrequest(vim, 'nvim_list_wins')"))
local buf = eval("rpcrequest(vim, 'vim_get_buffers')")[1]
local buf = eval("rpcrequest(vim, 'nvim_list_bufs')")[1]
eq(1, buf)
eval("rpcnotify(vim, 'buffer_set_line', "..buf..", 0, 'SOME TEXT')")

View File

@@ -11,17 +11,17 @@ local NIL = helpers.NIL
describe('tabpage_* functions', function()
before_each(clear)
describe('get_windows and get_window', function()
describe('list_wins and get_win', function()
it('works', function()
nvim('command', 'tabnew')
nvim('command', 'vsplit')
local tab1, tab2 = unpack(nvim('get_tabpages'))
local win1, win2, win3 = unpack(nvim('get_windows'))
eq({win1}, tabpage('get_windows', tab1))
eq({win2, win3}, tabpage('get_windows', tab2))
eq(win2, tabpage('get_window', tab2))
nvim('set_current_window', win3)
eq(win3, tabpage('get_window', tab2))
local tab1, tab2 = unpack(nvim('list_tabpages'))
local win1, win2, win3 = unpack(nvim('list_wins'))
eq({win1}, tabpage('list_wins', tab1))
eq({win2, win3}, tabpage('list_wins', tab2))
eq(win2, tabpage('get_win', tab2))
nvim('set_current_win', win3)
eq(win3, tabpage('get_win', tab2))
end)
end)
@@ -54,7 +54,7 @@ describe('tabpage_* functions', function()
describe('is_valid', function()
it('works', function()
nvim('command', 'tabnew')
local tab = nvim('get_tabpages')[2]
local tab = nvim('list_tabpages')[2]
nvim('set_current_tabpage', tab)
ok(tabpage('is_valid', tab))
nvim('command', 'tabclose')

View File

@@ -117,47 +117,47 @@ describe('vim_* functions', function()
end)
end)
describe('{get,set}_current_buffer and get_buffers', function()
describe('{get,set}_current_buf and list_bufs', function()
it('works', function()
eq(1, #nvim('get_buffers'))
eq(nvim('get_buffers')[1], nvim('get_current_buffer'))
eq(1, #nvim('list_bufs'))
eq(nvim('list_bufs')[1], nvim('get_current_buf'))
nvim('command', 'new')
eq(2, #nvim('get_buffers'))
eq(nvim('get_buffers')[2], nvim('get_current_buffer'))
nvim('set_current_buffer', nvim('get_buffers')[1])
eq(nvim('get_buffers')[1], nvim('get_current_buffer'))
eq(2, #nvim('list_bufs'))
eq(nvim('list_bufs')[2], nvim('get_current_buf'))
nvim('set_current_buf', nvim('list_bufs')[1])
eq(nvim('list_bufs')[1], nvim('get_current_buf'))
end)
end)
describe('{get,set}_current_window and get_windows', function()
describe('{get,set}_current_win and list_wins', function()
it('works', function()
eq(1, #nvim('get_windows'))
eq(nvim('get_windows')[1], nvim('get_current_window'))
eq(1, #nvim('list_wins'))
eq(nvim('list_wins')[1], nvim('get_current_win'))
nvim('command', 'vsplit')
nvim('command', 'split')
eq(3, #nvim('get_windows'))
eq(nvim('get_windows')[1], nvim('get_current_window'))
nvim('set_current_window', nvim('get_windows')[2])
eq(nvim('get_windows')[2], nvim('get_current_window'))
eq(3, #nvim('list_wins'))
eq(nvim('list_wins')[1], nvim('get_current_win'))
nvim('set_current_win', nvim('list_wins')[2])
eq(nvim('list_wins')[2], nvim('get_current_win'))
end)
end)
describe('{get,set}_current_tabpage and get_tabpages', function()
describe('{get,set}_current_tabpage and list_tabpages', function()
it('works', function()
eq(1, #nvim('get_tabpages'))
eq(nvim('get_tabpages')[1], nvim('get_current_tabpage'))
eq(1, #nvim('list_tabpages'))
eq(nvim('list_tabpages')[1], nvim('get_current_tabpage'))
nvim('command', 'tabnew')
eq(2, #nvim('get_tabpages'))
eq(2, #nvim('get_windows'))
eq(nvim('get_windows')[2], nvim('get_current_window'))
eq(nvim('get_tabpages')[2], nvim('get_current_tabpage'))
nvim('set_current_window', nvim('get_windows')[1])
eq(2, #nvim('list_tabpages'))
eq(2, #nvim('list_wins'))
eq(nvim('list_wins')[2], nvim('get_current_win'))
eq(nvim('list_tabpages')[2], nvim('get_current_tabpage'))
nvim('set_current_win', nvim('list_wins')[1])
-- Switching window also switches tabpages if necessary
eq(nvim('get_tabpages')[1], nvim('get_current_tabpage'))
eq(nvim('get_windows')[1], nvim('get_current_window'))
nvim('set_current_tabpage', nvim('get_tabpages')[2])
eq(nvim('get_tabpages')[2], nvim('get_current_tabpage'))
eq(nvim('get_windows')[2], nvim('get_current_window'))
eq(nvim('list_tabpages')[1], nvim('get_current_tabpage'))
eq(nvim('list_wins')[1], nvim('get_current_win'))
nvim('set_current_tabpage', nvim('list_tabpages')[2])
eq(nvim('list_tabpages')[2], nvim('get_current_tabpage'))
eq(nvim('list_wins')[2], nvim('get_current_win'))
end)
end)
@@ -305,7 +305,7 @@ describe('vim_* functions', function()
end)
it("doesn't leak memory on incorrect argument types", function()
local status, err = pcall(nvim, 'change_directory',{'not', 'a', 'dir'})
local status, err = pcall(nvim, 'set_current_dir',{'not', 'a', 'dir'})
eq(false, status)
ok(err:match(': Wrong type for argument 1, expecting String') ~= nil)
end)

View File

@@ -32,14 +32,14 @@ end
describe('window_* functions', function()
before_each(clear)
describe('get_buffer', function()
describe('get_buf', function()
it('works', function()
eq(curbuf(), window('get_buffer', nvim('get_windows')[1]))
eq(curbuf(), window('get_buf', nvim('list_wins')[1]))
nvim('command', 'new')
nvim('set_current_window', nvim('get_windows')[2])
eq(curbuf(), window('get_buffer', nvim('get_windows')[2]))
neq(window('get_buffer', nvim('get_windows')[1]),
window('get_buffer', nvim('get_windows')[2]))
nvim('set_current_win', nvim('list_wins')[2])
eq(curbuf(), window('get_buf', nvim('list_wins')[2]))
neq(window('get_buf', nvim('list_wins')[1]),
window('get_buf', nvim('list_wins')[2]))
end)
end)
@@ -105,28 +105,28 @@ describe('window_* functions', function()
describe('{get,set}_height', function()
it('works', function()
nvim('command', 'vsplit')
eq(window('get_height', nvim('get_windows')[2]),
window('get_height', nvim('get_windows')[1]))
nvim('set_current_window', nvim('get_windows')[2])
eq(window('get_height', nvim('list_wins')[2]),
window('get_height', nvim('list_wins')[1]))
nvim('set_current_win', nvim('list_wins')[2])
nvim('command', 'split')
eq(window('get_height', nvim('get_windows')[2]),
math.floor(window('get_height', nvim('get_windows')[1]) / 2))
window('set_height', nvim('get_windows')[2], 2)
eq(2, window('get_height', nvim('get_windows')[2]))
eq(window('get_height', nvim('list_wins')[2]),
math.floor(window('get_height', nvim('list_wins')[1]) / 2))
window('set_height', nvim('list_wins')[2], 2)
eq(2, window('get_height', nvim('list_wins')[2]))
end)
end)
describe('{get,set}_width', function()
it('works', function()
nvim('command', 'split')
eq(window('get_width', nvim('get_windows')[2]),
window('get_width', nvim('get_windows')[1]))
nvim('set_current_window', nvim('get_windows')[2])
eq(window('get_width', nvim('list_wins')[2]),
window('get_width', nvim('list_wins')[1]))
nvim('set_current_win', nvim('list_wins')[2])
nvim('command', 'vsplit')
eq(window('get_width', nvim('get_windows')[2]),
math.floor(window('get_width', nvim('get_windows')[1]) / 2))
window('set_width', nvim('get_windows')[2], 2)
eq(2, window('get_width', nvim('get_windows')[2]))
eq(window('get_width', nvim('list_wins')[2]),
math.floor(window('get_width', nvim('list_wins')[1]) / 2))
window('set_width', nvim('list_wins')[2], 2)
eq(2, window('get_width', nvim('list_wins')[2]))
end)
end)
@@ -169,17 +169,17 @@ describe('window_* functions', function()
describe('get_position', function()
it('works', function()
local height = window('get_height', nvim('get_windows')[1])
local width = window('get_width', nvim('get_windows')[1])
local height = window('get_height', nvim('list_wins')[1])
local width = window('get_width', nvim('list_wins')[1])
nvim('command', 'split')
nvim('command', 'vsplit')
eq({0, 0}, window('get_position', nvim('get_windows')[1]))
eq({0, 0}, window('get_position', nvim('list_wins')[1]))
local vsplit_pos = math.floor(width / 2)
local split_pos = math.floor(height / 2)
local win2row, win2col =
unpack(window('get_position', nvim('get_windows')[2]))
unpack(window('get_position', nvim('list_wins')[2]))
local win3row, win3col =
unpack(window('get_position', nvim('get_windows')[3]))
unpack(window('get_position', nvim('list_wins')[3]))
eq(0, win2row)
eq(0, win3col)
ok(vsplit_pos - 1 <= win2col and win2col <= vsplit_pos + 1)
@@ -192,19 +192,19 @@ describe('window_* functions', function()
nvim('command', 'tabnew')
nvim('command', 'vsplit')
eq(window('get_tabpage',
nvim('get_windows')[1]), nvim('get_tabpages')[1])
nvim('list_wins')[1]), nvim('list_tabpages')[1])
eq(window('get_tabpage',
nvim('get_windows')[2]), nvim('get_tabpages')[2])
nvim('list_wins')[2]), nvim('list_tabpages')[2])
eq(window('get_tabpage',
nvim('get_windows')[3]), nvim('get_tabpages')[2])
nvim('list_wins')[3]), nvim('list_tabpages')[2])
end)
end)
describe('is_valid', function()
it('works', function()
nvim('command', 'split')
local win = nvim('get_windows')[2]
nvim('set_current_window', win)
local win = nvim('list_wins')[2]
nvim('set_current_win', win)
ok(window('is_valid', win))
nvim('command', 'close')
ok(not window('is_valid', win))

View File

@@ -13,7 +13,7 @@ describe('api functions', function()
execute("call nvim_command('let g:test = 1')")
eq(1, eval("nvim_get_var('test')"))
local buf = eval("nvim_get_current_buffer()")
local buf = eval("nvim_get_current_buf()")
execute("call nvim_buf_set_lines("..buf..", 0, -1, v:true, ['aa', 'bb'])")
expect([[
aa
@@ -27,8 +27,8 @@ describe('api functions', function()
end)
it("throw errors for invalid arguments", function()
local err = exc_exec('call nvim_get_current_buffer("foo")')
eq('Vim(call):E118: Too many arguments for function: nvim_get_current_buffer', err)
local err = exc_exec('call nvim_get_current_buf("foo")')
eq('Vim(call):E118: Too many arguments for function: nvim_get_current_buf', err)
err = exc_exec('call nvim_set_option("hlsearch")')
eq('Vim(call):E119: Not enough arguments for function: nvim_set_option', err)
@@ -51,17 +51,17 @@ describe('api functions', function()
local screen = Screen.new(40, 8)
screen:attach()
local bnr = eval("bufnr('')")
local bhnd = eval("nvim_get_current_buffer()")
local bhnd = eval("nvim_get_current_buf()")
local wid = eval("win_getid()")
local whnd = eval("nvim_get_current_window()")
local whnd = eval("nvim_get_current_win()")
eq(bnr, bhnd)
eq(wid, whnd)
execute("new") -- creates new buffer and new window
local bnr2 = eval("bufnr('')")
local bhnd2 = eval("nvim_get_current_buffer()")
local bhnd2 = eval("nvim_get_current_buf()")
local wid2 = eval("win_getid()")
local whnd2 = eval("nvim_get_current_window()")
local whnd2 = eval("nvim_get_current_win()")
eq(bnr2, bhnd2)
eq(wid2, whnd2)
neq(bnr, bnr2)
@@ -70,11 +70,11 @@ describe('api functions', function()
eq(bnr2, eval("nvim_buf_get_number(0)"))
execute("bn") -- show old buffer in new window
eq(bnr, eval("nvim_get_current_buffer()"))
eq(bnr, eval("nvim_get_current_buf()"))
eq(bnr, eval("bufnr('')"))
eq(bnr, eval("nvim_buf_get_number(0)"))
eq(wid2, eval("win_getid()"))
eq(whnd2, eval("nvim_get_current_window()"))
eq(whnd2, eval("nvim_get_current_win()"))
end)
it("get_lines and set_lines use NL to represent NUL", function()

View File

@@ -364,7 +364,7 @@ end
local function curbuf(method, ...)
if not method then
return nvim('get_current_buffer')
return nvim('get_current_buf')
end
return buffer(method, 0, ...)
end
@@ -387,7 +387,7 @@ end
local function curwin(method, ...)
if not method then
return nvim('get_current_window')
return nvim('get_current_win')
end
return window(method, 0, ...)
end

View File

@@ -25,7 +25,7 @@ describe('Buffer highlighting', function()
[8] = {underline = true, bold = true, foreground = Screen.colors.SlateBlue},
[9] = {foreground = Screen.colors.SlateBlue, underline = true}
})
curbuf = request('vim_get_current_buffer')
curbuf = request('nvim_get_current_buf')
end)
after_each(function()
@@ -33,11 +33,11 @@ describe('Buffer highlighting', function()
end)
local function add_hl(...)
return request('buffer_add_highlight', curbuf, ...)
return request('nvim_buf_add_highlight', curbuf, ...)
end
local function clear_hl(...)
return request('buffer_clear_highlight', curbuf, ...)
return request('nvim_buf_clear_highlight', curbuf, ...)
end

View File

@@ -13,7 +13,7 @@ describe('color scheme compatibility', function()
it('t_Co is set to 256 by default', function()
eq('256', request('vim_eval', '&t_Co'))
request('vim_set_option', 't_Co', '88')
request('nvim_set_option', 't_Co', '88')
eq('88', request('vim_eval', '&t_Co'))
end)
end)