aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/deprecated.txt1
-rw-r--r--runtime/doc/lua.txt74
-rw-r--r--runtime/doc/news.txt9
-rw-r--r--runtime/lua/_vim9script.lua10
-rw-r--r--runtime/lua/vim/_options.lua2
-rw-r--r--runtime/lua/vim/diagnostic.lua14
-rw-r--r--runtime/lua/vim/lsp/handlers.lua2
-rw-r--r--runtime/lua/vim/shared.lua28
-rw-r--r--test/functional/lua/mpack_spec.lua2
-rw-r--r--test/functional/lua/vim_spec.lua62
10 files changed, 110 insertions, 94 deletions
diff --git a/runtime/doc/deprecated.txt b/runtime/doc/deprecated.txt
index 1b57f34896..ac512ddd35 100644
--- a/runtime/doc/deprecated.txt
+++ b/runtime/doc/deprecated.txt
@@ -173,6 +173,7 @@ LUA
- *vim.pretty_print()* Use |vim.print()| instead.
- *vim.loop* Use |vim.uv| instead.
- *vim.tbl_add_reverse_lookup()*
+- *vim.tbl_islist()* Use |vim.islist()| instead.
NORMAL COMMANDS
- *]f* *[f* Same as "gf".
diff --git a/runtime/doc/lua.txt b/runtime/doc/lua.txt
index dc1a4bb35d..de1e432790 100644
--- a/runtime/doc/lua.txt
+++ b/runtime/doc/lua.txt
@@ -2029,6 +2029,43 @@ vim.is_callable({f}) *vim.is_callable()*
Return: ~
(`boolean`) `true` if `f` is callable, else `false`
+vim.isarray({t}) *vim.isarray()*
+ Tests if `t` is an "array": a table indexed only by integers (potentially
+ non-contiguous).
+
+ If the indexes start from 1 and are contiguous then the array is also a
+ list. |vim.islist()|
+
+ Empty table `{}` is an array, unless it was created by |vim.empty_dict()|
+ or returned as a dict-like |API| or Vimscript result, for example from
+ |rpcrequest()| or |vim.fn|.
+
+ Parameters: ~
+ • {t} (`table?`)
+
+ Return: ~
+ (`boolean`) `true` if array-like table, else `false`.
+
+ See also: ~
+ • https://github.com/openresty/luajit2#tableisarray
+
+vim.islist({t}) *vim.islist()*
+ Tests if `t` is a "list": a table indexed only by contiguous integers
+ starting from 1 (what |lua-length| calls a "regular array").
+
+ Empty table `{}` is a list, unless it was created by |vim.empty_dict()| or
+ returned as a dict-like |API| or Vimscript result, for example from
+ |rpcrequest()| or |vim.fn|.
+
+ Parameters: ~
+ • {t} (`table?`)
+
+ Return: ~
+ (`boolean`) `true` if list-like table, else `false`.
+
+ See also: ~
+ • |vim.isarray()|
+
vim.list_contains({t}, {value}) *vim.list_contains()*
Checks if a list-like table (integer keys without gaps) contains `value`.
@@ -2279,26 +2316,6 @@ vim.tbl_get({o}, {...}) *vim.tbl_get()*
Return: ~
(`any`) Nested value indexed by key (if it exists), else nil
-vim.tbl_isarray({t}) *vim.tbl_isarray()*
- Tests if `t` is an "array": a table indexed only by integers (potentially
- non-contiguous).
-
- If the indexes start from 1 and are contiguous then the array is also a
- list. |vim.tbl_islist()|
-
- Empty table `{}` is an array, unless it was created by |vim.empty_dict()|
- or returned as a dict-like |API| or Vimscript result, for example from
- |rpcrequest()| or |vim.fn|.
-
- Parameters: ~
- • {t} (`table`)
-
- Return: ~
- (`boolean`) `true` if array-like table, else `false`.
-
- See also: ~
- • https://github.com/openresty/luajit2#tableisarray
-
vim.tbl_isempty({t}) *vim.tbl_isempty()*
Checks if a table is empty.
@@ -2311,23 +2328,6 @@ vim.tbl_isempty({t}) *vim.tbl_isempty()*
See also: ~
• https://github.com/premake/premake-core/blob/master/src/base/table.lua
-vim.tbl_islist({t}) *vim.tbl_islist()*
- Tests if `t` is a "list": a table indexed only by contiguous integers
- starting from 1 (what |lua-length| calls a "regular array").
-
- Empty table `{}` is a list, unless it was created by |vim.empty_dict()| or
- returned as a dict-like |API| or Vimscript result, for example from
- |rpcrequest()| or |vim.fn|.
-
- Parameters: ~
- • {t} (`table`)
-
- Return: ~
- (`boolean`) `true` if list-like table, else `false`.
-
- See also: ~
- • |vim.tbl_isarray()|
-
vim.tbl_keys({t}) *vim.tbl_keys()*
Return a list of all keys used in a table. However, the order of the
return table of keys is not guaranteed.
diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt
index 7da6fb4ff8..025af14954 100644
--- a/runtime/doc/news.txt
+++ b/runtime/doc/news.txt
@@ -22,10 +22,10 @@ The following changes may require adaptations in user config or plugins.
set guicursor+=n-v-c:blinkon500-blinkoff500
<
-• |vim.tbl_islist()| now checks whether a table is actually list-like (i.e.,
+• |vim.islist()| now checks whether a table is actually list-like (i.e.,
has integer keys without gaps and starting from 1). For the previous
behavior (only check for integer keys, allow gaps or not starting with 1),
- use |vim.tbl_isarray()|.
+ use |vim.isarray()|.
• "#" followed by a digit no longer stands for a function key at the start of
the lhs of a mapping.
@@ -155,6 +155,8 @@ unreleased features on Nvim HEAD.
• Removed vim.iter.map(), vim.iter.filter(), vim.iter.totable().
+• Renamed vim.tbl_isarray() to vim.isarray().
+
==============================================================================
NEW FEATURES *news-features*
@@ -561,7 +563,8 @@ release.
populated. Background color detection is now performed in Lua by the Nvim
core, not the TUI.
-• vim.shared functions:
+• Lua stdlib:
- |vim.tbl_add_reverse_lookup()|
+ - |vim.tbl_islist()|
vim:tw=78:ts=8:sw=2:et:ft=help:norl:
diff --git a/runtime/lua/_vim9script.lua b/runtime/lua/_vim9script.lua
index ca0e913d51..23c078cb87 100644
--- a/runtime/lua/_vim9script.lua
+++ b/runtime/lua/_vim9script.lua
@@ -82,7 +82,7 @@ local vim9 = (function()
end
M.index = function(obj, idx)
- if vim.tbl_islist(obj) then
+ if vim.islist(obj) then
if idx < 0 then
return obj[#obj + idx + 1]
else
@@ -127,7 +127,7 @@ local vim9 = (function()
assert(type(finish) == 'number')
local slicer
- if vim.tbl_islist(obj) then
+ if vim.islist(obj) then
slicer = vim.list_slice
elseif type(obj) == 'string' then
slicer = string.sub
@@ -168,7 +168,7 @@ local vim9 = (function()
end
M.iter = function(expr)
- if vim.tbl_islist(expr) then
+ if vim.islist(expr) then
return ipairs(expr)
else
return pairs(expr)
@@ -234,7 +234,7 @@ vim9['convert'] = (function()
elseif type(val) == 'table' then
if vim.tbl_isempty(val) then
return vim.empty_dict()
- elseif vim.tbl_islist(val) then
+ elseif vim.islist(val) then
error(string.format('Cannot pass list to dictionary? %s', vim.inspect(val)))
else
return val
@@ -280,7 +280,7 @@ vim9['fn'] = (function()
error("haven't written this code yet")
end
- if vim.tbl_islist(right) then
+ if vim.islist(right) then
vim.list_extend(left, right)
return left
else
diff --git a/runtime/lua/vim/_options.lua b/runtime/lua/vim/_options.lua
index 13ad6cc58f..b41e298dd7 100644
--- a/runtime/lua/vim/_options.lua
+++ b/runtime/lua/vim/_options.lua
@@ -642,7 +642,7 @@ end
--- @param t table<any,any>
--- @param val any
local function remove_one_item(t, val)
- if vim.tbl_islist(t) then
+ if vim.islist(t) then
local remove_index = nil
for i, v in ipairs(t) do
if v == val then
diff --git a/runtime/lua/vim/diagnostic.lua b/runtime/lua/vim/diagnostic.lua
index 6233bb7058..5e4835ab88 100644
--- a/runtime/lua/vim/diagnostic.lua
+++ b/runtime/lua/vim/diagnostic.lua
@@ -974,7 +974,7 @@ function M.set(namespace, bufnr, diagnostics, opts)
bufnr = { bufnr, 'n' },
diagnostics = {
diagnostics,
- vim.tbl_islist,
+ vim.islist,
'a list of diagnostics',
},
opts = { opts, 't', true },
@@ -1186,7 +1186,7 @@ M.handlers.signs = {
bufnr = { bufnr, 'n' },
diagnostics = {
diagnostics,
- vim.tbl_islist,
+ vim.islist,
'a list of diagnostics',
},
opts = { opts, 't', true },
@@ -1309,7 +1309,7 @@ M.handlers.underline = {
bufnr = { bufnr, 'n' },
diagnostics = {
diagnostics,
- vim.tbl_islist,
+ vim.islist,
'a list of diagnostics',
},
opts = { opts, 't', true },
@@ -1382,7 +1382,7 @@ M.handlers.virtual_text = {
bufnr = { bufnr, 'n' },
diagnostics = {
diagnostics,
- vim.tbl_islist,
+ vim.islist,
'a list of diagnostics',
},
opts = { opts, 't', true },
@@ -1576,7 +1576,7 @@ function M.show(namespace, bufnr, diagnostics, opts)
diagnostics = {
diagnostics,
function(v)
- return v == nil or vim.tbl_islist(v)
+ return v == nil or vim.islist(v)
end,
'a list of diagnostics',
},
@@ -2120,7 +2120,7 @@ function M.toqflist(diagnostics)
vim.validate({
diagnostics = {
diagnostics,
- vim.tbl_islist,
+ vim.islist,
'a list of diagnostics',
},
})
@@ -2160,7 +2160,7 @@ function M.fromqflist(list)
vim.validate({
list = {
list,
- vim.tbl_islist,
+ vim.islist,
'a list of quickfix items',
},
})
diff --git a/runtime/lua/vim/lsp/handlers.lua b/runtime/lua/vim/lsp/handlers.lua
index a15096fdad..d6579cf4b3 100644
--- a/runtime/lua/vim/lsp/handlers.lua
+++ b/runtime/lua/vim/lsp/handlers.lua
@@ -428,7 +428,7 @@ local function location_handler(_, result, ctx, config)
-- textDocument/definition can return Location or Location[]
-- https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_definition
- if not vim.tbl_islist(result) then
+ if not vim.islist(result) then
result = { result }
end
diff --git a/runtime/lua/vim/shared.lua b/runtime/lua/vim/shared.lua
index eb51c244ef..85720b6ea3 100644
--- a/runtime/lua/vim/shared.lua
+++ b/runtime/lua/vim/shared.lua
@@ -356,7 +356,7 @@ end
--- We only merge empty tables or tables that are not an array (indexed by integers)
local function can_merge(v)
- return type(v) == 'table' and (vim.tbl_isempty(v) or not vim.tbl_isarray(v))
+ return type(v) == 'table' and (vim.tbl_isempty(v) or not vim.isarray(v))
end
local function tbl_extend(behavior, deep_extend, ...)
@@ -502,7 +502,7 @@ end
---
---@param o table Table to index
---@param ... any Optional keys (0 or more, variadic) via which to index the table
----@return any : Nested value indexed by key (if it exists), else nil
+---@return any # Nested value indexed by key (if it exists), else nil
function vim.tbl_get(o, ...)
local keys = { ... }
if #keys == 0 then
@@ -599,18 +599,24 @@ function vim.spairs(t)
t
end
+--- @deprecated
+function vim.tbl_isarray()
+ vim.deprecate('vim.tbl_isarray', 'vim.isarray', '0.10-dev')
+ error('vim.tbl_isarray was renamed to vim.isarray')
+end
+
--- Tests if `t` is an "array": a table indexed _only_ by integers (potentially non-contiguous).
---
---- If the indexes start from 1 and are contiguous then the array is also a list. |vim.tbl_islist()|
+--- If the indexes start from 1 and are contiguous then the array is also a list. |vim.islist()|
---
--- Empty table `{}` is an array, unless it was created by |vim.empty_dict()| or returned as
--- a dict-like |API| or Vimscript result, for example from |rpcrequest()| or |vim.fn|.
---
---@see https://github.com/openresty/luajit2#tableisarray
---
----@param t table
+---@param t? table
---@return boolean `true` if array-like table, else `false`.
-function vim.tbl_isarray(t)
+function vim.isarray(t)
if type(t) ~= 'table' then
return false
end
@@ -640,17 +646,23 @@ function vim.tbl_isarray(t)
end
end
+--- @deprecated
+function vim.tbl_islist(t)
+ vim.deprecate('vim.tbl_islist', 'vim.islist', '0.12')
+ return vim.islist(t)
+end
+
--- Tests if `t` is a "list": a table indexed _only_ by contiguous integers starting from 1 (what
--- |lua-length| calls a "regular array").
---
--- Empty table `{}` is a list, unless it was created by |vim.empty_dict()| or returned as
--- a dict-like |API| or Vimscript result, for example from |rpcrequest()| or |vim.fn|.
---
----@see |vim.tbl_isarray()|
+---@see |vim.isarray()|
---
----@param t table
+---@param t? table
---@return boolean `true` if list-like table, else `false`.
-function vim.tbl_islist(t)
+function vim.islist(t)
if type(t) ~= 'table' then
return false
end
diff --git a/test/functional/lua/mpack_spec.lua b/test/functional/lua/mpack_spec.lua
index 925174a74b..a9400b34c8 100644
--- a/test/functional/lua/mpack_spec.lua
+++ b/test/functional/lua/mpack_spec.lua
@@ -22,7 +22,7 @@ describe('lua vim.mpack', function()
{ { {}, 'foo', {} }, true, false },
exec_lua [[
local var = vim.mpack.decode(vim.mpack.encode({{}, "foo", vim.empty_dict()}))
- return {var, vim.tbl_islist(var[1]), vim.tbl_islist(var[3])}
+ return {var, vim.islist(var[1]), vim.islist(var[3])}
]]
)
end)
diff --git a/test/functional/lua/vim_spec.lua b/test/functional/lua/vim_spec.lua
index 436ada4886..3b47d7a667 100644
--- a/test/functional/lua/vim_spec.lua
+++ b/test/functional/lua/vim_spec.lua
@@ -673,21 +673,21 @@ describe('lua stdlib', function()
local a = {}
local b = vim.deepcopy(a)
- return vim.tbl_islist(b) and vim.tbl_count(b) == 0 and tostring(a) ~= tostring(b)
+ return vim.islist(b) and vim.tbl_count(b) == 0 and tostring(a) ~= tostring(b)
]]))
ok(exec_lua([[
local a = vim.empty_dict()
local b = vim.deepcopy(a)
- return not vim.tbl_islist(b) and vim.tbl_count(b) == 0
+ return not vim.islist(b) and vim.tbl_count(b) == 0
]]))
ok(exec_lua([[
local a = {x = vim.empty_dict(), y = {}}
local b = vim.deepcopy(a)
- return not vim.tbl_islist(b.x) and vim.tbl_islist(b.y)
+ return not vim.islist(b.x) and vim.islist(b.y)
and vim.tbl_count(b) == 2
and tostring(a) ~= tostring(b)
]]))
@@ -825,30 +825,30 @@ describe('lua stdlib', function()
)
end)
- it('vim.tbl_isarray', function()
- eq(true, exec_lua('return vim.tbl_isarray({})'))
- eq(false, exec_lua('return vim.tbl_isarray(vim.empty_dict())'))
- eq(true, exec_lua("return vim.tbl_isarray({'a', 'b', 'c'})"))
- eq(false, exec_lua("return vim.tbl_isarray({'a', '32', a='hello', b='baz'})"))
- eq(false, exec_lua("return vim.tbl_isarray({1, a='hello', b='baz'})"))
- eq(false, exec_lua("return vim.tbl_isarray({a='hello', b='baz', 1})"))
- eq(false, exec_lua("return vim.tbl_isarray({1, 2, nil, a='hello'})"))
- eq(true, exec_lua('return vim.tbl_isarray({1, 2, nil, 4})'))
- eq(true, exec_lua('return vim.tbl_isarray({nil, 2, 3, 4})'))
- eq(false, exec_lua('return vim.tbl_isarray({1, [1.5]=2, [3]=3})'))
+ it('vim.isarray', function()
+ eq(true, exec_lua('return vim.isarray({})'))
+ eq(false, exec_lua('return vim.isarray(vim.empty_dict())'))
+ eq(true, exec_lua("return vim.isarray({'a', 'b', 'c'})"))
+ eq(false, exec_lua("return vim.isarray({'a', '32', a='hello', b='baz'})"))
+ eq(false, exec_lua("return vim.isarray({1, a='hello', b='baz'})"))
+ eq(false, exec_lua("return vim.isarray({a='hello', b='baz', 1})"))
+ eq(false, exec_lua("return vim.isarray({1, 2, nil, a='hello'})"))
+ eq(true, exec_lua('return vim.isarray({1, 2, nil, 4})'))
+ eq(true, exec_lua('return vim.isarray({nil, 2, 3, 4})'))
+ eq(false, exec_lua('return vim.isarray({1, [1.5]=2, [3]=3})'))
end)
- it('vim.tbl_islist', function()
- eq(true, exec_lua('return vim.tbl_islist({})'))
- eq(false, exec_lua('return vim.tbl_islist(vim.empty_dict())'))
- eq(true, exec_lua("return vim.tbl_islist({'a', 'b', 'c'})"))
- eq(false, exec_lua("return vim.tbl_islist({'a', '32', a='hello', b='baz'})"))
- eq(false, exec_lua("return vim.tbl_islist({1, a='hello', b='baz'})"))
- eq(false, exec_lua("return vim.tbl_islist({a='hello', b='baz', 1})"))
- eq(false, exec_lua("return vim.tbl_islist({1, 2, nil, a='hello'})"))
- eq(false, exec_lua('return vim.tbl_islist({1, 2, nil, 4})'))
- eq(false, exec_lua('return vim.tbl_islist({nil, 2, 3, 4})'))
- eq(false, exec_lua('return vim.tbl_islist({1, [1.5]=2, [3]=3})'))
+ it('vim.islist', function()
+ eq(true, exec_lua('return vim.islist({})'))
+ eq(false, exec_lua('return vim.islist(vim.empty_dict())'))
+ eq(true, exec_lua("return vim.islist({'a', 'b', 'c'})"))
+ eq(false, exec_lua("return vim.islist({'a', '32', a='hello', b='baz'})"))
+ eq(false, exec_lua("return vim.islist({1, a='hello', b='baz'})"))
+ eq(false, exec_lua("return vim.islist({a='hello', b='baz', 1})"))
+ eq(false, exec_lua("return vim.islist({1, 2, nil, a='hello'})"))
+ eq(false, exec_lua('return vim.islist({1, 2, nil, 4})'))
+ eq(false, exec_lua('return vim.islist({nil, 2, 3, 4})'))
+ eq(false, exec_lua('return vim.islist({1, [1.5]=2, [3]=3})'))
end)
it('vim.tbl_isempty', function()
@@ -921,7 +921,7 @@ describe('lua stdlib', function()
local b = {}
local c = vim.tbl_extend("keep", a, b)
- return not vim.tbl_islist(c) and vim.tbl_count(c) == 0
+ return not vim.islist(c) and vim.tbl_count(c) == 0
]]))
ok(exec_lua([[
@@ -929,7 +929,7 @@ describe('lua stdlib', function()
local b = vim.empty_dict()
local c = vim.tbl_extend("keep", a, b)
- return vim.tbl_islist(c) and vim.tbl_count(c) == 0
+ return vim.islist(c) and vim.tbl_count(c) == 0
]]))
ok(exec_lua([[
@@ -1029,7 +1029,7 @@ describe('lua stdlib', function()
local count = 0
for _ in pairs(c) do count = count + 1 end
- return not vim.tbl_islist(c) and count == 0
+ return not vim.islist(c) and count == 0
]]))
ok(exec_lua([[
@@ -1040,7 +1040,7 @@ describe('lua stdlib', function()
local count = 0
for _ in pairs(c) do count = count + 1 end
- return vim.tbl_islist(c) and count == 0
+ return vim.islist(c) and count == 0
]]))
eq(
@@ -1285,7 +1285,7 @@ describe('lua stdlib', function()
vim.rpcrequest(chan, 'nvim_exec', 'let xx = {}\nlet yy = []', false)
local dict = vim.rpcrequest(chan, 'nvim_eval', 'xx')
local list = vim.rpcrequest(chan, 'nvim_eval', 'yy')
- return {dict, list, vim.tbl_islist(dict), vim.tbl_islist(list)}
+ return {dict, list, vim.islist(dict), vim.islist(list)}
]])
)
@@ -1358,7 +1358,7 @@ describe('lua stdlib', function()
vim.api.nvim_set_var('dicty', vim.empty_dict())
local listy = vim.fn.eval("listy")
local dicty = vim.fn.eval("dicty")
- return {vim.tbl_islist(listy), vim.tbl_islist(dicty), next(listy) == nil, next(dicty) == nil}
+ return {vim.islist(listy), vim.islist(dicty), next(listy) == nil, next(dicty) == nil}
]])
)