From c2b8311dfacd08b3056b8f0249025d633a4e71a8 Mon Sep 17 00:00:00 2001 From: Edwin Tang Date: Sun, 24 Mar 2024 11:51:21 +0800 Subject: [PATCH] fix(previewer): preview message out of bounds (#3003) * fix(set_preview_message): check line height of previewer before setting message. * style: run changed file through stylua and remove unused variable. * refactor: change lines table instead. check max between line_pos and 0 * style: run changed file through stylua. --- lua/telescope/previewers/utils.lua | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/lua/telescope/previewers/utils.lua b/lua/telescope/previewers/utils.lua index a13ee57..be8b761 100644 --- a/lua/telescope/previewers/utils.lua +++ b/lua/telescope/previewers/utils.lua @@ -188,11 +188,20 @@ utils.set_preview_message = function(bufnr, winid, message, fillchar) ) local anon_ns = vim.api.nvim_create_namespace "" local padding = table.concat(ts_utils.repeated_table(#message + 4, " "), "") - local lines = { - padding, - " " .. message .. " ", - padding, - } + local formatted_message = " " .. message .. " " + -- Populate lines table based on height + local lines = {} + if height == 1 then + lines[1] = formatted_message + else + for i = 1, math.min(height, 3), 1 do + if i % 2 == 0 then + lines[i] = formatted_message + else + lines[i] = padding + end + end + end vim.api.nvim_buf_set_extmark( bufnr, anon_ns, @@ -200,12 +209,13 @@ utils.set_preview_message = function(bufnr, winid, message, fillchar) 0, { end_line = height, hl_group = "TelescopePreviewMessageFillchar" } ) - local col = math.floor((width - strings.strdisplaywidth(lines[2])) / 2) + local col = math.floor((width - strings.strdisplaywidth(formatted_message)) / 2) for i, line in ipairs(lines) do + local line_pos = math.floor(height / 2) - 2 + i vim.api.nvim_buf_set_extmark( bufnr, anon_ns, - math.floor(height / 2) - 1 + i, + math.max(line_pos, 0), 0, { virt_text = { { line, "TelescopePreviewMessage" } }, virt_text_pos = "overlay", virt_text_win_col = col } )