From e57c55b8677f41b6878d76b5cfcb56c61a954909 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Mon, 6 Jul 2026 20:33:46 -0500 Subject: [PATCH] feat: add configurable indicator padding Add indicator.padding (x, y) to offset the status indicator from the editor edges. Defaults to 1 cell on each axis, moving the indicator away from the right edge and bottom of the buffer. --- lua/watchexec/config.lua | 6 ++++++ lua/watchexec/indicator.lua | 13 ++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lua/watchexec/config.lua b/lua/watchexec/config.lua index 44e6d78..6ae1d60 100644 --- a/lua/watchexec/config.lua +++ b/lua/watchexec/config.lua @@ -16,6 +16,10 @@ ---@field bin? string ---@field args? string[] +---@class watchexec.IndicatorPadding +---@field x? integer +---@field y? integer + ---@class watchexec.IndicatorPatterns ---@field success? string ---@field running? string @@ -27,6 +31,7 @@ ---@field failure_hl? string ---@field width? integer ---@field height? integer +---@field padding? watchexec.IndicatorPadding ---@field patterns? watchexec.IndicatorPatterns ---@class watchexec.Config @@ -64,6 +69,7 @@ local defaults = { failure_hl = "WatchexecFailure", width = 2, height = 1, + padding = { x = 1, y = 1 }, patterns = { success = "%[Command was successful%]", running = "%[Running", diff --git a/lua/watchexec/indicator.lua b/lua/watchexec/indicator.lua index cadabf9..f1aeca0 100644 --- a/lua/watchexec/indicator.lua +++ b/lua/watchexec/indicator.lua @@ -35,18 +35,21 @@ local function calculate_position() local cfg = config.get().indicator local width = cfg.width or 2 local height = cfg.height or 1 + local pad_x = cfg.padding and cfg.padding.x or 1 + local pad_y = cfg.padding and cfg.padding.y or 1 + local statusline_offset = 2 if cfg.position == "bottom-left" then - return vim.o.lines - height - 3, 0 + return vim.o.lines - height - statusline_offset, pad_x elseif cfg.position == "bottom-right" then - return vim.o.lines - height - 3, vim.o.columns - width + return vim.o.lines - height - statusline_offset, vim.o.columns - width - pad_x elseif cfg.position == "top-left" then - return 0, 0 + return pad_y, pad_x elseif cfg.position == "top-right" then - return 0, vim.o.columns - width + return pad_y, vim.o.columns - width - pad_x end - return vim.o.lines - height - 3, 0 + return vim.o.lines - height - statusline_offset, pad_x end local function close_float()