Hi

As the title suggests, I want to set something up so that while trouble is_open(), I have a keyboard shortcut that cycles through the various modes listed at https://github.com/folke/trouble.nvim/tree/main#commands.

I see how I can assign shortcuts to jump directly to the different modes, but I want to remember only one shortcut.

Writing a bit of lua to do this is easy enough, but I can’t find any way to see what mode it’s currently in, in order to write some function that toggles to the next one.

Is there any way to accomplish this?

Bonus question: Is there any way to get trouble to display on screen what mode it’s currently in? Such as at the top or bottom of the trouble panel.

  • @spacemanspiffyOP
    link
    English
    2
    edit-2
    11 months ago

    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