mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
fix(lua): print multiple return values with =expr (#16933)
This commit is contained in:
parent
d78e46679d
commit
287d3566de
@ -1329,6 +1329,18 @@ paste({lines}, {phase}) *vim.paste()*
|
|||||||
See also: ~
|
See also: ~
|
||||||
|paste|
|
|paste|
|
||||||
|
|
||||||
|
pretty_print({...}) *vim.pretty_print()*
|
||||||
|
Prints given arguments in human-readable format. Example: >
|
||||||
|
-- Print highlight group Normal and store it's contents in a variable.
|
||||||
|
local hl_normal = vim.pretty_print(vim.api.nvim_get_hl_by_name("Normal", true))
|
||||||
|
<
|
||||||
|
|
||||||
|
Return: ~
|
||||||
|
given arguments.
|
||||||
|
|
||||||
|
See also: ~
|
||||||
|
|vim.inspect()|
|
||||||
|
|
||||||
region({bufnr}, {pos1}, {pos2}, {regtype}, {inclusive}) *vim.region()*
|
region({bufnr}, {pos1}, {pos2}, {regtype}, {inclusive}) *vim.region()*
|
||||||
Get a table of lines with start, end columns for a region
|
Get a table of lines with start, end columns for a region
|
||||||
marked by two points
|
marked by two points
|
||||||
|
@ -1131,12 +1131,12 @@ void ex_lua(exarg_T *const eap)
|
|||||||
}
|
}
|
||||||
// When =expr is used transform it to print(vim.inspect(expr))
|
// When =expr is used transform it to print(vim.inspect(expr))
|
||||||
if (code[0] == '=') {
|
if (code[0] == '=') {
|
||||||
len += sizeof("print(vim.inspect())") - sizeof("=");
|
len += sizeof("vim.pretty_print()") - sizeof("=");
|
||||||
// code_buf needs to be 1 char larger then len for null byte in the end.
|
// code_buf needs to be 1 char larger then len for null byte in the end.
|
||||||
// lua nlua_typval_exec doesn't expect null terminated string so len
|
// lua nlua_typval_exec doesn't expect null terminated string so len
|
||||||
// needs to end before null byte.
|
// needs to end before null byte.
|
||||||
char *code_buf = xmallocz(len);
|
char *code_buf = xmallocz(len);
|
||||||
vim_snprintf(code_buf, len+1, "print(vim.inspect(%s))", code+1);
|
vim_snprintf(code_buf, len+1, "vim.pretty_print(%s)", code+1);
|
||||||
xfree(code);
|
xfree(code);
|
||||||
code = code_buf;
|
code = code_buf;
|
||||||
}
|
}
|
||||||
|
@ -689,4 +689,23 @@ vim._expand_pat_get_parts = function(lua_string)
|
|||||||
return parts, search_index
|
return parts, search_index
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---Prints given arguments in human-readable format.
|
||||||
|
---Example:
|
||||||
|
---<pre>
|
||||||
|
--- -- Print highlight group Normal and store it's contents in a variable.
|
||||||
|
--- local hl_normal = vim.pretty_print(vim.api.nvim_get_hl_by_name("Normal", true))
|
||||||
|
---</pre>
|
||||||
|
---@see |vim.inspect()|
|
||||||
|
---@return given arguments.
|
||||||
|
function vim.pretty_print(...)
|
||||||
|
local objects = {}
|
||||||
|
for i = 1, select('#', ...) do
|
||||||
|
local v = select(i, ...)
|
||||||
|
table.insert(objects, vim.inspect(v))
|
||||||
|
end
|
||||||
|
|
||||||
|
print(table.concat(objects, ' '))
|
||||||
|
return ...
|
||||||
|
end
|
||||||
|
|
||||||
return module
|
return module
|
||||||
|
@ -149,6 +149,15 @@ describe(':lua command', function()
|
|||||||
eq([["hello"]], helpers.exec_capture(':lua = x()'))
|
eq([["hello"]], helpers.exec_capture(':lua = x()'))
|
||||||
helpers.exec_lua("x = {a = 1, b = 2}")
|
helpers.exec_lua("x = {a = 1, b = 2}")
|
||||||
eq("{\n a = 1,\n b = 2\n}", helpers.exec_capture(':lua =x'))
|
eq("{\n a = 1,\n b = 2\n}", helpers.exec_capture(':lua =x'))
|
||||||
|
helpers.exec_lua([[function x(success)
|
||||||
|
if success then
|
||||||
|
return true, "Return value"
|
||||||
|
else
|
||||||
|
return false, nil, "Error message"
|
||||||
|
end
|
||||||
|
end]])
|
||||||
|
eq([[true "Return value"]], helpers.exec_capture(':lua =x(true)'))
|
||||||
|
eq([[false nil "Error message"]], helpers.exec_capture(':lua =x(false)'))
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user