mirror of
https://github.com/LazyVim/LazyVim.git
synced 2026-07-25 14:01:06 +00:00
feat: an extra for mini.snippets. Differentiate by providing two extras: standalone and with sources
This commit is contained in:
parent
a0885fc3f1
commit
cb0ea26e1f
2 changed files with 121 additions and 2 deletions
|
|
@ -1,5 +1,4 @@
|
||||||
--[[
|
--[[
|
||||||
|
|
||||||
This extra for mini.snippets activates the following:
|
This extra for mini.snippets activates the following:
|
||||||
1. During completion with either cmp or blink, expand lsp snippets
|
1. During completion with either cmp or blink, expand lsp snippets
|
||||||
2. To use other snippets: Press <c-j> in insert mode
|
2. To use other snippets: Press <c-j> in insert mode
|
||||||
|
|
@ -47,7 +46,6 @@ return {
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
--]]
|
--]]
|
||||||
|
|
||||||
local function expand(args)
|
local function expand(args)
|
||||||
121
lua/lazyvim/plugins/extras/coding/mini-snippets-with-sources.lua
Normal file
121
lua/lazyvim/plugins/extras/coding/mini-snippets-with-sources.lua
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
--[[
|
||||||
|
TODO: Prevent the user from overriding mini.snippits mappings?
|
||||||
|
|
||||||
|
An extra for mini.snippets.
|
||||||
|
Includes a completion source for `nvim-cmp`
|
||||||
|
There is an open issue for `blink.cmp`: https://github.com/Saghen/blink.cmp/issues/741
|
||||||
|
|
||||||
|
For now, `blink.cmp` is out of scope in this extra.
|
||||||
|
Use extra "mini_snippets_standalone" to expand the snippets from the lsp with blink.
|
||||||
|
|
||||||
|
Currently, mini.snippets is in "beta": See https://github.com/echasnovski/mini.nvim/issues/1428
|
||||||
|
|
||||||
|
Example override for your own config:
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"echasnovski/mini.snippets",
|
||||||
|
opts = function(_, opts)
|
||||||
|
-- By default, for opts.snippets, the extra for mini.snippets only adds gen_loader.from_lang()
|
||||||
|
-- This provides a sensible quickstart, integrating with friendly-snippets
|
||||||
|
-- and your own language-specific snippets
|
||||||
|
--
|
||||||
|
-- In order to change opts.snippets, replace the entire table inside your own opts
|
||||||
|
|
||||||
|
local snippets, config_path = require("mini.snippets"), vim.fn.stdpath("config")
|
||||||
|
|
||||||
|
opts.snippets = { -- override opts.snippets provided by extra...
|
||||||
|
-- Load custom file with global snippets first (order matters)
|
||||||
|
snippets.gen_loader.from_file(config_path .. "/snippets/global.json"),
|
||||||
|
|
||||||
|
-- Load snippets based on current language by reading files from
|
||||||
|
-- "snippets/" subdirectories from 'runtimepath' directories.
|
||||||
|
snippets.gen_loader.from_lang(), -- this is the default in the extra...
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
--]]
|
||||||
|
|
||||||
|
local function expand(args)
|
||||||
|
---@diagnostic disable-next-line: undefined-global
|
||||||
|
local insert = MiniSnippets.config.expand.insert or MiniSnippets.default_insert
|
||||||
|
insert({ body = args.body }) -- insert at cursor
|
||||||
|
end
|
||||||
|
|
||||||
|
local function jump(direction)
|
||||||
|
local is_active = MiniSnippets.session.get(false) ~= nil
|
||||||
|
if is_active then
|
||||||
|
MiniSnippets.session.jump(direction)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
-- disable builtin snippet support
|
||||||
|
{ "garymjr/nvim-snippets", optional = true, enabled = false },
|
||||||
|
-- disable luasnip:
|
||||||
|
{ "L3MON4D3/LuaSnip", optional = true, enabled = false },
|
||||||
|
|
||||||
|
-- add mini.snippets
|
||||||
|
desc = "Beta testing mini.snippets, a plugin to manage and expand snippets (alternative for luasnip)",
|
||||||
|
{
|
||||||
|
"echasnovski/mini.snippets",
|
||||||
|
lazy = true,
|
||||||
|
dependencies = {
|
||||||
|
{
|
||||||
|
"rafamadriz/friendly-snippets",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = function()
|
||||||
|
local snippets = require("mini.snippets")
|
||||||
|
return {
|
||||||
|
snippets = {
|
||||||
|
-- Load snippets based on current language by reading files from
|
||||||
|
-- "snippets/" subdirectories from 'runtimepath' directories.
|
||||||
|
snippets.gen_loader.from_lang(),
|
||||||
|
},
|
||||||
|
mappings = { -- handled by completion engine.
|
||||||
|
expand = "",
|
||||||
|
jump_next = "",
|
||||||
|
jump_prev = "",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- add snippet_forward action
|
||||||
|
{
|
||||||
|
"echasnovski/mini.snippets",
|
||||||
|
opts = function()
|
||||||
|
---@diagnostic disable-next-line: duplicate-set-field
|
||||||
|
LazyVim.cmp.actions.snippet_forward = function()
|
||||||
|
return jump("next")
|
||||||
|
end
|
||||||
|
---@diagnostic disable-next-line: duplicate-set-field
|
||||||
|
LazyVim.cmp.actions.snippet_stop = function()
|
||||||
|
-- Only needed for luasnip unlink
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- nvim-cmp integration: Use mini.snippets to expand snippets from lsp
|
||||||
|
{
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
optional = true,
|
||||||
|
dependencies = { "abeldekat/cmp-mini-snippets" },
|
||||||
|
opts = function(_, opts)
|
||||||
|
opts.snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
expand(args)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
table.insert(opts.sources, { name = "mini_snippets" })
|
||||||
|
end,
|
||||||
|
-- stylua: ignore
|
||||||
|
keys = {
|
||||||
|
-- <tab> is configured as cmp.mapping in nvim-cmp extra:
|
||||||
|
{ "<tab>", function() jump("next") end, mode = "i" },
|
||||||
|
{ "<s-tab>", function() jump("prev") end, mode = "i" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue