mirror of
https://github.com/neovim/neovim.git
synced 2025-09-18 17:28:23 +00:00
fix(api): generic error messages, not using TRY_WRAP #31596
Problem: - API functions using `try_start` directly, do not surface the underlying error message, and instead show generic messages. - Error-handling code is duplicated in the API impl. - Failure modes are not tested. Solution: - Use `TRY_WRAP`. - Add tests.
This commit is contained in:
@@ -182,14 +182,9 @@ void nvim_win_set_height(Window window, Integer height, Error *err)
|
||||
return;
|
||||
}
|
||||
|
||||
if (height > INT_MAX || height < INT_MIN) {
|
||||
api_set_error(err, kErrorTypeValidation, "Height value outside range");
|
||||
return;
|
||||
}
|
||||
|
||||
try_start();
|
||||
win_setheight_win((int)height, win);
|
||||
try_end(err);
|
||||
TRY_WRAP(err, {
|
||||
win_setheight_win((int)height, win);
|
||||
});
|
||||
}
|
||||
|
||||
/// Gets the window width
|
||||
@@ -224,14 +219,9 @@ void nvim_win_set_width(Window window, Integer width, Error *err)
|
||||
return;
|
||||
}
|
||||
|
||||
if (width > INT_MAX || width < INT_MIN) {
|
||||
api_set_error(err, kErrorTypeValidation, "Width value outside range");
|
||||
return;
|
||||
}
|
||||
|
||||
try_start();
|
||||
win_setwidth_win((int)width, win);
|
||||
try_end(err);
|
||||
TRY_WRAP(err, {
|
||||
win_setwidth_win((int)width, win);
|
||||
});
|
||||
}
|
||||
|
||||
/// Gets a window-scoped (w:) variable
|
||||
@@ -436,15 +426,15 @@ Object nvim_win_call(Window window, LuaRef fun, Error *err)
|
||||
}
|
||||
tabpage_T *tabpage = win_find_tabpage(win);
|
||||
|
||||
try_start();
|
||||
Object res = OBJECT_INIT;
|
||||
win_execute_T win_execute_args;
|
||||
if (win_execute_before(&win_execute_args, win, tabpage)) {
|
||||
Array args = ARRAY_DICT_INIT;
|
||||
res = nlua_call_ref(fun, NULL, args, kRetLuaref, NULL, err);
|
||||
}
|
||||
win_execute_after(&win_execute_args);
|
||||
try_end(err);
|
||||
TRY_WRAP(err, {
|
||||
win_execute_T win_execute_args;
|
||||
if (win_execute_before(&win_execute_args, win, tabpage)) {
|
||||
Array args = ARRAY_DICT_INIT;
|
||||
res = nlua_call_ref(fun, NULL, args, kRetLuaref, NULL, err);
|
||||
}
|
||||
win_execute_after(&win_execute_args);
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user