use luasnip in cmp and telescope

This commit is contained in:
Vladan Popovic 2024-03-20 01:12:42 +01:00
parent 97128cf6e7
commit 07d13e67ae
4 changed files with 37 additions and 15 deletions

View file

@ -2,7 +2,6 @@
local utils = require('utils')
vim.cmd [[set shortmess+=c]]
utils.opt('o', 'completeopt', 'menuone,noselect')
local cmp = require('cmp')
@ -50,12 +49,12 @@ cmp.setup({
end
},
snippet = {
-- REQUIRED - you must specify a snippet engine
expand = function(args)
vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
-- require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
-- require('snippy').expand_snippet(args.body) -- For `snippy` users.
-- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
local luasnip = require("luasnip")
if not luasnip then
return
end
luasnip.lsp_expand(args.body)
end,
},
window = {
@ -74,10 +73,7 @@ cmp.setup({
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'vsnip' }, -- For vsnip users.
-- { name = 'luasnip' }, -- For luasnip users.
-- { name = 'ultisnips' }, -- For ultisnips users.
-- { name = 'snippy' }, -- For snippy users.
{ name = 'luasnip' }, -- For luasnip users.
}, {
{ name = 'buffer' },
})

View file

@ -32,10 +32,15 @@ require('packer').startup(function()
{ 'hrsh7th/cmp-buffer' },
{ 'hrsh7th/cmp-path' },
{ 'hrsh7th/cmp-cmdline' },
{ 'hrsh7th/vim-vsnip' },
{ 'hrsh7th/vim-vsnip-integ' },
}
}
use { 'L3MON4D3/LuaSnip' }
use { "rafamadriz/friendly-snippets" }
use { 'saadparwaiz1/cmp_luasnip' }
use {
"benfowler/telescope-luasnip.nvim",
module = "telescope._extensions.luasnip", -- if you wish to lazy-load
}
-- Statusbar, colors and syntax
use { 'vim-airline/vim-airline' }
@ -46,7 +51,7 @@ require('packer').startup(function()
use { 'weilbith/nvim-code-action-menu', cmd = 'CodeActionMenu' }
use { 'folke/trouble.nvim' } -- lsp diagnostics
-- Languages
-- Languages that need a plugin to extend default lsp
use { 'cespare/vim-toml' }
use { 'gleam-lang/gleam.vim' }
use { 'rust-lang/rust.vim' }
@ -71,6 +76,7 @@ require('packer').startup(function()
end)
require('plugins.luasnip')
require('plugins.cmp')
require('plugins.gitsigns')
require('plugins.neogit')

5
lua/plugins/luasnip.lua Normal file
View file

@ -0,0 +1,5 @@
local languages = {
'python',
'rust',
}
require('luasnip.loaders.from_vscode').load({ include = languages }) -- Load only python snippets

View file

@ -2,6 +2,9 @@ local telescope = require('telescope')
local actions = require('telescope.actions')
local builtin = require('telescope.builtin')
local luasnip = require('luasnip')
local lst = telescope.extensions.luasnip
telescope.setup {
defaults = {
layout_strategy = "vertical",
@ -31,10 +34,22 @@ telescope.setup {
previewer = false,
},
},
extensions = {
luasnip = {
search = function(entry)
return lst.filter_null(entry.context.trigger) .. " " ..
lst.filter_null(entry.context.name) .. " " ..
entry.ft .. " " ..
lst.filter_description(entry.context.name, entry.context.description) ..
lst.get_docstring(luasnip, entry.ft, entry.context)[1]
end
},
}
}
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
vim.keymap.set('n', '<leader>fg', builtin.git_files, {})
vim.keymap.set('n', '<leader>fs', telescope.extensions.luasnip.luasnip, {})
vim.keymap.set('n', '<leader>gg', builtin.live_grep, {})
vim.keymap.set('n', '<leader>bb', builtin.buffers, {})
vim.keymap.set('n', '<leader>hh', builtin.help_tags, {})