Automatically apply skeleton snippets to certain filetypes if configured
This commit is contained in:
@@ -126,3 +126,13 @@ vim.api.nvim_create_autocmd("FileType", {
|
||||
vim.opt_local.foldmethod = "marker"
|
||||
end,
|
||||
})
|
||||
-- snippets
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "snippets",
|
||||
group = configgroup,
|
||||
callback = function()
|
||||
vim.opt_local.expandtab = false
|
||||
vim.opt_local.shiftwidth = 2
|
||||
vim.opt_local.tabstop = 4
|
||||
end,
|
||||
})
|
||||
|
||||
@@ -1,3 +1,30 @@
|
||||
-- idea stolen from: https://vi.stackexchange.com/a/42370
|
||||
local skelconfig = vim.api.nvim_create_augroup('SKEL_CONFIG', { clear = true })
|
||||
vim.api.nvim_create_autocmd({"BufRead", "BufNewFile"}, {
|
||||
group = skelconfig,
|
||||
callback = function()
|
||||
-- another autocmd so it doesn't conflict
|
||||
-- with other plugins that like to insert text on file open
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
group = skelconfig,
|
||||
callback = function()
|
||||
-- stop if buffer is not empty!
|
||||
if vim.fn.line("$") ~= 1 or vim.fn.getline(1) ~= "" then
|
||||
return
|
||||
end
|
||||
local ls = require('luasnip')
|
||||
local snippets = ls.get_snippets(vim.bo.ft)
|
||||
for _, snippet in ipairs(snippets) do
|
||||
if snippet["name"] == "_skeleton" then
|
||||
ls.snip_expand(snippet)
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
return {
|
||||
"L3MON4D3/LuaSnip",
|
||||
version = "v2.*", -- just because the docs mention it
|
||||
|
||||
Reference in New Issue
Block a user