aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/_vim9script.lua
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2023-01-08 15:31:38 -0500
committerGitHub <noreply@github.com>2023-01-08 12:31:38 -0800
commit904c13e6b572552a676efcaec640dfa8bd199e59 (patch)
treebca7666442ed23c616e314ce2a6769b794a26e09 /runtime/lua/_vim9script.lua
parent266a1c61b97313f2a516140fc691dd8be8eed47a (diff)
downloadrneovim-904c13e6b572552a676efcaec640dfa8bd199e59.tar.gz
rneovim-904c13e6b572552a676efcaec640dfa8bd199e59.tar.bz2
rneovim-904c13e6b572552a676efcaec640dfa8bd199e59.zip
dist: transpile cfilter.vim => cfilter.lua #21662
Vim has changed cfilter.vim from vimscript to vim9script. Nvim supports only vimscript, not vim9script.
Diffstat (limited to 'runtime/lua/_vim9script.lua')
-rw-r--r--runtime/lua/_vim9script.lua23
1 files changed, 23 insertions, 0 deletions
diff --git a/runtime/lua/_vim9script.lua b/runtime/lua/_vim9script.lua
index b7bde332f5..363d061451 100644
--- a/runtime/lua/_vim9script.lua
+++ b/runtime/lua/_vim9script.lua
@@ -27,6 +27,29 @@ local vim9 = (function()
end
end
+ M.fn_ref = function(module, name, copied, ...)
+ for _, val in ipairs({ ... }) do
+ table.insert(copied, val)
+ end
+
+ local funcref = name
+ if type(funcref) == 'function' then
+ return funcref(unpack(copied))
+ elseif type(funcref) == 'string' then
+ if vim.fn.exists('*' .. funcref) == 1 then
+ return vim.fn[funcref](unpack(copied))
+ end
+
+ if module[funcref] then
+ module[funcref](unpack(copied))
+ end
+
+ error('unknown function: ' .. funcref)
+ else
+ error(string.format('unable to call funcref: %s', funcref))
+ end
+ end
+
M.fn_mut = function(name, args, info)
local result = vim.fn._Vim9ScriptFn(name, args)
for idx, val in pairs(result[2]) do