feat(nvim): snippets
This commit is contained in:
parent
d19839a894
commit
4f0a5c1224
@ -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,
|
||||||
|
|||||||
@ -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"
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|||||||
@ -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 = {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user