Преглед изворни кода

task: fix nvim-cmp autocomplete with integration to nvim-lsp

Douglas A пре 3 година
родитељ
комит
baeae77f7c
2 измењених фајлова са 53 додато и 74 уклоњено
  1. 3 74
      nvim/init.vim
  2. 50 0
      nvim/lua/init.lua

+ 3 - 74
nvim/init.vim

@@ -6,16 +6,16 @@ call plug#begin('~/.vim/plugged')
 	
 	Plug 'neovim/nvim-lspconfig'
 
+	Plug 'hrsh7th/nvim-cmp'
 	Plug 'neovim/nvim-lspconfig'
     Plug 'hrsh7th/cmp-nvim-lsp'
 	Plug 'hrsh7th/cmp-buffer'
 	Plug 'hrsh7th/cmp-path'
 	Plug 'hrsh7th/cmp-cmdline'
-	Plug 'hrsh7th/nvim-cmp'
 
 	" For vsnip users.
-	Plug 'hrsh7th/cmp-vsnip'
-	Plug 'hrsh7th/vim-vsnip'
+    Plug 'saadparwaiz1/cmp_luasnip'
+	""Plug 'hrsh7th/vim-vsnip'
 
     Plug 'chriskempson/base16-vim'
 	Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}  " We recommend updating the parsers on update
@@ -81,74 +81,3 @@ nnoremap <leader>fg <cmd>Telescope live_grep<cr>
 nnoremap <leader>fb <cmd>Telescope buffers<cr>
 nnoremap <leader>fh <cmd>Telescope help_tags<cr>
 
-
-" nvim-cmp configurations
-
-lua <<EOF
-  -- Setup nvim-cmp.
-  local cmp = require'cmp'
-
-  cmp.setup({
-    snippet = {
-      -- REQUIRED - you must specify a snippet engine
-      expand = function(args)
-        vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
-      end,
-    },
-    mapping = {
-      ['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }),
-      ['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }),
-      ['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }),
-      ['<C-y>'] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
-      ['<C-e>'] = cmp.mapping({
-        i = cmp.mapping.abort(),
-        c = cmp.mapping.close(),
-      }),
-      ['<CR>'] = cmp.mapping.confirm({ select = true }),
-    },
-    sources = cmp.config.sources({
-      { name = 'nvim_lsp' },
-      { name = 'vsnip' }, -- For vsnip users.
-    }, {
-      { name = 'buffer' },
-    })
-  })
-
-  -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
-  cmp.setup.cmdline('/', {
-    sources = {
-      { name = 'buffer' }
-    }
-  })
-
-  -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
-  cmp.setup.cmdline(':', {
-    sources = cmp.config.sources({
-      { name = 'path' }
-    }, {
-      { name = 'cmdline' }
-    })
-  })
-
-  -- Setup lspconfig.
-  local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities())
-  -- Replace <YOUR_LSP_SERVER> with each lsp server you've enabled.
-  
-  local function config(_config)
-	  return vim.tbl_deep_extend("force", {
-	    capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()),
-	  }, _config or {})
-  end
-
-  require('lspconfig')['gopls'].setup {config()}
-  require('lspconfig')['rust_analyzer'].setup {config()}
-  require('lspconfig')['bashls'].setup{config()}
-  require('lspconfig')['jsonls'].setup{config()}
-  require('lspconfig')['clangd'].setup{config()}
-
-  require('lspconfig')['jedi_language_server'].setup{config()}
-
-
-
-EOF
-

+ 50 - 0
nvim/lua/init.lua

@@ -18,3 +18,53 @@ vim.api.nvim_exec(
 ]],
 false
 )
+
+local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities())
+local cmp = require'cmp'
+
+cmp.setup({
+snippet = {
+-- REQUIRED - you must specify a snippet engine
+expand = function(args)
+vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
+require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
+-- require('snippy').expand_snippet(args.body) -- For `snippy` users.
+-- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
+end,
+},
+mapping = {
+['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }),
+['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }),
+['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }),
+['<C-y>'] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
+['<C-e>'] = cmp.mapping({
+i = cmp.mapping.abort(),
+c = cmp.mapping.close(),
+}),
+['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
+},
+sources = cmp.config.sources({
+{ name = 'nvim_lsp' },
+--{ name = 'vsnip' }, -- For vsnip users.
+{ name = 'luasnip' }, -- For luasnip users.
+-- { name = 'ultisnips' }, -- For ultisnips users.
+-- { name = 'snippy' }, -- For snippy users.
+}, {
+{ name = 'buffer' },
+})
+})
+-- Setup lspconfig.
+-- Replace <YOUR_LSP_SERVER> with each lsp server you've enabled.
+require('lspconfig')['gopls'].setup {
+	capabilities = capabilities
+}
+
+require('lspconfig')['rust_analyzer'].setup {
+	capabilities = capabilities
+}
+
+require('lspconfig')['clangd'].setup {
+	capabilities = capabilities
+}
+
+