From a0fb2e6202fccb683392576c542228c0bb4359e3 Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Thu, 14 May 2026 12:27:46 +0200 Subject: [PATCH 1/3] fix(api): replace deprecated Nvim API --- lua/luasnip/extras/_treesitter.lua | 2 +- lua/luasnip/extras/filetype_functions.lua | 13 ++++++++++--- lua/luasnip/extras/snippet_list.lua | 6 +++--- lua/luasnip/util/functions.lua | 7 +------ 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/lua/luasnip/extras/_treesitter.lua b/lua/luasnip/extras/_treesitter.lua index ac735566d..c5e155190 100644 --- a/lua/luasnip/extras/_treesitter.lua +++ b/lua/luasnip/extras/_treesitter.lua @@ -2,7 +2,7 @@ local util = require("luasnip.util.util") local tbl = require("luasnip.util.table") local function get_lang(bufnr) - local ft = vim.api.nvim_buf_get_option(bufnr, "ft") + local ft = vim.api.nvim_get_option_value("ft", { buf = bufnr }) local lang = vim.treesitter.language.get_lang(ft) or ft return lang end diff --git a/lua/luasnip/extras/filetype_functions.lua b/lua/luasnip/extras/filetype_functions.lua index 0ebcbb932..dd47096c8 100644 --- a/lua/luasnip/extras/filetype_functions.lua +++ b/lua/luasnip/extras/filetype_functions.lua @@ -47,7 +47,11 @@ local function from_pos_or_filetype() end local function from_filetype_load(bufnr) - return vim.split(vim.api.nvim_buf_get_option(bufnr, "filetype"), ".", true) + return vim.split( + vim.api.nvim_get_option_value("filetype", { buf = bufnr }), + ".", + true + ) end local function extend_load_ft(extend_fts) @@ -67,8 +71,11 @@ local function extend_load_ft(extend_fts) end return function(bufnr) - local fts = - vim.split(vim.api.nvim_buf_get_option(bufnr, "filetype"), ".", true) + local fts = vim.split( + vim.api.nvim_get_option_value("filetype", { buf = bufnr }), + ".", + true + ) local res = {} for _, ft in ipairs(fts) do diff --git a/lua/luasnip/extras/snippet_list.lua b/lua/luasnip/extras/snippet_list.lua index 818714bc6..6985af240 100644 --- a/lua/luasnip/extras/snippet_list.lua +++ b/lua/luasnip/extras/snippet_list.lua @@ -20,13 +20,13 @@ local buf_opts = { filetype = "lua" } local function set_win_opts(win, opts) for opt, val in pairs(opts) do - vim.api.nvim_win_set_option(win, opt, val) + vim.api.nvim_set_option_value(opt, val, { win = win }) end end local function set_buf_opts(buf, opts) for opt, val in pairs(opts) do - vim.api.nvim_buf_set_option(buf, opt, val) + vim.api.nvim_set_option_value(opt, val, { buf = buf }) end end @@ -73,7 +73,7 @@ local function display_split(opts) vim.api.nvim_buf_set_lines(buf, 0, 0, false, replacement) -- make it unmodifiable at this point - vim.api.nvim_buf_set_option(buf, "modifiable", false) + vim.api.nvim_set_option_value("modifiable", false, { buf = buf }) end end diff --git a/lua/luasnip/util/functions.lua b/lua/luasnip/util/functions.lua index 3fc1ad7db..79f2605b6 100644 --- a/lua/luasnip/util/functions.lua +++ b/lua/luasnip/util/functions.lua @@ -34,12 +34,7 @@ return { return function() -- 'echo'd string is returned to lua. return sn(nil, { - t( - vim.split( - vim.api.nvim_exec("echo " .. vimstring, true), - "\n" - ) - ), + t(vim.split(vim.cmd.echo(vimstring), "\n")), }) end end, From 84e174a77a09f103caedef02c4f1b9944a17425a Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Thu, 14 May 2026 12:32:04 +0200 Subject: [PATCH 2/3] fix: add shim for deprecated `vim.F.if_nil` --- lua/luasnip/extras/_treesitter.lua | 4 ++-- lua/luasnip/init.lua | 7 +++---- lua/luasnip/loaders/from_vscode.lua | 4 ++-- lua/luasnip/loaders/fs_watchers.lua | 4 ++-- lua/luasnip/loaders/util.lua | 2 +- lua/luasnip/nodes/snippet.lua | 2 +- lua/luasnip/util/auto_table.lua | 3 ++- lua/luasnip/util/util.lua | 1 + 8 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lua/luasnip/extras/_treesitter.lua b/lua/luasnip/extras/_treesitter.lua index c5e155190..b43769997 100644 --- a/lua/luasnip/extras/_treesitter.lua +++ b/lua/luasnip/extras/_treesitter.lua @@ -317,7 +317,7 @@ end ---@param pos { [1]: number, [2]: number }? ---@return TSNode? function TSParser:get_node_at_pos(pos) - pos = vim.F.if_nil(pos, util.get_cursor_0ind()) + pos = util.if_nil(pos, util.get_cursor_0ind()) local row, col = pos[1], pos[2] assert( row >= 0 and col >= 0, @@ -436,7 +436,7 @@ local function find_topmost_parent(root, matcher) if matcher == nil or matcher(node) then current = node end - return vim.F.if_nil(_impl(node:parent()), current) + return util.if_nil(_impl(node:parent()), current) end return _impl(root) diff --git a/lua/luasnip/init.lua b/lua/luasnip/init.lua index 734c84b51..2d1d13285 100644 --- a/lua/luasnip/init.lua +++ b/lua/luasnip/init.lua @@ -2,7 +2,6 @@ local util = require("luasnip.util.util") local lazy_table = require("luasnip.util.lazy_table") local types = require("luasnip.util.types") local node_util = require("luasnip.nodes.util") -local tbl_util = require("luasnip.util.table") local feedkeys = require("luasnip.util.feedkeys") local session = require("luasnip.session") @@ -598,7 +597,7 @@ local function _snip_expand(snippet, opts) -- override with current position if none given. opts.pos = opts.pos or util.get_cursor_0ind() opts.jump_into_func = opts.jump_into_func or _jump_into_default - opts.indent = vim.F.if_nil(opts.indent, true) + opts.indent = util.if_nil(opts.indent, true) snip.trigger = opts.expand_params.trigger or snip.trigger snip.captures = opts.expand_params.captures or {} @@ -1309,8 +1308,8 @@ end function API.activate_node(opts) opts = opts or {} local pos = opts.pos or util.get_cursor_0ind() - local strict = vim.F.if_nil(opts.strict, false) - local select = vim.F.if_nil(opts.select, true) + local strict = util.if_nil(opts.strict, false) + local select = util.if_nil(opts.select, true) -- find tree-node the snippet should be inserted at (could be before another node). local _, _, _, node = node_util.snippettree_find_undamaged_node(pos, { diff --git a/lua/luasnip/loaders/from_vscode.lua b/lua/luasnip/loaders/from_vscode.lua index 8d85c0b1a..4a25bd362 100644 --- a/lua/luasnip/loaders/from_vscode.lua +++ b/lua/luasnip/loaders/from_vscode.lua @@ -598,10 +598,10 @@ end function M.load_standalone(opts) opts = opts or {} - local lazy = vim.F.if_nil(opts.lazy, false) + local lazy = util.if_nil(opts.lazy, false) local add_opts = loader_util.make_add_opts(opts) local fs_event_providers = - vim.F.if_nil(opts.fs_event_providers, { autocmd = true, libuv = false }) + util.if_nil(opts.fs_event_providers, { autocmd = true, libuv = false }) local path if not lazy then diff --git a/lua/luasnip/loaders/fs_watchers.lua b/lua/luasnip/loaders/fs_watchers.lua index dca63dddc..b949020b3 100644 --- a/lua/luasnip/loaders/fs_watchers.lua +++ b/lua/luasnip/loaders/fs_watchers.lua @@ -49,9 +49,9 @@ local callback_mt = { local function get_opts(opts) opts = opts or {} - local lazy = vim.F.if_nil(opts.lazy, false) + local lazy = util.if_nil(opts.lazy, false) local fs_event_providers = - vim.F.if_nil(opts.fs_event_providers, { autocmd = true, libuv = false }) + util.if_nil(opts.fs_event_providers, { autocmd = true, libuv = false }) return lazy, fs_event_providers end diff --git a/lua/luasnip/loaders/util.lua b/lua/luasnip/loaders/util.lua index 4c0156071..415a383bb 100644 --- a/lua/luasnip/loaders/util.lua +++ b/lua/luasnip/loaders/util.lua @@ -274,7 +274,7 @@ local function normalize_opts(opts) end local fs_event_providers = - vim.F.if_nil(opts.fs_event_providers, { autocmd = true, libuv = false }) + util.if_nil(opts.fs_event_providers, { autocmd = true, libuv = false }) return { paths = paths, diff --git a/lua/luasnip/nodes/snippet.lua b/lua/luasnip/nodes/snippet.lua index b293eafd8..8bffaa2ba 100644 --- a/lua/luasnip/nodes/snippet.lua +++ b/lua/luasnip/nodes/snippet.lua @@ -1212,7 +1212,7 @@ function Snippet:event(event, event_args) modeline = false, }) - return vim.F.if_nil(cb_res, m1_cb_res, parent_cb_res) + return util.if_nil(cb_res, m1_cb_res, parent_cb_res) end local function nodes_from_pattern(pattern) diff --git a/lua/luasnip/util/auto_table.lua b/lua/luasnip/util/auto_table.lua index 3a9858c0c..94dd5c90b 100644 --- a/lua/luasnip/util/auto_table.lua +++ b/lua/luasnip/util/auto_table.lua @@ -35,9 +35,10 @@ end local M = {} +local if_nil = vim.nonnil or vim.F.if_nil --todo(clason): remove when dropping Nvim 0.12 support function M.autotable(max_depth, opts) opts = opts or {} - local warn = vim.F.if_nil(opts.warn, false) + local warn = if_nil(opts.warn, false) local auto_table_func = warn and auto_creating_tables_warn_depth or auto_creating_tables diff --git a/lua/luasnip/util/util.lua b/lua/luasnip/util/util.lua index 7f4d20bd5..8cdd6f3f5 100644 --- a/lua/luasnip/util/util.lua +++ b/lua/luasnip/util/util.lua @@ -516,4 +516,5 @@ return { pos_from_offset = pos_from_offset, shallow_copy = shallow_copy, copy3 = copy3, + if_nil = vim.nonnil or vim.F.if_nil, --todo(clason): remove when dropping Nvim 0.12 support } From e78b3bedc8a7bbde3efc7b83bb326e2133176717 Mon Sep 17 00:00:00 2001 From: clason Date: Thu, 14 May 2026 10:37:56 +0000 Subject: [PATCH 3/3] Auto generate docs --- doc/luasnip.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/luasnip.txt b/doc/luasnip.txt index 8867e676a..cf6860f58 100644 --- a/doc/luasnip.txt +++ b/doc/luasnip.txt @@ -1,4 +1,4 @@ -*luasnip.txt* For NeoVim 0.7-0.11 Last change: 2026 April 05 +*luasnip.txt* For NeoVim 0.7-0.11 Last change: 2026 May 14 ============================================================================== Table of Contents *luasnip-table-of-contents*