diff options
Diffstat (limited to 'lua/utils')
| -rw-r--r-- | lua/utils/init.lua | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/lua/utils/init.lua b/lua/utils/init.lua index 9eb29ad8..1685c1ca 100644 --- a/lua/utils/init.lua +++ b/lua/utils/init.lua @@ -110,6 +110,32 @@ function utils.is_string(t)    return type(t) == "string"  end +--- Extends a list-like table with the unique values of another list-like table. +--- +--- NOTE: This mutates dst! +--- +--@see |vim.tbl_extend()| +--- +--@param dst list which will be modified and appended to. +--@param src list from which values will be inserted. +--@param start Start index on src. defaults to 1 +--@param finish Final index on src. defaults to #src +--@returns dst +function utils.list_extend_unique(dst, src, start, finish) +  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 +    if not vim.tbl_contains(dst, src[i]) then +      table.insert(dst, src[i]) +    end +  end +  return dst +end +  function utils.unrequire(m)    package.loaded[m] = nil    _G[m] = nil | 
