From f87779a24d7133b04762ad3369704924c4247fba Mon Sep 17 00:00:00 2001 From: Gregory Anders Date: Fri, 17 Sep 2021 09:28:11 -0600 Subject: fix(diagnostic): correctly handle folder level diagnostics --- runtime/lua/vim/lsp/diagnostic.lua | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'runtime/lua/vim/lsp/diagnostic.lua') diff --git a/runtime/lua/vim/lsp/diagnostic.lua b/runtime/lua/vim/lsp/diagnostic.lua index eef840bee5..4d0b6f83bc 100644 --- a/runtime/lua/vim/lsp/diagnostic.lua +++ b/runtime/lua/vim/lsp/diagnostic.lua @@ -52,7 +52,7 @@ end ---@private local function line_byte_from_position(lines, lnum, col, offset_encoding) - if offset_encoding == "utf-8" then + if not lines or offset_encoding == "utf-8" then return col end @@ -73,7 +73,19 @@ local function get_buf_lines(bufnr) local filename = vim.api.nvim_buf_get_name(bufnr) local f = io.open(filename) - local lines = vim.split(f:read("*a"), "\n") + if not f then + return + end + + local content = f:read("*a") + if not content then + -- Some LSP servers report diagnostics at a directory level, in which case + -- io.read() returns nil + f:close() + return + end + + local lines = vim.split(content, "\n") f:close() return lines end -- cgit From 32c0631183a64925d38a13819db9557f8da02738 Mon Sep 17 00:00:00 2001 From: Gregory Anders Date: Fri, 17 Sep 2021 10:50:25 -0600 Subject: fix(diagnostic): support severity_sort --- runtime/lua/vim/lsp/diagnostic.lua | 4 ---- 1 file changed, 4 deletions(-) (limited to 'runtime/lua/vim/lsp/diagnostic.lua') diff --git a/runtime/lua/vim/lsp/diagnostic.lua b/runtime/lua/vim/lsp/diagnostic.lua index 4d0b6f83bc..41c8bd36ec 100644 --- a/runtime/lua/vim/lsp/diagnostic.lua +++ b/runtime/lua/vim/lsp/diagnostic.lua @@ -195,10 +195,6 @@ function M.on_publish_diagnostics(_, result, ctx, config) local diagnostics = result.diagnostics if config then - if vim.F.if_nil(config.severity_sort, false) then - table.sort(diagnostics, function(a, b) return a.severity > b.severity end) - end - for _, opt in pairs(config) do if type(opt) == 'table' then if not opt.severity and opt.severity_limit then -- cgit