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')
|
||||
|
||||
require 'lsp'
|
||||
require 'completion'
|
||||
require 'treesitter'
|
||||
require 'debugger'
|
||||
require 'term'
|
||||
require 'settings'
|
||||
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', '<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', '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'
|
||||
|
||||
|
||||
|
@ -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
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