mirror of
https://github.com/neovim/neovim.git
synced 2026-01-04 18:37:02 +10:00
fix(api): not using TRY_WRAP, generic error messages #31595
Problem: - API functions using `try_start` directly instead of `TRY_WRAP`, do not surface the underlying error message, and instead show generic things like "Failed to set buffer". - Error handling code is duplicated in the API impl, instead of delegating to the vim buffer/window handling logic. Solution: - Use `TRY_WRAP`.
This commit is contained in:
@@ -1,73 +1,51 @@
|
||||
local n = require('test.functional.testnvim')()
|
||||
local t = require('test.testutil')
|
||||
|
||||
local clear = n.clear
|
||||
local exec_lua = n.exec_lua
|
||||
|
||||
describe("Nvim API calls with 'winfixbuf'", function()
|
||||
describe("'winfixbuf'", function()
|
||||
before_each(function()
|
||||
clear()
|
||||
end)
|
||||
|
||||
it('vim.api.nvim_win_set_buf on non-current buffer', function()
|
||||
local ok = exec_lua([[
|
||||
local function _setup_two_buffers()
|
||||
local buffer = vim.api.nvim_create_buf(true, true)
|
||||
|
||||
vim.api.nvim_create_buf(true, true) -- Make another buffer
|
||||
|
||||
local current_window = 0
|
||||
vim.api.nvim_set_option_value("winfixbuf", true, {win=current_window})
|
||||
|
||||
return buffer
|
||||
end
|
||||
|
||||
local other_buffer = _setup_two_buffers()
|
||||
local current_window = 0
|
||||
local ok, _ = pcall(vim.api.nvim_win_set_buf, current_window, other_buffer)
|
||||
|
||||
return ok
|
||||
]])
|
||||
|
||||
assert(not ok)
|
||||
end)
|
||||
|
||||
it('vim.api.nvim_set_current_buf on non-current buffer', function()
|
||||
local ok = exec_lua([[
|
||||
local function _setup_two_buffers()
|
||||
local buffer = vim.api.nvim_create_buf(true, true)
|
||||
|
||||
vim.api.nvim_create_buf(true, true) -- Make another buffer
|
||||
|
||||
local current_window = 0
|
||||
vim.api.nvim_set_option_value("winfixbuf", true, {win=current_window})
|
||||
|
||||
return buffer
|
||||
end
|
||||
|
||||
local other_buffer = _setup_two_buffers()
|
||||
local ok, _ = pcall(vim.api.nvim_set_current_buf, other_buffer)
|
||||
|
||||
return ok
|
||||
]])
|
||||
|
||||
assert(not ok)
|
||||
end)
|
||||
|
||||
it('vim.api.nvim_win_set_buf on current buffer', function()
|
||||
exec_lua([[
|
||||
---@return integer
|
||||
local function setup_winfixbuf()
|
||||
return exec_lua([[
|
||||
local buffer = vim.api.nvim_create_buf(true, true)
|
||||
vim.api.nvim_create_buf(true, true) -- Make another buffer
|
||||
vim.wo.winfixbuf = true
|
||||
local curbuf = vim.api.nvim_get_current_buf()
|
||||
vim.api.nvim_win_set_buf(0, curbuf)
|
||||
assert(vim.api.nvim_get_current_buf() == curbuf)
|
||||
return buffer
|
||||
]])
|
||||
end
|
||||
|
||||
it('nvim_win_set_buf on non-current buffer', function()
|
||||
local other_buf = setup_winfixbuf()
|
||||
t.eq(
|
||||
"Vim:E1513: Cannot switch buffer. 'winfixbuf' is enabled",
|
||||
t.pcall_err(n.api.nvim_win_set_buf, 0, other_buf)
|
||||
)
|
||||
end)
|
||||
|
||||
it('vim.api.nvim_set_current_buf on current buffer', function()
|
||||
exec_lua([[
|
||||
vim.wo.winfixbuf = true
|
||||
local curbuf = vim.api.nvim_get_current_buf()
|
||||
vim.api.nvim_set_current_buf(curbuf)
|
||||
assert(vim.api.nvim_get_current_buf() == curbuf)
|
||||
]])
|
||||
it('nvim_set_current_buf on non-current buffer', function()
|
||||
local other_buf = setup_winfixbuf()
|
||||
t.eq(
|
||||
"Vim:E1513: Cannot switch buffer. 'winfixbuf' is enabled",
|
||||
t.pcall_err(n.api.nvim_set_current_buf, other_buf)
|
||||
)
|
||||
end)
|
||||
|
||||
it('nvim_win_set_buf on current buffer', function()
|
||||
setup_winfixbuf()
|
||||
local curbuf = n.api.nvim_get_current_buf()
|
||||
n.api.nvim_win_set_buf(0, curbuf)
|
||||
t.eq(curbuf, n.api.nvim_get_current_buf())
|
||||
end)
|
||||
|
||||
it('nvim_set_current_buf on current buffer', function()
|
||||
setup_winfixbuf()
|
||||
local curbuf = n.api.nvim_get_current_buf()
|
||||
n.api.nvim_set_current_buf(curbuf)
|
||||
t.eq(curbuf, n.api.nvim_get_current_buf())
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user