local ls = require('luasnip') -- 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" } })