From e915d3d0da174596ac0a7dde330448c1524f12d8 Mon Sep 17 00:00:00 2001 From: Wojciech Kulik <3128467+wojciech-kulik@users.noreply.github.com> Date: Sun, 11 Feb 2024 00:55:11 +0100 Subject: [PATCH] feat(integration): improved avoidance of Test Explorer window from xcodebuild.nvim plugin --- lua/fidget/integration/xcodebuild-nvim.lua | 27 +++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lua/fidget/integration/xcodebuild-nvim.lua b/lua/fidget/integration/xcodebuild-nvim.lua index 9ad49ad..5cbc94a 100644 --- a/lua/fidget/integration/xcodebuild-nvim.lua +++ b/lua/fidget/integration/xcodebuild-nvim.lua @@ -28,15 +28,36 @@ require("fidget.options").declare(M, "integration.xcodebuild-nvim", M.options, f local win = require("fidget.notification.window") local test_explorer_winid = nil + local function is_any_window_below(row, height) + local all_windows = vim.api.nvim_list_wins() + local bottom_row = row + height + + for _, winnr in ipairs(all_windows) do + local win_row = vim.api.nvim_win_get_position(winnr)[1] + + if win_row > bottom_row then + return true + end + end + + return false + end + local function resize(winid) test_explorer_winid = winid if win.options.relative == "editor" then - local col = vim.api.nvim_win_get_position(winid)[2] + local row, col = unpack(vim.api.nvim_win_get_position(winid)) if col > 1 then - local width = vim.api.nvim_win_get_width(winid) - win.set_x_offset(width + 1) + local height = vim.api.nvim_win_get_height(winid) + + if is_any_window_below(row, height) then + win.set_x_offset(0) + else + local width = vim.api.nvim_win_get_width(winid) + win.set_x_offset(width + 1) + end end end end