From 6a7a02542fa86dce410a0dee72fd1c8b5bcdb12b Mon Sep 17 00:00:00 2001 From: Guldoman Date: Wed, 17 Nov 2021 02:57:14 +0100 Subject: [PATCH] Draw only visible whitespaces --- data/plugins/drawwhitespace.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/data/plugins/drawwhitespace.lua b/data/plugins/drawwhitespace.lua index da9d1b12..7b7fa011 100644 --- a/data/plugins/drawwhitespace.lua +++ b/data/plugins/drawwhitespace.lua @@ -9,24 +9,28 @@ local draw_line_text = DocView.draw_line_text function DocView:draw_line_text(idx, x, y) local font = (self:get_font() or style.syntax_fonts["comment"]) local color = style.syntax.comment - local ty, tx = y + self:get_line_text_y_offset() + local ty = y + self:get_line_text_y_offset() + local tx local text, offset, s, e = self.doc.lines[idx], 1 + local x1, _, x2, _ = self:get_content_bounds() + local _offset = self:get_x_offset_col(idx, x1) + offset = _offset while true do s, e = text:find(" +", offset) if not s then break end tx = self:get_col_x_offset(idx, s) + x renderer.draw_text(font, string.rep("·", e - s + 1), tx, ty, color) + if tx > x + x2 then break end offset = e + 1 end - offset = 1 + offset = _offset while true do s, e = text:find("\t", offset) if not s then break end tx = self:get_col_x_offset(idx, s) + x renderer.draw_text(font, "»", tx, ty, color) + if tx > x + x2 then break end offset = e + 1 end draw_line_text(self, idx, x, y) end - -