diff options
author | Mathias Fußenegger <mfussenegger@users.noreply.github.com> | 2020-11-14 20:39:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-14 14:39:05 -0500 |
commit | 0798ad3a3a071db1b647df5aecd7698ed9aff7d9 (patch) | |
tree | b4765f09d44759356246ccf0acb984a8447494ba /runtime/lua/vim/lsp/diagnostic.lua | |
parent | 27d630926cab78511075159012ce6ac920d8747e (diff) | |
download | rneovim-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.lua | 20 |
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 |