Bläddra i källkod

fix(lsp): correct map and prevent highlight leak of diagnostic signs in 0.6 (#1934)

Chase Colman 3 år sedan
förälder
incheckning
e42581c219
2 ändrade filer med 13 tillägg och 10 borttagningar
  1. 0 10
      lua/lvim/lsp/handlers.lua
  2. 13 0
      lua/lvim/lsp/init.lua

+ 0 - 10
lua/lvim/lsp/handlers.lua

@@ -36,16 +36,6 @@ function M.setup()
         if not vim.api.nvim_buf_is_loaded(bufnr) then
         if not vim.api.nvim_buf_is_loaded(bufnr) then
           return
           return
         end
         end
-
-        local sign_names = {
-          "DiagnosticSignError",
-          "DiagnosticSignWarn",
-          "DiagnosticSignInfo",
-          "DiagnosticSignHint",
-        }
-        for i, sign in ipairs(lvim.lsp.diagnostics.signs.values) do
-          vim.fn.sign_define(sign_names[i], { texthl = sign_names[i], text = sign.text, numhl = "" })
-        end
         vim_diag.show(namespace, bufnr, diagnostics, config)
         vim_diag.show(namespace, bufnr, diagnostics, config)
       else
       else
         vim.lsp.diagnostic.save(diagnostics, bufnr, ctx.client_id)
         vim.lsp.diagnostic.save(diagnostics, bufnr, ctx.client_id)

+ 13 - 0
lua/lvim/lsp/init.lua

@@ -136,6 +136,13 @@ function M.get_common_opts()
   }
   }
 end
 end
 
 
+local LSP_DEPRECATED_SIGN_MAP = {
+  ["LspDiagnosticsSignError"] = "DiagnosticSignError",
+  ["LspDiagnosticsSignWarning"] = "DiagnosticSignWarn",
+  ["LspDiagnosticsSignHint"] = "DiagnosticSignHint",
+  ["LspDiagnosticsSignInformation"] = "DiagnosticSignInfo",
+}
+
 function M.setup()
 function M.setup()
   Log:debug "Setting up LSP support"
   Log:debug "Setting up LSP support"
 
 
@@ -144,7 +151,13 @@ function M.setup()
     return
     return
   end
   end
 
 
+  local is_neovim_nightly = vim.fn.has "nvim-0.5.1" > 0
+
   for _, sign in ipairs(lvim.lsp.diagnostics.signs.values) do
   for _, sign in ipairs(lvim.lsp.diagnostics.signs.values) do
+    local lsp_sign_name = LSP_DEPRECATED_SIGN_MAP[sign.name]
+    if is_neovim_nightly and lsp_sign_name then
+      vim.fn.sign_define(lsp_sign_name, { texthl = lsp_sign_name, text = sign.text, numhl = lsp_sign_name })
+    end
     vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = sign.name })
     vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = sign.name })
   end
   end