diff options
author | Evgeni Chasnovski <evgeni.chasnovski@gmail.com> | 2025-01-23 10:42:00 +0200 |
---|---|---|
committer | Mathias Fußenegger <mfussenegger@users.noreply.github.com> | 2025-01-23 17:04:23 +0100 |
commit | a450fda4ededdd93e3dc571d82a6737f6b9d50d9 (patch) | |
tree | ac365a7a2082865e421f4151e9eadeb6fe7cb2e9 /runtime/lua/vim | |
parent | 34d808b73cbcb0a43636d826282193ab1ca8c148 (diff) | |
download | rneovim-a450fda4ededdd93e3dc571d82a6737f6b9d50d9.tar.gz rneovim-a450fda4ededdd93e3dc571d82a6737f6b9d50d9.tar.bz2 rneovim-a450fda4ededdd93e3dc571d82a6737f6b9d50d9.zip |
fix(lsp): prefer `on_list` over `loclist` in default handler
Problem: setting `loclist = true` makes `on_list` being ignored. This
was not a problem before, but with `vim.lsp.buf.document_symbol` using
`loclist = true` as default it is needed to explicitly pass `loclist =
false` in order to use custom `on_list`.
Solution: prefer `on_list` over `loclist` and document the latter as
taking effect only in the default handler.
Diffstat (limited to 'runtime/lua/vim')
-rw-r--r-- | runtime/lua/vim/lsp/buf.lua | 2 | ||||
-rw-r--r-- | runtime/lua/vim/lsp/handlers.lua | 8 |
2 files changed, 5 insertions, 5 deletions
diff --git a/runtime/lua/vim/lsp/buf.lua b/runtime/lua/vim/lsp/buf.lua index 8efc6996dd..c57fdbee18 100644 --- a/runtime/lua/vim/lsp/buf.lua +++ b/runtime/lua/vim/lsp/buf.lua @@ -254,7 +254,7 @@ end --- ``` --- @field on_list? fun(t: vim.lsp.LocationOpts.OnList) --- ---- Whether to use the |location-list| or the |quickfix| list. +--- Whether to use the |location-list| or the |quickfix| list in the default handler. --- ```lua --- vim.lsp.buf.definition({ loclist = true }) --- vim.lsp.buf.references(nil, { loclist = false }) diff --git a/runtime/lua/vim/lsp/handlers.lua b/runtime/lua/vim/lsp/handlers.lua index 5da4033f89..a86ea99413 100644 --- a/runtime/lua/vim/lsp/handlers.lua +++ b/runtime/lua/vim/lsp/handlers.lua @@ -247,12 +247,12 @@ local function response_to_list(map_result, entity, title_fn) local items = map_result(result, ctx.bufnr) local list = { title = title, items = items, context = ctx } - if config.loclist then - vim.fn.setloclist(0, {}, ' ', list) - vim.cmd.lopen() - elseif config.on_list then + if config.on_list then assert(vim.is_callable(config.on_list), 'on_list is not a function') config.on_list(list) + elseif config.loclist then + vim.fn.setloclist(0, {}, ' ', list) + vim.cmd.lopen() else vim.fn.setqflist({}, ' ', list) vim.cmd('botright copen') |