I don’t know any specifics about trouble, but would it be good enough to just track the current mode in your own global option/variable whenever you toggle it with your shortcut?
If not I‘d start by taking a look at the trouble source code.
I don’t know any specifics about trouble, but would it be good enough to just track the current mode in your own global option/variable whenever you toggle it with your shortcut?
If not I‘d start by taking a look at the trouble source code.
For the sake of sharing... I took your idea and found this worked just fine:
TroubleMode = "workspace_diagnostics"
local function cycle_trouble_mode()
local trouble = require("trouble")
local modes = {
"document_diagnostics",
"workspace_diagnostics",
"lsp_references",
"lsp_definitions",
"lsp_type_definitions",
"quickfix",
"loclist",
}
if trouble.is_open() then
local function get_next_mode(mode)
local next_index = 1
for i = 1, #modes do
if modes[i] == mode then
next_index = i == #modes and 1 or i + 1
end
end
return modes[next_index]
end
TroubleMode = get_next_mode(TroubleMode)
trouble.toggle(TroubleMode)
end
end
I did end up looking at the code a bit and couldn't find what I wanted. But what you suggest is a good idea. I may give that a try.
~~Are you trying to recreate the default action keys?~~ Nope, that just bounces between workspace and document
~~Does :lua require("trouble").action("toggle_mode")
do anything for you?~~ is just doing the same thing as above.
I tried after writing the function I posted below. This works to flip between workspace and document mode but I can't get to all of the modes like this. Thank you though.