From a97e192a955f8156fc75ab3dd068b0bad2435661 Mon Sep 17 00:00:00 2001 From: tomeczku Date: Thu, 18 Jun 2026 21:54:57 +0100 Subject: [PATCH 1/2] expose option to configure the popup border in plugin opts --- lua/image/init.lua | 1 + lua/image/utils/document.lua | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lua/image/init.lua b/lua/image/init.lua index f547fb6..74d6afd 100644 --- a/lua/image/init.lua +++ b/lua/image/init.lua @@ -53,6 +53,7 @@ local default_options = { max_height = nil, max_width_window_percentage = 100, max_height_window_percentage = 50, + popup_border = "single", scale_factor = 1.0, kitty_method = "normal", kitty_direct_chunk_size = 4096, diff --git a/lua/image/utils/document.lua b/lua/image/utils/document.lua index 4d90ef4..2e946e9 100644 --- a/lua/image/utils/document.lua +++ b/lua/image/utils/document.lua @@ -136,7 +136,7 @@ local create_document_integration = function(config) return should_render_match(ctx, window, item.match, cursor_row) end - local render_popup_image = function(image) + local render_popup_image = function(image, popup_border) if popup_window ~= nil then return end local term_size = utils.term.get_size() @@ -155,7 +155,7 @@ local create_document_integration = function(config) width = width, height = height, style = "minimal", - border = "single", + border = popup_border, } local buf = vim.api.nvim_create_buf(false, true) vim.bo[buf].filetype = "image_nvim_popup" @@ -192,7 +192,8 @@ local create_document_integration = function(config) local render_image = function(ctx, item, image) log.debug("render_image called", { id = image.id }) if ctx.options.only_render_image_at_cursor and ctx.options.only_render_image_at_cursor_mode == "popup" then - render_popup_image(image) + local popup_border = ctx.state.options.popup_border or "single" + render_popup_image(image, popup_border) return end From f596eb2eda16b03aa15b8bd27940b380e92d1d4f Mon Sep 17 00:00:00 2001 From: tomeczku Date: Sun, 21 Jun 2026 17:17:32 +0100 Subject: [PATCH 2/2] attempt to rely first on vim.opt.winborder for popup floats, if configured with fallback to single --- lua/image/init.lua | 8 +++++++- lua/image/utils/document.lua | 3 +-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lua/image/init.lua b/lua/image/init.lua index 74d6afd..6c8ac9d 100644 --- a/lua/image/init.lua +++ b/lua/image/init.lua @@ -12,6 +12,12 @@ local backend_modules = { sixel = "image/backends/sixel", } +---@return string +local winborder_or_fallback = function() + if vim.o.winborder == "" then return "single" end + return vim.o.winborder +end + ---@type Options local default_options = { -- backend = "ueberzug", @@ -53,7 +59,7 @@ local default_options = { max_height = nil, max_width_window_percentage = 100, max_height_window_percentage = 50, - popup_border = "single", + popup_border = winborder_or_fallback(), scale_factor = 1.0, kitty_method = "normal", kitty_direct_chunk_size = 4096, diff --git a/lua/image/utils/document.lua b/lua/image/utils/document.lua index 2e946e9..cab886c 100644 --- a/lua/image/utils/document.lua +++ b/lua/image/utils/document.lua @@ -192,8 +192,7 @@ local create_document_integration = function(config) local render_image = function(ctx, item, image) log.debug("render_image called", { id = image.id }) if ctx.options.only_render_image_at_cursor and ctx.options.only_render_image_at_cursor_mode == "popup" then - local popup_border = ctx.state.options.popup_border or "single" - render_popup_image(image, popup_border) + render_popup_image(image, ctx.state.options.popup_border) return end