From 726d1a92d243a8b7cb4b221d64e4523b7a89aaf4 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Wed, 29 Jul 2026 19:09:48 +0200 Subject: feat(options): lua closure/function options MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: Cannot assign Lua functions/closures to "func" ('completefunc', 'tagfun', …) or "expr" ('foldexpr', 'indentexpr', …) options. Solution: - Store "func"/"expr" options as `Callback` instead of string. - Delete oceans of copy-pasted code. - BREAKING: LuaRef returned via RPC/Vimscript is now represented as `""` (like what `:map` shows) instead of `nil`. - Note: `man.vim` still uses `v:lua` string, bc it's a vimscript ftplugin. Helped-by: Lewis Russell --- runtime/lua/vim/treesitter/dev.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'runtime/lua/vim/treesitter/dev.lua') diff --git a/runtime/lua/vim/treesitter/dev.lua b/runtime/lua/vim/treesitter/dev.lua index dc7a73432d..32cd13ae3d 100644 --- a/runtime/lua/vim/treesitter/dev.lua +++ b/runtime/lua/vim/treesitter/dev.lua @@ -639,7 +639,7 @@ function M.edit_query(lang) local query_buf = api.nvim_win_get_buf(query_win) vim.b[buf].dev_edit = query_win - vim.bo[query_buf].omnifunc = 'v:lua.vim.treesitter.query.omnifunc' + vim.bo[query_buf].omnifunc = vim.treesitter.query.omnifunc set_dev_options(query_win, query_buf) -- Note that omnifunc guesses the language based on the containing folder, -- cgit