diff options
author | Geet Mankar <geetmankar21+github@gmail.com> | 2023-09-29 14:53:02 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-29 11:23:02 +0200 |
commit | 5d5f6a9db8d776e5808e2f4f34fbdfa28e8061dc (patch) | |
tree | 2eea50e62b8ea332917a445396cc143ed5b95230 /plugins | |
parent | 86b4e30b90dafb7578691e200b2e02ace3aa1700 (diff) | |
download | lite-xl-plugins-5d5f6a9db8d776e5808e2f4f34fbdfa28e8061dc.tar.gz lite-xl-plugins-5d5f6a9db8d776e5808e2f4f34fbdfa28e8061dc.zip |
Add Hybrid Line-numbers option to linenumbers.lua (#309)
* Update manifest.json
* Include Hybrid Line Number option
Add Hybrid line number option to linenumbers.lua plugin
* Update linenumbers.lua
* Update linenumbers.lua
* Update linenumbers.lua
* Update linenumbers.lua
* Removed unnecessary comment
Removed old and unnecessary comment
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/linenumbers.lua | 85 |
1 files changed, 56 insertions, 29 deletions
diff --git a/plugins/linenumbers.lua b/plugins/linenumbers.lua index c075776..2b2f508 100644 --- a/plugins/linenumbers.lua +++ b/plugins/linenumbers.lua @@ -8,6 +8,7 @@ local command = require "core.command" config.plugins.linenumbers = common.merge({ show = true, relative = false, + hybrid = false, -- The config specification used by the settings gui config_spec = { name = "Line Numbers", @@ -24,6 +25,13 @@ config.plugins.linenumbers = common.merge({ path = "relative", type = "toggle", default = false + }, + { + label = "Hybrid Line Numbers", + description = "Display hybrid line numbers starting from active line (Overpowers relative line-numbers).", + path = "hybrid", + type = "toggle", + default = false } } }, config.plugins.linenumbers) @@ -37,46 +45,49 @@ function DocView:draw_line_gutter(line, x, y, width) return lh end - if config.plugins.linenumbers.relative then - local color = style.line_number - local local_idx = line + if not (config.plugins.linenumbers.relative or config.plugins.linenumbers.hybrid) then + return draw_line_gutter(self, line, x, y, width) + end - for _, line1, _, line2 in self.doc:get_selections(true) do - if line >= line1 and line <= line2 then - color = style.line_number2 - break - end - end + local color = style.line_number - local l1 = self.doc:get_selection(false) - if line == l1 then + for _, line1, _, line2 in self.doc:get_selections(true) do + if line == line1 then color = style.line_number2 - local_idx = 0 - else - local_idx = math.abs(line - l1) + break end + end - common.draw_text( - self:get_font(), - color, local_idx, "right", - x + style.padding.x, - y, - width, lh - ) - else - return draw_line_gutter(self, line, x, y, width) + local l1 = self.doc:get_selection(false) + local local_idx = math.abs(line - l1) + local alignment = "right" + local x_offset = style.padding.x + + if config.plugins.linenumbers.hybrid and line == l1 then + local_idx = line + alignment = "left" + x_offset = 0 end + + common.draw_text( + self:get_font(), + color, local_idx, alignment, + x + x_offset, + y, + width, lh + ) + return lh end function DocView:get_gutter_width(...) if - not config.plugins.linenumbers.show + not config.plugins.linenumbers.show then local width = get_gutter_width(self, ...) local correct_width = self:get_font():get_width(#self.doc.lines) - + (style.padding.x * 2) + + (style.padding.x * 2) -- compatibility with center doc if width <= correct_width then @@ -90,15 +101,15 @@ function DocView:get_gutter_width(...) end command.add(nil, { - ["line-numbers:toggle"] = function() + ["line-numbers:toggle"] = function() config.plugins.linenumbers.show = not config.plugins.linenumbers.show end, - ["line-numbers:disable"] = function() + ["line-numbers:disable"] = function() config.plugins.linenumbers.show = false end, - ["line-numbers:enable"] = function() + ["line-numbers:enable"] = function() config.plugins.linenumbers.show = true end, @@ -110,7 +121,23 @@ command.add(nil, { config.plugins.linenumbers.relative = true end, - ["relative-line-numbers:disable"] = function() + ["relative-line-numbers:disable"] = function() + config.plugins.linenumbers.relative = false + end, + + ["hybrid-line-numbers:toggle"] = function() + config.plugins.linenumbers.hybrid = not config.plugins.linenumbers.hybrid + if config.plugins.linenumbers.hybrid then + config.plugins.linenumbers.relative = false -- Disable relative mode when enabling hybrid mode + end + end, + + ["hybrid-line-numbers:enable"] = function() + config.plugins.linenumbers.hybrid = true config.plugins.linenumbers.relative = false + end, + + ["hybrid-line-numbers:disable"] = function() + config.plugins.linenumbers.hybrid = false end }) |