Add cmp for completion support, luasnip for snippets and better syntax highlighting using treesitter

This commit is contained in:
Patrick Michl 2021-10-11 11:38:44 +02:00
parent f43691093d
commit fbdcb2f6ac
6 changed files with 93 additions and 1 deletions

View File

@ -3,7 +3,10 @@ require 'plugins'
vim.cmd('colorscheme space-vim-dark')
require 'lsp'
require 'completion'
require 'treesitter'
require 'debugger'
require 'term'
require 'settings'
require 'keys'

44
lua/completion.lua Normal file
View File

@ -0,0 +1,44 @@
local luasnip = require 'luasnip'
local cmp = require 'cmp'
cmp.setup {
snippet = {
expand = function(args)
require('luasnip').lsp_expand(args.body)
end,
},
mapping = {
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.close(),
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
['<Tab>'] = function(fallback)
if vim.fn.pumvisible() == 1 then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<C-n>', true, true, true), 'n')
elseif luasnip.expand_or_jumpable() then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<Plug>luasnip-expand-or-jump', true, true, true), '')
else
fallback()
end
end,
['<S-Tab>'] = function(fallback)
if vim.fn.pumvisible() == 1 then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<C-p>', true, true, true), 'n')
elseif luasnip.jumpable(-1) then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<Plug>luasnip-jump-prev', true, true, true), '')
else
fallback()
end
end,
},
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
}

View File

@ -9,3 +9,15 @@ key('', '<C-n>', ':NERDTreeToggle<CR>', {})
key('i', '<TAB>', 'pumvisible() ? "<C-n>" : "<Tab>"', {expr = true, silent = true})
key('i', '<S-TAB>', 'pumvisible() ? "<C-p>" : "<S-Tab>"', {expr = true, silent = true})
-- Highlight on yank
vim.api.nvim_exec(
[[
augroup YankHighlight
autocmd!
autocmd TextYankPost * silent! lua vim.highlight.on_yank()
augroup end
]],
false
)

View File

@ -23,7 +23,7 @@ local on_attach = function(client, bufnr)
buf_set_keymap('n', 'ff', ':lua vim.lsp.buf.formatting()<CR>', opts)
buf_set_keymap('n', 'gn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
require'completion'.on_attach(client)
--require'completion'.on_attach(client)
-- Set highlight colors
local highlights = {
@ -49,11 +49,16 @@ local on_attach = function(client, bufnr)
)
end
-- nvim-cmp supports additional completion capabilities
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities)
local servers = require'lspinstall'.installed_servers()
for _, lsp in ipairs(servers) do
local config = {
on_attach = on_attach,
capabilities = capabilities,
flags = {debounce_text_changes = 150}
}
if lsp == "lua" then
@ -61,3 +66,9 @@ for _, lsp in ipairs(servers) do
end
nvim_lsp[lsp].setup(config)
end
-- Set completeopt to have a better completion experience
vim.o.completeopt = 'menuone,noselect'

View File

@ -31,6 +31,11 @@ return require('packer').startup({function()
use 'nvim-lua/completion-nvim'
use 'nvim-lua/popup.nvim'
use 'nvim-lua/plenary.nvim'
use 'hrsh7th/nvim-cmp' -- Autocompletion plugin
use 'hrsh7th/cmp-nvim-lsp'
use 'saadparwaiz1/cmp_luasnip'
use 'L3MON4D3/LuaSnip' -- Snippets plugin
use 'nvim-treesitter/nvim-treesitter'
-- Debugger --
use 'mfussenegger/nvim-dap'
end,

17
lua/treesitter.lua Normal file
View File

@ -0,0 +1,17 @@
require('nvim-treesitter.configs').setup {
highlight = {
enable = true, -- false will disable the whole extension
},
incremental_selection = {
enable = false,
keymaps = {
init_selection = 'gnn',
node_incremental = 'grn',
scope_incremental = 'grc',
node_decremental = 'grm',
},
},
indent = {
enable = true,
}
}