diff --git a/lua/keymappings.lua b/lua/keymappings.lua index 13fc70e..e941744 100644 --- a/lua/keymappings.lua +++ b/lua/keymappings.lua @@ -79,7 +79,7 @@ utils.map('n', 'l', 'Telescope live_grep') utils.map('n', 'r', 'Telescope lsp_references') utils.map('n', '', 'Telescope lsp_document_symbols') utils.map('n', '', 'Telescope lsp_document_symbols') -utils.map('n', 'v', 'Telescope lsp_document_diagnostics') +utils.map('n', 'v', 'Telescope diagnostics bufnr=0') utils.map('n', '', 'Telescope neoclip') utils.map('n', 'j', 'Telescope jumplist') diff --git a/lua/my_lspinstall.lua b/lua/my_lspinstall.lua index 75f59b6..7dd0d40 100644 --- a/lua/my_lspinstall.lua +++ b/lua/my_lspinstall.lua @@ -42,7 +42,7 @@ local on_attach = function(client, bufnr) utils.map('n', 'r', 'Telescope lsp_references') utils.map('n', '', 'Telescope lsp_document_symbols') utils.map('n', '', 'Telescope lsp_document_symbols') - utils.map('n', 'v', 'Telescope lsp_document_diagnostics') + utils.map('n', 'v', 'Telescope diagnostics bufnr=0') utils.map('n', '', ':ClangdSwitchSourceHeader', opts) -- Set some keybinds conditional on server capabilities diff --git a/lua/mylsp.lua b/lua/mylsp.lua deleted file mode 100644 index e2c3992..0000000 --- a/lua/mylsp.lua +++ /dev/null @@ -1,131 +0,0 @@ -local nvim_lsp = require 'lspconfig' -local utils = require('utils') - -local system_name -if vim.fn.has("mac") == 1 then - system_name = "macOS" -elseif vim.fn.has("unix") == 1 then - system_name = "Linux" -elseif vim.fn.has('win32') == 1 then - system_name = "Windows" -else - print("Unsupported system for sumneko") -end - -local sumneko_root_path = 'D:/tmp/lua-language-server' -local sumneko_binary = sumneko_root_path.."/bin/"..system_name.."/lua-language-server" --- We use the default settings for ccls and pylsp: the option table can stay empty --- nvim_lsp.ccls.setup {} -nvim_lsp.pyright.setup{} -nvim_lsp.clangd.setup{} -nvim_lsp.cmake.setup{} -nvim_lsp.jsonls.setup{} -nvim_lsp.groovyls.setup{ - -- Unix - cmd = { "java", "-jar", "D:/tmp/groovy-language-server/build/libs/groovy-language-server-all.jar" } -} - --- Add additional capabilities supported by nvim-cmp -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities.textDocument.completion.completionItem.documentationFormat = { 'markdown', 'plaintext' } -capabilities.textDocument.completion.completionItem.snippetSupport = true -capabilities.textDocument.completion.completionItem.preselectSupport = true -capabilities.textDocument.completion.completionItem.insertReplaceSupport = true -capabilities.textDocument.completion.completionItem.labelDetailsSupport = true -capabilities.textDocument.completion.completionItem.deprecatedSupport = true -capabilities.textDocument.completion.completionItem.commitCharactersSupport = true -capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } } -capabilities.textDocument.completion.completionItem.resolveSupport = { - properties = { - 'documentation', - 'detail', - 'additionalTextEdits', - }, -} - -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 - - buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings. - local opts = { noremap=true, silent=true } - utils.map('n', ',', 'lua vim.lsp.diagnostic.goto_prev()', opts) - utils.map('n', ';', 'lua vim.lsp.diagnostic.goto_next()', opts) - utils.map('n', 'a', 'Telescope lsp_code_actions', opts) - utils.map('n', 'd', 'lua vim.lsp.buf.definition()', opts) - utils.map('n', 'e', 'lua vim.lsp.buf.declaration()', opts) - utils.map('n', 'h', 'lua vim.lsp.buf.hover()', opts) - utils.map('n', 'c', 'lua vim.lsp.buf.outgoing_calls()', opts) - utils.map('n', 'C', 'lua vim.lsp.buf.incoming_calls()', opts) - utils.map('n', 'm', 'lua vim.lsp.buf.rename()', opts) - -- utils.map('n', 'r', 'lua vim.lsp.buf.references()') - utils.map('n', 's', 'lua vim.lsp.buf.document_symbol()', opts) - utils.map('n', '', 'Telescope lsp_dynamic_workspace_symbols', opts) - utils.map('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - utils.map('n', '', 'lua vim.lsp.buf.signature_help()', opts) - utils.map('n', 'r', 'Telescope lsp_references') - utils.map('n', '', 'Telescope lsp_document_symbols') - utils.map('n', '', 'Telescope lsp_document_symbols') - utils.map('n', 'v', 'Telescope lsp_document_diagnostics') - utils.map('n', '', ':ClangdSwitchSourceHeader', opts) - - -- Set some keybinds conditional on server capabilities - if client.resolved_capabilities.document_formatting then - utils.map('n', 'f', 'lua vim.lsp.buf.formatting()', opts) - end - if client.resolved_capabilities.document_range_formatting then - utils.map('v', 'f', 'lua vim.lsp.buf.range_formatting()', opts) - end - - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - vim.api.nvim_exec([[ - hi LspReferenceRead cterm=bold ctermbg=red guibg=DarkGreen - hi LspReferenceText cterm=bold ctermbg=Black guibg=DarkYellow guifg=Black - hi LspReferenceWrite cterm=bold ctermbg=red guibg=DarkRed - augroup lsp_document_highlight - autocmd! * - autocmd CursorHold lua vim.lsp.buf.document_highlight() - autocmd CursorHoldI lua vim.lsp.buf.document_highlight() - autocmd CursorMoved lua vim.lsp.buf.clear_references() - augroup END - ]], false) - end - require "lsp_signature".on_attach({ - bind = true, -- This is mandatory, otherwise border config won't get registered. - handler_opts = { - border = "single" - }, - hi_parameter = "IncSearch" - }, bufnr) -end - --- Enable some language servers with the additional completion capabilities offered by nvim-cmp -local servers = {'clangd', 'pyright', 'cmake', 'jsonls'} -for _, lsp in ipairs(servers) do - nvim_lsp[lsp].setup { - on_attach = on_attach, - capabilities = capabilities, - } -end - -nvim_lsp.sumneko_lua.setup{ - cmd = {sumneko_binary, "-E", sumneko_root_path .. "/main.lua"}, - on_attach = on_attach, - capabilities = capabilities, -} - -nvim_lsp.groovyls.setup{ - -- Unix - cmd = { "java", "-jar", "D:/tmp/groovy-language-server/build/libs/groovy-language-server-all.jar" }, - on_attach = on_attach, - capabilities = capabilities, -} - -local signs = { Error = " ", Warning = " ", Hint = " ", Information = " " } -for type, icon in pairs(signs) do - local hl = "LspDiagnosticsSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) -end