feat(nvim): snippets

This commit is contained in:
TheK4n 2023-01-30 03:37:07 +03:00
parent d19839a894
commit 4f0a5c1224
3 changed files with 35 additions and 4 deletions

View File

@ -3,6 +3,11 @@ local status, cmp = pcall(require, "cmp")
if (not status) then return end if (not status) then return end
local function has_words_before()
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
-- nvim-cmp setup -- nvim-cmp setup
local cmp = require 'cmp' local cmp = require 'cmp'
cmp.setup { cmp.setup {
@ -15,11 +20,18 @@ cmp.setup {
end, end,
}, },
mapping = { mapping = {
['<C-p>'] = cmp.mapping.select_prev_item(), ['<Tab>'] = cmp.mapping(function(fallback)
['<C-n>'] = cmp.mapping.select_next_item(), if cmp.visible() then
cmp.select_next_item()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { "i", "s" }),
['<S-Tab>'] = cmp.mapping.select_prev_item(),
['<C-d>'] = cmp.mapping.scroll_docs(-4), ['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4), ['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.close(), ['<C-e>'] = cmp.mapping.close(),
['<CR>'] = cmp.mapping.confirm { ['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace, behavior = cmp.ConfirmBehavior.Replace,

View File

@ -2,3 +2,18 @@
local status, luasnip = pcall(require, "luasnip") local status, luasnip = pcall(require, "luasnip")
if (not status) then return end if (not status) then return end
luasnip.add_snippets(nil, {
all = {
luasnip.snippet({
trig = "ifmain",
namr = "ifmain",
dscr = "If python file run as main (not import)",
}, {
luasnip.text_node({
"if __name__ == '__main__':",
"\t"
})
})
}
})

View File

@ -48,7 +48,11 @@ return require('packer').startup(function(use)
use 'hrsh7th/nvim-cmp' use 'hrsh7th/nvim-cmp'
use 'hrsh7th/cmp-nvim-lsp' use 'hrsh7th/cmp-nvim-lsp'
use 'saadparwaiz1/cmp_luasnip' use 'saadparwaiz1/cmp_luasnip'
use 'L3MON4D3/LuaSnip' use {
'L3MON4D3/LuaSnip',
after = 'nvim-cmp',
}
use { use {
'williamboman/mason.nvim', 'williamboman/mason.nvim',
requires = { requires = {