nvim/.config/nvim/lua/plugins/editor/trouble.lua

-- nvim/.config/nvim/lua/plugins/editor/trouble.lua

return {
  "folke/trouble.nvim",
  cmd = { "Trouble" },
  opts = {
    modes = {
      lsp = {
        win = { position = "right" },
      },
    },
    keys = {
      ["<esc>"] = "close",
      ["q"]     = "close",
      ["<cr>"]  = "jump",
      ["o"]     = "jump_close",
      ["K"]     = "preview",
    },
  },
  keys = {
    { "<leader>xx", "<cmd>Trouble diagnostics toggle<cr>",                       desc = "diagnostics" },
    { "<leader>xX", "<cmd>Trouble diagnostics toggle filter.buf=0<cr>",          desc = "buffer diagnostics" },
    { "<leader>cs", "<cmd>Trouble symbols toggle focus=false<cr>",               desc = "symbols" },
    { "<leader>cl", "<cmd>Trouble lsp toggle focus=false win.position=right<cr>", desc = "lsp refs/impl" },
    { "<leader>xL", "<cmd>Trouble loclist toggle<cr>",                           desc = "loc list" },
    { "<leader>xQ", "<cmd>Trouble qflist toggle<cr>",                            desc = "qf list" },
    { "[q", function()
        if require("trouble").is_open() then require("trouble").prev({ skip_groups = true, jump = true })
        else pcall(vim.cmd, "cprev") end
      end, desc = "prev trouble/qf" },
    { "]q", function()
        if require("trouble").is_open() then require("trouble").next({ skip_groups = true, jump = true })
        else pcall(vim.cmd, "cnext") end
      end, desc = "next trouble/qf" },
  },
}