From b5c3cad052e9d3450fcd712e55a60404ecc388db Mon Sep 17 00:00:00 2001 From: pysan3 Date: Mon, 19 Feb 2024 06:16:25 +0900 Subject: [PATCH 1/4] fix(popup): always use current window when position == "cursor" --- lua/nui/layout/utils.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/nui/layout/utils.lua b/lua/nui/layout/utils.lua index 6f251b56..0446489c 100644 --- a/lua/nui/layout/utils.lua +++ b/lua/nui/layout/utils.lua @@ -89,7 +89,7 @@ function mod.get_container_info(position) return { relative = position.bufpos and "buf" or relative, - size = utils.get_window_size(position.win), + size = utils.get_window_size(relative == "cursor" and 0 or position.win), type = "window", } end From 63da9f2fa522868f44336c4633db392df874c575 Mon Sep 17 00:00:00 2001 From: pysan3 Date: Tue, 12 Mar 2024 14:34:52 +0900 Subject: [PATCH 2/4] fix(popup): revert previous commit --- lua/nui/layout/utils.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/nui/layout/utils.lua b/lua/nui/layout/utils.lua index 0446489c..6f251b56 100644 --- a/lua/nui/layout/utils.lua +++ b/lua/nui/layout/utils.lua @@ -89,7 +89,7 @@ function mod.get_container_info(position) return { relative = position.bufpos and "buf" or relative, - size = utils.get_window_size(relative == "cursor" and 0 or position.win), + size = utils.get_window_size(position.win), type = "window", } end From 84178da927646a175ed6359965fbf63f16954dda Mon Sep 17 00:00:00 2001 From: pysan3 Date: Tue, 12 Mar 2024 14:35:34 +0900 Subject: [PATCH 3/4] fix(popup): always use current window when position == "cursor" --- lua/nui/layout/utils.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lua/nui/layout/utils.lua b/lua/nui/layout/utils.lua index 6f251b56..2b2a0fd9 100644 --- a/lua/nui/layout/utils.lua +++ b/lua/nui/layout/utils.lua @@ -137,7 +137,9 @@ function mod.update_layout_config(component_internal, config) if options.relative then internal.layout.relative = options.relative - local fallback_winid = internal.position and internal.position.win or vim.api.nvim_get_current_win() + local fallback_winid = internal.position and internal.position.win + or internal.layout.relative.type ~= "win" and 0 + or vim.api.nvim_get_current_win() internal.position = vim.tbl_extend("force", internal.position or {}, mod.parse_relative(internal.layout.relative, fallback_winid)) From c0e07ad986d81d56e52a5b66d8d2bee1c14b6c3e Mon Sep 17 00:00:00 2001 From: pysan3 Date: Tue, 12 Mar 2024 14:37:38 +0900 Subject: [PATCH 4/4] fix(popup): match strictly against cursor --- lua/nui/layout/utils.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/nui/layout/utils.lua b/lua/nui/layout/utils.lua index 2b2a0fd9..66efcc3e 100644 --- a/lua/nui/layout/utils.lua +++ b/lua/nui/layout/utils.lua @@ -138,7 +138,7 @@ function mod.update_layout_config(component_internal, config) internal.layout.relative = options.relative local fallback_winid = internal.position and internal.position.win - or internal.layout.relative.type ~= "win" and 0 + or internal.layout.relative.type == "cursor" and 0 or vim.api.nvim_get_current_win() internal.position = vim.tbl_extend("force", internal.position or {}, mod.parse_relative(internal.layout.relative, fallback_winid))