nvim/lua/plugins/luasnip.lua
2024-05-22 08:29:39 +02:00

73 lines
2.8 KiB
Lua

return {
'L3MON4D3/LuaSnip',
dependencies = { 'rafamadriz/friendly-snippets' },
config = function()
local ls = require('luasnip')
ls.setup({
-- Required to automatically include base snippets, like "c" snippets for "cpp"
-- load_ft_func = require('luasnip_snippets.common.snip_utils').load_ft_func,
-- ft_func = require('luasnip_snippets.common.snip_utils').ft_func,
-- To enable auto expansin
enable_autosnippets = true,
-- Uncomment to enable visual snippets triggered using <c-x>
store_selection_keys = '<c-x>',
})
-- some shorthands...
local s = ls.snippet
local sn = ls.snippet_node
local isn = ls.indent_snippet_node
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local c = ls.choice_node
local d = ls.dynamic_node
local r = ls.restore_node
local l = require('luasnip.extras').lambda
local rep = require('luasnip.extras').rep
local p = require('luasnip.extras').partial
local m = require('luasnip.extras').match
local n = require('luasnip.extras').nonempty
local dl = require('luasnip.extras').dynamic_lambda
local fmt = require('luasnip.extras.fmt').fmt
local fmta = require('luasnip.extras.fmt').fmta
local types = require('luasnip.util.types')
local conds = require('luasnip.extras.expand_conditions')
local function getRegA(capitalize)
local clipboard = vim.fn.getreg('a')
clipboard = clipboard:gsub('^m_', '')
if capitalize then
clipboard = clipboard:gsub('^%l', string.upper)
end
return clipboard
end
ls.snippets = {
cpp = {
s('TEST_F_getset',
{
t('TEST_F('), i(1, 'TestClass'), t(' ,test_'), p(getRegA, false), t({ '_set_get)', '{', ' ' }),
i(2, 'm_object'), t('.set'), p(getRegA, true), t('('), i(3, '32.F'), t({ ');', ' ' }),
i(4, 'EXPECT_EQ('), rep(3), t(', '), rep(2), t('.get'), p(getRegA, true), t({ '());', '' }),
t({ '', '}', '' })
}),
s('TEST_fn_getset',
{
t('void '), p(getRegA, false), t('_'), i(1, 'get'), t('_'), i(2, 'set'), t({ '()', '{', ' ' }),
i(3, 'm_object'), t('.set'), p(getRegA, true), t('('), i(4, '32.F'), t({ ');', ' ' }),
i(5, 'EXPECT_EQ('), rep(4), t(', '), rep(3), t('.get'), p(getRegA, true), t({ '());', '' }),
t({ '', '}', '', '' }),
t('TEST_F('), i(5), t(' ,test_'), p(getRegA, false), t({ '_set_get)', '{', ' ' }),
p(getRegA, false), t('_'), rep(1), t('_'), rep(2), t({ '();' }),
t({ '', '}' }),
})
},
}
require('luasnip.loaders.from_vscode').lazy_load()
require('luasnip.loaders.from_vscode').lazy_load({ paths = { './my-snippets' } })
end,
cmd = 'LuaSnipListAvailable'
}