]> git.armaanb.net Git - dotfiles.git/commitdiff
nvim: initial LSP config
authorArmaan Bhojwani <me@armaanb.net>
Sun, 21 Nov 2021 21:00:07 +0000 (16:00 -0500)
committerArmaan Bhojwani <me@armaanb.net>
Sun, 21 Nov 2021 22:26:13 +0000 (17:26 -0500)
.config/nvim/init.vim

index b59e69344996dc56ae8f4354fb4523d85f497430..72dfff1b6aae227f006172eaf43b3add6b67c9da 100644 (file)
@@ -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 <C-h> <C-w><C-h>
 
 " Clear search highlighting
 nnoremap <silent> <C-c> :noh<CR>
+
+" 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',
+               '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
+       buf_set_keymap('n', 'gd',
+               '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
+       buf_set_keymap('n', 'gr',
+               '<cmd>lua vim.lsp.buf.references()<CR>', opts)
+       buf_set_keymap('n', 'K',
+               '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
+       buf_set_keymap('n', '<space>rn',
+               '<cmd>lua vim.lsp.buf.rename()<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)
+end
+
+-- Add servers
+local servers = {
+       'clangd'
+}
+
+for _, server in ipairs(servers) do
+       lspconfig[server].setup {on_attach = on_attach}
+end
+EOF
+
+set signcolumn=no