aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/diagnostic.lua
diff options
context:
space:
mode:
authorMathias Fußenegger <mfussenegger@users.noreply.github.com>2020-11-14 20:39:05 +0100
committerGitHub <noreply@github.com>2020-11-14 14:39:05 -0500
commit0798ad3a3a071db1b647df5aecd7698ed9aff7d9 (patch)
treeb4765f09d44759356246ccf0acb984a8447494ba /runtime/lua/vim/lsp/diagnostic.lua
parent27d630926cab78511075159012ce6ac920d8747e (diff)
downloadrneovim-0798ad3a3a071db1b647df5aecd7698ed9aff7d9.tar.gz
rneovim-0798ad3a3a071db1b647df5aecd7698ed9aff7d9.tar.bz2
rneovim-0798ad3a3a071db1b647df5aecd7698ed9aff7d9.zip
lsp: Expose all diagnostics (#13285)
* lsp: Remove duplicate `diagnostics` fallback in diagnostic.display * lsp: Expose all diagnostics Before the changes in #12655 it was possible to retrieve all diagnostics via `vim.lsp.util.diagnostics_by_buf`. This adds a `diagnostic.get_all()` to enable users to retrieve all diagnostics. Use cases for that could include loading all diagnostics into the quickfix list, or to build an enhanced goto_next that can move across buffers.
Diffstat (limited to 'runtime/lua/vim/lsp/diagnostic.lua')
-rw-r--r--runtime/lua/vim/lsp/diagnostic.lua20
1 files changed, 15 insertions, 5 deletions
diff --git a/runtime/lua/vim/lsp/diagnostic.lua b/runtime/lua/vim/lsp/diagnostic.lua
index 45e717d16c..1570d4a122 100644
--- a/runtime/lua/vim/lsp/diagnostic.lua
+++ b/runtime/lua/vim/lsp/diagnostic.lua
@@ -305,6 +305,20 @@ end
-- }}}
-- Diagnostic Retrieval {{{
+
+--- Get all diagnostics for all clients
+---
+---@return Diagnostic[]
+function M.get_all()
+ local all_diagnostics = {}
+ for _, buf_diagnostics in pairs(diagnostic_cache) do
+ for _, client_diagnostics in pairs(buf_diagnostics) do
+ vim.list_extend(all_diagnostics, client_diagnostics)
+ end
+ end
+ return all_diagnostics
+end
+
--- Return associated diagnostics for bufnr
---
---@param bufnr number
@@ -990,10 +1004,6 @@ function M.display(diagnostics, bufnr, client_id, config)
update_in_insert = false,
}, config)
- if diagnostics == nil then
- diagnostics = M.get(bufnr, client_id)
- end
-
-- TODO(tjdevries): Consider how we can make this a "standardized" kind of thing for |lsp-handlers|.
-- It seems like we would probably want to do this more often as we expose more of them.
-- It provides a very nice functional interface for people to override configuration.
@@ -1031,7 +1041,7 @@ function M.display(diagnostics, bufnr, client_id, config)
M.clear(bufnr, client_id)
- diagnostics = diagnostics or diagnostic_cache[bufnr][client_id]
+ diagnostics = diagnostics or M.get(bufnr, client_id)
if not diagnostics or vim.tbl_isempty(diagnostics) then
return