diff options
Diffstat (limited to 'nvim')
| -rw-r--r-- | nvim/init.vim | 14 | ||||
| -rw-r--r-- | nvim/lua/lsp.lua | 45 | 
2 files changed, 39 insertions, 20 deletions
| diff --git a/nvim/init.vim b/nvim/init.vim index a886b21..a0d4d6f 100644 --- a/nvim/init.vim +++ b/nvim/init.vim @@ -5,7 +5,8 @@ Plug 'rust-lang/rust.vim'  Plug 'nvim-lua/plenary.nvim'  Plug 'lewis6991/gitsigns.nvim'  "Plug 'vim-airline/vim-airline' -Plug 'shadmansaleh/lualine.nvim' +Plug 'nvim-lualine/lualine.nvim' +Plug 'kyazdani42/nvim-web-devicons'  Plug 'junegunn/fzf', {'dir': '~/.fzf', 'do': './install --all'} | Plug 'junegunn/fzf.vim' " fuzzy finder  Plug 'luochen1990/rainbow' " color parentheses  Plug 'dense-analysis/ale' " checker syntax @@ -27,8 +28,13 @@ Plug 'ellisonleao/gruvbox.nvim'  " LSP  if has('nvim')      Plug 'neovim/nvim-lspconfig' -    Plug 'nvim-lua/lsp_extensions.nvim' -    Plug 'nvim-lua/completion-nvim' +    Plug 'hrsh7th/cmp-nvim-lsp' +    Plug 'hrsh7th/cmp-buffer' +    Plug 'hrsh7th/nvim-cmp' + +    " For vsnip users. +    Plug 'hrsh7th/cmp-vsnip' +    Plug 'hrsh7th/vim-vsnip'  endif @@ -38,6 +44,8 @@ syntax on  set runtimepath+=~/.vim-plugins/LanguageClient-neovim +set completeopt=menu,menuone,noselect +  set clipboard=unnamed  set mouse=a " click with mouse  set wildmenu diff --git a/nvim/lua/lsp.lua b/nvim/lua/lsp.lua index 1a28857..f881977 100644 --- a/nvim/lua/lsp.lua +++ b/nvim/lua/lsp.lua @@ -1,14 +1,34 @@  local nvim_lsp = require('lspconfig') +local cmp = require'cmp' + +cmp.setup({ +  sources = { +    {name = 'buffer'}, +    {name = 'nvim_lsp'}, +    {name = 'vsnip'}, +  }, +  snippet = { +    expand = function(args) +      vim.fn["vsnip#anonymous"](args.body) +    end, +  }, +  mapping = { +    ['<C-Space>'] = cmp.mapping.complete(), +    ['<C-e>'] = cmp.mapping.close(), +    ['<CR>'] = cmp.mapping.confirm({ select = true }), +  }, +  documentation = { +    border = 'rounded', +  }, +})  -- Use an on_attach function to only map the following keys  -- after the language server attaches to the current buffer +  local on_attach = function(client, bufnr)    local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end    local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end -  -- Enable completion triggered by <c-x><c-o> -  buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') -    -- Mappings.    local opts = { noremap=true, silent=true } @@ -17,29 +37,20 @@ local on_attach = function(client, bufnr)    buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)    buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)    buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts) -  buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts) -  buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts) -  buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts) -  buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts) -  buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts) -  buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) -  buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)    buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)    buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)    buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)    buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts) -  buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts) -  buf_set_keymap('n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts) - -  -- Forward to other plugins -  require'completion'.on_attach(client)  end --- Use a loop to conveniently call 'setup' on multiple servers and +-- Setup lspconfig.  +  +--- Use a loop to conveniently call 'setup' on multiple servers and  -- map buffer local keybindings when the language server attaches -local servers = { 'pyright', 'rust_analyzer' } +local servers = { 'jedi_language_server', 'rust_analyzer', 'tsserver', 'clangd' }  for _, lsp in ipairs(servers) do    nvim_lsp[lsp].setup { +    capabilities = capabilities,      on_attach = on_attach,      flags = {        debounce_text_changes = 150, | 
