-- neovim/neovim-lspconfig local function on_attach(client, bufnr) local opts = { silent = true, noremap = true, } local function buf_nmap(mapping, cmd) vim.api.nvim_buf_set_keymap(bufnr, "n", mapping, cmd, opts) end -- Jump to definition buf_nmap("gd", "lua vim.lsp.buf.definition()") -- Format current buffer on write vim.api.nvim_command([[autocmd BufWritePre lua vim.lsp.buf.formatting_seq_sync()]]) -- Show diagnostics for current line buf_nmap("dd", "lua vim.lsp.diagnostic.show_line_diagnostics()") -- Jump between diagnostic messages buf_nmap("dj", "lua vim.lsp.diagnostic.goto_next()") buf_nmap("dk", "lua vim.lsp.diagnostic.goto_previous()") -- Rename symbol under cursor buf_nmap("dr", "lua vim.lsp.buf.rename()") -- Show hover info buf_nmap("df", "lua vim.lsp.buf.hover()") end -- Comes with clang require'lspconfig'.clangd.setup{on_attach = on_attach} -- NPM: dockerfile-language-server-nodejs require'lspconfig'.dockerls.setup{} -- Pacman: haskell-language-server -- AUR: haskell-language-server-bin -- GH: https://github.com/haskell/haskell-language-server require'lspconfig'.hls.setup{ on_attach = on_attach, settings = { haskell = { formattingProvider = "stylish-haskell" } } } -- Pacman: rust-analyzer -- GH: https://github.com/rust-analyzer/rust-analyzer require'lspconfig'.rust_analyzer.setup{on_attach = on_attach} -- Installed using R shell: -- `install.packages('languageserver')` -- GH: https://github.com/REditorSupport/languageserver require'lspconfig'.r_language_server.setup{}