Add cmp for completion support, luasnip for snippets and better syntax highlighting using treesitter
This commit is contained in:
parent
f43691093d
commit
fbdcb2f6ac
3
init.lua
3
init.lua
@ -3,7 +3,10 @@ require 'plugins'
|
|||||||
vim.cmd('colorscheme space-vim-dark')
|
vim.cmd('colorscheme space-vim-dark')
|
||||||
|
|
||||||
require 'lsp'
|
require 'lsp'
|
||||||
|
require 'completion'
|
||||||
|
require 'treesitter'
|
||||||
require 'debugger'
|
require 'debugger'
|
||||||
require 'term'
|
require 'term'
|
||||||
require 'settings'
|
require 'settings'
|
||||||
require 'keys'
|
require 'keys'
|
||||||
|
|
||||||
|
44
lua/completion.lua
Normal file
44
lua/completion.lua
Normal 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' },
|
||||||
|
},
|
||||||
|
}
|
12
lua/keys.lua
12
lua/keys.lua
@ -9,3 +9,15 @@ key('', '<C-n>', ':NERDTreeToggle<CR>', {})
|
|||||||
|
|
||||||
key('i', '<TAB>', 'pumvisible() ? "<C-n>" : "<Tab>"', {expr = true, silent = true})
|
key('i', '<TAB>', 'pumvisible() ? "<C-n>" : "<Tab>"', {expr = true, silent = true})
|
||||||
key('i', '<S-TAB>', 'pumvisible() ? "<C-p>" : "<S-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
|
||||||
|
)
|
||||||
|
|
||||||
|
13
lua/lsp.lua
13
lua/lsp.lua
@ -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', 'ff', ':lua vim.lsp.buf.formatting()<CR>', opts)
|
||||||
buf_set_keymap('n', 'gn', '<cmd>lua vim.lsp.buf.rename()<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
|
-- Set highlight colors
|
||||||
local highlights = {
|
local highlights = {
|
||||||
@ -49,11 +49,16 @@ local on_attach = function(client, bufnr)
|
|||||||
)
|
)
|
||||||
end
|
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()
|
local servers = require'lspinstall'.installed_servers()
|
||||||
for _, lsp in ipairs(servers) do
|
for _, lsp in ipairs(servers) do
|
||||||
local config = {
|
local config = {
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
flags = {debounce_text_changes = 150}
|
flags = {debounce_text_changes = 150}
|
||||||
}
|
}
|
||||||
if lsp == "lua" then
|
if lsp == "lua" then
|
||||||
@ -61,3 +66,9 @@ for _, lsp in ipairs(servers) do
|
|||||||
end
|
end
|
||||||
nvim_lsp[lsp].setup(config)
|
nvim_lsp[lsp].setup(config)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Set completeopt to have a better completion experience
|
||||||
|
vim.o.completeopt = 'menuone,noselect'
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,6 +31,11 @@ return require('packer').startup({function()
|
|||||||
use 'nvim-lua/completion-nvim'
|
use 'nvim-lua/completion-nvim'
|
||||||
use 'nvim-lua/popup.nvim'
|
use 'nvim-lua/popup.nvim'
|
||||||
use 'nvim-lua/plenary.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 --
|
-- Debugger --
|
||||||
use 'mfussenegger/nvim-dap'
|
use 'mfussenegger/nvim-dap'
|
||||||
end,
|
end,
|
||||||
|
17
lua/treesitter.lua
Normal file
17
lua/treesitter.lua
Normal 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,
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user