aboutsummaryrefslogtreecommitdiffstats
path: root/nvim/lua/shared.lua
diff options
context:
space:
mode:
authorJP Appel <jeanpierre.appel01@gmail.com>2026-04-04 16:19:29 -0400
committerJP Appel <jeanpierre.appel01@gmail.com>2026-04-04 16:26:40 -0400
commit4c6b12fce57615c38043d55054da8a05d716503f (patch)
tree01010a7c4ffa44e193194f2a257ce3c27c5f28c9 /nvim/lua/shared.lua
parent35fc70735c2563de7dbbc6c4bdff3e91f2f8957c (diff)
Update nvim-treesitter config
Diffstat (limited to 'nvim/lua/shared.lua')
-rw-r--r--nvim/lua/shared.lua46
1 files changed, 46 insertions, 0 deletions
diff --git a/nvim/lua/shared.lua b/nvim/lua/shared.lua
index 907159e..a1cf289 100644
--- a/nvim/lua/shared.lua
+++ b/nvim/lua/shared.lua
@@ -100,4 +100,50 @@ function M.vert_shift_selection(amount)
vim.cmd("normal! gv")
end
+--- Build a set from a list
+--- @generic T
+--- @param list T[]
+--- @return table<T, boolean>
+function M.to_set(list)
+ --- @type table<T, boolean>
+ local set = {}
+
+ for _, v in ipairs(list) do
+ set[v] = true
+ end
+
+ return set
+end
+
+--- Computes A \ B
+--- @generic T
+--- @param A table<T, boolean>
+--- @param B table<T, boolean>
+--- @return table<T, boolean>
+function M.set_difference(A, B)
+ --- @type table<T, boolean>
+ local diff = {}
+
+ for k, v in pairs(A) do
+ if v and not B[k] then
+ diff[k] = true
+ end
+ end
+
+ return diff
+end
+
+--- Get keys of table
+--- @generic T
+--- @param tbl table<T, any>
+--- @return T[]
+function M.keys(tbl)
+ local keys = {}
+ for k, _ in pairs(tbl) do
+ table.insert(keys, k)
+ end
+
+ return keys
+end
+
return M