From 5ccbb5c6a21223cf008813159749aa9a3df12a22 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Wed, 13 Apr 2022 00:04:33 +0800 Subject: [PATCH] fix(lsp): fix neovim lsp compatibility close https://github.com/SpaceVim/SpaceVim/issues/4574 --- autoload/SpaceVim/layers/lsp.vim | 8 ++--- autoload/SpaceVim/lsp.vim | 8 ++--- bundle/nvim-lspconfig/test/minimal_init.lua | 8 ++--- lua/spacevim/diagnostic.lua | 38 +++++++++++++++++++++ 4 files changed, 50 insertions(+), 12 deletions(-) diff --git a/autoload/SpaceVim/layers/lsp.vim b/autoload/SpaceVim/layers/lsp.vim index 8760aab9f..7382d5638 100644 --- a/autoload/SpaceVim/layers/lsp.vim +++ b/autoload/SpaceVim/layers/lsp.vim @@ -79,10 +79,10 @@ function! SpaceVim#layers#lsp#setup() abort -- buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) -- buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) -- buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) - -- buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', 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) - -- buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) + -- buf_set_keymap('n', 'e', 'lua require("spacevim.diagnostic").show_line_diagnostics()', opts) + -- buf_set_keymap('n', '[d', 'lua require("spacevim.diagnostic").goto_prev()', opts) + -- buf_set_keymap('n', ']d', 'lua require("spacevim.diagnostic").goto_next()', opts) + -- buf_set_keymap('n', 'q', 'lua require("spacevim.diagnostic").set_loclist()', opts) -- buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) end diff --git a/autoload/SpaceVim/lsp.vim b/autoload/SpaceVim/lsp.vim index 0b5c430d0..803348dfe 100644 --- a/autoload/SpaceVim/lsp.vim +++ b/autoload/SpaceVim/lsp.vim @@ -67,16 +67,16 @@ if (has('nvim-0.5.0') && s:NVIM_VERSION.is_release_version()) || has('nvim-0.6.0 return v:lua.vim.lsp.buf.server_ready() endfunction function! SpaceVim#lsp#diagnostic_set_loclist() abort - lua vim.lsp.diagnostic.set_loclist() + lua require('spacevim.diagnostic').set_loclist() endfunction function! SpaceVim#lsp#diagnostic_goto_next() abort - lua vim.lsp.diagnostic.goto_next() + lua require("spacevim.diagnostic").goto_next() endfunction function! SpaceVim#lsp#diagnostic_goto_prev() abort - lua vim.lsp.diagnostic.goto_prev() + lua require("spacevim.diagnostic").goto_prev() endfunction function! SpaceVim#lsp#diagnostic_clear() abort - lua vim.lsp.diagnostic.clear(0) + lua require("spacevim.diagnostic").hide() endfunction elseif SpaceVim#layers#isLoaded('autocomplete') && get(g:, 'spacevim_autocomplete_method') ==# 'coc' " use coc.nvim diff --git a/bundle/nvim-lspconfig/test/minimal_init.lua b/bundle/nvim-lspconfig/test/minimal_init.lua index 6b579ee24..8b5b9aedd 100644 --- a/bundle/nvim-lspconfig/test/minimal_init.lua +++ b/bundle/nvim-lspconfig/test/minimal_init.lua @@ -58,10 +58,10 @@ _G.load_config = function() buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) - buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', 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) - buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) + buf_set_keymap('n', 'e', 'lua require("spacevim.diagnostic").show_line_diagnostics()', opts) + buf_set_keymap('n', '[d', 'lua require("spacevim.diagnostic").goto_prev()', opts) + buf_set_keymap('n', ']d', 'lua require("spacevim.diagnostic").goto_next()', opts) + buf_set_keymap('n', 'q', 'lua require("spacevim.diagnostic").set_loclist()', opts) end -- Add the server that troubles you here diff --git a/lua/spacevim/diagnostic.lua b/lua/spacevim/diagnostic.lua index 15168967d..4562ab72c 100644 --- a/lua/spacevim/diagnostic.lua +++ b/lua/spacevim/diagnostic.lua @@ -15,4 +15,42 @@ function M.open_float() end +-- *vim.lsp.diagnostic.set_loclist()* Use |vim.diagnostic.setloclist()| instead. +-- *vim.lsp.diagnostic.set_qflist()* Use |vim.diagnostic.setqflist()| instead. + +function M.set_loclist() + if vim.diagnostic ~= nil then + vim.diagnostic.setloclist() + else + vim.lsp.diagnostic.set_loclist() + end +end + + +function M.goto_next() + if vim.diagnostic ~= nil then + vim.diagnostic.goto_next() + else + vim.lsp.diagnostic.goto_next() + end + +end + +function M.goto_prev() + if vim.diagnostic ~= nil then + vim.diagnostic.goto_prev() + else + vim.lsp.diagnostic.goto_prev() + end + +end + +function M.hide() + if vim.diagnostic ~= nil then + vim.diagnostic.hide() + else + vim.lsp.diagnostic.clear() + end +end + return M