diff options
author | Gregory Anders <greg@gpanders.com> | 2021-09-17 09:28:11 -0600 |
---|---|---|
committer | Gregory Anders <greg@gpanders.com> | 2021-09-17 09:28:11 -0600 |
commit | f87779a24d7133b04762ad3369704924c4247fba (patch) | |
tree | e164899cc3576c0a80326fc848118a695b0d3576 /runtime/lua/vim/lsp/diagnostic.lua | |
parent | 15fbc9b69e39e6b8ec746b5cdfcc69f182987a4f (diff) | |
download | rneovim-f87779a24d7133b04762ad3369704924c4247fba.tar.gz rneovim-f87779a24d7133b04762ad3369704924c4247fba.tar.bz2 rneovim-f87779a24d7133b04762ad3369704924c4247fba.zip |
fix(diagnostic): correctly handle folder level diagnostics
Diffstat (limited to 'runtime/lua/vim/lsp/diagnostic.lua')
-rw-r--r-- | runtime/lua/vim/lsp/diagnostic.lua | 16 |
1 files changed, 14 insertions, 2 deletions
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 |