From 97629dca2d464f3ef7ab8f17b8cb8df746e2a3fe Mon Sep 17 00:00:00 2001 From: Thies Lennart Alff Date: Thu, 2 Nov 2023 13:47:26 +0100 Subject: [PATCH] added snippets for latex! --- .config/nvim/after/plugin/luasnip.lua | 6 ++ .config/nvim/lua/plugins/cmp.lua | 5 ++ .config/nvim/lua/plugins/init.lua | 1 + .config/nvim/lua/plugins/lsp/init.lua | 12 +-- .config/nvim/snippets/tex/environments.lua | 88 ++++++++++++++++++++++ 5 files changed, 106 insertions(+), 6 deletions(-) create mode 100644 .config/nvim/after/plugin/luasnip.lua create mode 100644 .config/nvim/snippets/tex/environments.lua diff --git a/.config/nvim/after/plugin/luasnip.lua b/.config/nvim/after/plugin/luasnip.lua new file mode 100644 index 0000000..6f9b2b6 --- /dev/null +++ b/.config/nvim/after/plugin/luasnip.lua @@ -0,0 +1,6 @@ +require('luasnip').config.set_config({ + enable_autosnippets = true, + store_selection_keys = '', +}) + +require('luasnip.loaders.from_lua').load({paths = {vim.fn.stdpath('config') .. '/snippets'}}) diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua index 1b1a55c..0054866 100644 --- a/.config/nvim/lua/plugins/cmp.lua +++ b/.config/nvim/lua/plugins/cmp.lua @@ -16,11 +16,14 @@ return { sources = { { name = 'nvim_lsp' }, { name = 'nvim_lua' }, + { name = 'luasnip' }, }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() + elseif require('luasnip').expand_or_jumpable() then + require('luasnip').expand_or_jump() else fallback() end @@ -28,6 +31,8 @@ return { [''] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() + elseif require('luasnip').jumpable(-1) then + require('luasnip').jump(-1) else fallback() end diff --git a/.config/nvim/lua/plugins/init.lua b/.config/nvim/lua/plugins/init.lua index 6d1910e..9eca60a 100644 --- a/.config/nvim/lua/plugins/init.lua +++ b/.config/nvim/lua/plugins/init.lua @@ -5,6 +5,7 @@ return { version = "v2.*", build = 'make install_jsregexp', }, + { 'saadparwaiz1/cmp_luasnip' }, 'lewis6991/gitsigns.nvim', { 'nvim-telescope/telescope.nvim', diff --git a/.config/nvim/lua/plugins/lsp/init.lua b/.config/nvim/lua/plugins/lsp/init.lua index dc55c72..119eb5c 100644 --- a/.config/nvim/lua/plugins/lsp/init.lua +++ b/.config/nvim/lua/plugins/lsp/init.lua @@ -7,12 +7,12 @@ -- require('cmp_nvim_lsp').default_capabilities() --) -vim.api.nvim_create_autocmd('FileType', { - pattern = 'tex', - callback = function() - require('cmp').setup.buffer { sources = {{ name = 'omni' }} } - end, -}) +--vim.api.nvim_create_autocmd('FileType', { +-- pattern = 'tex', +-- callback = function() +-- require('cmp').setup.buffer { sources = {{ name = 'omni' }} } +-- end, +--}) vim.api.nvim_create_autocmd('LspAttach', { desc = 'LSP actions', diff --git a/.config/nvim/snippets/tex/environments.lua b/.config/nvim/snippets/tex/environments.lua new file mode 100644 index 0000000..c610bd3 --- /dev/null +++ b/.config/nvim/snippets/tex/environments.lua @@ -0,0 +1,88 @@ +local ls = require('luasnip') +local s = ls.snippet +local sn = ls.snippet_node +local t = ls.text_node +local i = ls.insert_node +local f = ls.function_node +local d = ls.dynamic_node +local fmt = require('luasnip.extras.fmt').fmt +local fmta = require('luasnip.extras.fmt').fmta +local rep = require('luasnip.extras').rep + +return { + s( + { + trig = 'env', + name = 'Environment', + dscr = 'Creates generic \\begin{} \\end{} environment', + }, + fmta( + [[ + \begin{<>} + <> + \end{<>} + ]], + { + i(1), + i(2), + rep(1), + } + ) + ), + s( + { + trig = 'frame', + name = 'Beamer Frame', + dscr = 'Frame environment for beamer slides', + }, + fmta( + [[ + \begin{frame} + \frametitle{<>} + <> + \end{frame} + ]], + { + i(1), + i(2), + } + ) + ), + s( + { + trig = 'frame-fragile', + name = 'Frame Fragile', + dscr = 'Required for verbatim content like code listings.', + }, + fmta( + [[ + \begin{frame}[fragile] + \frametitle{<>} + <> + \end{frame} + ]], + { + i(1), + i(2), + } + ) + ), + s( + { + trig = 'noindent', + name = 'No Indent', + dscr = 'Add no indent instructin for latexindent. Useful for code-blocks.' + }, + fmta( + [[ + % \begin{noindent} + <> + % \end{noindent} + ]] + , + { + i(1), + } + ) + ), +}