From f96368921fe0df923ee8e6cdd8f9905c902e715c Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Sat, 8 Jan 2022 18:08:41 +0000 Subject: [PATCH] feat(nvim): start configuring LuaSnip Fixes: #23 --- roles/neovim/files/after/plugin/luasnip.lua | 63 +++++++++++++++++++++ roles/neovim/files/lua/opdavies/options.lua | 2 + 2 files changed, 65 insertions(+) create mode 100644 roles/neovim/files/after/plugin/luasnip.lua diff --git a/roles/neovim/files/after/plugin/luasnip.lua b/roles/neovim/files/after/plugin/luasnip.lua new file mode 100644 index 0000000..966e669 --- /dev/null +++ b/roles/neovim/files/after/plugin/luasnip.lua @@ -0,0 +1,63 @@ +local status_ok, luasnip = pcall(require, "luasnip") +if not status_ok then + return +end + +if vim.g.snippets ~= "luasnip" then + return +end + +-- Create a new snippet. +local s = luasnip.s + +-- Different node types. +local c = luasnip.choice_node +local i = luasnip.insert_node +local t = luasnip.text_node + +local snippets = {} + +-- Snippets for both JavaScript and TypeScript. +local js_ts = { + s( + { trig = 'log', dscr = 'console.log' }, + { t('console.log('), i(1, 'value'), t(');') } + ), +} + +snippets.js = js_ts + +snippets.markdown = { + s( + { trig = 'frontmatter', dscr = 'Document frontmatter' }, + { t({'---', 'tags: '}), i(1, 'value'), t({'', '---', ''}), i(0) } + ) +} + +snippets.php = { + s( + { trig = 'test', dscr = 'Test block' }, + { + t({ "/* @test **/", "" }), + t("public function "), + c(1, { t "test", t "it", t "should" }), -- The test method name prefix. + i(2), -- The test method name. + t({ "(): void {", "" }), + t(" "), i(0), -- The method body. + t({ "", "}" }) + } + ), +} + +snippets.typescript = js_ts +snippets.vue = js_ts + +luasnip.snippets = snippets + +vim.cmd [[ + imap luasnip#expand_or_jumpable() ? 'luasnip-expand-or-jump' : '' + inoremap lua require('luasnip').jump(-1) + imap luasnip#choice_active() ? 'luasnip-next-choice' : '' + snoremap lua require('luasnip').jump(1) + snoremap lua require('luasnip').jump(-1) +]] diff --git a/roles/neovim/files/lua/opdavies/options.lua b/roles/neovim/files/lua/opdavies/options.lua index 6acc43a..f7925d1 100644 --- a/roles/neovim/files/lua/opdavies/options.lua +++ b/roles/neovim/files/lua/opdavies/options.lua @@ -114,6 +114,8 @@ M.setup = function() set_autocmd() set_filetypes() set_highlights() + + vim.g.snippets = "luasnip" end return M