refactor(api): make export of functions opt-in, not opt-out

This commit is contained in:
Björn Linse 2021-10-03 15:36:01 +02:00
parent 3beea1fe1b
commit 310d53e5d0
4 changed files with 23 additions and 10 deletions

View File

@ -165,6 +165,7 @@ Integer nvim_buf_set_virtual_text(Buffer buffer, Integer src_id, Integer line, A
/// @param lines Array of lines /// @param lines Array of lines
/// @param[out] err Error details, if any /// @param[out] err Error details, if any
void buffer_insert(Buffer buffer, Integer lnum, ArrayOf(String) lines, Error *err) void buffer_insert(Buffer buffer, Integer lnum, ArrayOf(String) lines, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
// "lnum" will be the index of the line after inserting, // "lnum" will be the index of the line after inserting,
// no matter if it is negative or not // no matter if it is negative or not
@ -184,6 +185,7 @@ void buffer_insert(Buffer buffer, Integer lnum, ArrayOf(String) lines, Error *er
/// @param[out] err Error details, if any /// @param[out] err Error details, if any
/// @return Line string /// @return Line string
String buffer_get_line(Buffer buffer, Integer index, Error *err) String buffer_get_line(Buffer buffer, Integer index, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
String rv = { .size = 0 }; String rv = { .size = 0 };
@ -212,6 +214,7 @@ String buffer_get_line(Buffer buffer, Integer index, Error *err)
/// @param line Contents of the new line /// @param line Contents of the new line
/// @param[out] err Error details, if any /// @param[out] err Error details, if any
void buffer_set_line(Buffer buffer, Integer index, String line, Error *err) void buffer_set_line(Buffer buffer, Integer index, String line, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
Object l = STRING_OBJ(line); Object l = STRING_OBJ(line);
Array array = { .items = &l, .size = 1 }; Array array = { .items = &l, .size = 1 };
@ -230,6 +233,7 @@ void buffer_set_line(Buffer buffer, Integer index, String line, Error *err)
/// @param index line index /// @param index line index
/// @param[out] err Error details, if any /// @param[out] err Error details, if any
void buffer_del_line(Buffer buffer, Integer index, Error *err) void buffer_del_line(Buffer buffer, Integer index, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
Array array = ARRAY_DICT_INIT; Array array = ARRAY_DICT_INIT;
index = convert_index(index); index = convert_index(index);
@ -255,6 +259,7 @@ ArrayOf(String) buffer_get_line_slice(Buffer buffer,
Boolean include_start, Boolean include_start,
Boolean include_end, Boolean include_end,
Error *err) Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
start = convert_index(start) + !include_start; start = convert_index(start) + !include_start;
end = convert_index(end) + include_end; end = convert_index(end) + include_end;
@ -278,6 +283,7 @@ ArrayOf(String) buffer_get_line_slice(Buffer buffer,
/// @param[out] err Error details, if any /// @param[out] err Error details, if any
void buffer_set_line_slice(Buffer buffer, Integer start, Integer end, Boolean include_start, void buffer_set_line_slice(Buffer buffer, Integer start, Integer end, Boolean include_start,
Boolean include_end, ArrayOf(String) replacement, Error *err) Boolean include_end, ArrayOf(String) replacement, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
start = convert_index(start) + !include_start; start = convert_index(start) + !include_start;
end = convert_index(end) + include_end; end = convert_index(end) + include_end;
@ -298,6 +304,7 @@ void buffer_set_line_slice(Buffer buffer, Integer start, Integer end, Boolean in
/// @warning It may return nil if there was no previous value /// @warning It may return nil if there was no previous value
/// or if previous value was `v:null`. /// or if previous value was `v:null`.
Object buffer_set_var(Buffer buffer, String name, Object value, Error *err) Object buffer_set_var(Buffer buffer, String name, Object value, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
buf_T *buf = find_buffer_by_handle(buffer, err); buf_T *buf = find_buffer_by_handle(buffer, err);
@ -317,6 +324,7 @@ Object buffer_set_var(Buffer buffer, String name, Object value, Error *err)
/// @param[out] err Error details, if any /// @param[out] err Error details, if any
/// @return Old value /// @return Old value
Object buffer_del_var(Buffer buffer, String name, Error *err) Object buffer_del_var(Buffer buffer, String name, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
buf_T *buf = find_buffer_by_handle(buffer, err); buf_T *buf = find_buffer_by_handle(buffer, err);
@ -340,6 +348,7 @@ Object buffer_del_var(Buffer buffer, String name, Error *err)
/// @warning It may return nil if there was no previous value /// @warning It may return nil if there was no previous value
/// or if previous value was `v:null`. /// or if previous value was `v:null`.
Object window_set_var(Window window, String name, Object value, Error *err) Object window_set_var(Window window, String name, Object value, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
win_T *win = find_window_by_handle(window, err); win_T *win = find_window_by_handle(window, err);
@ -359,6 +368,7 @@ Object window_set_var(Window window, String name, Object value, Error *err)
/// @param[out] err Error details, if any /// @param[out] err Error details, if any
/// @return Old value /// @return Old value
Object window_del_var(Window window, String name, Error *err) Object window_del_var(Window window, String name, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
win_T *win = find_window_by_handle(window, err); win_T *win = find_window_by_handle(window, err);
@ -382,6 +392,7 @@ Object window_del_var(Window window, String name, Error *err)
/// @warning It may return nil if there was no previous value /// @warning It may return nil if there was no previous value
/// or if previous value was `v:null`. /// or if previous value was `v:null`.
Object tabpage_set_var(Tabpage tabpage, String name, Object value, Error *err) Object tabpage_set_var(Tabpage tabpage, String name, Object value, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
tabpage_T *tab = find_tab_by_handle(tabpage, err); tabpage_T *tab = find_tab_by_handle(tabpage, err);
@ -401,6 +412,7 @@ Object tabpage_set_var(Tabpage tabpage, String name, Object value, Error *err)
/// @param[out] err Error details, if any /// @param[out] err Error details, if any
/// @return Old value /// @return Old value
Object tabpage_del_var(Tabpage tabpage, String name, Error *err) Object tabpage_del_var(Tabpage tabpage, String name, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
tabpage_T *tab = find_tab_by_handle(tabpage, err); tabpage_T *tab = find_tab_by_handle(tabpage, err);
@ -417,6 +429,7 @@ Object tabpage_del_var(Tabpage tabpage, String name, Error *err)
/// OR if previous value was `v:null`. /// OR if previous value was `v:null`.
/// @return Old value or nil if there was no previous value. /// @return Old value or nil if there was no previous value.
Object vim_set_var(String name, Object value, Error *err) Object vim_set_var(String name, Object value, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
return dict_set_var(&globvardict, name, value, false, true, err); return dict_set_var(&globvardict, name, value, false, true, err);
} }
@ -424,6 +437,7 @@ Object vim_set_var(String name, Object value, Error *err)
/// @deprecated /// @deprecated
/// @see nvim_del_var /// @see nvim_del_var
Object vim_del_var(String name, Error *err) Object vim_del_var(String name, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
return dict_set_var(&globvardict, name, NIL, true, true, err); return dict_set_var(&globvardict, name, NIL, true, true, err);
} }

View File

@ -40,7 +40,6 @@ typedef struct {
static PMap(uint64_t) connected_uis = MAP_INIT; static PMap(uint64_t) connected_uis = MAP_INIT;
void remote_ui_disconnect(uint64_t channel_id) void remote_ui_disconnect(uint64_t channel_id)
FUNC_API_NOEXPORT
{ {
UI *ui = pmap_get(uint64_t)(&connected_uis, channel_id); UI *ui = pmap_get(uint64_t)(&connected_uis, channel_id);
if (!ui) { if (!ui) {
@ -57,7 +56,6 @@ void remote_ui_disconnect(uint64_t channel_id)
/// Wait until ui has connected on stdio channel. /// Wait until ui has connected on stdio channel.
void remote_ui_wait_for_attach(void) void remote_ui_wait_for_attach(void)
FUNC_API_NOEXPORT
{ {
Channel *channel = find_channel(CHAN_STDIO); Channel *channel = find_channel(CHAN_STDIO);
if (!channel) { if (!channel) {
@ -172,6 +170,7 @@ void nvim_ui_attach(uint64_t channel_id, Integer width, Integer height, Dictiona
/// @deprecated /// @deprecated
void ui_attach(uint64_t channel_id, Integer width, Integer height, Boolean enable_rgb, Error *err) void ui_attach(uint64_t channel_id, Integer width, Integer height, Boolean enable_rgb, Error *err)
FUNC_API_DEPRECATED_SINCE(1)
{ {
Dictionary opts = ARRAY_DICT_INIT; Dictionary opts = ARRAY_DICT_INIT;
PUT(opts, "rgb", BOOLEAN_OBJ(enable_rgb)); PUT(opts, "rgb", BOOLEAN_OBJ(enable_rgb));

View File

@ -59,7 +59,6 @@
#endif #endif
void api_vim_free_all_mem(void) void api_vim_free_all_mem(void)
FUNC_API_NOEXPORT
{ {
String name; String name;
handle_T id; handle_T id;
@ -264,7 +263,6 @@ void nvim__set_hl_ns(Integer ns_id, Error *err)
} }
static void on_redraw_event(void **argv) static void on_redraw_event(void **argv)
FUNC_API_NOEXPORT
{ {
redraw_all_later(NOT_VALID); redraw_all_later(NOT_VALID);
} }

View File

@ -33,6 +33,10 @@ local function_names = {}
local c_grammar = require('generators.c_grammar') local c_grammar = require('generators.c_grammar')
local function startswith(String,Start)
return string.sub(String,1,string.len(Start))==Start
end
-- read each input file, parse and append to the api metadata -- read each input file, parse and append to the api metadata
for i = 6, #arg do for i = 6, #arg do
local full_path = arg[i] local full_path = arg[i]
@ -47,7 +51,8 @@ for i = 6, #arg do
local tmp = c_grammar.grammar:match(input:read('*all')) local tmp = c_grammar.grammar:match(input:read('*all'))
for j = 1, #tmp do for j = 1, #tmp do
local fn = tmp[j] local fn = tmp[j]
if not fn.noexport then local public = startswith(fn.name, "nvim_") or fn.deprecated_since
if public and not fn.noexport then
functions[#functions + 1] = tmp[j] functions[#functions + 1] = tmp[j]
function_names[fn.name] = true function_names[fn.name] = true
if #fn.parameters ~= 0 and fn.parameters[1][2] == 'channel_id' then if #fn.parameters ~= 0 and fn.parameters[1][2] == 'channel_id' then
@ -76,10 +81,6 @@ local function shallowcopy(orig)
return copy return copy
end end
local function startswith(String,Start)
return string.sub(String,1,string.len(Start))==Start
end
-- Export functions under older deprecated names. -- Export functions under older deprecated names.
-- These will be removed eventually. -- These will be removed eventually.
local deprecated_aliases = require("api.dispatch_deprecated") local deprecated_aliases = require("api.dispatch_deprecated")
@ -108,9 +109,10 @@ for _,f in ipairs(shallowcopy(functions)) do
f.lua = f.lua_only or not f.remote_only f.lua = f.lua_only or not f.remote_only
f.eval = (not f.lua_only) and (not f.remote_only) f.eval = (not f.lua_only) and (not f.remote_only)
else else
f.deprecated_since = tonumber(f.deprecated_since)
assert(f.deprecated_since == 1)
f.remote = true f.remote = true
f.since = 0 f.since = 0
f.deprecated_since = 1
end end
f.method = ismethod f.method = ismethod
local newname = deprecated_aliases[f.name] local newname = deprecated_aliases[f.name]