diff options
author | TJ DeVries <devries.timothyj@gmail.com> | 2023-01-08 15:31:38 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-08 12:31:38 -0800 |
commit | 904c13e6b572552a676efcaec640dfa8bd199e59 (patch) | |
tree | bca7666442ed23c616e314ce2a6769b794a26e09 /runtime/lua/_vim9script.lua | |
parent | 266a1c61b97313f2a516140fc691dd8be8eed47a (diff) | |
download | rneovim-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.lua | 23 |
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 |