소스 검색

feat: add diagnostics source name (#1147)

kylo252 4 년 전
부모
커밋
f36082da0d
2개의 변경된 파일35개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      lua/default-config.lua
  2. 34 0
      lua/lsp/handlers.lua

+ 1 - 0
lua/default-config.lua

@@ -41,6 +41,7 @@ lvim = {
       },
       signs = true,
       underline = true,
+      severity_sort = true,
     },
     override = {},
     document_highlight = true,

+ 34 - 0
lua/lsp/handlers.lua

@@ -9,6 +9,40 @@ function M.setup()
     underline = lvim.lsp.document_highlight,
   })
 
+  vim.lsp.handlers["textDocument/publishDiagnostics"] = function(_, _, params, client_id, _)
+    local config = { -- your config
+      virtual_text = lvim.lsp.diagnostics.virtual_text,
+      signs = lvim.lsp.diagnostics.signs,
+      underline = lvim.lsp.diagnostics.underline,
+      update_in_insert = lvim.lsp.diagnostics.update_in_insert,
+      severity_sort = lvim.lsp.diagnostics.severity_sort,
+    }
+    local uri = params.uri
+    local bufnr = vim.uri_to_bufnr(uri)
+
+    if not bufnr then
+      return
+    end
+
+    local diagnostics = params.diagnostics
+
+    for i, v in ipairs(diagnostics) do
+      diagnostics[i].message = string.format("%s: %s", v.source, v.message)
+
+      if vim.tbl_contains(vim.tbl_keys(v), "code") then
+        diagnostics[i].message = diagnostics[i].message .. string.format(" [%s]", v.code)
+      end
+    end
+
+    vim.lsp.diagnostic.save(diagnostics, bufnr, client_id)
+
+    if not vim.api.nvim_buf_is_loaded(bufnr) then
+      return
+    end
+
+    vim.lsp.diagnostic.display(diagnostics, bufnr, client_id, config)
+  end
+
   vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
     border = lvim.lsp.popup_border,
   })