From: Armaan Bhojwani Date: Sun, 21 Nov 2021 21:00:07 +0000 (-0500) Subject: nvim: initial LSP config X-Git-Url: https://git.armaanb.net/?p=dotfiles.git;a=commitdiff_plain;h=a4c07cbe1098e7896d3e072af0021772d4f8f096 nvim: initial LSP config --- diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index b59e693..72dfff1 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -9,12 +9,13 @@ let g:polyglot_disabled = ['sensible'] " Plugins call plug#begin() -Plug 'ackyshake/vimcompletesme' " Simple autocompletion Plug 'ap/vim-css-color' " Highlight css colors Plug 'ctrlpvim/ctrlp.vim' " Fuzzy file finding Plug 'editorconfig/editorconfig-vim' " Follow editorconfig Plug 'godlygeek/tabular' " Line things up +Plug 'lifepillar/vim-mucomplete' " Simple autocompletion Plug 'meain/hima-vim' " Nice color scheme +Plug 'neovim/nvim-lspconfig' " LSP configurations Plug 'sheerun/vim-polyglot' " Language pack Plug 'tpope/vim-commentary' " Easily comment Plug 'tpope/vim-rsi' " Readline bindings @@ -35,3 +36,52 @@ nnoremap " Clear search highlighting nnoremap :noh + +" Completion +set completeopt+=menuone +set completeopt-=preview +set shortmess+=c + +" LSP +lua << EOF +local lspconfig = require('lspconfig') + +local on_attach = function(client, bufnr) + -- Shorthand + 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 + + -- Use omnifunc for completion + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Keybindings + local opts = { noremap=true, silent=true } + buf_set_keymap('n', 'gD', + 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', + 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'gr', + 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'K', + 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'rn', + 'lua vim.lsp.buf.rename()', opts) + buf_set_keymap('n', '[d', + 'lua vim.lsp.diagnostic.goto_prev()', opts) + buf_set_keymap('n', ']d', + 'lua vim.lsp.diagnostic.goto_next()', opts) +end + +-- Add servers +local servers = { + 'clangd' +} + +for _, server in ipairs(servers) do + lspconfig[server].setup {on_attach = on_attach} +end +EOF + +set signcolumn=no