aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/func/_memoize.lua
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-05-24 19:18:11 +0000
committerJosh Rahm <joshuarahm@gmail.com>2024-05-24 19:18:11 +0000
commitff7ed8f586589d620a806c3758fac4a47a8e7e15 (patch)
tree729bbcb92231538fa61dab6c3d890b025484b7f5 /runtime/lua/vim/func/_memoize.lua
parent376914f419eb08fdf4c1a63a77e1f035898a0f10 (diff)
parent28c04948a1c887a1cc0cb64de79fa32631700466 (diff)
downloadrneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.gz
rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.bz2
rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.zip
Merge remote-tracking branch 'upstream/master' into mix_20240309
Diffstat (limited to 'runtime/lua/vim/func/_memoize.lua')
-rw-r--r--runtime/lua/vim/func/_memoize.lua8
1 files changed, 6 insertions, 2 deletions
diff --git a/runtime/lua/vim/func/_memoize.lua b/runtime/lua/vim/func/_memoize.lua
index 835bf64c93..65210351bf 100644
--- a/runtime/lua/vim/func/_memoize.lua
+++ b/runtime/lua/vim/func/_memoize.lua
@@ -36,15 +36,19 @@ end
--- @generic F: function
--- @param hash integer|string|fun(...): any
--- @param fn F
+--- @param strong? boolean
--- @return F
-return function(hash, fn)
+return function(hash, fn, strong)
vim.validate({
hash = { hash, { 'number', 'string', 'function' } },
fn = { fn, 'function' },
})
---@type table<any,table<any,any>>
- local cache = setmetatable({}, { __mode = 'kv' })
+ local cache = {}
+ if not strong then
+ setmetatable(cache, { __mode = 'kv' })
+ end
hash = resolve_hash(hash)