diff --git a/data/plugins/lineguide.lua b/data/plugins/lineguide.lua index 7899046f..efe606dd 100644 --- a/data/plugins/lineguide.lua +++ b/data/plugins/lineguide.lua @@ -14,6 +14,56 @@ config.plugins.lineguide = common.merge({ -- 100, -- 120, config.line_limit + }, + -- The config specification used by gui generators + config_spec = { + name = "Line Guide", + { + label = "Enabled", + description = "Disable or enable drawing of the line guide.", + path = "enabled", + type = "toggle", + default = true + }, + { + label = "Width", + description = "Width in pixels of the line guide.", + path = "width", + type = "number", + default = 2, + min = 1 + }, + { + label = "Ruler Positions", + description = "The different column numbers for the line guides to draw.", + path = "rulers", + type = "list_strings", + default = { tostring(config.line_limit) or "80" }, + get_value = function(rulers) + if type(rulers) == "table" then + local new_rulers = {} + for _, ruler in ipairs(rulers) do + table.insert(new_rulers, tostring(ruler)) + end + return new_rulers + else + return { tostring(config.line_limit) } + end + end, + set_value = function(rulers) + local new_rulers = {} + for _, ruler in ipairs(rulers) do + local number = tonumber(ruler) + if number then + table.insert(new_rulers, number) + end + end + if #new_rulers == 0 then + table.insert(new_rulers, config.line_limit) + end + return new_rulers + end + } } }, config.plugins.lineguide) @@ -31,7 +81,13 @@ local draw_overlay = DocView.draw_overlay function DocView:draw_overlay(...) draw_overlay(self, ...) - if config.plugins.lineguide.enabled and not self:is(CommandView) then + if + type(config.plugins.lineguide) == "table" + and + config.plugins.lineguide.enabled + and + not self:is(CommandView) + then local line_x = self:get_line_screen_position(1) local character_width = self:get_font():get_width("n") local ruler_width = config.plugins.lineguide.width