aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/diagnostic.lua
diff options
context:
space:
mode:
authorGregory Anders <greg@gpanders.com>2021-09-17 09:28:11 -0600
committerGregory Anders <greg@gpanders.com>2021-09-17 09:28:11 -0600
commitf87779a24d7133b04762ad3369704924c4247fba (patch)
treee164899cc3576c0a80326fc848118a695b0d3576 /runtime/lua/vim/lsp/diagnostic.lua
parent15fbc9b69e39e6b8ec746b5cdfcc69f182987a4f (diff)
downloadrneovim-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.lua16
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