diff --git a/NEWS.md b/NEWS.md index d301ca14..5aabce42 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,6 +2,10 @@ ## 10.x +- **trouble.nvim** has been rewritten from scratch and is now in beta. + I've added a new extra for it (`trouble-v3`) for those of you who want to try it out. + You can find the updated docs [here](https://github.com/folke/trouble.nvim/tree/dev) + - The **lazygit** integration now configures: - the theme based on the colorscheme diff --git a/lua/lazyvim/plugins/extras/editor/trouble-v3.lua b/lua/lazyvim/plugins/extras/editor/trouble-v3.lua new file mode 100644 index 00000000..0de564b5 --- /dev/null +++ b/lua/lazyvim/plugins/extras/editor/trouble-v3.lua @@ -0,0 +1,71 @@ +local Config = require("lazyvim.config") + +for _, other in ipairs({ "aerial", "outline" }) do + local extra = "lazyvim.plugins.extras.editor." .. other + if vim.tbl_contains(Config.json.data.extras, extra) then + other = other:gsub("^%l", string.upper) + LazyVim.error({ + "**Trouble v3** includes support for document symbols.", + ("You currently have the **%s** extra enabled."):format(other), + "Please disable it in your config.", + }) + end +end + +return { + { + "folke/trouble.nvim", + branch = "dev", + keys = { + { "xx", "Trouble diagnostics toggle", desc = "Diagnostics (Trouble)" }, + { "xX", "Trouble diagnostics toggle filter.buf=0", desc = "Buffer Diagnostics (Trouble)" }, + { "cs", "Trouble symbols toggle focus=false", desc = "Symbols (Trouble)" }, + { "xL", "Trouble loclist toggle", desc = "Location List (Trouble)" }, + { "xQ", "Trouble qflist toggle", desc = "Quickfix List (Trouble)" }, + }, + }, + + -- lualine integration + { + "nvim-lualine/lualine.nvim", + optional = true, + opts = function(_, opts) + local trouble = require("trouble") + local symbols = trouble.statusline({ + mode = "lsp_document_symbols", + groups = {}, + title = false, + filter = { range = true }, + format = "{kind_icon}{symbol.name:Normal}", + }) + table.insert(opts.sections.lualine_c, { + symbols.get, + cond = symbols.has, + }) + end, + }, + + { + "folke/edgy.nvim", + optional = true, + opts = function(_, opts) + -- disable for now + do + return + end + for _, pos in ipairs({ "top", "bottom", "left", "right" }) do + opts[pos] = opts[pos] or {} + table.insert(opts[pos], { + ft = "trouble", + filter = function(_buf, win) + return vim.w[win].trouble + and vim.w[win].trouble.position == pos + and vim.w[win].trouble.type == "split" + and vim.w[win].trouble.relative == "editor" + and not vim.w[win].trouble_preview + end, + }) + end + end, + }, +} diff --git a/lua/lazyvim/plugins/extras/ui/edgy.lua b/lua/lazyvim/plugins/extras/ui/edgy.lua index e2513828..1a9c5e12 100644 --- a/lua/lazyvim/plugins/extras/ui/edgy.lua +++ b/lua/lazyvim/plugins/extras/ui/edgy.lua @@ -40,12 +40,6 @@ return { end, }, "Trouble", - { - ft = "trouble", - filter = function(buf, win) - return vim.api.nvim_win_get_config(win).relative == "" - end, - }, { ft = "qf", title = "QuickFix" }, { ft = "help", diff --git a/lua/lazyvim/plugins/xtras.lua b/lua/lazyvim/plugins/xtras.lua index a130da1e..39a561a1 100644 --- a/lua/lazyvim/plugins/xtras.lua +++ b/lua/lazyvim/plugins/xtras.lua @@ -4,6 +4,7 @@ local Config = require("lazyvim.config") local prios = { ["lazyvim.plugins.extras.editor.aerial"] = 100, ["lazyvim.plugins.extras.editor.outline"] = 100, + ["lazyvim.plugins.extras.editor.trouble-v3"] = 100, ["lazyvim.plugins.extras.test.core"] = 1, ["lazyvim.plugins.extras.dap.core"] = 1, }