Skip to content

Commit

Permalink
fix: Tables can now have a predefined width
Browse files Browse the repository at this point in the history
`col_min_width` has been added to the table configuration table.
  • Loading branch information
OXY2DEV committed Sep 10, 2024
1 parent 6a921f4 commit f139fab
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
3 changes: 3 additions & 0 deletions lua/definitions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,9 @@
--- Enable/Disable custom table
---@field enable boolean?
---
--- Minimum width of a column
---@field col_min_width integer?
---
--- Enable/Disable the usage of virtual lines for the top/bottom border
---@field use_virt_lines boolean?
---
Expand Down
14 changes: 7 additions & 7 deletions lua/markview/renderer.lua
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ local table_header = function (buffer, content, config_table)
local align = content.content_alignments[curr_tbl_col];

-- Extracted width of separator
local tbl_col_width = content.col_widths[curr_tbl_col];
local tbl_col_width = math.max(tbl_conf.col_min_width or 0, content.col_widths[curr_tbl_col]);

-- The column number of headers must match the
-- column number of separators
Expand Down Expand Up @@ -571,7 +571,7 @@ local table_seperator = function (buffer, content, user_config, r_num)
virt_text_pos = "inline",
virt_text = {
{ tbl_conf.text[13], set_hl(tbl_conf.hl[13]) },
{ string.rep(tbl_conf.text[2], vim.fn.strchars(col) - 1), set_hl(tbl_conf.hl[2]) }
{ string.rep(tbl_conf.text[2], math.max(tbl_conf.col_min_width or 0, vim.fn.strchars(col)) - 1), set_hl(tbl_conf.hl[2]) }
},

end_col = col_start + curr_col + vim.fn.strchars(col) + 1,
Expand All @@ -581,7 +581,7 @@ local table_seperator = function (buffer, content, user_config, r_num)
vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), col_start + curr_col, {
virt_text_pos = "inline",
virt_text = {
{ string.rep(tbl_conf.text[2], vim.fn.strchars(col) - 1), set_hl(tbl_conf.hl[2]) },
{ string.rep(tbl_conf.text[2], math.max(tbl_conf.col_min_width or 0, vim.fn.strchars(col)) - 1), set_hl(tbl_conf.hl[2]) },
{ tbl_conf.text[14], set_hl(tbl_conf.hl[14]) }
},

Expand All @@ -593,7 +593,7 @@ local table_seperator = function (buffer, content, user_config, r_num)
virt_text_pos = "inline",
virt_text = {
{ tbl_conf.text[15], set_hl(tbl_conf.hl[15]) },
{ string.rep(tbl_conf.text[2], vim.fn.strchars(col) - 2), set_hl(tbl_conf.hl[2]) },
{ string.rep(tbl_conf.text[2], math.max(tbl_conf.col_min_width or 0, vim.fn.strchars(col)) - 2), set_hl(tbl_conf.hl[2]) },
{ tbl_conf.text[16], set_hl(tbl_conf.hl[16]) }
},

Expand All @@ -605,7 +605,7 @@ local table_seperator = function (buffer, content, user_config, r_num)
vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), col_start + curr_col, {
virt_text_pos = "inline",
virt_text = {
{ string.rep(tbl_conf.text[2], vim.fn.strchars(col)), set_hl(tbl_conf.hl[8]) }
{ string.rep(tbl_conf.text[2], math.max(tbl_conf.col_min_width or 0, vim.fn.strchars(col))), set_hl(tbl_conf.hl[8]) }
},

end_col = col_start + curr_col + vim.fn.strchars(col) + 1,
Expand Down Expand Up @@ -699,7 +699,7 @@ local table_footer = function (buffer, content, config_table)
local align = content.content_alignments[curr_tbl_col];

-- Extracted width of separator
local tbl_col_width = content.col_widths[curr_tbl_col];
local tbl_col_width = math.max(tbl_conf.col_min_width or 0, content.col_widths[curr_tbl_col]);

if #content.rows[#content.rows] == #content.rows[2] and tbl_col_width then
actual_width = math.min(math.max(actual_width, tbl_col_width), tbl_col_width);
Expand Down Expand Up @@ -806,7 +806,7 @@ local table_content = function (buffer, content, config_table, r_num)
local align = content.content_alignments[curr_tbl_col];

-- Extracted width of separator
local tbl_col_width = content.col_widths[curr_tbl_col];
local tbl_col_width = math.max(tbl_conf.col_min_width or 0, content.col_widths[curr_tbl_col]);

if #content.rows[r_num] == #content.rows[2] and tbl_col_width then
actual_width = math.min(math.max(actual_width, tbl_col_width), tbl_col_width);
Expand Down

0 comments on commit f139fab

Please sign in to comment.