mirror of
https://github.com/neovim/neovim.git
synced 2025-12-07 07:02:46 +00:00
chore: format runtime with stylua
This commit is contained in:
@@ -16,7 +16,7 @@ local vim = vim or {}
|
||||
---
|
||||
---@param orig table Table to copy
|
||||
---@returns New table of copied keys and (nested) values.
|
||||
function vim.deepcopy(orig) end -- luacheck: no unused
|
||||
function vim.deepcopy(orig) end -- luacheck: no unused
|
||||
vim.deepcopy = (function()
|
||||
local function _id(v)
|
||||
return v
|
||||
@@ -24,7 +24,9 @@ vim.deepcopy = (function()
|
||||
|
||||
local deepcopy_funcs = {
|
||||
table = function(orig, cache)
|
||||
if cache[orig] then return cache[orig] end
|
||||
if cache[orig] then
|
||||
return cache[orig]
|
||||
end
|
||||
local copy = {}
|
||||
|
||||
cache[orig] = copy
|
||||
@@ -46,7 +48,7 @@ vim.deepcopy = (function()
|
||||
if f then
|
||||
return f(orig, cache or {})
|
||||
else
|
||||
error("Cannot deepcopy object of type "..type(orig))
|
||||
error('Cannot deepcopy object of type ' .. type(orig))
|
||||
end
|
||||
end
|
||||
end)()
|
||||
@@ -62,14 +64,14 @@ end)()
|
||||
---@param plain If `true` use `sep` literally (passed to String.find)
|
||||
---@returns Iterator over the split components
|
||||
function vim.gsplit(s, sep, plain)
|
||||
vim.validate{s={s,'s'},sep={sep,'s'},plain={plain,'b',true}}
|
||||
vim.validate({ s = { s, 's' }, sep = { sep, 's' }, plain = { plain, 'b', true } })
|
||||
|
||||
local start = 1
|
||||
local done = false
|
||||
|
||||
local function _pass(i, j, ...)
|
||||
if i then
|
||||
assert(j+1 > start, "Infinite loop detected")
|
||||
assert(j + 1 > start, 'Infinite loop detected')
|
||||
local seg = s:sub(start, i - 1)
|
||||
start = j + 1
|
||||
return seg, ...
|
||||
@@ -87,7 +89,7 @@ function vim.gsplit(s, sep, plain)
|
||||
if start == #s then
|
||||
done = true
|
||||
end
|
||||
return _pass(start+1, start)
|
||||
return _pass(start + 1, start)
|
||||
end
|
||||
return _pass(s:find(sep, start, plain))
|
||||
end
|
||||
@@ -119,7 +121,7 @@ function vim.split(s, sep, kwargs)
|
||||
-- Support old signature for backward compatibility
|
||||
plain = kwargs
|
||||
else
|
||||
vim.validate { kwargs = {kwargs, 't', true} }
|
||||
vim.validate({ kwargs = { kwargs, 't', true } })
|
||||
kwargs = kwargs or {}
|
||||
plain = kwargs.plain
|
||||
trimempty = kwargs.trimempty
|
||||
@@ -128,7 +130,7 @@ function vim.split(s, sep, kwargs)
|
||||
local t = {}
|
||||
local skip = trimempty
|
||||
for c in vim.gsplit(s, sep, plain) do
|
||||
if c ~= "" then
|
||||
if c ~= '' then
|
||||
skip = false
|
||||
end
|
||||
|
||||
@@ -139,7 +141,7 @@ function vim.split(s, sep, kwargs)
|
||||
|
||||
if trimempty then
|
||||
for i = #t, 1, -1 do
|
||||
if t[i] ~= "" then
|
||||
if t[i] ~= '' then
|
||||
break
|
||||
end
|
||||
table.remove(t, i)
|
||||
@@ -157,7 +159,7 @@ end
|
||||
---@param t Table
|
||||
---@returns list of keys
|
||||
function vim.tbl_keys(t)
|
||||
assert(type(t) == 'table', string.format("Expected table, got %s", type(t)))
|
||||
assert(type(t) == 'table', string.format('Expected table, got %s', type(t)))
|
||||
|
||||
local keys = {}
|
||||
for k, _ in pairs(t) do
|
||||
@@ -172,7 +174,7 @@ end
|
||||
---@param t Table
|
||||
---@returns list of values
|
||||
function vim.tbl_values(t)
|
||||
assert(type(t) == 'table', string.format("Expected table, got %s", type(t)))
|
||||
assert(type(t) == 'table', string.format('Expected table, got %s', type(t)))
|
||||
|
||||
local values = {}
|
||||
for _, v in pairs(t) do
|
||||
@@ -186,7 +188,7 @@ end
|
||||
---@param func function or callable table
|
||||
---@param t table
|
||||
function vim.tbl_map(func, t)
|
||||
vim.validate{func={func,'c'},t={t,'t'}}
|
||||
vim.validate({ func = { func, 'c' }, t = { t, 't' } })
|
||||
|
||||
local rettab = {}
|
||||
for k, v in pairs(t) do
|
||||
@@ -200,7 +202,7 @@ end
|
||||
---@param func function or callable table
|
||||
---@param t table
|
||||
function vim.tbl_filter(func, t)
|
||||
vim.validate{func={func,'c'},t={t,'t'}}
|
||||
vim.validate({ func = { func, 'c' }, t = { t, 't' } })
|
||||
|
||||
local rettab = {}
|
||||
for _, entry in pairs(t) do
|
||||
@@ -217,9 +219,9 @@ end
|
||||
---@param value Value to compare
|
||||
---@returns true if `t` contains `value`
|
||||
function vim.tbl_contains(t, value)
|
||||
vim.validate{t={t,'t'}}
|
||||
vim.validate({ t = { t, 't' } })
|
||||
|
||||
for _,v in ipairs(t) do
|
||||
for _, v in ipairs(t) do
|
||||
if v == value then
|
||||
return true
|
||||
end
|
||||
@@ -233,23 +235,23 @@ end
|
||||
---
|
||||
---@param t Table to check
|
||||
function vim.tbl_isempty(t)
|
||||
assert(type(t) == 'table', string.format("Expected table, got %s", type(t)))
|
||||
assert(type(t) == 'table', string.format('Expected table, got %s', type(t)))
|
||||
return next(t) == nil
|
||||
end
|
||||
|
||||
--- we only merge empty tables or tables that are not a list
|
||||
---@private
|
||||
local function can_merge(v)
|
||||
return type(v) == "table" and (vim.tbl_isempty(v) or not vim.tbl_islist(v))
|
||||
return type(v) == 'table' and (vim.tbl_isempty(v) or not vim.tbl_islist(v))
|
||||
end
|
||||
|
||||
local function tbl_extend(behavior, deep_extend, ...)
|
||||
if (behavior ~= 'error' and behavior ~= 'keep' and behavior ~= 'force') then
|
||||
error('invalid "behavior": '..tostring(behavior))
|
||||
if behavior ~= 'error' and behavior ~= 'keep' and behavior ~= 'force' then
|
||||
error('invalid "behavior": ' .. tostring(behavior))
|
||||
end
|
||||
|
||||
if select('#', ...) < 2 then
|
||||
error('wrong number of arguments (given '..tostring(1 + select('#', ...))..', expected at least 3)')
|
||||
error('wrong number of arguments (given ' .. tostring(1 + select('#', ...)) .. ', expected at least 3)')
|
||||
end
|
||||
|
||||
local ret = {}
|
||||
@@ -259,15 +261,15 @@ local function tbl_extend(behavior, deep_extend, ...)
|
||||
|
||||
for i = 1, select('#', ...) do
|
||||
local tbl = select(i, ...)
|
||||
vim.validate{["after the second argument"] = {tbl,'t'}}
|
||||
vim.validate({ ['after the second argument'] = { tbl, 't' } })
|
||||
if tbl then
|
||||
for k, v in pairs(tbl) do
|
||||
if deep_extend and can_merge(v) and can_merge(ret[k]) then
|
||||
ret[k] = tbl_extend(behavior, true, ret[k], v)
|
||||
elseif behavior ~= 'force' and ret[k] ~= nil then
|
||||
if behavior == 'error' then
|
||||
error('key found in more than one map: '..k)
|
||||
end -- Else behavior is "keep".
|
||||
error('key found in more than one map: ' .. k)
|
||||
end -- Else behavior is "keep".
|
||||
else
|
||||
ret[k] = v
|
||||
end
|
||||
@@ -311,8 +313,12 @@ end
|
||||
---@param b second value
|
||||
---@returns `true` if values are equals, else `false`.
|
||||
function vim.deep_equal(a, b)
|
||||
if a == b then return true end
|
||||
if type(a) ~= type(b) then return false end
|
||||
if a == b then
|
||||
return true
|
||||
end
|
||||
if type(a) ~= type(b) then
|
||||
return false
|
||||
end
|
||||
if type(a) == 'table' then
|
||||
for k, v in pairs(a) do
|
||||
if not vim.deep_equal(v, b[k]) then
|
||||
@@ -340,7 +346,13 @@ function vim.tbl_add_reverse_lookup(o)
|
||||
for _, k in ipairs(keys) do
|
||||
local v = o[k]
|
||||
if o[v] then
|
||||
error(string.format("The reverse lookup found an existing value for %q while processing key %q", tostring(v), tostring(k)))
|
||||
error(
|
||||
string.format(
|
||||
'The reverse lookup found an existing value for %q while processing key %q',
|
||||
tostring(v),
|
||||
tostring(k)
|
||||
)
|
||||
)
|
||||
end
|
||||
o[v] = k
|
||||
end
|
||||
@@ -361,7 +373,7 @@ end
|
||||
---
|
||||
---@returns nested value indexed by key if it exists, else nil
|
||||
function vim.tbl_get(o, ...)
|
||||
local keys = {...}
|
||||
local keys = { ... }
|
||||
if #keys == 0 then
|
||||
return
|
||||
end
|
||||
@@ -389,12 +401,12 @@ end
|
||||
---@param finish Final index on src. defaults to #src
|
||||
---@returns dst
|
||||
function vim.list_extend(dst, src, start, finish)
|
||||
vim.validate {
|
||||
dst = {dst, 't'};
|
||||
src = {src, 't'};
|
||||
start = {start, 'n', true};
|
||||
finish = {finish, 'n', true};
|
||||
}
|
||||
vim.validate({
|
||||
dst = { dst, 't' },
|
||||
src = { src, 't' },
|
||||
start = { start, 'n', true },
|
||||
finish = { finish, 'n', true },
|
||||
})
|
||||
for i = start or 1, finish or #src do
|
||||
table.insert(dst, src[i])
|
||||
end
|
||||
@@ -414,7 +426,7 @@ function vim.tbl_flatten(t)
|
||||
local n = #_t
|
||||
for i = 1, n do
|
||||
local v = _t[i]
|
||||
if type(v) == "table" then
|
||||
if type(v) == 'table' then
|
||||
_tbl_flatten(v)
|
||||
elseif v then
|
||||
table.insert(result, v)
|
||||
@@ -441,7 +453,7 @@ function vim.tbl_islist(t)
|
||||
local count = 0
|
||||
|
||||
for k, _ in pairs(t) do
|
||||
if type(k) == "number" then
|
||||
if type(k) == 'number' then
|
||||
count = count + 1
|
||||
else
|
||||
return false
|
||||
@@ -471,10 +483,12 @@ end
|
||||
---@param t Table
|
||||
---@returns Number that is the number of the value in table
|
||||
function vim.tbl_count(t)
|
||||
vim.validate{t={t,'t'}}
|
||||
vim.validate({ t = { t, 't' } })
|
||||
|
||||
local count = 0
|
||||
for _ in pairs(t) do count = count + 1 end
|
||||
for _ in pairs(t) do
|
||||
count = count + 1
|
||||
end
|
||||
return count
|
||||
end
|
||||
|
||||
@@ -487,7 +501,7 @@ end
|
||||
function vim.list_slice(list, start, finish)
|
||||
local new_list = {}
|
||||
for i = start or 1, finish or #list do
|
||||
new_list[#new_list+1] = list[i]
|
||||
new_list[#new_list + 1] = list[i]
|
||||
end
|
||||
return new_list
|
||||
end
|
||||
@@ -498,7 +512,7 @@ end
|
||||
---@param s String to trim
|
||||
---@returns String with whitespace removed from its beginning and end
|
||||
function vim.trim(s)
|
||||
vim.validate{s={s,'s'}}
|
||||
vim.validate({ s = { s, 's' } })
|
||||
return s:match('^%s*(.*%S)') or ''
|
||||
end
|
||||
|
||||
@@ -508,7 +522,7 @@ end
|
||||
---@param s String to escape
|
||||
---@returns %-escaped pattern string
|
||||
function vim.pesc(s)
|
||||
vim.validate{s={s,'s'}}
|
||||
vim.validate({ s = { s, 's' } })
|
||||
return s:gsub('[%(%)%.%%%+%-%*%?%[%]%^%$]', '%%%1')
|
||||
end
|
||||
|
||||
@@ -518,7 +532,7 @@ end
|
||||
---@param prefix (string) a prefix
|
||||
---@return (boolean) true if `prefix` is a prefix of s
|
||||
function vim.startswith(s, prefix)
|
||||
vim.validate { s = {s, 's'}; prefix = {prefix, 's'}; }
|
||||
vim.validate({ s = { s, 's' }, prefix = { prefix, 's' } })
|
||||
return s:sub(1, #prefix) == prefix
|
||||
end
|
||||
|
||||
@@ -528,7 +542,7 @@ end
|
||||
---@param suffix (string) a suffix
|
||||
---@return (boolean) true if `suffix` is a suffix of s
|
||||
function vim.endswith(s, suffix)
|
||||
vim.validate { s = {s, 's'}; suffix = {suffix, 's'}; }
|
||||
vim.validate({ s = { s, 's' }, suffix = { suffix, 's' } })
|
||||
return #suffix == 0 or s:sub(-#suffix) == suffix
|
||||
end
|
||||
|
||||
@@ -582,18 +596,24 @@ end
|
||||
--- only if the argument is valid. Can optionally return an additional
|
||||
--- informative error message as the second returned value.
|
||||
--- - msg: (optional) error string if validation fails
|
||||
function vim.validate(opt) end -- luacheck: no unused
|
||||
function vim.validate(opt) end -- luacheck: no unused
|
||||
|
||||
do
|
||||
local type_names = {
|
||||
['table'] = 'table', t = 'table',
|
||||
['string'] = 'string', s = 'string',
|
||||
['number'] = 'number', n = 'number',
|
||||
['boolean'] = 'boolean', b = 'boolean',
|
||||
['function'] = 'function', f = 'function',
|
||||
['callable'] = 'callable', c = 'callable',
|
||||
['nil'] = 'nil',
|
||||
['thread'] = 'thread',
|
||||
['table'] = 'table',
|
||||
t = 'table',
|
||||
['string'] = 'string',
|
||||
s = 'string',
|
||||
['number'] = 'number',
|
||||
n = 'number',
|
||||
['boolean'] = 'boolean',
|
||||
b = 'boolean',
|
||||
['function'] = 'function',
|
||||
f = 'function',
|
||||
['callable'] = 'callable',
|
||||
c = 'callable',
|
||||
['nil'] = 'nil',
|
||||
['thread'] = 'thread',
|
||||
['userdata'] = 'userdata',
|
||||
}
|
||||
|
||||
@@ -612,21 +632,21 @@ do
|
||||
return false, string.format('opt[%s]: expected table, got %s', param_name, type(spec))
|
||||
end
|
||||
|
||||
local val = spec[1] -- Argument value.
|
||||
local types = spec[2] -- Type name, or callable.
|
||||
local val = spec[1] -- Argument value.
|
||||
local types = spec[2] -- Type name, or callable.
|
||||
local optional = (true == spec[3])
|
||||
|
||||
if type(types) == 'string' then
|
||||
types = {types}
|
||||
types = { types }
|
||||
end
|
||||
|
||||
if vim.is_callable(types) then
|
||||
-- Check user-provided validation function.
|
||||
local valid, optional_message = types(val)
|
||||
if not valid then
|
||||
local error_message = string.format("%s: expected %s, got %s", param_name, (spec[3] or '?'), tostring(val))
|
||||
local error_message = string.format('%s: expected %s, got %s', param_name, (spec[3] or '?'), tostring(val))
|
||||
if optional_message ~= nil then
|
||||
error_message = error_message .. string.format(". Info: %s", optional_message)
|
||||
error_message = error_message .. string.format('. Info: %s', optional_message)
|
||||
end
|
||||
|
||||
return false, error_message
|
||||
@@ -646,10 +666,10 @@ do
|
||||
end
|
||||
end
|
||||
if not success then
|
||||
return false, string.format("%s: expected %s, got %s", param_name, table.concat(types, '|'), type(val))
|
||||
return false, string.format('%s: expected %s, got %s', param_name, table.concat(types, '|'), type(val))
|
||||
end
|
||||
else
|
||||
return false, string.format("invalid type name: %s", tostring(types))
|
||||
return false, string.format('invalid type name: %s', tostring(types))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -668,9 +688,13 @@ end
|
||||
---@param f Any object
|
||||
---@return true if `f` is callable, else false
|
||||
function vim.is_callable(f)
|
||||
if type(f) == 'function' then return true end
|
||||
if type(f) == 'function' then
|
||||
return true
|
||||
end
|
||||
local m = getmetatable(f)
|
||||
if m == nil then return false end
|
||||
if m == nil then
|
||||
return false
|
||||
end
|
||||
return type(m.__call) == 'function'
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user