summaryrefslogtreecommitdiff
path: root/lua/utils/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/utils/init.lua')
-rw-r--r--lua/utils/init.lua26
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