From 741f37f40570f3d14693e8354b6c0a5a7e368714 Mon Sep 17 00:00:00 2001 From: abeldekat Date: Thu, 23 Jan 2025 09:10:07 +0100 Subject: [PATCH] feat: an extra for mini.snippets. Upstream solution in nvim-cmp regarding outdated completion items --- .../plugins/extras/coding/mini-snippets.lua | 59 +++++-------------- 1 file changed, 16 insertions(+), 43 deletions(-) diff --git a/lua/lazyvim/plugins/extras/coding/mini-snippets.lua b/lua/lazyvim/plugins/extras/coding/mini-snippets.lua index d80287ee..f68af110 100644 --- a/lua/lazyvim/plugins/extras/coding/mini-snippets.lua +++ b/lua/lazyvim/plugins/extras/coding/mini-snippets.lua @@ -3,14 +3,6 @@ if lazyvim_docs then -- Motivation: Less clutter in completion windows and a more direct usage of snippits vim.g.lazyvim_mini_snippets_in_completion = true - -- Using default mini.snippets, completion suggestions might appear directly after inserting a snippet - -- This extra prevents that from happening. - -- Motivation: A better display of the current snippet. - -- Also, those completions do not appear when using luasnip or native snippets - -- - -- Set to `false` to enable completion suggestions directly after inserting a snippet - vim.g.lazyvim_mini_snippets_override_expand_insert = true - -- NOTE: Please also read: -- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-snippets.md#expand -- :h MiniSnippets-session @@ -45,8 +37,6 @@ end local include_in_completion = vim.g.lazyvim_mini_snippets_in_completion == nil or vim.g.lazyvim_mini_snippets_in_completion -local override_expand_insert = vim.g.lazyvim_mini_snippets_override_expand_insert == nil - or vim.g.lazyvim_mini_snippets_override_expand_insert local function expand_from_lsp(snippet) local insert = MiniSnippets.config.expand.insert or MiniSnippets.default_insert @@ -64,9 +54,6 @@ end ---@type fun(snippets, insert) | nil local expand_select_override = nil ----@type fun(snippet) | nil -local expand_insert_override = nil - return { -- disable builtin snippet support: { "garymjr/nvim-snippets", optional = true, enabled = false }, @@ -104,11 +91,6 @@ return { local select = expand_select_override or MiniSnippets.default_select select(snippets, insert) end, - insert = function(snippet) - -- Prevent completion suggestions directly after snippet insert - local insert = expand_insert_override or MiniSnippets.default_insert - insert(snippet) - end, }, } end, @@ -120,31 +102,25 @@ return { optional = true, dependencies = include_in_completion and { "abeldekat/cmp-mini-snippets" } or nil, opts = function(_, opts) - if override_expand_insert then - expand_insert_override = function(snippet) - MiniSnippets.default_insert(snippet) - require("cmp.config").set_onetime({ sources = {} }) - end - end + local cmp = require("cmp") + local cmp_config = require("cmp.config") - -- stylua: ignore - opts.snippet = { expand = function(args) expand_from_lsp(args.body) end } + opts.snippet = { + expand = function(args) + expand_from_lsp(args.body) + cmp.resubscribe({ "TextChangedI", "TextChangedP" }) + cmp_config.set_onetime({ sources = {} }) + end, + } - -- Return early if include_in_completion then table.insert(opts.sources, { name = "mini_snippets" }) - return - end - - -- Standalone -- - local function close_cmp() - local cmp = require("cmp") - -- stylua: ignore - if cmp.visible() then cmp.close() end - end - expand_select_override = function(snippets, insert) - close_cmp() - MiniSnippets.default_select(snippets, insert) + else + expand_select_override = function(snippets, insert) + -- stylua: ignore + if cmp.visible() then cmp.close() end + MiniSnippets.default_select(snippets, insert) + end end end, -- stylua: ignore @@ -164,12 +140,9 @@ return { end -- Standalone -- - local function close_cmp() - require("blink.cmp").cancel() - end expand_select_override = function(snippets, insert) -- Schedule, otherwise blink's virtual text is not removed on vim.ui.select - close_cmp() + require("blink.cmp").cancel() vim.schedule(function() MiniSnippets.default_select(snippets, insert) end)