From 7316bef23db18a3cfef02c6a4c4a69d5ed678752 Mon Sep 17 00:00:00 2001 From: Martin Larsson Date: Fri, 5 Jul 2024 16:50:17 +0200 Subject: [PATCH] Add autosizing whenever we open/close an edge panel, meaning we always keep the relative width/height of the main windows --- home/.config/nvim/lua/plugs/oil.lua | 10 +++- home/.config/nvim/lua/plugs/trouble.lua | 61 +++++++++++++++++++++---- home/.config/nvim/lua/terminal.lua | 6 ++- 3 files changed, 65 insertions(+), 12 deletions(-) diff --git a/home/.config/nvim/lua/plugs/oil.lua b/home/.config/nvim/lua/plugs/oil.lua index c27a350..ac30f9a 100644 --- a/home/.config/nvim/lua/plugs/oil.lua +++ b/home/.config/nvim/lua/plugs/oil.lua @@ -4,6 +4,8 @@ local oil = nil local oil_window = nil local function toggle_oil_window() + assert(oil, "Oil is not loaded") + if oil_window and vim.api.nvim_win_is_valid(oil_window) then vim.api.nvim_win_close(oil_window, true) oil_window = nil @@ -46,10 +48,14 @@ return { }, }) - require("utils").add_keymaps({ + local wm = require("window_management") + utils.add_keymaps({ n = { ["o"] = { - cmd = toggle_oil_window, + cmd = function() + toggle_oil_window() + wm.autosize_windows() + end, } } }) diff --git a/home/.config/nvim/lua/plugs/trouble.lua b/home/.config/nvim/lua/plugs/trouble.lua index d26d0bc..b9bc33b 100644 --- a/home/.config/nvim/lua/plugs/trouble.lua +++ b/home/.config/nvim/lua/plugs/trouble.lua @@ -1,25 +1,68 @@ +local wm = require("window_management") + +local is_trouble_window = false + +local function setup_autosize_callback() + local auname = "TroubleWinEnter" + local augroup = vim.api.nvim_create_augroup(auname, { clear = true }) + + vim.api.nvim_create_autocmd("WinEnter", { + group = augroup, + callback = function() + if not is_trouble_window then + return + end + + is_trouble_window = false + wm.autosize_windows() + end, + }) +end + return { "folke/trouble.nvim", config = function() - require("trouble").setup({}) + local trouble = require("trouble") + trouble.setup({}) + setup_autosize_callback() require("utils").add_keymaps({ n = { ["x"] = { - cmd = "Trouble diagnostics toggle", + cmd = function() + is_trouble_window = true + trouble.toggle({ + mode = "diagnostics", + focus = true, + }) + end }, ["ls"] = { - cmd = "Trouble symbols toggle focus=false", + cmd = function() + is_trouble_window = true + trouble.toggle({ + mode = "symbols", + focus = true, + }) + end }, - -- Stick with using the references feature fom lspsaga for now, might change later - -- ["cl"] = { - -- cmd = "Trouble lsp toggle focus=false win.position=right", - -- }, ["ll"] = { - cmd = "Trouble loclist toggle", + cmd = function() + is_trouble_window = true + trouble.toggle({ + mode = "loclist", + focus = true, + }) + end }, ["lq"] = { - cmd = "Trouble qflist toggle", + cmd = function() + is_trouble_window = true + trouble.toggle({ + mode = "quickfix", + focus = true, + }) + end }, } }) diff --git a/home/.config/nvim/lua/terminal.lua b/home/.config/nvim/lua/terminal.lua index 4fcd651..165c86f 100644 --- a/home/.config/nvim/lua/terminal.lua +++ b/home/.config/nvim/lua/terminal.lua @@ -40,10 +40,14 @@ local function toggle_terminal() end function M.setup() + local wm = require("window_management") utils.add_keymaps({ n = { ["h"] = { - cmd = toggle_terminal + cmd = function() + toggle_terminal() + wm.autosize_windows() + end, } } })