From 6c65cfc98fe12dd3a09026a7c9e978c64dcc1433 Mon Sep 17 00:00:00 2001 From: Shawon Date: Mon, 29 Jul 2024 18:21:15 +0600 Subject: [PATCH 01/35] Added basic support for new mode - Basic support for the new mode has been added. This only works if the `mode` option has `i` in it. - The entire thing now runs of tree-sitter. Only ranges are cached. - Deprecated: `options` is now deprecated. Use `callbacks` instead. - on_enable, on_disbale, on_mode_change callbacks added. - on_enable, on_disable provies {window} & {buffer} and on_mode_change provides {window}, {buffer} & {mode}. --- ftplugin/markdown.lua | 102 +++++++++++++++++++++++-------- lua/definitions.lua | 22 +++---- lua/markview.lua | 46 +++++++------- lua/markview/parser.lua | 9 ++- lua/markview/renderer.lua | 122 ++++++++++++++++++-------------------- lua/markview/utils.lua | 3 +- 6 files changed, 170 insertions(+), 134 deletions(-) diff --git a/ftplugin/markdown.lua b/ftplugin/markdown.lua index abc2d98..45772a8 100644 --- a/ftplugin/markdown.lua +++ b/ftplugin/markdown.lua @@ -28,7 +28,6 @@ if vim.islist(markview.configuration.highlight_groups) then end local markview_augroup = vim.api.nvim_create_augroup("markview_buf_" .. vim.api.nvim_get_current_buf(), { clear = true }); -local options = markview.configuration.options; vim.api.nvim_create_autocmd({ "BufWinEnter" }, { buffer = vim.api.nvim_get_current_buf(), @@ -44,10 +43,29 @@ vim.api.nvim_create_autocmd({ "BufWinEnter" }, { end if markview.state.enable == false then + -- Call the on_disable callback before exiting + if not markview.configuration.callbacks or not markview.configuration.callbacks.on_disable then + return; + end + + for _, window in ipairs(windows) do + pcall(markview.configuration.callbacks.on_disable, buffer, window); + end + return; end if markview.state.buf_states[buffer] == false then + -- Call the on_disable callback before exiting + -- Even if only the buffer is disabled + if not markview.configuration.callbacks or not markview.configuration.callbacks.on_disable then + return; + end + + for _, window in ipairs(windows) do + pcall(markview.configuration.callbacks.on_disable, buffer, window); + end + return; end @@ -66,8 +84,11 @@ vim.api.nvim_create_autocmd({ "BufWinEnter" }, { markview.renderer.render(buffer, parsed_content, markview.configuration) for _, window in ipairs(windows) do - vim.wo[window].conceallevel = type(options.on_enable) == "table" and options.on_enable.conceallevel or 2; - vim.wo[window].concealcursor = type(options.on_enable) == "table" and options.on_enable.concealcursor or "n"; + if markview.configuration.callbacks and markview.configuration.callbacks.on_enable then + pcall(markview.configuration.callbacks.on_enable, buffer, window); + end + -- vim.wo[window].conceallevel = type(options.on_enable) == "table" and options.on_enable.conceallevel or 2; + -- vim.wo[window].concealcursor = type(options.on_enable) == "table" and options.on_enable.concealcursor or "n"; markview.keymaps.init(buffer, window, parsed_content, markview.configuration); end @@ -93,35 +114,40 @@ vim.api.nvim_create_autocmd({ "ModeChanged", "TextChanged" }, { return; end + -- Only on mode change + if event.event == "ModeChanged" then + -- Call the on_mode_change callback before exiting + if not markview.configuration.callbacks or not markview.configuration.callbacks.on_mode_change then + return; + end + + for _, window in ipairs(windows) do + pcall(markview.configuration.callbacks.on_mode_change, buffer, window, mode); + end + end + + if vim.islist(markview.configuration.modes) and vim.list_contains(markview.configuration.modes, mode) then local parsed_content = markview.parser.init(buffer); - local cursor = vim.api.nvim_win_get_cursor(0) or {1, 0}; - - local draw_start, draw_stop = utils.get_cursor_range(buffer, windows[1], markview.configuration); + local parse_start, parse_stop = utils.get_cursor_range(buffer, windows[1], markview.configuration); markview.renderer.clear(buffer); - markview.renderer.render(buffer, parsed_content, markview.configuration, draw_start, draw_stop); if vim.list_contains(markview.configuration.modes, "i") and mode == "i" then - local partial_contents = markview.parser.parse_range(buffer, draw_start, draw_stop); - - markview.renderer.clear_partial_range(buffer, partial_contents); - -- markview.renderer.render_deleted(event.buf, cursor, markview.configuration); - -- markview.renderer.clear_under_cursor(buffer, cursor); + markview.renderer.render(buffer, parsed_content, markview.configuration, parse_start, parse_stop); + else + markview.renderer.render(buffer, parsed_content, markview.configuration); end - for _, window in ipairs(windows) do - vim.wo[window].conceallevel = type(options.on_enable) == "table" and options.on_enable.conceallevel or 2; - vim.wo[window].concealcursor = type(options.on_enable) == "table" and options.on_enable.concealcursor or "n"; + local partial_contents = markview.parser.parse_range(event.buf, parse_start, parse_stop); + local current_range = markview.renderer.get_content_range(partial_contents); + + markview.renderer.update_range(buffer, current_range); + for _, window in ipairs(windows) do markview.keymaps.init(buffer, window, parsed_content, markview.configuration); end else - for _, window in ipairs(windows) do - vim.wo[window].conceallevel = type(options.on_disable) == "table" and options.on_disable.conceallevel or markview.global_options.conceallevel; - vim.wo[window].concealcursor = type(options.on_disable) == "table" and options.on_disable.concealcursor or markview.global_options.concealcursor; - end - markview.renderer.clear(buffer); end end @@ -138,16 +164,40 @@ vim.api.nvim_create_autocmd({ "CursorMovedI" }, { group = markview_augroup, callback = function (event) + if markview.state.enable == false then + move_timer:stop(); + return; + end + + if markview.state.buf_states[event.buf] == false then + move_timer:stop(); + return; + end + move_timer:stop(); move_timer:start(100, 0, vim.schedule_wrap(function () - local prev_contents = markview.parser.parse_range(event.buf); + local old_start, old_stop = _G.__markview_render_ranges[event.buf][1], _G.__markview_render_ranges[event.buf][2]; + local parse_start, parse_stop = utils.get_cursor_range(event.buf, 0, markview.configuration); + + vim.print(parse_start .. " : " .. parse_stop) + local prev_contents = markview.parser.parse_range(event.buf, old_start, old_stop); + local partial_contents = markview.parser.parse_range(event.buf, parse_start, parse_stop); + + local current_range = markview.renderer.get_content_range(partial_contents); + + -- Don't draw new things + if _G.__markview_render_ranges[event.buf] and vim.deep_equal(_G.__markview_render_ranges[event.buf], current_range) then + markview.renderer.clear_content_range(event.buf, partial_contents) + return; + end + + markview.renderer.clear_content_range(event.buf, partial_contents) + + markview.renderer.clear_content_range(event.buf, prev_contents); - local draw_start, draw_stop = utils.get_cursor_range(event.buf, 0, markview.configuration); - local partial_contents = markview.parser.parse_range(event.buf, draw_start, draw_stop); + markview.renderer.render_in_range(event.buf, prev_contents, markview.configuration, draw_start, draw_stop); - markview.renderer.clear_partial_range(event.buf, prev_contents); - markview.renderer.render_partial(event.buf, prev_contents, markview.configuration, draw_start, draw_stop); - markview.renderer.clear_partial_range(event.buf, partial_contents); + markview.renderer.update_range(event.buf, current_range); end)); end }) diff --git a/lua/definitions.lua b/lua/definitions.lua index 4e57138..aa2ce57 100644 --- a/lua/definitions.lua +++ b/lua/definitions.lua @@ -16,8 +16,8 @@ --- List of modes where the plugin will be active ---@field modes string[]? --- ---- Options for various plugins states ----@field options markview.config.options? +--- Callbacks for plugin states +---@field callbacks markview.config.callbacks? --- --- Table for heading configuration ---@field headings markview.render_config.headings? @@ -60,7 +60,7 @@ ---@field modes string[] --- --- Options for various plugins states ----@field options markview.config.options +---@field callbacks markview.config.callbacks --- --- Table for heading configuration ---@field headings markview.render_config.headings @@ -90,20 +90,14 @@ ---@field tables markview.render_config.tables ---- Definition for the options ----@class markview.config.options ---- ----@field on_enable markview.config.options.available +--- Definition for the plugin callbacks +---@class markview.config.callbacks --- ----@field on_disable markview.config.options.available - ---- Available options ----@class markview.config.options.available +---@field on_enable function? --- ---- Conceal level ----@field conceallevel number +---@field on_disable function? --- ----@field concealcursor string? +---@field on_mode_change function? --------------------------------------------------------------- --- For rendering things diff --git a/lua/markview.lua b/lua/markview.lua index 3e31206..17a0be3 100644 --- a/lua/markview.lua +++ b/lua/markview.lua @@ -43,16 +43,18 @@ markview.global_options = {}; ---@type markview.config markview.configuration = { - options = { - on_enable = { - conceallevel = 2, - concealcursor = "n" - }, - - on_disable = { - conceallevel = 0, - concealcursor = "" - } + callbacks = { + on_enable = function (buffer, window) + vim.wo[window].conceallevel = 2; + vim.wo[window].concealcursor = "nc"; + end, + on_disable = function (buffer, window) + vim.wo[window].conceallevel = 0; + vim.wo[window].concealcursor = ""; + end, + + on_mode_change = function (buffer, window, mode) + end }, highlight_groups = { @@ -661,11 +663,11 @@ markview.commands = { for _, buf in ipairs(markview.attached_buffers) do local parsed_content = markview.parser.init(buf); local windows = utils.find_attached_wins(buffer); - local options = markview.configuration.options or {}; - for _, window in ipairs(windows) do - vim.wo[window].conceallevel = type(options.on_enable) == "table" and options.on_enable.conceallevel or 2; - vim.wo[window].concealcursor = type(options.on_enable) == "table" and options.on_enable.concealcursor or "n"; + if markview.configuration.callbacks and markview.configuration.callbacks.on_enable then + for _, window in ipairs(windows) do + pcall(markview.configuration.callbacks.on_enable, buf, window); + end end markview.renderer.clear(buf); @@ -675,11 +677,11 @@ markview.commands = { disableAll = function () for _, buf in ipairs(markview.attached_buffers) do local windows = utils.find_attached_wins(buffer); - local options = markview.configuration.options or {}; - for _, window in ipairs(windows) do - vim.wo[window].conceallevel = type(options.on_disable) == "table" and options.on_disable.conceallevel or markview.global_options.conceallevel; - vim.wo[window].concealcursor = type(options.on_disable) == "table" and options.on_disable.concealcursor or markview.global_options.concealcursor; + if markview.configuration.callbacks and markview.configuration.callbacks.on_disable then + for _, window in ipairs(windows) do + pcall(markview.configuration.callbacks.on_disable, buf, window); + end end markview.renderer.clear(buf); @@ -707,7 +709,6 @@ markview.commands = { end, enable = function (buf) local buffer = tonumber(buf) or vim.api.nvim_get_current_buf(); - local options = markview.configuration.options or {}; if not vim.list_contains(markview.attached_buffers, buffer) or not vim.api.nvim_buf_is_valid(buffer) then return; @@ -720,8 +721,7 @@ markview.commands = { markview.state.buf_states[buffer] = true; for _, window in ipairs(windows) do - vim.wo[window].conceallevel = type(options.on_enable) == "table" and options.on_enable.conceallevel or 2; - vim.wo[window].concealcursor = type(options.on_enable) == "table" and options.on_enable.concealcursor or "n"; + pcall(markview.configuration.callbacks.on_enable, buf, window); end markview.renderer.clear(buffer); @@ -730,7 +730,6 @@ markview.commands = { disable = function (buf) local buffer = tonumber(buf) or vim.api.nvim_get_current_buf(); - local options = markview.configuration.options or {}; if not vim.list_contains(markview.attached_buffers, buffer) or not vim.api.nvim_buf_is_valid(buffer) then return; @@ -739,8 +738,7 @@ markview.commands = { local windows = utils.find_attached_wins(buffer); for _, window in ipairs(windows) do - vim.wo[window].conceallevel = type(options.on_disable) == "table" and options.on_disable.conceallevel or markview.global_options.conceallevel; - vim.wo[window].concealcursor = type(options.on_disable) == "table" and options.on_disable.concealcursor or markview.global_options.concealcursor; + pcall(markview.configuration.callbacks.on_disable, buf, window); end markview.renderer.clear(buffer); diff --git a/lua/markview/parser.lua b/lua/markview/parser.lua index 4bf9eb6..067e0d2 100644 --- a/lua/markview/parser.lua +++ b/lua/markview/parser.lua @@ -480,14 +480,13 @@ parser.init = function (buffer) end parser.parse_range = function (buffer, from, to) + if not from or not to then + return {}; + end + local root_parser = vim.treesitter.get_parser(buffer); root_parser:parse(true); - if (not from or not to) and _G.__markview_render_ranges and _G.__markview_render_ranges[buffer] then - from = _G.__markview_render_ranges[buffer][1]; - to = _G.__markview_render_ranges[buffer][2]; - end - -- -- Clear the previous contents parser.parsed_content = {}; local main_tree_parsed = false; diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index a963c41..555d1f9 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -1285,12 +1285,8 @@ renderer.destroy = function (buffer) -- vim.api.nvim_buf_clear_namespace(buffer, renderer.namespace, max_range[1], max_range[2] + 1); end -renderer.render_deleted_items = function (buffer, config_table) - if not renderer.removed_elements[buffer] then - return; - end - - for _, content in ipairs(renderer.removed_elements[buffer]) do +renderer.render_in_range = function (buffer, partial_contents, config_table, from, to) + for _, content in ipairs(partial_contents) do local type = content.type; local fold_closed = vim.fn.foldclosed(content.row_start + 1); @@ -1298,6 +1294,10 @@ renderer.render_deleted_items = function (buffer, config_table) goto extmark_skipped; end + -- if content.row_start < from or content.row_end > to then + -- goto extmark_skipped; + -- end + if type == "heading_s" then renderer.render_headings_s(buffer, content, config_table.headings); @@ -1336,6 +1336,10 @@ renderer.render = function (buffer, parsed_content, config_table, conceal_start, _G.__markview_views[buffer] = parsed_content; end + if _G.__markview_render_ranges and _G.__markview_render_ranges[buffer] then + _G.__markview_render_ranges[buffer] = {}; + end + for _, content in ipairs(_G.__markview_views[buffer]) do local type = content.type; local fold_closed = vim.fn.foldclosed(content.row_start + 1); @@ -1344,9 +1348,10 @@ renderer.render = function (buffer, parsed_content, config_table, conceal_start, goto extmark_skipped; end - -- if conceal_start and conceal_stop and content.row_start >= conceal_start and content.row_end <= conceal_stop then - -- goto extmark_skipped; - -- end + -- Do not render things inside the un-conceal range + if conceal_start and conceal_stop and content.row_start >= conceal_start and content.row_end <= conceal_stop then + goto extmark_skipped; + end if type == "heading_s" then renderer.render_headings_s(buffer, content, config_table.headings); @@ -1380,65 +1385,19 @@ renderer.clear = function (buffer) vim.api.nvim_buf_clear_namespace(buffer, renderer.namespace, 0, -1) end -renderer.clear_under_cursor = function (buffer, cursor) - if not _G.__markview_views[buffer] then - return; - elseif not renderer.removed_elements then - renderer.removed_elements = {}; - end - if not renderer.removed_elements[buffer] then - renderer.removed_elements[buffer] = {}; - end - renderer.clear_elements(buffer, cursor); -end -renderer.render_partial = function (buffer, partial_contents, config_table, conceal_start, conceal_stop) - -- if not renderer.removed_elements[buffer] then - -- return - -- end - for _, content in ipairs(partial_contents) do - local type = content.type; - local fold_closed = vim.fn.foldclosed(content.row_start + 1); - if fold_closed ~= -1 then - goto extmark_skipped; - end - if content.row_start >= conceal_start and content.row_end <= conceal_stop then - goto extmark_skipped; - end - if type == "heading_s" then - renderer.render_headings_s(buffer, content, config_table.headings); - elseif type == "heading" then - renderer.render_headings(buffer, content, config_table.headings) - elseif type == "code_block" then - renderer.render_code_blocks(buffer, content, config_table.code_blocks) - elseif type == "block_quote" then - renderer.render_block_quotes(buffer, content, config_table.block_quotes); - elseif type == "horizontal_rule" then - renderer.render_horizontal_rules(buffer, content, config_table.horizontal_rules); - elseif type == "link" then - renderer.render_links(buffer, content, config_table.links); - elseif type == "image" then - renderer.render_links(buffer, content, config_table.images); - elseif type == "inline_code" then - renderer.render_inline_codes(buffer, content, config_table.inline_codes) - elseif type == "list_item" then - renderer.render_lists(buffer, content, config_table.list_items) - elseif type == "checkbox" then - renderer.render_checkboxes(buffer, content, config_table.checkboxes) - elseif type == "table" then - renderer.render_tables(buffer, content, config_table) - end - ::extmark_skipped:: - end -end + + + + renderer.update = function (buffer, parsed_content) if not _G.__markview_views then @@ -1450,7 +1409,23 @@ renderer.update = function (buffer, parsed_content) end end -renderer.clear_partial_range = function (buffer, parsed_content) +renderer.update_range = function (buffer, new_range) + if not _G.__markview_render_ranges then + _G.__markview_render_ranges = {}; + end + + if not _G.__markview_render_ranges[buffer] then + _G.__markview_render_ranges[buffer] = {}; + end + + if new_range and not vim.deep_equal(_G.__markview_render_ranges[buffer], new_range) then + _G.__markview_render_ranges[buffer] = new_range; + end + + -- error("nil range") +end + +renderer.clear_content_range = function (buffer, parsed_content) local max_range = { nil, nil }; for _, content in ipairs(parsed_content) do @@ -1471,12 +1446,31 @@ renderer.clear_partial_range = function (buffer, parsed_content) max_range[2] = max_range[2] + 1; end - if not _G.__markview_render_ranges then - _G.__markview_render_ranges = {}; + vim.api.nvim_buf_clear_namespace(buffer, renderer.namespace, max_range[1], max_range[2]); +end + +renderer.get_content_range = function (parsed_content) + local max_range = { nil, nil }; + + for _, content in ipairs(parsed_content) do + if not max_range[1] or (content.row_start) < max_range[1] then + max_range[1] = content.row_start; + end + + if not max_range[2] or (content.row_end) > max_range[2] then + max_range[2] = content.row_end; + end end - _G.__markview_render_ranges[buffer] = max_range; - vim.api.nvim_buf_clear_namespace(buffer, renderer.namespace, max_range[1], max_range[2]); + if not max_range[1] or not max_range[2] then + return; + end + + if max_range[1] == max_range[2] then + max_range[2] = max_range[2] + 1; + end + + return max_range; end return renderer; diff --git a/lua/markview/utils.lua b/lua/markview/utils.lua index 888d6a3..9c2a4a4 100644 --- a/lua/markview/utils.lua +++ b/lua/markview/utils.lua @@ -16,7 +16,8 @@ utils.get_cursor_range = function (buffer, window, config_table) local cursor = vim.api.nvim_win_get_cursor(window or 0); local lines = vim.api.nvim_buf_line_count(buffer); - return math.max(0, (cursor[1] - 1) - (config_table.draw_range or 1)), math.min(lines, (cursor[1] - 1) + (config_table.draw_range or 1)); + -- For testing purposes, remove if not doable + return math.max(0, (cursor[1] - 1) - (config_table.edit_range or 0)), math.min(lines, (cursor[1] - 1) + (config_table.edit_range or 1)); end return utils; From 8a8ed06db0706a9da528725291005caf0b988798 Mon Sep 17 00:00:00 2001 From: Shawon Date: Mon, 29 Jul 2024 21:33:39 +0600 Subject: [PATCH 02/35] Added table support for hybrid-mode - Hybrid mode now works with tables too(even in insert mode) - Modes where raw & preview are shown can now be customised with the new `hybrid_modes` option. It is a list containing modes where both are shown. [ See #58 ] - Did some minor cleanup of codes. --- ftplugin/markdown.lua | 43 ++++++++++++------- lua/definitions.lua | 6 +++ lua/markview.lua | 7 ++- lua/markview/parser.lua | 24 +++++++++-- lua/markview/renderer.lua | 90 +++++++++++++++++---------------------- 5 files changed, 99 insertions(+), 71 deletions(-) diff --git a/ftplugin/markdown.lua b/ftplugin/markdown.lua index 45772a8..b5ded67 100644 --- a/ftplugin/markdown.lua +++ b/ftplugin/markdown.lua @@ -78,7 +78,7 @@ vim.api.nvim_create_autocmd({ "BufWinEnter" }, { } end - local parsed_content = markview.parser.init(buffer); + local parsed_content = markview.parser.init(buffer, markview.configuration); markview.renderer.clear(buffer); markview.renderer.render(buffer, parsed_content, markview.configuration) @@ -87,8 +87,6 @@ vim.api.nvim_create_autocmd({ "BufWinEnter" }, { if markview.configuration.callbacks and markview.configuration.callbacks.on_enable then pcall(markview.configuration.callbacks.on_enable, buffer, window); end - -- vim.wo[window].conceallevel = type(options.on_enable) == "table" and options.on_enable.conceallevel or 2; - -- vim.wo[window].concealcursor = type(options.on_enable) == "table" and options.on_enable.concealcursor or "n"; markview.keymaps.init(buffer, window, parsed_content, markview.configuration); end @@ -118,7 +116,7 @@ vim.api.nvim_create_autocmd({ "ModeChanged", "TextChanged" }, { if event.event == "ModeChanged" then -- Call the on_mode_change callback before exiting if not markview.configuration.callbacks or not markview.configuration.callbacks.on_mode_change then - return; + goto noCallbacks; end for _, window in ipairs(windows) do @@ -126,20 +124,21 @@ vim.api.nvim_create_autocmd({ "ModeChanged", "TextChanged" }, { end end + ::noCallbacks:: - if vim.islist(markview.configuration.modes) and vim.list_contains(markview.configuration.modes, mode) then - local parsed_content = markview.parser.init(buffer); + if markview.configuration.modes and vim.list_contains(markview.configuration.modes, mode) then + local parsed_content = markview.parser.init(buffer, markview.configuration); local parse_start, parse_stop = utils.get_cursor_range(buffer, windows[1], markview.configuration); markview.renderer.clear(buffer); - if vim.list_contains(markview.configuration.modes, "i") and mode == "i" then + if markview.configuration.hybrid_modes and vim.list_contains(markview.configuration.hybrid_modes, mode) then markview.renderer.render(buffer, parsed_content, markview.configuration, parse_start, parse_stop); else markview.renderer.render(buffer, parsed_content, markview.configuration); end - local partial_contents = markview.parser.parse_range(event.buf, parse_start, parse_stop); + local partial_contents = markview.parser.parse_range(event.buf, markview.configuration, parse_start, parse_stop); local current_range = markview.renderer.get_content_range(partial_contents); markview.renderer.update_range(buffer, current_range); @@ -153,13 +152,22 @@ vim.api.nvim_create_autocmd({ "ModeChanged", "TextChanged" }, { end }); -if not vim.list_contains(markview.configuration.modes, "i") then +if not markview.configuration.hybrid_modes then return; end +local events = {} local move_timer = vim.uv.new_timer(); -vim.api.nvim_create_autocmd({ "CursorMovedI" }, { +if vim.list_contains(markview.configuration.hybrid_modes, "n") or vim.list_contains(markview.configuration.hybrid_modes, "v") then + table.insert(events, "CursorMoved"); +end + +if vim.list_contains(markview.configuration.hybrid_modes, "i") then + table.insert(events, "CursorMovedI"); +end + +vim.api.nvim_create_autocmd(events, { buffer = vim.api.nvim_get_current_buf(), group = markview_augroup, @@ -176,12 +184,19 @@ vim.api.nvim_create_autocmd({ "CursorMovedI" }, { move_timer:stop(); move_timer:start(100, 0, vim.schedule_wrap(function () + if not _G.__markview_render_ranges then + _G.__markview_render_ranges = {}; + end + + if not _G.__markview_render_ranges[event.buf] then + _G.__markview_render_ranges[event.buf] = {}; + end + local old_start, old_stop = _G.__markview_render_ranges[event.buf][1], _G.__markview_render_ranges[event.buf][2]; local parse_start, parse_stop = utils.get_cursor_range(event.buf, 0, markview.configuration); - vim.print(parse_start .. " : " .. parse_stop) - local prev_contents = markview.parser.parse_range(event.buf, old_start, old_stop); - local partial_contents = markview.parser.parse_range(event.buf, parse_start, parse_stop); + local prev_contents = markview.parser.parse_range(event.buf, markview.configuration, old_start, old_stop); + local partial_contents = markview.parser.parse_range(event.buf, markview.configuration, parse_start, parse_stop); local current_range = markview.renderer.get_content_range(partial_contents); @@ -192,11 +207,9 @@ vim.api.nvim_create_autocmd({ "CursorMovedI" }, { end markview.renderer.clear_content_range(event.buf, partial_contents) - markview.renderer.clear_content_range(event.buf, prev_contents); markview.renderer.render_in_range(event.buf, prev_contents, markview.configuration, draw_start, draw_stop); - markview.renderer.update_range(event.buf, current_range); end)); end diff --git a/lua/definitions.lua b/lua/definitions.lua index aa2ce57..dca1a23 100644 --- a/lua/definitions.lua +++ b/lua/definitions.lua @@ -16,6 +16,9 @@ --- List of modes where the plugin will be active ---@field modes string[]? --- +--- List of modes where both raw & preview is shown +---@field hybrid_modes string[]? +--- --- Callbacks for plugin states ---@field callbacks markview.config.callbacks? --- @@ -59,6 +62,9 @@ --- List of modes where the plugin will be active ---@field modes string[] --- +--- List of modes where both raw & preview is shown +---@field hybrid_modes string[]? +--- --- Options for various plugins states ---@field callbacks markview.config.callbacks --- diff --git a/lua/markview.lua b/lua/markview.lua index 17a0be3..3949950 100644 --- a/lua/markview.lua +++ b/lua/markview.lua @@ -54,6 +54,11 @@ markview.configuration = { end, on_mode_change = function (buffer, window, mode) + if vim.list_contains(markview.configuration.modes, mode) then + vim.wo[window].conceallevel = 2; + else + vim.wo[window].conceallevel = 0; + end end }, @@ -640,7 +645,7 @@ markview.configuration = { "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg" }, - use_virt_lines = false + use_virt_lines = true }, }; diff --git a/lua/markview/parser.lua b/lua/markview/parser.lua index 067e0d2..c9d3633 100644 --- a/lua/markview/parser.lua +++ b/lua/markview/parser.lua @@ -281,6 +281,17 @@ parser.md = function (buffer, TStree, from, to) table.insert(rows, tmp) end + local s_start, s_end; + + -- This is a woraround to make both table renders to work + if parser.cached_conf and parser.cached_conf.tables and parser.cached_conf.tables.use_virt_lines == false then + s_start = row_start; + s_end = row_end; + + row_start = row_start - 1; + row_end = row_end + 1; + end + table.insert(parser.parsed_content, { node = capture_node, type = "table", @@ -290,11 +301,14 @@ parser.md = function (buffer, TStree, from, to) content_alignments = alignments, + __r_start = s_start, + __r_end = s_end, + row_start = row_start, row_end = row_end, col_start = col_start, - col_end = col_end + col_end = col_end, }) elseif capture_name == "list_item" then local marker = capture_node:named_child(0); @@ -458,10 +472,14 @@ end --- Parsed data is stored as a "view" in renderer.lua --- ---@param buffer number -parser.init = function (buffer) +parser.init = function (buffer, config_table) local root_parser = vim.treesitter.get_parser(buffer); root_parser:parse(true); + if config_table then + parser.cached_conf = config_table; + end + -- Clear the previous contents parser.parsed_content = {}; local main_tree_parsed = false; @@ -479,7 +497,7 @@ parser.init = function (buffer) return parser.parsed_content; end -parser.parse_range = function (buffer, from, to) +parser.parse_range = function (buffer, config_table, from, to) if not from or not to then return {}; end diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 555d1f9..9eac5da 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -149,6 +149,7 @@ end ---@param config_table markview.config local table_header = function (buffer, content, config_table) local tbl_conf = config_table.tables; + local row_start = content.__r_start or content.row_start; local curr_col = 0; local curr_tbl_col = 1; @@ -157,7 +158,7 @@ local table_header = function (buffer, content, config_table) for index, col in ipairs(content.rows[1]) do if index == 1 then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, content.col_start, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } @@ -170,7 +171,7 @@ local table_header = function (buffer, content, config_table) table.insert(virt_txt, { tbl_conf.text[1], set_hl(tbl_conf.hl[1]) }) curr_col = curr_col + 1 elseif index == #content.rows[1] then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, content.col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } @@ -183,14 +184,17 @@ local table_header = function (buffer, content, config_table) table.insert(virt_txt, { tbl_conf.text[3], set_hl(tbl_conf.hl[3]) }) if config_table.tables.use_virt_lines == true then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, content.col_start, { virt_lines_above = true, virt_lines = { virt_txt } }); elseif content.row_start > 0 then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start - 1, content.col_start, { + -- BUG: Nearby tables can cause text to overlap + vim.api.nvim_buf_clear_namespace(buffer, renderer.namespace, row_start - 1, content.row_start); + + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start - 1, content.col_start, { virt_text_pos = "inline", virt_text = virt_txt }); @@ -223,7 +227,7 @@ local table_header = function (buffer, content, config_table) } }); elseif align == "right" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start + curr_col + width + 1, { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } @@ -262,13 +266,14 @@ end ---@param r_num number local table_seperator = function (buffer, content, user_config, r_num) local tbl_conf = user_config.tables; + local row_start = content.__r_start or content.row_start; local curr_col = 0; local curr_tbl_col = 1; for index, col in ipairs(content.rows[r_num]) do if index == 1 then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + (r_num - 1), content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[5], set_hl(tbl_conf.hl[5]) } @@ -280,7 +285,7 @@ local table_seperator = function (buffer, content, user_config, r_num) curr_col = curr_col + 1; elseif index == #content.rows[1] then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + (r_num - 1), content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[7], set_hl(tbl_conf.hl[7]) } @@ -292,7 +297,7 @@ local table_seperator = function (buffer, content, user_config, r_num) curr_col = curr_col + 1; elseif col == "|" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + (r_num - 1), content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[8], set_hl(tbl_conf.hl[8]) } @@ -308,7 +313,7 @@ local table_seperator = function (buffer, content, user_config, r_num) if col:match(":") then if align == "left" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + (r_num - 1), content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[13], set_hl(tbl_conf.hl[13]) }, @@ -319,7 +324,7 @@ local table_seperator = function (buffer, content, user_config, r_num) conceal = "" }); elseif align == "right" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + (r_num - 1), content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.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]) }, @@ -330,7 +335,7 @@ local table_seperator = function (buffer, content, user_config, r_num) conceal = "" }); elseif align == "center" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + (r_num - 1), content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[15], set_hl(tbl_conf.hl[15]) }, @@ -343,7 +348,7 @@ local table_seperator = function (buffer, content, user_config, r_num) }); end else - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + (r_num - 1), content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.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]) } @@ -366,6 +371,7 @@ end ---@param config_table markview.config local table_footer = function (buffer, content, config_table) local tbl_conf = config_table.tables; + local row_end = content.__r_end or content.row_end; local curr_col = 0; local curr_tbl_col = 1; @@ -374,7 +380,7 @@ local table_footer = function (buffer, content, config_table) for index, col in ipairs(content.rows[#content.rows]) do if index == 1 then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_end - 1, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } @@ -387,7 +393,7 @@ local table_footer = function (buffer, content, config_table) table.insert(virt_txt, { tbl_conf.text[9], set_hl(tbl_conf.hl[9]) }) curr_col = curr_col + 1 elseif index == #content.rows[1] then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_end - 1, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } @@ -400,14 +406,14 @@ local table_footer = function (buffer, content, config_table) table.insert(virt_txt, { tbl_conf.text[11], set_hl(tbl_conf.hl[11]) }) if config_table.tables.use_virt_lines == true then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_end - 1, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start, { virt_lines_above = false, virt_lines = { virt_txt } }); elseif content.row_start > 0 then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_end, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end, content.col_start, { virt_text_pos = "inline", virt_text = virt_txt }); @@ -415,7 +421,7 @@ local table_footer = function (buffer, content, config_table) curr_col = curr_col + 1 elseif col == "|" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_end - 1, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } @@ -433,14 +439,14 @@ local table_footer = function (buffer, content, config_table) if width < actual_width then if align == "left" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_end - 1, content.col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start + curr_col + width + 1, { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } } }); elseif align == "right" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_end - 1, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start, { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } @@ -449,14 +455,14 @@ local table_footer = function (buffer, content, config_table) else local before, after = math.floor((actual_width - width) / 2), math.ceil((actual_width - width) / 2); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_end - 1, content.col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start + curr_col + width + 1, { virt_text_pos = "inline", virt_text = { { string.rep(" ", after) } } }); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_end - 1, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start + curr_col, { virt_text_pos = "inline", virt_text = { { string.rep(" ", before) } @@ -1265,26 +1271,6 @@ renderer.create_autocmd = function (config_table) }) end -renderer.destroy = function (buffer) - -- if not renderer.removed_elements or not renderer.removed_elements[buffer] or vim.tbl_isempty(renderer.removed_elements[buffer]) then - -- return; - -- end - -- - -- local max_range = {}; - -- - -- for _, content in ipairs(renderer.removed_elements[buffer]) do - -- if not max_range[1] or content.row_start < max_range[1] then - -- max_range[1] = content.row_start; - -- end - -- - -- if not max_range[2] or content.row_end > max_range[2] then - -- max_range[2] = content.row_end; - -- end - -- end - -- - -- vim.api.nvim_buf_clear_namespace(buffer, renderer.namespace, max_range[1], max_range[2] + 1); -end - renderer.render_in_range = function (buffer, partial_contents, config_table, from, to) for _, content in ipairs(partial_contents) do local type = content.type; @@ -1300,27 +1286,27 @@ renderer.render_in_range = function (buffer, partial_contents, config_table, fro if type == "heading_s" then - renderer.render_headings_s(buffer, content, config_table.headings); + pcall(renderer.render_headings_s, buffer, content, config_table.headings); elseif type == "heading" then - renderer.render_headings(buffer, content, config_table.headings) + pcall(renderer.render_headings, buffer, content, config_table.headings) elseif type == "code_block" then - renderer.render_code_blocks(buffer, content, config_table.code_blocks) + pcall(renderer.render_code_blocks, buffer, content, config_table.code_blocks) elseif type == "block_quote" then - renderer.render_block_quotes(buffer, content, config_table.block_quotes); + pcall(renderer.render_block_quotes, buffer, content, config_table.block_quotes); elseif type == "horizontal_rule" then - renderer.render_horizontal_rules(buffer, content, config_table.horizontal_rules); + pcall(renderer.render_horizontal_rules, buffer, content, config_table.horizontal_rules); elseif type == "link" then - renderer.render_links(buffer, content, config_table.links); + pcall(renderer.render_links, buffer, content, config_table.links); elseif type == "image" then - renderer.render_links(buffer, content, config_table.images); + pcall(renderer.render_links, buffer, content, config_table.images); elseif type == "inline_code" then - renderer.render_inline_codes(buffer, content, config_table.inline_codes) + pcall(renderer.render_inline_codes, buffer, content, config_table.inline_codes) elseif type == "list_item" then - renderer.render_lists(buffer, content, config_table.list_items) + pcall(renderer.render_lists, buffer, content, config_table.list_items) elseif type == "checkbox" then - renderer.render_checkboxes(buffer, content, config_table.checkboxes) + pcall(renderer.render_checkboxes, buffer, content, config_table.checkboxes) elseif type == "table" then - renderer.render_tables(buffer, content, config_table) + pcall(renderer.render_tables, buffer, content, config_table) end ::extmark_skipped:: From d0a2a7a4fb82157db0a0ea1befa120387ed1f666 Mon Sep 17 00:00:00 2001 From: Shawon Date: Mon, 29 Jul 2024 23:49:24 +0600 Subject: [PATCH 03/35] Adds some minor stabilty improvements for the new hybrid-mode - BUG FIX: Fixed a bug causing headings to disappear when used after list items(because the plugin assumes both value of the unconceal range to be 0-indexed which isn't true). - FEATURE: Insert mode now uses `TextChanged` along with `CursorMovedI`(This may be a bit jittery in certain cases, e.g. writing tables). - REMOVED: Removed customisation option(due to compatability issues) for the uncomceal range. For #58 --- ftplugin/markdown.lua | 20 +++++++++++++------- lua/markview/parser.lua | 2 +- lua/markview/renderer.lua | 3 ++- lua/markview/utils.lua | 5 ++--- test.md | 2 +- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/ftplugin/markdown.lua b/ftplugin/markdown.lua index b5ded67..a11475d 100644 --- a/ftplugin/markdown.lua +++ b/ftplugin/markdown.lua @@ -128,21 +128,24 @@ vim.api.nvim_create_autocmd({ "ModeChanged", "TextChanged" }, { if markview.configuration.modes and vim.list_contains(markview.configuration.modes, mode) then local parsed_content = markview.parser.init(buffer, markview.configuration); - local parse_start, parse_stop = utils.get_cursor_range(buffer, windows[1], markview.configuration); + local parse_start, parse_stop = utils.get_cursor_range(buffer, windows[1]); markview.renderer.clear(buffer); + local partial_contents = markview.parser.parse_range(event.buf, markview.configuration, parse_start, parse_stop); + local current_range = markview.renderer.get_content_range(partial_contents); + + -- vim.print(current_range) + -- Update the range first or it gets messed up later + markview.renderer.update_range(buffer, current_range); + if markview.configuration.hybrid_modes and vim.list_contains(markview.configuration.hybrid_modes, mode) then markview.renderer.render(buffer, parsed_content, markview.configuration, parse_start, parse_stop); + markview.renderer.clear_content_range(event.buf, partial_contents) else markview.renderer.render(buffer, parsed_content, markview.configuration); end - local partial_contents = markview.parser.parse_range(event.buf, markview.configuration, parse_start, parse_stop); - local current_range = markview.renderer.get_content_range(partial_contents); - - markview.renderer.update_range(buffer, current_range); - for _, window in ipairs(windows) do markview.keymaps.init(buffer, window, parsed_content, markview.configuration); end @@ -165,6 +168,7 @@ end if vim.list_contains(markview.configuration.hybrid_modes, "i") then table.insert(events, "CursorMovedI"); + table.insert(events, "TextChangedI"); -- For smoother experience when writing, potentially can cause bugs end vim.api.nvim_create_autocmd(events, { @@ -192,8 +196,10 @@ vim.api.nvim_create_autocmd(events, { _G.__markview_render_ranges[event.buf] = {}; end + local windows = utils.find_attached_wins(event.buf); + local old_start, old_stop = _G.__markview_render_ranges[event.buf][1], _G.__markview_render_ranges[event.buf][2]; - local parse_start, parse_stop = utils.get_cursor_range(event.buf, 0, markview.configuration); + local parse_start, parse_stop = utils.get_cursor_range(event.buf, windows[1]); local prev_contents = markview.parser.parse_range(event.buf, markview.configuration, old_start, old_stop); local partial_contents = markview.parser.parse_range(event.buf, markview.configuration, parse_start, parse_stop); diff --git a/lua/markview/parser.lua b/lua/markview/parser.lua index c9d3633..4b22177 100644 --- a/lua/markview/parser.lua +++ b/lua/markview/parser.lua @@ -318,7 +318,7 @@ parser.md = function (buffer, TStree, from, to) local list_lines, lines, spaces = parser.fiter_lines(buffer, row_start, row_end, symbol); local spaces_before_marker = list_lines[1]:match("^(%s*)" .. symbol .. "%s*"); - local c_end, r_end = parser.get_list_end_range(buffer, row_start, row_end, symbol) + local c_end, _ = parser.get_list_end_range(buffer, row_start, row_end, symbol) table.insert(parser.parsed_content, { node = capture_node, diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 9eac5da..18317be 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -1334,8 +1334,9 @@ renderer.render = function (buffer, parsed_content, config_table, conceal_start, goto extmark_skipped; end + -- Unlike `conceal_start`, `conceal_stop` is 1-indexed -- Do not render things inside the un-conceal range - if conceal_start and conceal_stop and content.row_start >= conceal_start and content.row_end <= conceal_stop then + if conceal_start and conceal_stop and content.row_start >= conceal_start and content.row_end <= (conceal_stop - 1) then goto extmark_skipped; end diff --git a/lua/markview/utils.lua b/lua/markview/utils.lua index 9c2a4a4..f96dc48 100644 --- a/lua/markview/utils.lua +++ b/lua/markview/utils.lua @@ -12,12 +12,11 @@ utils.find_attached_wins = function (buf) return attached_wins; end -utils.get_cursor_range = function (buffer, window, config_table) +utils.get_cursor_range = function (buffer, window) local cursor = vim.api.nvim_win_get_cursor(window or 0); local lines = vim.api.nvim_buf_line_count(buffer); - -- For testing purposes, remove if not doable - return math.max(0, (cursor[1] - 1) - (config_table.edit_range or 0)), math.min(lines, (cursor[1] - 1) + (config_table.edit_range or 1)); + return math.max(0, cursor[1] - 1), math.min(lines, cursor[1]); end return utils; diff --git a/test.md b/test.md index e201323..945035c 100644 --- a/test.md +++ b/test.md @@ -18,7 +18,7 @@ - +- Hello # Heklo From 4a93e155261508b89d5c6146ba6cc0da91be0883 Mon Sep 17 00:00:00 2001 From: Shawon Date: Wed, 31 Jul 2024 09:52:01 +0600 Subject: [PATCH 04/35] feat(renderer): Added hybrid-mode support to the plugin Hybrid mode finally is complete & stable. You can set it up using the new `hybrid_modes` option. Example: modes = { "n", "i", "c" }, hybrid_modes = { "i" }, Preview failure no longer crashes the plugin. Renderer now has the following set of features, - Partial rendering of files(doesn't render things within a specific range) - Partial clearing. Now the renderer can clear only parts of the buffer. - Methods for finding node ranges. This is used to prevent nodes being unconcealed halfway. Parser now has the following set of features, - Partial parsing. Only parses a specific range in the buffer. See: #58 ------------------------------------------------------------------------ feat(colors): Distinct highlight groups. Highlight groups now have distinct names. Added highlight groups, - MarkviewHeading<1-6> For the different heading levels. - MarkviewHeading<1-6>Sign For the signs used by the headings. - MarkviewHeadingCodeBlock For code blocks. - MarkviewHeadingBlockQuoteDefault For the default `block quotes`. - MarkviewHeadingBlockQuoteOk For `success`-type block quotes. - MarkviewHeadingBlockQuoteWarn For `warning`-type block quotes. - MarkviewHeadingBlockQuoteError For `error`-type block quotes. - MarkviewHeadingBlockQuoteNote For `notes`-related block quotes. - MarkviewHeadingBlockQuoteSpecial For `special` block quotes. E.g. Important, Example. - MarkviewCheckboxChecked For checked checkboxes. - MarkviewCheckboxUnhecked For unchecked checkboxes. - MarkviewCheckboxPending For pending checkboxes. - MarkviewTableBorder For the borders in the table. - MarkviewTableAlignLeft For left alignment indicator. - MarkviewTableAlignRight For right alignment indicator. - MarkviewTableAlignCenter For center alignment indicator. - MarkviewListItemPlus For list items starting with +. - MarkviewListItemMinus For list items starting with -. - MarkviewListItemStar For list items starting with *. [Note: Ordered list items(starting with .) don't use highlights] - MarkviewHyperlink For regular links. - MarkviewImageLink For images. - MarkviewEmail For email addresses. - MarkviewGradient<1-10> For horizontal rules. See: #61 ------------------------------------------------------------------------ bug(renderer): Incorrect start column of code blocks Fixes a bug where `block_continuation` caused code blocks without `info_string` to render incorrectly. Lua patterns are now used to extract language strings. See: #64 --- .github/workflows/release-please.yml | 26 + ftplugin/markdown.lua | 8 +- lua/markview.lua | 1122 ++++++++++++++++++++------ lua/markview/colors.lua | 165 +++- lua/markview/parser.lua | 4 +- lua/markview/presets.lua | 459 +++++++++-- lua/markview/renderer.lua | 42 +- 7 files changed, 1494 insertions(+), 332 deletions(-) create mode 100644 .github/workflows/release-please.yml diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 0000000..7c81ce9 --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,26 @@ +# vim:nospell: + +on: + push: + branches: + - dev + +permissions: + contents: write + pull-requests: write + +name: release-please + +jobs: + release-please: + runs-on: ubuntu-latest + steps: + - uses: googleapis/release-please-action@v4 + with: + # this assumes that you have created a personal access token + # (PAT) and configured it as a GitHub action secret named + # `MY_RELEASE_PLEASE_TOKEN` (this secret name is not important). + token: ${{ secrets.RELEASE_PLEASE_TOKEN }} + # this is a built-in strategy in release-please, see "Action Inputs" + # for more options + release-type: simple diff --git a/ftplugin/markdown.lua b/ftplugin/markdown.lua index a11475d..4053695 100644 --- a/ftplugin/markdown.lua +++ b/ftplugin/markdown.lua @@ -135,10 +135,6 @@ vim.api.nvim_create_autocmd({ "ModeChanged", "TextChanged" }, { local partial_contents = markview.parser.parse_range(event.buf, markview.configuration, parse_start, parse_stop); local current_range = markview.renderer.get_content_range(partial_contents); - -- vim.print(current_range) - -- Update the range first or it gets messed up later - markview.renderer.update_range(buffer, current_range); - if markview.configuration.hybrid_modes and vim.list_contains(markview.configuration.hybrid_modes, mode) then markview.renderer.render(buffer, parsed_content, markview.configuration, parse_start, parse_stop); markview.renderer.clear_content_range(event.buf, partial_contents) @@ -146,6 +142,9 @@ vim.api.nvim_create_autocmd({ "ModeChanged", "TextChanged" }, { markview.renderer.render(buffer, parsed_content, markview.configuration); end + -- Or else things won't render on first redraw from the other autocmd + markview.renderer.update_range(buffer, current_range); + for _, window in ipairs(windows) do markview.keymaps.init(buffer, window, parsed_content, markview.configuration); end @@ -206,6 +205,7 @@ vim.api.nvim_create_autocmd(events, { local current_range = markview.renderer.get_content_range(partial_contents); + vim.print(_G.__markview_render_ranges[event.buf]) -- Don't draw new things if _G.__markview_render_ranges[event.buf] and vim.deep_equal(_G.__markview_render_ranges[event.buf], current_range) then markview.renderer.clear_content_range(event.buf, partial_contents) diff --git a/lua/markview.lua b/lua/markview.lua index 3949950..a1831c2 100644 --- a/lua/markview.lua +++ b/lua/markview.lua @@ -1,11 +1,11 @@ local markview = {}; local utils = require("markview.utils"); -markview.parser = require("markview/parser"); -markview.renderer = require("markview/renderer"); -markview.keymaps = require("markview/keymaps"); +markview.parser = require("markview.parser"); +markview.renderer = require("markview.renderer"); +markview.keymaps = require("markview.keymaps"); -markview.colors = require("markview/colors"); +markview.colors = require("markview.colors"); markview.add_hls = function (obj) local use_hl = {}; @@ -63,251 +63,851 @@ markview.configuration = { }, highlight_groups = { + ---+ ##code## { + -- Heading level 1 output = function () - local bg = markview.colors.get_hl_value(0, "Normal", "bg") or markview.colors.get_hl_value(0, "Cursor", "fg"); - local fg = markview.colors.get_hl_value(0, "markdownH1", "fg") or "#f38ba8"; - - return { - { - group_name = "Col1", - value = { - bg = markview.colors.mix(bg, fg, 0.7, 0.25), - fg = fg - } - }, - { - group_name = "Col1Fg", - value = { - fg = fg - } - }, - { - group_name = "Col1Inv", - value = { - bg = fg, - fg = bg - } - }, - } + if markview.colors.get_hl_value(0, "DiagnosticVirtualTextOk", "bg") and markview.colors.get_hl_value(0, "DiagnosticVirtualTextOk", "fg") then + local bg = markview.colors.get_hl_value(0, "DiagnosticVirtualTextOk", "bg"); + local fg = markview.colors.get_hl_value(0, "DiagnosticVirtualTextOk", "fg"); + + return { + { + group_name = "Heading1", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading1Sign", + value = { + fg = fg, + + default = true + } + }, + } + elseif markview.colors.get_hl_value(0, "DiagnosticOk", "fg") and markview.colors.get_hl_value(0, "Normal", "bg") then + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = markview.colors.get_hl_value(0, "DiagnosticOk", "fg"); + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading1", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading1Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + else + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = vim.o.background == "dark" and "#a6e3a1" or "#40a02b"; + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading1", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading1Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + end end }, - { + -- Heading level 2 output = function () - local bg = markview.colors.get_hl_value(0, "Normal", "bg") or markview.colors.get_hl_value(0, "Cursor", "fg"); - local fg = markview.colors.get_hl_value(0, "markdownH2", "fg") or "#fab387"; - - return { - { - group_name = "Col2", - value = { - bg = markview.colors.mix(bg, fg, 0.7, 0.25), - fg = fg - } - }, - { - group_name = "Col2Fg", - value = { - fg = fg - } - }, - { - group_name = "Col2Inv", - value = { - bg = fg, - fg = bg - } - }, - } + if markview.colors.get_hl_value(0, "DiagnosticVirtualTextHint", "bg") and markview.colors.get_hl_value(0, "DiagnosticVirtualTextHint", "fg") then + local bg = markview.colors.get_hl_value(0, "DiagnosticVirtualTextHint", "bg"); + local fg = markview.colors.get_hl_value(0, "DiagnosticVirtualTextHint", "fg"); + + return { + { + group_name = "Heading2", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading2Sign", + value = { + fg = fg, + + default = true + } + }, + } + elseif markview.colors.get_hl_value(0, "DiagnosticHint", "fg") and markview.colors.get_hl_value(0, "Normal", "bg") then + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = markview.colors.get_hl_value(0, "DiagnosticHint", "fg"); + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading2", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading2Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + else + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = vim.o.background == "dark" and "#94e2d5" or "#179299"; + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading2", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading2Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + end end }, - { + -- Heading level 3 output = function () - local bg = markview.colors.get_hl_value(0, "Normal", "bg") or markview.colors.get_hl_value(0, "Cursor", "fg"); - local fg = markview.colors.get_hl_value(0, "markdownH3", "fg") or "#f9e2af"; - - return { - { - group_name = "Col3", - value = { - bg = markview.colors.mix(bg, fg, 0.7, 0.25), - fg = fg - } - }, - { - group_name = "Col3Fg", - value = { - fg = fg - } - }, - { - group_name = "Col3Inv", - value = { - bg = fg, - fg = bg - } - }, - } + if markview.colors.get_hl_value(0, "DiagnosticVirtualTextInfo", "bg") and markview.colors.get_hl_value(0, "DiagnosticVirtualTextInfo", "fg") then + local bg = markview.colors.get_hl_value(0, "DiagnosticVirtualTextInfo", "bg"); + local fg = markview.colors.get_hl_value(0, "DiagnosticVirtualTextInfo", "fg"); + + return { + { + group_name = "Heading3", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading3Sign", + value = { + fg = fg, + + default = true + } + }, + } + elseif markview.colors.get_hl_value(0, "DiagnosticInfo", "fg") and markview.colors.get_hl_value(0, "Normal", "bg") then + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = markview.colors.get_hl_value(0, "DiagnosticInfo", "fg"); + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading3", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading3Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + else + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = vim.o.background == "dark" and "#89dceb" or "#179299"; + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading3", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading3Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + end end }, - { + -- Heading level 4 output = function () - local bg = markview.colors.get_hl_value(0, "Normal", "bg") or markview.colors.get_hl_value(0, "Cursor", "fg"); - local fg = markview.colors.get_hl_value(0, "markdownH4", "fg") or "#a6e3a1"; - - - return { - { - group_name = "Col4", - value = { - bg = markview.colors.mix(bg, fg, 0.7, 0.25), - fg = fg - } - }, - { - group_name = "Col4Fg", - value = { - fg = fg - } - }, - { - group_name = "Col4Inv", - value = { - bg = fg, - fg = bg - } - }, - } + if markview.colors.get_hl_value(0, "Special", "bg") and markview.colors.get_hl_value(0, "Special", "fg") then + local bg = markview.colors.get_hl_value(0, "Special", "bg"); + local fg = markview.colors.get_hl_value(0, "Special", "fg"); + + return { + { + group_name = "Heading4", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading4Sign", + value = { + fg = fg, + + default = true + } + }, + } + elseif markview.colors.get_hl_value(0, "Special", "fg") and markview.colors.get_hl_value(0, "Normal", "bg") then + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = markview.colors.get_hl_value(0, "Special", "fg"); + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading4", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading4Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + else + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = vim.o.background == "dark" and "#f5c2e7" or "#ea76cb"; + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading4", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading4Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + end end }, - { + -- Heading level 5 output = function () - local bg = markview.colors.get_hl_value(0, "Normal", "bg") or markview.colors.get_hl_value(0, "Cursor", "fg"); - local fg = markview.colors.get_hl_value(0, "markdownH5", "fg") or "#74c7ec"; - - return { - { - group_name = "Col5", - value = { - bg = markview.colors.mix(bg, fg, 0.7, 0.25), - fg = fg - } - }, - { - group_name = "Col5Fg", - value = { - fg = fg - } - }, - { - group_name = "Col5Inv", - value = { - bg = fg, - fg = bg - } - }, - } + if markview.colors.get_hl_value(0, "DiagnosticVirtualTextWarn", "bg") and markview.colors.get_hl_value(0, "DiagnosticVirtualTextWarn", "fg") then + local bg = markview.colors.get_hl_value(0, "DiagnosticVirtualTextWarn", "bg"); + local fg = markview.colors.get_hl_value(0, "DiagnosticVirtualTextWarn", "fg"); + + return { + { + group_name = "Heading5", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading5Sign", + value = { + fg = fg, + + default = true + } + }, + } + elseif markview.colors.get_hl_value(0, "DiagnosticWarn", "fg") and markview.colors.get_hl_value(0, "Normal", "bg") then + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = markview.colors.get_hl_value(0, "DiagnosticWarn", "fg"); + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading5", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading5Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + else + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = vim.o.background == "dark" and "#F9E3AF" or "#DF8E1D"; + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading5", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading5Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + end end }, - { + -- Heading level 6 output = function () - local bg = markview.colors.get_hl_value(0, "Normal", "bg") or markview.colors.get_hl_value(0, "Cursor", "fg"); - local fg = markview.colors.get_hl_value(0, "markdownH6", "fg") or "#b4befe"; - - return { - { - group_name = "Col6", - value = { - bg = markview.colors.mix(bg, fg, 0.7, 0.25), - fg = fg - } - }, - { - group_name = "Col6Fg", - value = { - fg = fg - } - }, - { - group_name = "Col6Inv", - value = { - bg = fg, - fg = bg - } - }, - } + if markview.colors.get_hl_value(0, "DiagnosticVirtualTextError", "bg") and markview.colors.get_hl_value(0, "DiagnosticVirtualTextError", "fg") then + local bg = markview.colors.get_hl_value(0, "DiagnosticVirtualTextError", "bg"); + local fg = markview.colors.get_hl_value(0, "DiagnosticVirtualTextError", "fg"); + + return { + { + group_name = "Heading6", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading6Sign", + value = { + fg = fg, + + default = true + } + }, + } + elseif markview.colors.get_hl_value(0, "DiagnosticError", "fg") and markview.colors.get_hl_value(0, "Normal", "bg") then + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = markview.colors.get_hl_value(0, "DiagnosticError", "fg"); + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading6", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading6Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + else + local bg = markview.colors.get_hl_value(0, "Normal", "bg"); + local fg = vim.o.background == "dark" and "#F38BA8" or "#D20F39"; + + local nr = markview.colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading6", + value = { + bg = vim.o.background == "dark" + and + markview.colors.mix(bg, fg, 0.5, 0.15) + or + markview.colors.mix(bg, fg, 0.85, 0.20), + fg = fg, + + default = true + } + }, + { + group_name = "Heading6Sign", + value = { + bg = nr, + fg = fg, + + default = true + } + }, + } + end end }, + { - output = function () - local bg = markview.colors.get_hl_value(0, "Normal", "bg") or markview.colors.get_hl_value(0, "Cursor", "fg"); - local fg = markview.colors.get_hl_value(0, "Comment", "fg"); - - return { - { - group_name = "Col7", - value = { - bg = markview.colors.mix(bg, fg, 0.7, 0.25), - fg = fg - } - }, - { - group_name = "Col7Fg", - value = { - fg = fg - } - }, - { - group_name = "Col7Inv", - value = { - bg = fg, - fg = bg - } - }, - } + group_name = "BlockQuoteDefault", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "Comment", "fg"), + + vim.o.background == "dark" and "#6c7086" or "#9ca0b0"; + }); + + return { fg = fg, default = true }; + end + }, + { + group_name = "BlockQuoteError", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "DiagnosticError", "fg"), + + vim.o.background == "dark" and "#F38BA8" or "#D20F39"; + }); + + return { fg = fg, default = true }; end }, + { + group_name = "BlockQuoteWarn", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "DiagnosticWarn", "fg"), + vim.o.background == "dark" and "#F9E3AF" or "#DF8E1D"; + }); + + return { fg = fg, default = true }; + end + }, { - group_name = "Layer", + group_name = "BlockQuoteOk", value = function () - local bg = markview.colors.get_hl_value(0, "Normal", "bg") or markview.colors.get_hl_value(0, "Cursor", "fg"); - local fg = markview.colors.get_hl_value(0, "Comment", "fg"); + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "DiagnosticOk", "fg"), - local txt = markview.colors.get_hl_value(0, "FloatTitle", "fg") + vim.o.background == "dark" and "#a6e3a1" or "#40a02b"; + }); - return { - bg = markview.colors.mix(bg, fg, 1, 0.20), - fg = txt - } + return { fg = fg, default = true }; end }, { - group_name = "Layer2", + group_name = "BlockQuoteNote", value = function () - local bg = markview.colors.get_hl_value(0, "Normal", "bg") or markview.colors.get_hl_value(0, "Cursor", "fg"); - local fg = markview.colors.get_hl_value(0, "Comment", "fg"); + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "@comment.note", "bg"), + markview.colors.get_hl_value(0, "@comment.note", "fg"), - return { - bg = markview.colors.mix(bg, fg, 0.85, 0.13), - } + markview.colors.get_hl_value(0, "Title", "fg"), + vim.o.background == "dark" and "#89b4fa" or "#1e66f5" + }); + + return { fg = fg, default = true }; end }, + { + group_name = "BlockQuoteSpecial", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "Conditional", "fg"), + markview.colors.get_hl_value(0, "Keyword", "fg"), + + vim.o.background == "dark" and "#cba6f7" or "#8839ef" + }); + + return { fg = fg, default = true }; + end + }, + + + + { + group_name = "Code", + value = function () + local bg = markview.colors.get({ + markview.colors.get_hl_value(0, "Normal", "bg"), + markview.colors.get_hl_value(0, "Cursor", "fg"), + + vim.o.background == "dark" and "#1e1e2e" or "#cdd6f4" + }); + + local luminosity = markview.colors.get_brightness(bg); + + if luminosity < 0.5 then + return { + bg = markview.colors.mix(bg, bg, 1, math.max(luminosity, 0.25)), + default = true + }; + else + return { + bg = markview.colors.mix(bg, bg, 1, math.min(luminosity, 0.25) * -1), + default = true + }; + end + end + }, + + + { + group_name = "CheckboxChecked", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "DiagnosticOk", "fg"), + + vim.o.background == "dark" and "#a6e3a1" or "#40a02b"; + }); + + return { fg = fg, default = true }; + end + }, + { + group_name = "CheckboxUnchecked", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "DiagnosticError", "fg"), + + vim.o.background == "dark" and "#F38BA8" or "#D20F39"; + }); + + return { fg = fg, default = true }; + end + }, + { + group_name = "CheckboxPending", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "DiagnosticWarn", "fg"), + + vim.o.background == "dark" and "#F9E3AF" or "#DF8E1D"; + }); + + return { fg = fg, default = true }; + end + }, + + + { + group_name = "TableBorder", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "@comment.note", "bg"), + markview.colors.get_hl_value(0, "@comment.note", "fg"), + + markview.colors.get_hl_value(0, "Title", "fg"), + vim.o.background == "dark" and "#89b4fa" or "#1e66f5" + }); + + return { fg = fg, default = true }; + end + }, + { + group_name = "TableAlignLeft", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "@comment.note", "bg"), + markview.colors.get_hl_value(0, "@comment.note", "fg"), + + markview.colors.get_hl_value(0, "Title", "fg"), + vim.o.background == "dark" and "#89b4fa" or "#1e66f5" + }); + + return { fg = fg, default = true }; + end + }, + { + group_name = "TableAlignRight", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "@comment.note", "bg"), + markview.colors.get_hl_value(0, "@comment.note", "fg"), + + markview.colors.get_hl_value(0, "Title", "fg"), + vim.o.background == "dark" and "#89b4fa" or "#1e66f5" + }); + + return { fg = fg, default = true }; + end + }, + { + group_name = "TableAlignCenter", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "@comment.note", "bg"), + markview.colors.get_hl_value(0, "@comment.note", "fg"), + + markview.colors.get_hl_value(0, "Title", "fg"), + vim.o.background == "dark" and "#89b4fa" or "#1e66f5" + }); + + return { fg = fg, default = true }; + end + }, + + + { + group_name = "ListItemMinus", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "DiagnosticWarn", "fg"), + + vim.o.background == "dark" and "#F9E3AF" or "#DF8E1D"; + }); + + return { fg = fg, default = true }; + end + }, + { + group_name = "ListItemPlus", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "DiagnosticOk", "fg"), + + vim.o.background == "dark" and "#a6e3a1" or "#40a02b"; + }); + + return { fg = fg, default = true }; + end + }, + { + group_name = "ListItemStar", + value = function () + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "@comment.note", "bg"), + markview.colors.get_hl_value(0, "@comment.note", "fg"), + + markview.colors.get_hl_value(0, "Title", "fg"), + vim.o.background == "dark" and "#89b4fa" or "#1e66f5" + }); + + return { fg = fg, default = true }; + end + }, + + + { + group_name = "Hyperlink", + value = function () + if markview.colors.get_hl_value(0, "markdownLinkText", "fg") then + return { link = "markdownLinkText", default = true }; + elseif markview.colors.get_hl_value(0, "@markup.link.label.markdown_inline", "fg") then + return { link = "@markup.link.label.markdown_inline", default = true }; + end + + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "Label", "fg"), + + vim.o.background == "dark" and "#74c7ec" or "#209fb5" + }); + + return { fg = fg, underline = true, default = true }; + end + }, + { + group_name = "ImageLink", + value = function () + if markview.colors.get_hl_value(0, "markdownLinkText", "fg") then + return { link = "markdownLinkText", default = true }; + elseif markview.colors.get_hl_value(0, "@markup.link.label.markdown_inline", "fg") then + return { link = "@markup.link.label.markdown_inline", default = true }; + end + + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "Label", "fg"), + + vim.o.background == "dark" and "#74c7ec" or "#209fb5" + }); + + return { fg = fg, underline = true, default = true }; + end + }, + { + group_name = "Email", + value = function () + if markview.colors.get_hl_value(0, "@markup.link.url.markdown_inline", "fg") then + return { link = "@markup.link.url.markdown_inline", default = true }; + elseif markview.colors.get_hl_value(0, "@markup.link.url", "fg") then + return { link = "@markup.link.url", default = true }; + end + + local fg = markview.colors.get({ + markview.colors.get_hl_value(0, "Label", "fg"), + + vim.o.background == "dark" and "#f5e0dc" or "#dc8a78" + }); + + return { fg = fg, underline = true, default = true }; + end + }, + + { output = function () return markview.colors.create_gradient("Gradient", markview.colors.get_hl_value(0, "Normal", "bg") or markview.colors.get_hl_value(0, "Cursor", "fg"), markview.colors.get_hl_value(0, "Title", "fg"), 10, "fg"); end } + ---_ }, buf_ignore = { "nofile" }, modes = { "n", "no" }, + special_modes = nil, headings = { enable = true, @@ -315,48 +915,48 @@ markview.configuration = { heading_1 = { style = "icon", - sign = "󰌕 ", sign_hl = "MarkviewCol1Fg", + sign = "󰌕 ", sign_hl = "MarkviewHeading1Sign", - icon = "󰼏 ", hl = "MarkviewCol1", + icon = "󰼏 ", hl = "MarkviewHeading1", }, heading_2 = { style = "icon", - sign = "󰌖 ", sign_hl = "MarkviewCol2Fg", + sign = "󰌖 ", sign_hl = "MarkviewHeading2Sign", - icon = "󰎨 ", hl = "MarkviewCol2", + icon = "󰎨 ", hl = "MarkviewHeading2", }, heading_3 = { style = "icon", - icon = "󰼑 ", hl = "MarkviewCol3", + icon = "󰼑 ", hl = "MarkviewHeading3", }, heading_4 = { style = "icon", - icon = "󰎲 ", hl = "MarkviewCol4", + icon = "󰎲 ", hl = "MarkviewHeading4", }, heading_5 = { style = "icon", - icon = "󰼓 ", hl = "MarkviewCol5", + icon = "󰼓 ", hl = "MarkviewHeading5", }, heading_6 = { style = "icon", - icon = "󰎴 ", hl = "MarkviewCol6", + icon = "󰎴 ", hl = "MarkviewHeading6", }, setext_1 = { style = "github", - icon = "  ", hl = "MarkviewCol1", + icon = "  ", hl = "MarkviewHeading1", underline = "━" }, setext_2 = { style = "github", - icon = "  ", hl = "MarkviewCol2", + icon = "  ", hl = "MarkviewHeading2", underline = "─" } }, @@ -365,7 +965,7 @@ markview.configuration = { enable = true, style = "language", - hl = "Layer2", + hl = "MarkviewCode", min_width = 60, pad_amount = 3, @@ -383,7 +983,7 @@ markview.configuration = { enable = true, default = { - border = "▋", border_hl = "MarkviewCol7Fg" + border = "▋", border_hl = "MarkviewBlockQuoteDefault" }, callouts = { @@ -391,139 +991,139 @@ markview.configuration = { { match_string = "ABSTRACT", callout_preview = "󱉫 Abstract", - callout_preview_hl = "MarkviewCol5Fg", + callout_preview_hl = "MarkviewBlockQuoteNote", custom_title = true, custom_icon = "󱉫 ", - border = "▋", border_hl = "MarkviewCol5Fg" + border = "▋", border_hl = "MarkviewBlockQuoteNote" }, { match_string = "TODO", callout_preview = " Todo", - callout_preview_hl = "MarkviewCol5Fg", + callout_preview_hl = "MarkviewBlockQuoteNote", custom_title = true, custom_icon = " ", - border = "▋", border_hl = "MarkviewCol5Fg" + border = "▋", border_hl = "MarkviewBlockQuoteNote" }, { match_string = "SUCCESS", callout_preview = "󰗠 Success", - callout_preview_hl = "MarkviewCol4Fg", + callout_preview_hl = "MarkviewBlockQuoteOk", custom_title = true, custom_icon = "󰗠 ", - border = "▋", border_hl = "MarkviewCol4Fg" + border = "▋", border_hl = "MarkviewBlockQuoteOk" }, { match_string = "QUESTION", callout_preview = "󰋗 Question", - callout_preview_hl = "MarkviewCol2Fg", + callout_preview_hl = "MarkviewBlockQuoteWarn", custom_title = true, custom_icon = "󰋗 ", - border = "▋", border_hl = "MarkviewCol2Fg" + border = "▋", border_hl = "MarkviewBlockQuoteWarn" }, { match_string = "FAILURE", callout_preview = "󰅙 Failure", - callout_preview_hl = "MarkviewCol1Fg", + callout_preview_hl = "MarkviewBlockQuoteError", custom_title = true, custom_icon = "󰅙 ", - border = "▋", border_hl = "MarkviewCol1Fg" + border = "▋", border_hl = "MarkviewBlockQuoteError" }, { match_string = "DANGER", callout_preview = " Danger", - callout_preview_hl = "MarkviewCol1Fg", + callout_preview_hl = "MarkviewBlockQuoteError", custom_title = true, custom_icon = "  ", - border = "▋", border_hl = "MarkviewCol1Fg" + border = "▋", border_hl = "MarkviewBlockQuoteError" }, { match_string = "BUG", callout_preview = " Bug", - callout_preview_hl = "MarkviewCol1Fg", + callout_preview_hl = "MarkviewBlockQuoteError", custom_title = true, custom_icon = "  ", - border = "▋", border_hl = "MarkviewCol1Fg" + border = "▋", border_hl = "MarkviewBlockQuoteError" }, { match_string = "EXAMPLE", callout_preview = "󱖫 Example", - callout_preview_hl = "MarkviewCol6Fg", + callout_preview_hl = "MarkviewBlockQuoteSpecial", custom_title = true, custom_icon = " 󱖫 ", - border = "▋", border_hl = "MarkviewCol6Fg" + border = "▋", border_hl = "MarkviewBlockQuoteSpecial" }, { match_string = "QUOTE", callout_preview = " Quote", - callout_preview_hl = "MarkviewCol7Fg", + callout_preview_hl = "MarkviewBlockQuoteDefault", custom_title = true, custom_icon = "  ", - border = "▋", border_hl = "MarkviewCol7Fg" + border = "▋", border_hl = "MarkviewBlockQuoteDefault" }, { match_string = "NOTE", callout_preview = "󰋽 Note", - callout_preview_hl = "MarkviewCol5Fg", + callout_preview_hl = "MarkviewBlockQuoteNote", - border = "▋", border_hl = "MarkviewCol5Fg" + border = "▋", border_hl = "MarkviewBlockQuoteNote" }, { match_string = "TIP", callout_preview = " Tip", - callout_preview_hl = "MarkviewCol4Fg", + callout_preview_hl = "MarkviewBlockQuoteOk", - border = "▋", border_hl = "MarkviewCol4Fg" + border = "▋", border_hl = "MarkviewBlockQuoteOk" }, { match_string = "IMPORTANT", callout_preview = " Important", - callout_preview_hl = "MarkviewCol3Fg", + callout_preview_hl = "MarkviewBlockQuoteSpecial", - border = "▋", border_hl = "MarkviewCol3Fg" + border = "▋", border_hl = "MarkviewBlockQuoteSpecial" }, { match_string = "WARNING", callout_preview = " Warning", - callout_preview_hl = "MarkviewCol2Fg", + callout_preview_hl = "MarkviewBlockQuoteWarn", - border = "▋", border_hl = "MarkviewCol2Fg" + border = "▋", border_hl = "MarkviewBlockQuoteWarn" }, { match_string = "CAUTION", callout_preview = "󰳦 Caution", - callout_preview_hl = "MarkviewCol1Fg", + callout_preview_hl = "MarkviewBlockQuoteError", - border = "▋", border_hl = "MarkviewCol1Fg" + border = "▋", border_hl = "MarkviewBlockQuoteError" }, { match_string = "CUSTOM", callout_preview = "󰠳 Custom", - callout_preview_hl = "MarkviewCol3Fg", + callout_preview_hl = "MarkviewBlockQuoteWarn", custom_title = true, custom_icon = " 󰠳 ", - border = "▋", border_hl = "MarkviewCol3Fg" + border = "▋", border_hl = "MarkviewBlockQuoteWarn" } } }, @@ -569,16 +1169,16 @@ markview.configuration = { enable = true, inline_links = { - icon = "󰌷 ", icon_hl = "markdownLinkText", - hl = "markdownLinkText", + icon = "󰌷 ", + hl = "MarkviewHyperlink", }, images = { - icon = "󰥶 ", icon_hl = "markdownLinkText", - hl = "markdownLinkText", + icon = "󰥶 ", + hl = "MarkviewImageLink", }, emails = { - icon = " ", icon_hl = "@markup.link.url", - hl = "@markup.link.url", + icon = " ", + hl = "MarkviewEmail", } }, @@ -587,7 +1187,7 @@ markview.configuration = { corner_left = " ", corner_right = " ", - hl = "Layer" + hl = "MarkviewCode" }, list_items = { @@ -595,19 +1195,19 @@ markview.configuration = { add_padding = true, text = "", - hl = "markviewCol2Fg" + hl = "MarkviewListItemMinus" }, marker_plus = { add_padding = true, text = "", - hl = "markviewCol4Fg" + hl = "MarkviewListItemPlus" }, marker_star = { add_padding = true, text = "", - text_hl = "markviewCol6Fg" + text_hl = "MarkviewListItemStar" }, marker_dot = { add_padding = true @@ -618,13 +1218,13 @@ markview.configuration = { enable = true, checked = { - text = "✔", hl = "markviewCol4Fg" + text = "✔", hl = "MarkviewCheckboxChecked" }, pending = { - text = "◯", hl = "MarkviewCol2Fg" + text = "◯", hl = "MarkviewCheckboxPending" }, unchecked = { - text = "✘", hl = "MarkviewCol1Fg" + text = "✘", hl = "MarkviewCheckboxUnchecked" } }, @@ -638,11 +1238,11 @@ markview.configuration = { "╼", "╾", "╴", "╶" }, hl = { - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg" + "MarkviewTableAlignLeft", "MarkviewTableAlignRight", "MarkviewTableAlignCenter", "MarkviewTableAlignCenter" }, use_virt_lines = true @@ -675,6 +1275,8 @@ markview.commands = { end end + markview.state.buf_states[buf] = true; + markview.renderer.clear(buf); markview.renderer.render(buf, parsed_content, markview.configuration) end @@ -689,6 +1291,8 @@ markview.commands = { end end + markview.state.buf_states[buf] = false; + markview.renderer.clear(buf); end diff --git a/lua/markview/colors.lua b/lua/markview/colors.lua index fd77497..26552a8 100644 --- a/lua/markview/colors.lua +++ b/lua/markview/colors.lua @@ -8,7 +8,55 @@ colors.lerp = function (x, y, t) return x + ((y - x) * t); end +colors.name_to_hex = function (name) + local lookup = { + ["red"] = "#FF0000", ["lightred"] = "#FFBBBB", ["darkred"] = "#8B0000", + ["green"] = "#00FF00", ["lightgreen"] = "#90EE90", ["darkgreen"] = "#006400", ["seagreen"] = "#2E8B57", + ["blue"] = "#0000FF", ["lightblue"] = "#ADD8E6", ["darkblue"] = "#00008B", ["slateblue"] = "#6A5ACD", + ["cyan"] = "#00FFFF", ["lightcyan"] = "#E0FFFF", ["darkcyan"] = "#008B8B", + ["magenta"] = "#FF00FF", ["lightmagenta"] = "#FFBBFF", ["darkmagenta"] = "#8B008B", + ["yellow"] = "#FFFF00", ["lightyellow"] = "#FFFFE0", ["darkyellow"] = "#BBBB00", ["brown"] = "#A52A2A", + ["grey"] = "#808080", ["lightgrey"] = "#D3D3D3", ["darkgrey"] = "#A9A9A9", + ["gray"] = "#808080", ["lightgray"] = "#D3D3D3", ["darkgray"] = "#A9A9A9", + ["black"] = "#000000", ["white"] = "#FFFFFF", + ["orange"] = "#FFA500", ["purple"] = "#800080", ["violet"] = "#EE82EE" + }; + + local lookup_nvim = { + ["nvimdarkblue"] = "#004C73", ["nvimlightblue"] = "#A6DBFF", + ["nvimdarkcyan"] = "#007373", ["nvimlightcyan"] = "#8CF8F7", + ["nvimdarkgray1"] = "#07080D", ["nvimlightgray1"] = "#EEF1F8", + ["nvimdarkgray2"] = "#14161B", ["nvimlightgray2"] = "#E0E2EA", + ["nvimdarkgray3"] = "#2C2E33", ["nvimlightgray3"] = "#C4C6CD", + ["nvimdarkgray4"] = "#4F5258", ["nvimlightgray4"] = "#9B9EA4", + ["nvimdarkgrey1"] = "#07080D", ["nvimlightgrey1"] = "#EEF1F8", + ["nvimdarkgrey2"] = "#14161B", ["nvimlightgrey2"] = "#E0E2EA", + ["nvimdarkgrey3"] = "#2C2E33", ["nvimlightgrey3"] = "#C4C6CD", + ["nvimdarkgrey4"] = "#4F5258", ["nvimlightgrey4"] = "#9B9EA4", + ["nvimdarkgreen"] = "#005523", ["nvimlightgreen"] = "#B3F6C0", + ["nvimdarkmagenta"] = "#470045", ["nvimlightmagenta"] = "#FFCAFF", + ["nvimdarkred"] = "#590008", ["nvimlightred"] = "#FFC0B9", + ["nvimdarkyellow"] = "#6B5300", ["nvimlightyellow"] = "#FCE094", + }; + + return lookup[string.lower(name)] or lookup_nvim[string.lower(name)]; +end + +colors.name_to_rgb = function (name) + local hex = colors.name_to_hex(name); + + if not hex then + return; + end + + return colors.hex_to_rgb(hex); +end + colors.num_to_hex = function (num) + if not num then + return; + end + if num == 0 then return "#000000"; elseif num ~= nil then @@ -17,6 +65,10 @@ colors.num_to_hex = function (num) end colors.num_to_rgb = function (num) + if not num then + return; + end + local hex = string.format("%x", num); return { @@ -49,14 +101,30 @@ colors.rgb_to_hex = function (tbl) end colors.get_hl_value = function (ns_id, hl_group, value) - local hl = vim.api.nvim_get_hl(ns_id, { name = hl_group, link = false }); + if vim.fn.hlexists(hl_group) == 0 then + return; + end + + local hl = vim.api.nvim_get_hl(ns_id, { name = hl_group, link = false, create = false }); if value == "fg" then - return colors.num_to_hex(hl.fg) + if type(hl.fg) == "string" and hl.fg:match("^[#]?(%x+)$") then + return colors.name_to_hex(hl.fg) + else + return colors.num_to_hex(hl.fg) + end elseif value == "bg" then - return colors.num_to_hex(hl.bg) + if type(hl.bg) == "string" and hl.bg:match("^[#]?(%x+)$") then + return colors.name_to_hex(hl.bg) + else + return colors.num_to_hex(hl.bg) + end elseif value == "sp" then - return colors.num_to_hex(hl.sp) + if type(hl.sp) == "string" and hl.sp:match("^[#]?(%x+)$") then + return colors.name_to_hex(hl.sp) + else + return colors.num_to_hex(hl.sp) + end else return hl[value]; end @@ -109,14 +177,18 @@ colors.mix = function (color_1, color_2, per_1, per_2) if type(color_1) == "table" then c_1 = color_1; - elseif type(color_1) == "string" then + elseif type(color_1) == "string" and color_1:match("^[#]?(%x+)$") then c_1 = colors.hex_to_rgb(color_1); + elseif type(color_1) == "string" then + c_1 = colors.name_to_rgb(color_1); end if type(color_2) == "table" then c_2 = color_2; - elseif type(color_2) == "string" then + elseif type(color_2) == "string" and color_2:match("^[#]?(%x+)$") then c_2 = colors.hex_to_rgb(color_2); + elseif type(color_2) == "string" then + c_1 = colors.name_to_rgb(color_2); end if not c_1 or not c_2 then @@ -130,4 +202,85 @@ colors.mix = function (color_1, color_2, per_1, per_2) return colors.rgb_to_hex({ r = _r, g = _g, b = _b }); end +colors.get_brightness = function (color) + if type(color) == "string" and color:match("^[#]?(%x+)$") then + color = colors.hex_to_rgb(color); + elseif type(color_1) == "string" then + color = colors.name_to_rgb(color); + elseif type(color) == "number" then + color = colors.num_to_rgb(color); + end + + for key, value in pairs(color) do + if value > 1 then + color[key] = value / 255; + end + end + + return (color.r * 0.2126) + (color.g * 0.7152) + (color.b * 0.0722); +end + +colors.brightest = function (col_list, debug) + if not col_list then + return; + elseif not vim.islist(col_list) then + local tmp = {}; + + for _, item in pairs(col_list) do + table.insert(tmp,item); + end + + col_list = tmp; + end + + local _c = {}; + + for _, col in ipairs(col_list) do + if type(col) == "string" and col:match("^[#]?(%x+)$") then + table.insert(_c, colors.hex_to_rgb(col)); + elseif type(col) == "string" then + table.insert(_c, colors.name_to_rgb(col)); + elseif type(col) == "number" then + table.insert(_c, colors.num_to_rgb(col)); + elseif type(col) == "table" then + table.insert(_c, col); + end + end + + + local _b = 0; + local brightest; + + for _, c in ipairs(_c) do + local brightness = colors.get_brightness(c) or 0; + + if brightness >= _b then + _b = brightness; + brightest = c; + end + end + + -- if debug then + -- vim.print(colors.rgb_to_hex(brightest) == nil); + -- end + + return colors.rgb_to_hex(brightest); +end + +colors.get = function (col_list) + if not col_list then + return; + elseif not vim.islist(col_list) then + local tmp = {}; + + for _, item in pairs(col_list) do + table.insert(tmp,item); + end + + col_list = tmp; + end + + return col_list[1]; +end + return colors; diff --git a/lua/markview/parser.lua b/lua/markview/parser.lua index 4b22177..89fc910 100644 --- a/lua/markview/parser.lua +++ b/lua/markview/parser.lua @@ -158,6 +158,8 @@ parser.md = function (buffer, TStree, from, to) local lines = {}; local highest_len = 0; + local block_start = vim.api.nvim_buf_get_lines(buffer, row_start, row_start + 1, false)[1]; + for i = 1,(row_end - row_start) - 2 do local this_code = vim.api.nvim_buf_get_lines(buffer, row_start + i, row_start + i + 1, false)[1]; local len = vim.fn.strchars(this_code) or 0; @@ -173,7 +175,7 @@ parser.md = function (buffer, TStree, from, to) table.insert(parser.parsed_content, { node = capture_node, type = "code_block", - language = not capture_node:named_child(1) and "" or vim.treesitter.get_node_text(capture_node:named_child(1), buffer), + language = block_start:match("%s*```(%S*)$") or "", line_lengths = line_lens, largest_line = highest_len, diff --git a/lua/markview/presets.lua b/lua/markview/presets.lua index 1c0f2a2..b8774bd 100644 --- a/lua/markview/presets.lua +++ b/lua/markview/presets.lua @@ -1,4 +1,360 @@ local presets = {}; +local colors = require("markview.colors"); + +presets.highlight_groups = { + colorful_heading_bg = { + ---+ ##code## + { + -- Heading level 1 + output = function () + if colors.get_hl_value(0, "DiagnosticOk", "fg") and colors.get_hl_value(0, "Normal", "bg") then + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = colors.get_hl_value(0, "DiagnosticOk", "fg"); + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading1", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading1Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + else + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = vim.o.background == "dark" and "#a6e3a1" or "#40a02b"; + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading1", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading1Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + end + end + }, + { + -- Heading level 2 + output = function () + if colors.get_hl_value(0, "DiagnosticHint", "fg") and colors.get_hl_value(0, "Normal", "bg") then + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = colors.get_hl_value(0, "DiagnosticHint", "fg"); + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading2", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading2Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + else + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = vim.o.background == "dark" and "#94e2d5" or "#179299"; + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading2", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading2Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + end + end + }, + { + -- Heading level 3 + output = function () + if colors.get_hl_value(0, "DiagnosticInfo", "fg") and colors.get_hl_value(0, "Normal", "bg") then + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = colors.get_hl_value(0, "DiagnosticInfo", "fg"); + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading3", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading3Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + else + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = vim.o.background == "dark" and "#89dceb" or "#179299"; + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading3", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading3Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + end + end + }, + { + -- Heading level 4 + output = function () + if colors.get_hl_value(0, "Special", "fg") and colors.get_hl_value(0, "Normal", "bg") then + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = colors.get_hl_value(0, "Special", "fg"); + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading4", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading4Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + else + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = vim.o.background == "dark" and "#f5c2e7" or "#ea76cb"; + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading4", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading4Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + end + end + }, + { + -- Heading level 5 + output = function () + if colors.get_hl_value(0, "DiagnosticWarn", "fg") and colors.get_hl_value(0, "Normal", "bg") then + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = colors.get_hl_value(0, "DiagnosticWarn", "fg"); + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading5", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading5Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + else + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = vim.o.background == "dark" and "#F9E3AF" or "#DF8E1D"; + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading5", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading5Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + end + end + }, + { + -- Heading level 6 + output = function () + if colors.get_hl_value(0, "DiagnosticError", "fg") and colors.get_hl_value(0, "Normal", "bg") then + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = colors.get_hl_value(0, "DiagnosticError", "fg"); + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading6", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading6Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + else + local fg = colors.get_hl_value(0, "Normal", "bg"); + local bg = vim.o.background == "dark" and "#F38BA8" or "#D20F39"; + + local nr = colors.get_hl_value(0, "LineNr", "bg"); + + return { + { + group_name = "Heading6", + value = { + bg = bg, + fg = fg, + + default = true + } + }, + { + group_name = "Heading6Sign", + value = { + bg = nr, + fg = bg, + + default = true + } + }, + } + end + end + }, + ---_ + } +}; presets.headings = { glow = { @@ -10,7 +366,7 @@ presets.headings = { heading_1 = { style = "label", - hl = "MarkviewCol1Inv", + hl = "MarkviewHeading1", padding_left = " ", padding_right = " " @@ -21,13 +377,26 @@ presets.headings = { enable = true, shift_width = 0, + setext_1 = { + style = "github", + + icon = "  ", hl = "MarkviewHeading1", + underline = "━" + }, + setext_2 = { + style = "github", + + icon = "  ", hl = "MarkviewHeading2", + underline = "─" + }, + heading_1 = { style = "label", padding_left = " ", padding_right = " ", - hl = "MarkviewCol1Inv" + hl = "MarkviewHeading1" }, heading_2 = { style = "label", @@ -35,7 +404,7 @@ presets.headings = { padding_left = " ", padding_right = " ", - hl = "MarkviewCol2Inv" + hl = "MarkviewHeading2" }, heading_3 = { style = "label", @@ -43,7 +412,7 @@ presets.headings = { padding_left = " ", padding_right = " ", - hl = "MarkviewCol3Inv" + hl = "MarkviewHeading3" }, heading_4 = { style = "label", @@ -51,7 +420,7 @@ presets.headings = { padding_left = " ", padding_right = " ", - hl = "MarkviewCol4Inv" + hl = "MarkviewHeading4" }, heading_5 = { style = "label", @@ -59,7 +428,7 @@ presets.headings = { padding_left = " ", padding_right = " ", - hl = "MarkviewCol5Inv" + hl = "MarkviewHeading5" }, heading_6 = { style = "label", @@ -67,7 +436,7 @@ presets.headings = { padding_left = " ", padding_right = " ", - hl = "MarkviewCol6Inv" + hl = "MarkviewHeading6" }, }, decorated_labels = { @@ -82,9 +451,9 @@ presets.headings = { padding_right = " ", corner_right = "", - corner_right_hl = "MarkviewCol1Fg", + corner_right_hl = "MarkviewHeading1Sign", - hl = "MarkviewCol1Inv" + hl = "MarkviewHeading1" }, heading_2 = { style = "label", @@ -93,9 +462,9 @@ presets.headings = { padding_right = " ", corner_right = "", - corner_right_hl = "MarkviewCol2Fg", + corner_right_hl = "MarkviewHeading2", - hl = "MarkviewCol2Inv" + hl = "MarkviewHeading2Sign" }, heading_3 = { style = "label", @@ -104,9 +473,9 @@ presets.headings = { padding_right = " ", corner_right = "", - corner_right_hl = "MarkviewCol3Fg", + corner_right_hl = "MarkviewHeading3", - hl = "MarkviewCol3Inv" + hl = "MarkviewHeading3Sign" }, heading_4 = { style = "label", @@ -115,9 +484,9 @@ presets.headings = { padding_right = " ", corner_right = "", - corner_right_hl = "MarkviewCol4Fg", + corner_right_hl = "MarkviewHeading4", - hl = "MarkviewCol4Inv" + hl = "MarkviewHeading4Sign" }, heading_5 = { style = "label", @@ -126,9 +495,9 @@ presets.headings = { padding_right = " ", corner_right = "", - corner_right_hl = "MarkviewCol5Fg", + corner_right_hl = "MarkviewHeading5", - hl = "MarkviewCol5Inv" + hl = "MarkviewHeading5Sign" }, heading_6 = { style = "label", @@ -137,9 +506,9 @@ presets.headings = { padding_right = " ", corner_right = "", - corner_right_hl = "MarkviewCol6Fg", + corner_right_hl = "MarkviewHeading6", - hl = "MarkviewCol6Inv" + hl = "MarkviewHeading6Sign" }, }, @@ -151,32 +520,32 @@ presets.headings = { heading_1 = { style = "simple", - hl = "MarkviewCol1" + hl = "MarkviewHeading1" }, heading_2 = { style = "simple", - hl = "MarkviewCol2" + hl = "MarkviewHeading2" }, heading_3 = { style = "simple", - hl = "MarkviewCol3" + hl = "MarkviewHeading3" }, heading_4 = { style = "simple", - hl = "MarkviewCol4" + hl = "MarkviewHeading4" }, heading_5 = { style = "simple", - hl = "MarkviewCol5" + hl = "MarkviewHeading5" }, heading_6 = { style = "simple", - hl = "MarkviewCol6" + hl = "MarkviewHeading6" }, }, simple_no_marker = { @@ -191,37 +560,37 @@ presets.headings = { style = "icon", icon = " ", - hl = "MarkviewCol1" + hl = "MarkviewHeading1" }, heading_2 = { style = "icon", icon = " ", - hl = "MarkviewCol2" + hl = "MarkviewHeading2" }, heading_3 = { style = "icon", icon = " ", - hl = "MarkviewCol3" + hl = "MarkviewHeading3" }, heading_4 = { style = "icon", icon = " ", - hl = "MarkviewCol4" + hl = "MarkviewHeading4" }, heading_5 = { style = "icon", icon = " ", - hl = "MarkviewCol5" + hl = "MarkviewHeading5" }, heading_6 = { style = "icon", icon = " ", - hl = "MarkviewCol6" + hl = "MarkviewHeading6" }, }, }; @@ -260,11 +629,11 @@ presets.tables = { }, -- This is a required property hl = { - nil, "MarkviewCol1Fg", nil, nil, + nil, "MarkviewTableBorder", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", }, use_virt_lines = false @@ -282,11 +651,11 @@ presets.tables = { "╼", "╾", "╴", "╶" }, hl = { - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg" + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder" }, use_virt_lines = false @@ -304,11 +673,11 @@ presets.tables = { "╼", "╾", "╴", "╶" }, hl = { - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg" + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder" }, use_virt_lines = false @@ -327,11 +696,11 @@ presets.tables = { "━", "━", "━", "━" }, hl = { - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", - "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", "MarkviewCol1Fg", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", + "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", - "MarkviewCol3Fg", "MarkviewCol4Fg", "MarkviewCol6Fg", "MarkviewCol6Fg" + "MarkviewTableAlignLeft", "MarkviewTableAlignRight", "MarkviewTableAlignCenter", "MarkviewTableAlignCenter" }, use_virt_lines = false diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 18317be..1e67030 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -587,6 +587,10 @@ renderer.render_headings = function (buffer, content, config) local conf = config["heading_" .. content.level] or {}; local shift = config.shift_width or vim.bo[buffer].shiftwidth; + if not conf then + return; + end + if conf.style == "simple" then -- Adds a simple background vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start, { @@ -667,7 +671,7 @@ renderer.render_headings = function (buffer, content, config) end renderer.render_headings_s = function (buffer, content, config) - if config.enable == false then + if not config or config.enable == false then return; end @@ -675,6 +679,10 @@ renderer.render_headings_s = function (buffer, content, config) local conf = content.marker:match("=") and config["setext_1"] or config["setext_2"]; local shift = config.shift_width or vim.bo[buffer].shiftwidth; + if not conf then + return; + end + if conf.style == "simple" then -- Adds a simple background @@ -809,14 +817,14 @@ renderer.render_code_blocks = function (buffer, content, config_table) block_length = config_table.min_width end - local lang_width = vim.fn.strchars(icon .. " " .. language .. " "); + local lang_width = vim.fn.strchars(" " .. icon .. " " .. (language == "" and "Unknown" or language) .. " "); if config_table.language_direction == nil or config_table.language_direction == "left" then vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start + 3 + vim.fn.strlen(content.language), { virt_text_pos = config_table.position or "inline", virt_text = { - { icon .. " ", set_hl(hl) }, - { language .. " ", set_hl(config_table.name_hl) or set_hl(hl) }, + { " " .. icon .. " ", set_hl(hl) }, + { (language == "" and "Unknown" or language) .. " ", set_hl(config_table.name_hl) or set_hl(hl) }, { string.rep(config_table.pad_char or " ", block_length - lang_width + ((config_table.pad_amount or 1) * 2)), set_hl(config_table.hl) }, }, @@ -830,8 +838,8 @@ renderer.render_code_blocks = function (buffer, content, config_table) virt_text_pos = config_table.position or "inline", virt_text = { { string.rep(config_table.pad_char or " ", block_length - lang_width + ((config_table.pad_amount or 1) * 2)), set_hl(config_table.hl) }, - { icon .. " ", set_hl(hl) }, - { language .. " ", set_hl(config_table.name_hl) or set_hl(hl) }, + { " " .. icon .. " ", set_hl(hl) }, + { (language == "" and "Unknown" or language) .. " ", set_hl(config_table.name_hl) or set_hl(hl) }, }, sign_text = config_table.sign == true and icon or nil, @@ -1341,27 +1349,27 @@ renderer.render = function (buffer, parsed_content, config_table, conceal_start, end if type == "heading_s" then - renderer.render_headings_s(buffer, content, config_table.headings); + pcall(renderer.render_headings_s, buffer, content, config_table.headings); elseif type == "heading" then - renderer.render_headings(buffer, content, config_table.headings) + pcall(renderer.render_headings, buffer, content, config_table.headings) elseif type == "code_block" then - renderer.render_code_blocks(buffer, content, config_table.code_blocks) + pcall(renderer.render_code_blocks, buffer, content, config_table.code_blocks) elseif type == "block_quote" then - renderer.render_block_quotes(buffer, content, config_table.block_quotes); + pcall(renderer.render_block_quotes, buffer, content, config_table.block_quotes); elseif type == "horizontal_rule" then - renderer.render_horizontal_rules(buffer, content, config_table.horizontal_rules); + pcall(renderer.render_horizontal_rules, buffer, content, config_table.horizontal_rules); elseif type == "link" then - renderer.render_links(buffer, content, config_table.links); + pcall(renderer.render_links, buffer, content, config_table.links); elseif type == "image" then - renderer.render_links(buffer, content, config_table.images); + pcall(renderer.render_links, buffer, content, config_table.images); elseif type == "inline_code" then - renderer.render_inline_codes(buffer, content, config_table.inline_codes) + pcall(renderer.render_inline_codes, buffer, content, config_table.inline_codes) elseif type == "list_item" then - renderer.render_lists(buffer, content, config_table.list_items) + pcall(renderer.render_lists, buffer, content, config_table.list_items) elseif type == "checkbox" then - renderer.render_checkboxes(buffer, content, config_table.checkboxes) + pcall(renderer.render_checkboxes, buffer, content, config_table.checkboxes) elseif type == "table" then - renderer.render_tables(buffer, content, config_table) + pcall(renderer.render_tables, buffer, content, config_table) end ::extmark_skipped:: From 598bdad03972bbc87bb253d61fee314dd4b2420e Mon Sep 17 00:00:00 2001 From: Shawon Date: Wed, 31 Jul 2024 11:26:15 +0600 Subject: [PATCH 05/35] style(renderer): Improved logic of renderer Removed unncessary codes from renderer. Added nil-check for config table items. Also added a second check for items that can have multiple configs(e.g. Headings, list items, links etc.) --- .github/workflows/release-please.yml | 1 + ftplugin/markdown.lua | 10 +-- lua/markview/renderer.lua | 122 +++++++-------------------- test.md | 24 ------ 4 files changed, 34 insertions(+), 123 deletions(-) delete mode 100644 test.md diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 7c81ce9..5898951 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -1,4 +1,5 @@ # vim:nospell: +name: Release Please on: push: diff --git a/ftplugin/markdown.lua b/ftplugin/markdown.lua index 4053695..a451495 100644 --- a/ftplugin/markdown.lua +++ b/ftplugin/markdown.lua @@ -9,13 +9,13 @@ end -- Check for requirements if vim.fn.has("nvim-0.10") == 0 then - vim.print("[ markview.nvim ] : Thie plugin is only available on version 0.10.0 and higher!"); + warn("[ markview.nvim ] : Thie plugin is only available on version 0.10.0 and higher!"); return; elseif not parser_installed("markdown") then - vim.print("[ markview.nvim ] : Treesitter parser for 'markdown' wasn't found!"); + warn("[ markview.nvim ] : Treesitter parser for 'markdown' wasn't found!"); return; elseif not parser_installed("markdown_inline") then - vim.print("[ markview.nvim ] : Treesitter parser for 'markdown_inline' wasn't found!"); + warn("[ markview.nvim ] : Treesitter parser for 'markdown_inline' wasn't found!"); return; end @@ -205,8 +205,6 @@ vim.api.nvim_create_autocmd(events, { local current_range = markview.renderer.get_content_range(partial_contents); - vim.print(_G.__markview_render_ranges[event.buf]) - -- Don't draw new things if _G.__markview_render_ranges[event.buf] and vim.deep_equal(_G.__markview_render_ranges[event.buf], current_range) then markview.renderer.clear_content_range(event.buf, partial_contents) return; @@ -215,7 +213,7 @@ vim.api.nvim_create_autocmd(events, { markview.renderer.clear_content_range(event.buf, partial_contents) markview.renderer.clear_content_range(event.buf, prev_contents); - markview.renderer.render_in_range(event.buf, prev_contents, markview.configuration, draw_start, draw_stop); + markview.renderer.render_in_range(event.buf, prev_contents, markview.configuration); markview.renderer.update_range(event.buf, current_range); end)); end diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 1e67030..6174820 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -579,7 +579,7 @@ renderer.views = {}; ---@param content any ---@param config markview.render_config.headings renderer.render_headings = function (buffer, content, config) - if config.enable == false then + if not config or config.enable == false then return; end @@ -587,6 +587,7 @@ renderer.render_headings = function (buffer, content, config) local conf = config["heading_" .. content.level] or {}; local shift = config.shift_width or vim.bo[buffer].shiftwidth; + -- Do not proceed if config doesn't exist for a heading if not conf then return; end @@ -677,8 +678,8 @@ renderer.render_headings_s = function (buffer, content, config) ---@type markview.render_config.headings.h local conf = content.marker:match("=") and config["setext_1"] or config["setext_2"]; - local shift = config.shift_width or vim.bo[buffer].shiftwidth; + -- Do not proceed if setext headings don't have configuraton if not conf then return; end @@ -738,7 +739,7 @@ end ---@param content any ---@param config_table markview.render_config.code_blocks renderer.render_code_blocks = function (buffer, content, config_table) - if config_table == nil or config_table.enable == false then + if not config_table or config_table.enable == false then return; end @@ -893,7 +894,7 @@ end renderer.render_block_quotes = function (buffer, content, config_table) local qt_config; - if config_table.enable == false then + if not config_table or config_table.enable == false then return; end @@ -917,6 +918,11 @@ renderer.render_block_quotes = function (buffer, content, config_table) qt_config = config_table.default; end + -- Config for a block quote is not available + if not qt_config then + return; + end + if qt_config.custom_title == true and content.title ~= "" then vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start, { virt_text_pos = "inline", @@ -985,7 +991,7 @@ end renderer.render_horizontal_rules = function (buffer, content, config_table) local virt_text = {}; - if config_table.enable == false then + if not config_table or config_table.enable == false then return; end @@ -1039,7 +1045,7 @@ end renderer.render_links = function (buffer, content, config_table) local lnk_conf; - if config_table.enable == false then + if not config_table or config_table.enable == false then return; end @@ -1051,6 +1057,11 @@ renderer.render_links = function (buffer, content, config_table) lnk_conf = config_table.emails; end + -- Do not render links with no config + if not lnk_conf then + return; + end + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.link_type == "email_autolink" and content.col_start or content.col_start + 1, { virt_text_pos = "inline", virt_text = { @@ -1082,7 +1093,7 @@ end ---@param content any ---@param config_table markview.render_config.inline_codes renderer.render_inline_codes = function (buffer, content, config_table) - if config_table.enable == false then + if not config_table or config_table.enable == false then return; end @@ -1111,7 +1122,7 @@ end ---@param content any ---@param config_table markview.render_config.list_items renderer.render_lists = function (buffer, content, config_table) - if config_table.enable == false then + if not config_table or config_table.enable == false then return; end @@ -1127,6 +1138,11 @@ renderer.render_lists = function (buffer, content, config_table) ls_conf = config_table.marker_dot or {}; end + -- Do not render list types with no configuraton + if not ls_conf then + return; + end + local use_text = ls_conf.text or content.marker_symbol; if ls_conf.add_padding == true then @@ -1176,7 +1192,7 @@ end ---@param content any ---@param config_table markview.render_config.checkboxes renderer.render_checkboxes = function (buffer, content, config_table) - if config_table.enable == false then + if not config_table or config_table.enable == false then return; end @@ -1190,7 +1206,7 @@ renderer.render_checkboxes = function (buffer, content, config_table) chk_config = config_table.pending; end - if type(chk_config.text) ~= "string" then + if not chk_config or type(chk_config.text) ~= "string" then return; end @@ -1212,7 +1228,7 @@ end ---@param content any ---@param user_config markview.config renderer.render_tables = function (buffer, content, user_config) - if user_config.tables == nil or user_config.tables.enable == false then + if not user_config.tables or user_config.tables.enable == false then return; end @@ -1229,57 +1245,7 @@ renderer.render_tables = function (buffer, content, user_config) end end - - - ---- CursorMove listener -renderer.autocmd = nil; - -renderer.create_autocmd = function (config_table) - if renderer.autocmd then - return; - end - - local events = { "CursorMovedI" }; - - -- if config_table.modes and vim.list_contains(config_table.modes, "i") then - -- table.insert(events, "CursorMovedI"); - -- end - - renderer.autocmd = vim.api.nvim_create_autocmd(events, { - pattern = config_table.filetypes or "*.md", -- Currently only for markdown - callback = function (event) - local buffer = event.buf; - local mode = vim.api.nvim_get_mode().mode; - - if not vim.list_contains(config_table.modes or {}, mode) then - return; - end - - renderer.render_deleted_items(buffer, config_table); - renderer.removed_elements[buffer] = {}; - - if not vim.list_contains(config_table.special_modes or { "i" }, mode) then - return; - end - - -- This is for testing purposes - local cursor = vim.api.nvim_win_get_cursor(0); - local comps = {}; - - for _, component in ipairs(_G.__markview_views[buffer] or {}) do - if (cursor[1] - 1) >= component.row_start and cursor[1] - 1 <= component.row_end then - table.insert(comps, component); - table.insert(renderer.removed_elements[buffer], component); - end - end - - renderer.destroy(buffer) - end - }) -end - -renderer.render_in_range = function (buffer, partial_contents, config_table, from, to) +renderer.render_in_range = function (buffer, partial_contents, config_table) for _, content in ipairs(partial_contents) do local type = content.type; local fold_closed = vim.fn.foldclosed(content.row_start + 1); @@ -1288,11 +1254,6 @@ renderer.render_in_range = function (buffer, partial_contents, config_table, fro goto extmark_skipped; end - -- if content.row_start < from or content.row_end > to then - -- goto extmark_skipped; - -- end - - if type == "heading_s" then pcall(renderer.render_headings_s, buffer, content, config_table.headings); elseif type == "heading" then @@ -1330,6 +1291,7 @@ renderer.render = function (buffer, parsed_content, config_table, conceal_start, _G.__markview_views[buffer] = parsed_content; end + -- Prevents errors caused by buffer ranges being nil if _G.__markview_render_ranges and _G.__markview_render_ranges[buffer] then _G.__markview_render_ranges[buffer] = {}; end @@ -1380,30 +1342,6 @@ renderer.clear = function (buffer) vim.api.nvim_buf_clear_namespace(buffer, renderer.namespace, 0, -1) end - - - - - - - - - - - - - - -renderer.update = function (buffer, parsed_content) - if not _G.__markview_views then - _G.__markview_views = {}; - end - - if parsed_content ~= nil then - _G.__markview_views[buffer] = parsed_content; - end -end - renderer.update_range = function (buffer, new_range) if not _G.__markview_render_ranges then _G.__markview_render_ranges = {}; @@ -1416,8 +1354,6 @@ renderer.update_range = function (buffer, new_range) if new_range and not vim.deep_equal(_G.__markview_render_ranges[buffer], new_range) then _G.__markview_render_ranges[buffer] = new_range; end - - -- error("nil range") end renderer.clear_content_range = function (buffer, parsed_content) diff --git a/test.md b/test.md deleted file mode 100644 index 945035c..0000000 --- a/test.md +++ /dev/null @@ -1,24 +0,0 @@ -- Hello -- My name is -- MD - - Moinul - - Hossain - - Shawon -- I like to do -- programming - - - ->[!IMPORTANT] -> dudjdjd - -> heidjejd -> jdidjdjdjd - - - - -- Hello - -# Heklo - From 70cec79e5400f68f3e8de8ca6e574597e05c13f5 Mon Sep 17 00:00:00 2001 From: Shawon Date: Wed, 31 Jul 2024 11:29:55 +0600 Subject: [PATCH 06/35] ci(please-release): Fixed broken workflow file for please-release --- .github/workflows/release-please.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 5898951..ff001af 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -10,8 +10,6 @@ permissions: contents: write pull-requests: write -name: release-please - jobs: release-please: runs-on: ubuntu-latest From 4664250a5204f8bd6ae5da7c2525c13556cfe340 Mon Sep 17 00:00:00 2001 From: Shawon Date: Wed, 31 Jul 2024 11:52:11 +0600 Subject: [PATCH 07/35] ci(release-please): Changed the branch to track This is a test commit --- .github/workflows/release-please.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index ff001af..2fcb23b 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -22,4 +22,6 @@ jobs: token: ${{ secrets.RELEASE_PLEASE_TOKEN }} # this is a built-in strategy in release-please, see "Action Inputs" # for more options + + branch: dev release-type: simple From b138856430b4723439b8265200c1899b1eb5efeb Mon Sep 17 00:00:00 2001 From: Shawon Date: Wed, 31 Jul 2024 11:56:29 +0600 Subject: [PATCH 08/35] ci(release-please): Removed deprecated option `branch` This is a test commit --- .github/workflows/release-please.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 2fcb23b..933c9f9 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -23,5 +23,5 @@ jobs: # this is a built-in strategy in release-please, see "Action Inputs" # for more options - branch: dev + target-branch: dev release-type: simple From 6cbbd9b22f53e3f14e583cffaee8f16e00ef0213 Mon Sep 17 00:00:00 2001 From: Shawon Date: Wed, 31 Jul 2024 20:34:47 +0600 Subject: [PATCH 09/35] doc: Added simple documentation for the plugin `helpview.nvim` is recommended for viewing them. --- doc/markview.txt | 231 ++++++++++++++++++++++++++++++++++++++++ doc/tags | 9 ++ lua/markview/extras.lua | 2 + lua/markview/utils.lua | 4 + 4 files changed, 246 insertions(+) create mode 100644 doc/markview.txt create mode 100644 doc/tags diff --git a/doc/markview.txt b/doc/markview.txt new file mode 100644 index 0000000..bbad2ad --- /dev/null +++ b/doc/markview.txt @@ -0,0 +1,231 @@ +*markview.nvim* An experimental markdown previewer for Neovim + + Created by `OXY2DEV` + +============================================================================== +Features *markview.nvim-features* + +- Fully stylized preview of `markdown` documents! Currently supoirted elements + are, + * atx_headings(uses `#`) & setext_headings(uses `---` or `===`) + * inline codes + * code blocks + * block quotes + * list items(both ordered & unordered) + * tables + * hyperlinks, image links & email urls + * horizontal rules + * checkboxes +- Fully customisable elements. From icons, highlight groups to concealments, + padding almost everything can be customised. +- `Dynamically` generated highlight groups. Useful for colorschemes that don't + support various highlight groups. + Note: The plugin will respect highlight groups set by the colorschemes + when available. +- `Hybrid-mode` for editing and previewing at the same time. +- Commands to quickly toggle the plugin(globally or per buffer). + +And so much more! + +============================================================================== +Requirements *markview.nvim-requirements* + +- Neovim version `0.10.0` or higher. +- `Tree-sitter` parser for `markdown` & `markdown_inline`. +- `nvim-web-devicons` +- Optionally, a `tree-sitter` compatible colorscheme. + +============================================================================== +Installation *markview.nvim-installation* + +`markview.nvim` can be installed via your favourite package manager. + +------------------------------------------------------------------------------ +💤 Lazy.nvim *markview.nvim-i-lazy* + +For `lazy.lua` users. +>lua + { + "OXY2DEV/markview.nvim", + ft = "markdown", + + dependencies = { + -- You may not need this if you don't lazy load + -- Or if the parsers are in your $RUNTIMEPATH + "nvim-treesitter/nvim-treesitter", + + "nvim-tree/nvim-web-devicons" + }, + } +< +For `plugins/markview.lua` users. +>lua + return { + "OXY2DEV/markview.nvim", + ft = "markdown", + + dependencies = { + -- You may not need this if you don't lazy load + -- Or if the parsers are in your $RUNTIMEPATH + "nvim-treesitter/nvim-treesitter", + + "nvim-tree/nvim-web-devicons" + }, + } +< + +Note: +It is NOT recommended to lazy load this plugin as it already does that. + +Warning: +You will not be able to access help files without opening a markdown file +if you choose to lazy load. + +------------------------------------------------------------------------------ +🦠 Mini.deps *markview.nvim-i-minideps* +>lua + local MiniDeps = require("mini.deps"); + + MiniDeps.add({ + source = "OXY2DEV/markview.nvim", + + depends = { + -- You may not need this if you don't lazy load + -- Or if the parsers are in your $RUNTIMEPATH + "nvim-treesitter/nvim-treesitter", + + "nvim-tree/nvim-web-devicons" + } + }); +< +------------------------------------------------------------------------------ +🌒 Rocks.nvim *markview.nvim-rocks.nvim* + +`markview.nvim` can be installed using the following command. +>vim + :Rocks install markview.nvim +< +------------------------------------------------------------------------------ +Others + +Installation process for other plugin managers are similar. +>vim + Plug "nvim-treesitter/nvim-treesitter" + Plug "nvim-tree/nvim-web-devicons" + + Plug "OXY2DEV/markview.nvim" +< +============================================================================== +Highlight groups *markview.nvim-hls* + +Note: + The `$` are NOT part of the name. + +- $MarkviewHeading1$ $MarkviewHeading1Sign$ + $MarkviewHeading2$ $MarkviewHeading2Sign$ + $MarkviewHeading3$ $MarkviewHeading3Sign$ + $MarkviewHeading4$ $MarkviewHeading4Sign$ + $MarkviewHeading5$ $MarkviewHeading5Sign$ + $MarkviewHeading6$ $MarkviewHeading6Sign$ + + Highlight groups for different heading levels. `atx_headings` & + `setext_headings` both uses them + +- $MarkviewBlockQuoteDefault$ + $MarkviewBlockQuoteOk$ + $MarkviewBlockQuoteWarn$ + $MarkviewBlockQuoteError$ + $MarkviewBlockQuoteNote$ + $MarkviewBlockQuoteSpecial$ + + Highlight groups responsible for various block quotes, `callouts` & + `alerts`. + +- $MarkviewCode$ + + Highlight group for showing `code blocks` and `inline codes`. + +- $MarkviewCheckboxChecked$ + $MarkviewCheckboxUnchecked$ + $MarkviewCheckboxPending$ + + Highlight group for the different `checkbox` states. + +- $MarkviewListItemPlus$ + $MarkviewListItemMinus$ + $MarkviewListItemStar$ + + Highlight groups for `unordered lists`. The plugin doesn't add decorations + to ordered lists. + +- $MarkviewTableBorder$ + + Highlight group for the borders of `tables`. + + $MarkviewTableAlignLeft$ + $MarkviewTableAlignRight$ + $MarkviewTableAlignCenter$ + + Highlight groups for the various `alignment indicators` on rows. + +- $MarkviewGradient1$ + $MarkviewGradient2$ + $MarkviewGradient2$ + $MarkviewGradient3$ + $MarkviewGradient4$ + $MarkviewGradient5$ + $MarkviewGradient6$ + $MarkviewGradient7$ + $MarkviewGradient8$ + $MarkviewGradient9$ + $MarkviewGradient10$ + + Highlight groups used by the `horizontal rules`. + +============================================================================== +Commands *markview.nvim-commands* + +Markview comes with the following command, +>vim + :Markview +< +When used without any arguments it `toggles` the plugin state. + +It comes with the following sub-commands, + +- toggleAll + + Toggles the plugin state. This will set ALL attached buffers to the same + state. + +- enableAll + + Enables the plugin in all attached buffers. If the plugin is already enabled + then it will redraw everything. + +- disableAll + + Disables the plugin in all attached buffers. If the plugin is already + diaable it will clear any remaining decorations. + +Note: +When the {buffer} isn't provided these commands will run on the current +buffer. + +- toggle {buffer} + + Toggles the state of a buffer. Used for disabling the plugin on a specific + buffer. + +- enable {buffer} + + Enables the plugin on a buffer. Redraws decorations if it's already enabled + in that buffer. + +- disable {buffer} + + Disables the plugin on a specific buffer. Removes decorations if it's + already disabled in that buffer. + + +vim:ft=help:bt=help:textwidth=78:ts=4:nospell: diff --git a/doc/tags b/doc/tags new file mode 100644 index 0000000..8446d14 --- /dev/null +++ b/doc/tags @@ -0,0 +1,9 @@ +markview.nvim markview.txt /*markview.nvim* +markview.nvim-commands markview.txt /*markview.nvim-commands* +markview.nvim-features markview.txt /*markview.nvim-features* +markview.nvim-hls markview.txt /*markview.nvim-hls* +markview.nvim-i-lazy markview.txt /*markview.nvim-i-lazy* +markview.nvim-i-minideps markview.txt /*markview.nvim-i-minideps* +markview.nvim-installation markview.txt /*markview.nvim-installation* +markview.nvim-requirements markview.txt /*markview.nvim-requirements* +markview.nvim-rocks.nvim markview.txt /*markview.nvim-rocks.nvim* diff --git a/lua/markview/extras.lua b/lua/markview/extras.lua index c4a1bf9..8654bba 100644 --- a/lua/markview/extras.lua +++ b/lua/markview/extras.lua @@ -1,3 +1,5 @@ +-- For testing purposes + local extras = {}; extras.show_headings = { diff --git a/lua/markview/utils.lua b/lua/markview/utils.lua index f96dc48..92efda2 100644 --- a/lua/markview/utils.lua +++ b/lua/markview/utils.lua @@ -1,5 +1,9 @@ local utils = {}; +utils.clamp = function (val, min, max) + return math.min(math.max(val, min), max); +end + utils.find_attached_wins = function (buf) local attached_wins = {}; From a38dd1f01c31b4201b4355fe8ebaa439621e5b35 Mon Sep 17 00:00:00 2001 From: Shawon Date: Thu, 1 Aug 2024 00:43:32 +0600 Subject: [PATCH 10/35] fix(parser): Added logic for supporting markers inside code blocks Improved logic for finding lines within a list item. Fixes a bug preventing lost item markers from existing within lines of code blocks. SUPPORT FOR TABLES WILL NOT BE ADDED AS THERE IS NO NEED TO NEST TABLES WITHIN LIST ITEMS. BLOCK QUOTES WORK FINE SO LOGIC FOR THEM WILL NOT BE ADDED. See: #69 --- lua/markview/parser.lua | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/lua/markview/parser.lua b/lua/markview/parser.lua index 89fc910..1f9f644 100644 --- a/lua/markview/parser.lua +++ b/lua/markview/parser.lua @@ -1,30 +1,55 @@ local parser = {}; -- local renderer = require("markview/renderer"); -parser.fiter_lines = function (buffer, from, to, marker) +parser.fiter_lines = function (buffer, from, to) local captured_lines = vim.api.nvim_buf_get_lines(buffer, from, to, false); local filtered_lines = {}; local indexes = {}; local spaces = {}; + local withinCodeBlock; + local parent_marker; + local tolarence = 3; local found = 0; for l, line in ipairs(captured_lines) do - if l ~= 1 and line:match(marker) then - break; + if l ~= 1 then + if withinCodeBlock ~= true and line:match("^%s*([+%-*])") then + break; + elseif withinCodeBlock ~= true and line:match("^%s*(%d+%.)") then + break; + end end if found >= tolarence then break; end - local spaces_before = vim.fn.strchars(line:match("(%s*)")); + local spaces_before = vim.fn.strchars(line:match("^(%s*)")); - if not line:match(marker) then - spaces_before = math.max(0, spaces_before - vim.fn.strchars(marker .. " ")); + if line:match("(```)") and withinCodeBlock ~= true then + withinCodeBlock = true; + goto withinElement; + elseif line:match("(```)") and withinCodeBlock == true then + withinCodeBlock = false; + goto withinElement; + elseif withinCodeBlock == true then + goto withinElement; end + if line:match("^%s*([+%-*])") then + parent_marker = line:match("^%s*([+%-*])"); + elseif line:match("^%s*(%d+%.)") then + parent_marker = line:match("^%s*(%d+%.)"); + end + + if not line:match("^%s*([+%-*])") and not line:match("^%s*(%d+%.)") and parent_marker then + spaces_before = math.max(0, spaces_before - vim.fn.strchars((parent_marker or "") .. " ")); + end + + ::withinElement:: + table.insert(filtered_lines, line); table.insert(indexes, l); table.insert(spaces, spaces_before) @@ -317,7 +342,7 @@ parser.md = function (buffer, TStree, from, to) local marker_text = vim.treesitter.get_node_text(marker, buffer); local symbol = marker_text:gsub("%s", ""); - local list_lines, lines, spaces = parser.fiter_lines(buffer, row_start, row_end, symbol); + local list_lines, lines, spaces = parser.fiter_lines(buffer, row_start, row_end); local spaces_before_marker = list_lines[1]:match("^(%s*)" .. symbol .. "%s*"); local c_end, _ = parser.get_list_end_range(buffer, row_start, row_end, symbol) From 60bc13b9492570d4d321391517eb9677918f540e Mon Sep 17 00:00:00 2001 From: Shawon Date: Thu, 1 Aug 2024 08:30:48 +0600 Subject: [PATCH 11/35] fix(renderer): Fixed screen not updating in "no" mode An extra "redraw!" command is called to flush out screen updates. See: #70 --- ftplugin/markdown.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ftplugin/markdown.lua b/ftplugin/markdown.lua index a451495..a264478 100644 --- a/ftplugin/markdown.lua +++ b/ftplugin/markdown.lua @@ -149,7 +149,9 @@ vim.api.nvim_create_autocmd({ "ModeChanged", "TextChanged" }, { markview.keymaps.init(buffer, window, parsed_content, markview.configuration); end else + -- Call an extra redraw to flush out screen updates markview.renderer.clear(buffer); + vim.cmd("redraw!"); end end }); From 11972088c8e6a251088a15f67d9be5a8fb50fe19 Mon Sep 17 00:00:00 2001 From: Shawon Date: Thu, 1 Aug 2024 18:44:51 +0600 Subject: [PATCH 12/35] doc: Added help files for the plugin --- doc/markview.txt | 1108 +++++++++++++++++++++++++++++++++++++++++++++- doc/tags | 30 +- 2 files changed, 1134 insertions(+), 4 deletions(-) diff --git a/doc/markview.txt b/doc/markview.txt index bbad2ad..d1515e4 100644 --- a/doc/markview.txt +++ b/doc/markview.txt @@ -2,10 +2,37 @@ Created by `OXY2DEV` +============================================================================== +Table of contents *markview.nvim-toc* + +Features ............................................ |markview.nvim-features| +Requirements .................................... |markview.nvim-requirements| + +Installation .................................... |markview.nvim-installation| + 💤 Lazy.nvim ...................................... |markview.nvim-i-lazy| + 🦠 Mini.deps .................................. |markview.nvim-i-minideps| + 🌒 Rocks.nvim .................................... |markview.nvim-i-rocks| + +Highlight groups ......................................... |markview.nvim-hls| +Commands ............................................ |markview.nvim-commands| + +Plugin configuration .................................. |markview.nvim-config| + Block quotes .............................. |markview.nvim-c-block_quotes| + Checkboxes .................................. |markview.nvim-c-checkboxes| + Code blocks ................................ |markview.nvim-c-code_blocks| + Headings ...................................... |markview.nvim-c-headings| + Horizontal rules ................................... |markview.nvim-c-hrs| + Inline codes .............................. |markview.nvim-c-inline_codes| + Links ............................................ |markview.nvim-c-links| + List items .................................. |markview.nvim-c-list_items| + Tables .......................................... |markview.nvim-c-tables| + +Helper functions ..................................... |markview.nvim-helpers| + ============================================================================== Features *markview.nvim-features* -- Fully stylized preview of `markdown` documents! Currently supoirted elements +- Fully stylized preview of `markdown` documents! Currently supported elements are, * atx_headings(uses `#`) & setext_headings(uses `---` or `===`) * inline codes @@ -99,7 +126,7 @@ if you choose to lazy load. }); < ------------------------------------------------------------------------------ -🌒 Rocks.nvim *markview.nvim-rocks.nvim* +🌒 Rocks.nvim *markview.nvim-i-rocks* `markview.nvim` can be installed using the following command. >vim @@ -227,5 +254,1080 @@ buffer. Disables the plugin on a specific buffer. Removes decorations if it's already disabled in that buffer. +------------------------------------------------------------------------------ + +============================================================================== +Plugin configuration *markview.nvim-config* + +The plugin can be configured via the `setup()` function. +>lua + local presets = require("markview.presets"); + + require("markview").setup({ + headings = presets.headings.glow_labels + }); +< + +The setup function comes with the following options, + +- modea `string[]` + + A list of |vim-modes| where the preview will be shown. Default is, +>lua + modes = { "n", "no" } +< +- hybrid_modes `string[] or nil` + + A list of |vim-modes| where the text under the cursor is shown as raw text + without any decorations. + + Default is nil. +>lua + hybrid_modes = nil +< +- buf_ignore `string[] or nil` + + A list of |'buftype'|s where the plugin will be disabled. Default is, +>lua + buf_ignore = { "nofile" } +< +- callbacks + { + on_enable: `function or nil`, + on_disable: `function or nil`, + + on_mode_change: `function or nil` + } + + A table containing `callbacks` that will be run by the plugin on specific + events. See |markview.nvim-callbacks| for more info. + + Example usage, +>lua + callbacks = { + on_enable = function (_, win) + vim.wo[win].cursorline = false; + end + } +< +- headings `table or nil` + + A table containing configuration for various `headings`. See + |markview.nvim-c-headings| for more info. + + Example usage, +>lua + headings = { + enable = false + } +< +- code_blocks `table or nil` + + A table containing configuration for the `fenced code blocks`. See + |markview.nvim-c-code_blocks| for more info. + + Example usage, +>lua + code_blocks = { + enable = false + } +< +- inline_codes `table or nil` + + A table containing configuration for the `inline codes`. See + |markview.nvim-c-inline_codes| for more info. + + Example usage, +>lua + inline_codes = { + enable = false + } +< +- block_quotes `table or nil` + + A table containing configuration for the `block quotes`, `alerts` and + `callouts`. See |markview.nvim-c-block_quotes| for more info. + + Example usage, +>lua + block_quotes = { + enable = false + } +< +- horizontal_rules `table or nil` + + A table containing configuration for the `horizontal rules`. See + |markview.nvim-c-hrs| for more info. + + Example usage, +>lua + horizontal_rules = { + enable = false + } +< +- links `table or nil` + + A table containing configuration for various `links`. See + |markview.nvim-c-links| for more info. + + Example usage, +>lua + links = { + enable = false + } +< +- list_items `table or nil` + + A table containing configuration for various `list items`. See + |markview.nvim-c-list_items| for more info. + + Example usage, +>lua + list_items = { + enable = false + } +< +- checkboxes `table or nil` + + A table containing configuration for various `checkboxes`. See + |markview.nvim-c-checkboxes| for more info. + + Example usage, +>lua + checkboxes = { + enable = false + } +< +- tables `table or nil` + + A table containing configuration for the `tables`. See + |markview.nvim-c-tables| for more info. + + Example usage, +>lua + tables = { + enable = false + } +< +------------------------------------------------------------------------------ + +------------------------------------------------------------------------------ +Block quote *markview.nvim-c-block_quotes* + +Allows changing how block quotes, callouts & alerts. +>lua + block_quotes = { + enable = true, + + default = { + border = "▋", + border_hl = "MarkviewBlockQuoteDefault" + }, + + callouts = { + { + match_string = "ABSTRACT" + callout_preview = "󱉫 Abstract", + callout_preview_hl = "MarkviewBlockQuoteNote", + + custom_title = true, + custom_icon = "󱉫 ", + + border = "▋", + border_hl = "MarkviewBlockQuoteDefault" + } + } + } +< +enable ~ + `boolean or nil` +The `enable` option is used to disable the rendering of block quotes, callouts +& alerts. + +default ~ + `table` +Configuration for block quotes and unknown callouts/alerts. + +It comes with the following properties, + +border ~ + `string` +A string to use as the border. Preferablly a single character. + +border_hl + `string or nil` +Highlight group for the default border. + +------------------------------------------------------------------------------ +Checkboxes *markview.nvim-c-checkboxes* + +Configuration table for various checkbox states. +>lua + checkboxes = { + enable = true, + + checked = { + text = "✔", + hl = "MarkviewCheckboxChecked" + }, + unchecked = {}, + pending = {} + } +< +enable ~ + `boolean or nil` +The `enable` option is used to disable the rendering of checkboxes. + +checked ~ + `table or nil` +Configuration table for checked checkboxes. + +unchecked ~ + `table or nil` +Configuration table for unchecked checkboxes. + +pending ~ + `table or nil` +Configuration table for pending checkboxes. + +------------------------------------------------------------------------------ +Code blocks *markview.nvim-c-code_blocks* + +Allows changing how code_blocks are shown. +>lua + headings = { + enable = true, + style = "minimal", + + position = "minimal", + min_width = 60, + pad_amount = 3, + pad_char = " ", + + language_names = { + "cpp", "c++", + "py", "python" + }, + + hl = "MarkviewCode", + + sign = true, + sign_hl = nil + } +< +enable ~ + `boolean or nil` +The `enable` option is used to disable the rendering of headings entirely. + +style ~ + `string` +The rendering style of code blocks. + + - simple + + The lines within the code blocks are highlighted. + + - minimal + + Adds padding to the code block and surronds the block in a rectangle. + + - language + + Like minimal but adds icons, signs and language string to the blocks. + +position ~ +Only for the `minimal`, `language` styles. + `string or nil` +The {virt_text_pos} of the top & bottom border of the code block. Default is +`inline`. + +min_width ~ +Only for the `minimal`, `language` styles. + `number` +The minimum width of the code block. This is without counting the +`pad_amount`. + +pad_amount ~ +Only for the `minimal`, `language` styles. + `number` +The number of `pad_char` to add before and after the lines of the code block. + +pad_char ~ +Only for the `minimal`, `language` styles. + `string` +The text used as padding for the code blocks. + +language_names ~ + `table or nil` + +A list of `tuples` containing a `match` & a `replacement`. Useful when you +want to see `c++` instead of `cpp`. + +hl ~ + `string` +Highlight group for the code block. + +sign ~ + `boolean or nil` +When `true`, icons are shown in the |'signcolumn'| for code blocks + +sign_hl ~ + `string or nil` +A custom highlight group for the `signs`. When nil, the highlight group +provided by `nvim-web-devicons` is used. + +------------------------------------------------------------------------------ +Headings *markview.nvim-c-headings* + +Allows changing how headings are shown. +>lua + headings = { + enable = true, + shift_width = 3, + + heading_1 = {}, + heading_2 = {}, + heading_3 = {}, + heading_4 = {}, + heading_5 = {}, + heading_6 = {}, + + setext_1 = {}, + setext_2 = {}, + } +< +enable ~ + `boolean or nil` +The `enable` option is used to disable the rendering of headings entirely. + +shift_width ~ +Only for the `simple`, `icon` styles. + `number or nil` +Number of `shift_char` to add per level of the headings. + +heading_<1-6> ~ + `table or nil` +`heading_1` to `heading_6` are used for styling atx_headings. They all have +the following properties. + +style ~ + `string` +`atx_headings` support the following styles, + + - simple + + Adds simple background to the headings. + + - label + + Adds padding, icons, corner text, sign etc. `statusline`-like parts + around the heading text. + + - icon + + Adds simple icons to the headings. Also hides the `#` of the heading. + +NOTE: +These styles are EXCLUSIVE to `atx_headings` and will not work with +`setext_headings`. + +`setext_headings` support the following styles. + + - simple + + Adds simple background to the headings. + + - github + + Adds an icon before the heading text and a line under the heading text. + Kinda like how headings are shown in GitHub. + +shift_char ~ + `string or nil` +Thw character to use as padding before the heading. + +------------------------------------------------------------------------------ + +corner_left ~ +Only for the `label` style. + `string or nil` +Only useful when adding different colored sections before the left padding. + +padding_left ~ +Only for the `label` style. + `string or nil` +The text to use as padding before the heading. + +icon ~ +Only for the `label` style. + `string or nil` +The text to use as an icon before the heading text. + +padding_right ~ +Only for the `label` style. + `string or nil` +The text to use as padding after the heading. + +corner_right ~ +Only for the `label` style. + `string or nil` +Only useful when adding different colored sections after the right padding. + + + +hl ~ + `string or nil` +Highlight group to be applied to the entire range of the node. It is added as +the `line_hl_group` when the style is `icon`. + +It is used as the default value for the following properties. + +corner_left_hl ~ +Only for the `label` style. + `string or nil` +Highlight group for the left corner. + +padding_left_hl ~ +Only for the `label` style. + `string or nil` +Highlight group for the left padding. + +icon_hl ~ +Only for the `label`, `icon` styles. + `string or nil` +Highlight group for icon. + +text_hl ~ +Only for the `label`, `icon` styles. + `string or nil` +Highlight group for heading text. + +padding_right_hl ~ +Only for the `label` style. + `string or nil` +Highlight group for the left padding. + +corner_right_hl ~ +Only for the `label` style. + `string or nil` +Highlight group for the left corner. + +------------------------------------------------------------------------------ +Horizontal rules *markview.nvim-c-hrs* + +Configuration table for line breaks or horizontal rules. +>lua +horizontal_rules = { + enable = true, + + parts = { + { + type = "repeating", + + text = "─", + hl = { "MarkviewGradient1", "MarkviewGradient2" }, + direction = "left", + + repeat_amount = function () + return vim.o.columns - 3; + end + }, + { + type = "text", + text = " • ", + hl = "MarkviewGradient5" + } + } + } +< +enable ~ + `boolean or nil` +The `enable` option is used to disable the rendering of line breaks/horizontal +rules. + +parts ~ + `table` +A list of parts to create a horizontal rule. There are 2 types of parts +available, + +- repeating + + Repeats the provided text by a number of time. + + - text + + Renders some raw text to the screen. + +------------------------------------------------------------------------------ + +Parts: repeating ~ + *markview.nvim-hr-repeating* +Repeats a text a specific number of times. It has the following properties, + +type ~ + `string` +The type of a part. In this case it's value would be `repeating`. + +text ~ + `string` +The text to repeat. + +hl ~ + `table or nil` +A list of colors to use for the part. The `direction` property changes where +the color is applied in the final string. + +direction ~ + `string or nil` +The side of the final string where the `hl` would be applied. Possible values +are, + - left + - right + +Default is `left`. + +repeat_amount ~ + `function or number` +The number of times to repeat `text`. If the value is a `function` then the +returned value is used. + +------------------------------------------------------------------------------ + +Parts: text ~ + *markview.nvim-hr-text* +Shows some text in the horizontal rule. It has the following properties, + +text ~ + `string` +The text to show. + +hl ~ + `string or nil` +Highlight group for coloring `text` + +------------------------------------------------------------------------------ +Inline codes *markview.nvim-c-inline_codes* + +Configuration table for `inline codes`/codespans. + +enable ~ + `boolean or nil` +The `enable` option is used to disable the rendering of inline codes. + +corner_left ~ + `string or nil` +Only useful when adding different colored sections before the left padding. + +padding_left ~ + `string or nil` +The text to use as padding before the heading. + +icon ~ + `string or nil` +The text to use as an icon before the heading text. + +padding_right ~ + `string or nil` +The text to use as padding after the heading. + +corner_right ~ + `string or nil` +Only useful when adding different colored sections after the right padding. + + + +hl ~ + `string or nil` +Highlight group to be applied to the entire range of the node. + +It is used as the default value for the following properties. + +corner_left_hl ~ + `string or nil` +Highlight group for the left corner. + +padding_left_hl ~ + `string or nil` +Highlight group for the left padding. + +icon_hl ~ + `string or nil` +Highlight group for icon. + +text_hl ~ + `string or nil` +Highlight group for heading text. + +padding_right_hl ~ + `string or nil` +Highlight group for the left padding. + +corner_right_hl ~ + `string or nil` +Highlight group for the left corner. + +------------------------------------------------------------------------------ +Links *markview.nvim-c-links* + +Configuration tables for various types of links. +>lua + links = { + enable = true, + + hyperlinks = { + icon = "H", + hl = "MarkviewHyperlink" + }, + images = {}, + emails = {} + } +< +enable ~ + `boolean or nil` +The `enable` option is used to disable the rendering of links. + +hyperlinks ~ + `table or nil` +Configuration table for regular links(links using `[]()`). + +images ~ + `table or nil` +Configuration table for image links(links using `![]()`). + +emails ~ + `table or nil` +Configuration table for email urls(links using `<>`). + +------------------------------------------------------------------------------ + +All the options(other than `enable`) have these properties. + +corner_left ~ + `string or nil` +Only useful when adding different colored sections before the left padding. + +padding_left ~ + `string or nil` +The text to use as padding before the heading. + +icon ~ + `string or nil` +The text to use as an icon before the heading text. + +padding_right ~ + `string or nil` +The text to use as padding after the heading. + +corner_right ~ + `string or nil` +Only useful when adding different colored sections after the right padding. + + + +hl ~ + `string or nil` +Highlight group to be applied to the entire range of the node. + +It is used as the default value for the following properties. + +corner_left_hl ~ + `string or nil` +Highlight group for the left corner. + +padding_left_hl ~ + `string or nil` +Highlight group for the left padding. + +icon_hl ~ + `string or nil` +Highlight group for icon. + +text_hl ~ + `string or nil` +Highlight group for heading text. + +padding_right_hl ~ + `string or nil` +Highlight group for the left padding. + +corner_right_hl ~ + `string or nil` +Highlight group for the left corner. + +------------------------------------------------------------------------------ +List items *markview.nvim-c-list_items* + +Configuration table for various list items. +>lua + list_items = { + enable = true, + + marker_plus = { + add_padding = true, + + text = "•", + hl = "MarkviewListItemPlus" + } + } +< +Note: List items nodes have different start and end ranges for different list +level. This can cause issues when you do a lot of nesting inside lists. + +It is not recommended to use decorations that can cause items to go out of +place. + +enable ~ + `boolean or nil` +The `enable` option is used to disable the rendering of list items. + +marker_plus ~ + `table or nil` +Configuration table for lists starting with `+`. + +marker_minus ~ + `table or nil` +Configuration table for lists starting with `-`. + +marker_star ~ + `table or nil` +Configuration table for lists starting with `*`. + +------------------------------------------------------------------------------ + +All the options(other than `enable`) have these properties. + +text ~ + `string or nil` +The text to use as the marker. It will `conceal` the oroginal marker and +replace it with this text. + +hl ~ + `string or nil` +Highlight group for `text`. + +------------------------------------------------------------------------------ + +All the options(other than `enable`) have these properties. + +text ~ + `string or nil` +The text to use as the checkbox. It will `conceal` the original marker and +replace it with this text. + +hl ~ + `string or nil` +Highlight group for `text`. + +------------------------------------------------------------------------------ +Tables *markview.nvim-c-tables* + +Configuration table for tables. +>lua + tables = { + enable = true, + + text = {}, + hl = {}, + + use_virt_lines = false + } +< +enable ~ + `boolean or nil` +The `enable` option is used to disable the rendering of tables. + +use_virt_lines ~ + `boolean or nil` +When `true`, the top & bottom borders are made of `virtual lines`. Useful if +you don't like having gaps between tables. + +text ~ + `table` +A list of `12` string used to create the table. +>txt + Main borders Row & column separtor + ------------------- --------------------- + "╭", "─", "╮", "┬", + "├", "│", "┤", "┼", + "╰", "─", "╯", "┴", + + Alignment markers + ----------------------------------------- + "╼", "╾", "╴", "╶" + Left Right Center +< + +hl ~ + `table or nil` +A list of `12` highlight group for the strings in `text`. + +------------------------------------------------------------------------------ +Helper functions *markview.nvim-helpers* + +The plugin comes with a few helper functions to easily create Dynamic +|highlight-groups|. + +Color related helper functions can be used either through `markview.colors` or +by requiring the file Directly. +>lua + local markview = require("markview"); + vim.print(markview.colors.get_hl_value(0, "Special", "fg")); +< +------------------------------------------------------------------------------ + + *markview.nvim-h-lerp* +colors.lerp({x}: number, {y}: number, {t}: number) -> number + + The mising `math.lerp()` function. Does `linear interpolation` between + x & y. + + Parameters: ~ + + • {x} The start value. + • {y} The stop/end value. + • {t} A float between 0.00 & 1.00 to interpolate to. + + Result: ~ + + • {number} The interpolated value. + + *markview.nvim-h-clamp* +colors.clamp({value}: number, {min}: number, {max}: number) -> number + + The mising `math.clamp()` function. Clamps a value between min & max. + + Parameters: ~ + + • {value} The value to clamp. + • {min} Minimum value. + • {max} Maximum value. + + Result: ~ + + • {number} The clamped value. + + *markview.nvim-h-name_to_hex* +colors.name_to_hex({name}: string) -> string + + Turns |gui-colors| into heaxadecimal values. + + Used for converting |'guifg'|, |'guibg'| & |'guisp'| values provided + by |nvim_get_hl()| into human readable colors. + + Parameters: ~ + + • {name} Name of the color. + + Result: ~ + + • {string} The converted hexadecimal color. + + *markview.nvim-h-name_to_rgb* +colors.name_to_rgb({name}: string) -> { r: number, g: number, b: number } + + Turns |gui-colors| into tables containing r, g, b values. + + Used for converting |'guifg'|, |'guibg'| & |'guisp'| values provided + by |nvim_get_hl()| into human readable colors. + + Parameters: ~ + + • {name} Name of the color. + + Result: ~ + + • {table} A table containing the r, g, b values. + + *markview.nvim-h-num_to_hex* +colors.num_to_hex({num}: number) -> string + + Converts numbers into hexadecimal string. A `#` is added before the + output string. + + Used for converting |'guifg'|, |'guibg'| & |'guisp'| values provided + by |nvim_get_hl()| into human readable colors. + + Parameters: ~ + + • {num} Number to convert. + + Result: ~ + + • {string} The converted hexadecimal color. + + *markview.nvim-h-num_to_rgb* +colors.num_to_rgb({num}: number) -> { r: number, g: number, b: number } + + Sperates color numbers into r, g, b values. + + Rarely used for translating outputs of |nvim_get_hl()|. + + Parameters: ~ + + • {num} Number to seperate. + + Result: ~ + + • {table} Table containing r, g, b values. + + *markview.nvim-h-hex_to_rgb* +colors.hex_to_rgb({str}: string) -> { r: number, g: number, b: number } + + Seperates hex color codes to r, g, b colors. + + Supports codes with or without `#` in front of them. Also supports + `3-digit` & `6-digit` hex color codes. + + Parameters: ~ + + • {str} Hexadecimal string to seperate. + + Result: ~ + + • {table} Table containing r, g, b values. + + *markview.nvim-h-rgb_to_hex* +colors.rgb_to_hex({ {r}: number, {g}: number, {b}: number }) -> string + + Turns table containing r, g, b values into valid hex color codes. + + Used internally for transforming color values. + + Parameters: ~ + + • {tbl} A table containing r, g, b values. + + Result: ~ + + • {table} 6-digit hex color code. + + *markview.nvim-h-get_hl_value* +colors.get_hl_value({ns_id}: number, {hl_group}: string, {value}: string) + -> any + + A wrapper function for |nvim_get_hl()|. + + Gets {value} of {hl_group} in the provided {ns_id}. If {value} is `fg`, + `bg` or `sp` the returned value will be a table containing the r, g, b + values. Otherwise the value is directly returned. + + Parameters: ~ + + • {ns_id} Namespace ID. See |namespace| for more information. + • {hl_group} Highlight group name. + • {value} The value to return. + + Result: ~ + + • {any} Any of the value returned by |nvim_get_hl()|. + + *markview.nvim-h-create_gradient* +colors.create_gradient( + {name_prefix}: string, + + {from}: color, + {to}: color, + + {steps}: number, + {mode}: string +) -> { {group_name}: string, {value}: table } + + Creates a list of `highlight groups` for the {highlight_groups} option. + + A 2-stop gradient is generated between {from} & {to}. The value of + {from} & {to} can either be a number, string or a table with r, g, b + values. + + The {mode} can be used to make the gradient into the background color or + the foreground color or both. + + Parameters: ~ + + • {name_prefix} The prefix to add before each of the {group_name}. + + E.g. setting the {name_prefix} to "Gradient" will + result in group names being "Gradient" where + "" is the step number. + + • {from} The start color of the gradient. Can be a number, + a string or a table. It will be converted to a + table containing r, g, b values. + • {to} The stop color of the gradient. Works like {from}. + + • {steps} Number of steps in the gradient(including the start + and stop colors). + • {mode} The color mode of the gradient. Possible values are, + • bg: Applies the color to the background. + • fg: Applies the color to the foreground. + • both: Does all of the above. + + Result: ~ + + • {table} A list of tables containing a {group_name} and a + {value}. Mainly for use in {highlight_groups}. + + *markview.nvim-h-mix* +colors.mix( + {color_1}: color, {color_2}: color, + {per_1}: number, {per_2}: number +) -> string + + Mixes {color_1}, {color_2} to create a new color. + + The value of {color_1} & {color_2} can either be a number, string + or a table with r, g, b values. + + The {per_1} & {per_2} are floats between 0 & 1. They are used as % values + of the r, g, b values of the corresponding color. They are then added + together to make the new color. + + Parameters: ~ + + • {color_1} The first color to mix. Can be a number, + a string or a table. It will be converted to a + table containing r, g, b values. + • {color_2} The stop color of the gradient. Works like + {color_1}. + + • {per_1} The % of {color_1} to mix. + • {per_2} The % of {color_2} to mix. + + Result: ~ + + • {string} The hex color code of the resulting color. + + *markview.nvim-h-get_brightness* +colors.get_brightness({color}: color) -> number + + Gets the `luminosity` value of the color. Supports hexadecimal numbers, + color names, tables containing r, g, b values. + + Parameters: ~ + + • {color} The first color to mix. Can be a number, + a string or a table. It will be converted to a + table containing r, g, b values. + + Result: ~ + + • {number} Luminosity value between 0 & 1. + + *markview.nvim-h-brightest* +colors.brightest({list}: color[]) -> string + + Gets the brightest color from the provided list of colors. + + Parameters: ~ + • {list} A list of colors. Can contain hexadecimal numbers, numbers, + color names & tables with r, g, b values. + + Result: ~ + + • {string} The brightest color's hex color code. + + *markview.nvim-h-get* +colors.get({list}: any[]) -> any + + Gets the first `non-nil` value from a list(with empty holes) of values. -vim:ft=help:bt=help:textwidth=78:ts=4:nospell: +vim:ft=help:bt=help:textwidth=78:ts=4:spell: diff --git a/doc/tags b/doc/tags index 8446d14..039040e 100644 --- a/doc/tags +++ b/doc/tags @@ -1,9 +1,37 @@ markview.nvim markview.txt /*markview.nvim* +markview.nvim-c-block_quotes markview.txt /*markview.nvim-c-block_quotes* +markview.nvim-c-checkboxes markview.txt /*markview.nvim-c-checkboxes* +markview.nvim-c-code_blocks markview.txt /*markview.nvim-c-code_blocks* +markview.nvim-c-headings markview.txt /*markview.nvim-c-headings* +markview.nvim-c-hrs markview.txt /*markview.nvim-c-hrs* +markview.nvim-c-inline_codes markview.txt /*markview.nvim-c-inline_codes* +markview.nvim-c-links markview.txt /*markview.nvim-c-links* +markview.nvim-c-list_items markview.txt /*markview.nvim-c-list_items* +markview.nvim-c-tables markview.txt /*markview.nvim-c-tables* markview.nvim-commands markview.txt /*markview.nvim-commands* +markview.nvim-config markview.txt /*markview.nvim-config* markview.nvim-features markview.txt /*markview.nvim-features* +markview.nvim-h-brightest markview.txt /*markview.nvim-h-brightest* +markview.nvim-h-clamp markview.txt /*markview.nvim-h-clamp* +markview.nvim-h-create_gradient markview.txt /*markview.nvim-h-create_gradient* +markview.nvim-h-get markview.txt /*markview.nvim-h-get* +markview.nvim-h-get_brightness markview.txt /*markview.nvim-h-get_brightness* +markview.nvim-h-get_hl_value markview.txt /*markview.nvim-h-get_hl_value* +markview.nvim-h-hex_to_rgb markview.txt /*markview.nvim-h-hex_to_rgb* +markview.nvim-h-lerp markview.txt /*markview.nvim-h-lerp* +markview.nvim-h-mix markview.txt /*markview.nvim-h-mix* +markview.nvim-h-name_to_hex markview.txt /*markview.nvim-h-name_to_hex* +markview.nvim-h-name_to_rgb markview.txt /*markview.nvim-h-name_to_rgb* +markview.nvim-h-num_to_hex markview.txt /*markview.nvim-h-num_to_hex* +markview.nvim-h-num_to_rgb markview.txt /*markview.nvim-h-num_to_rgb* +markview.nvim-h-rgb_to_hex markview.txt /*markview.nvim-h-rgb_to_hex* +markview.nvim-helpers markview.txt /*markview.nvim-helpers* markview.nvim-hls markview.txt /*markview.nvim-hls* +markview.nvim-hr-repeating markview.txt /*markview.nvim-hr-repeating* +markview.nvim-hr-text markview.txt /*markview.nvim-hr-text* markview.nvim-i-lazy markview.txt /*markview.nvim-i-lazy* markview.nvim-i-minideps markview.txt /*markview.nvim-i-minideps* +markview.nvim-i-rocks markview.txt /*markview.nvim-i-rocks* markview.nvim-installation markview.txt /*markview.nvim-installation* markview.nvim-requirements markview.txt /*markview.nvim-requirements* -markview.nvim-rocks.nvim markview.txt /*markview.nvim-rocks.nvim* +markview.nvim-toc markview.txt /*markview.nvim-toc* From 3c8b0dc5a9b02264f94137b23279db7d3198ac7a Mon Sep 17 00:00:00 2001 From: Shawon Date: Thu, 1 Aug 2024 22:52:16 +0600 Subject: [PATCH 13/35] feat(renderer)!: Support for tables that don't start at the start of the line This however doesn't mean you can nest them inside lists as `block_continuation` nodes will break the flow of the table making it next to impossible to render. `inline_links` has been renamed to `hyperlinks` to match with the highlight group name. --- lua/definitions.lua | 2 +- lua/markview.lua | 2 +- lua/markview/parser.lua | 27 ++++++++- lua/markview/renderer.lua | 116 ++++++++++++++++++++++---------------- 4 files changed, 95 insertions(+), 52 deletions(-) diff --git a/lua/definitions.lua b/lua/definitions.lua index dca1a23..6a94091 100644 --- a/lua/definitions.lua +++ b/lua/definitions.lua @@ -319,7 +319,7 @@ --- Enable/Disable custom hyperlink ---@field enable boolean? --- ----@field inline_links markview.render_config.links.link +---@field hyperlinks markview.render_config.links.link --- ---@field images markview.render_config.links.link --- diff --git a/lua/markview.lua b/lua/markview.lua index a1831c2..41c848a 100644 --- a/lua/markview.lua +++ b/lua/markview.lua @@ -1168,7 +1168,7 @@ markview.configuration = { links = { enable = true, - inline_links = { + hyperlinks = { icon = "󰌷 ", hl = "MarkviewHyperlink", }, diff --git a/lua/markview/parser.lua b/lua/markview/parser.lua index 1f9f644..10757df 100644 --- a/lua/markview/parser.lua +++ b/lua/markview/parser.lua @@ -264,9 +264,23 @@ parser.md = function (buffer, TStree, from, to) local table_structure = {}; local alignments = {}; + local line_positions = {}; + for row in capture_node:iter_children() do local tmp = {}; + local row_text = vim.treesitter.get_node_text(row, buffer) + local r_row_start, r_col_start, r_row_end, r_col_end = row:range(); + + --- Separator gets counted from the start of the line + --- So, we will instead count the number of spaces at the start + table.insert(line_positions, { + row_start = r_row_start, + col_start = r_col_start == 0 and vim.fn.strchars(row_text:match("^(%s*)")) or r_col_start, + row_end = r_row_end, + col_end = r_col_end + }) + if row:type() == "pipe_table_header" then table.insert(table_structure, "header"); elseif row:type() == "pipe_table_delimiter_row" then @@ -289,7 +303,7 @@ parser.md = function (buffer, TStree, from, to) end end - table.insert(table_structure, "seperator"); + table.insert(table_structure, "separator"); elseif row:type() == "pipe_table_row" then table.insert(table_structure, "content"); else @@ -310,7 +324,15 @@ parser.md = function (buffer, TStree, from, to) local s_start, s_end; - -- This is a woraround to make both table renders to work + -- This is a workaround for hybrid-mode + -- + -- When ,`use_virt_lines` is true the table will take the + -- line above it and the line below it. + -- + -- So we must adjust the ranges to match the render. + -- + -- Don't worry, the renderer will use the __r ones in that + -- case if parser.cached_conf and parser.cached_conf.tables and parser.cached_conf.tables.use_virt_lines == false then s_start = row_start; s_end = row_end; @@ -327,6 +349,7 @@ parser.md = function (buffer, TStree, from, to) rows = rows, content_alignments = alignments, + content_positions = line_positions, __r_start = s_start, __r_end = s_end, diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 6174820..4b4f1bb 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -82,7 +82,7 @@ local display_width = function (text, config) end end - local lnk_conf = config.links ~= nil and config.links.inline_links or nil; + local lnk_conf = config.links ~= nil and config.links.hyperlinks or nil; local img_conf = config.links ~= nil and config.links.images or nil; for img_identifier, link, address in text:gmatch("(!?)%[([^%]]+)%]%(([^%)]+)%)") do @@ -149,52 +149,59 @@ end ---@param config_table markview.config local table_header = function (buffer, content, config_table) local tbl_conf = config_table.tables; + local row_start = content.__r_start or content.row_start; + local col_start = content.col_start; local curr_col = 0; local curr_tbl_col = 1; local virt_txt = {}; + if content.content_positions and content.content_positions[1] then + table.insert(virt_txt, { string.rep(" ", content.content_positions[1].col_start) }) + col_start = content.content_positions[1].col_start; + end + for index, col in ipairs(content.rows[1]) do if index == 1 then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } }, - end_col = content.col_start + 1, + end_col = col_start + 1, conceal = "" }); table.insert(virt_txt, { tbl_conf.text[1], set_hl(tbl_conf.hl[1]) }) curr_col = curr_col + 1 elseif index == #content.rows[1] then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } }, - end_col = content.col_start + curr_col + 1, + end_col = col_start + curr_col + 1, conceal = "" }); table.insert(virt_txt, { tbl_conf.text[3], set_hl(tbl_conf.hl[3]) }) if config_table.tables.use_virt_lines == true then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, 0, { virt_lines_above = true, virt_lines = { virt_txt } }); - elseif content.row_start > 0 then + elseif row_start > 0 then -- BUG: Nearby tables can cause text to overlap - vim.api.nvim_buf_clear_namespace(buffer, renderer.namespace, row_start - 1, content.row_start); + vim.api.nvim_buf_clear_namespace(buffer, renderer.namespace, row_start - 1, row_start); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start - 1, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start - 1, 0, { virt_text_pos = "inline", virt_text = virt_txt }); @@ -202,13 +209,13 @@ local table_header = function (buffer, content, config_table) curr_col = curr_col + 1 elseif col == "|" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } }, - end_col = content.col_start + curr_col + 1, + end_col = col_start + curr_col + 1, conceal = "" }); @@ -220,14 +227,14 @@ local table_header = function (buffer, content, config_table) if width < actual_width then if align == "left" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col + width + 1, { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } } }); elseif align == "right" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col + width + 1, { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } @@ -236,14 +243,14 @@ local table_header = function (buffer, content, config_table) else local before, after = math.floor((actual_width - width) / 2), math.ceil((actual_width - width) / 2); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col + width + 1, { virt_text_pos = "inline", virt_text = { { string.rep(" ", after) } } }); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { string.rep(" ", before) } @@ -259,51 +266,57 @@ local table_header = function (buffer, content, config_table) end end ---- Renderer for table seperator +--- Renderer for table separator ---@param buffer number ---@param content any ---@param user_config markview.config ---@param r_num number local table_seperator = function (buffer, content, user_config, r_num) local tbl_conf = user_config.tables; + local row_start = content.__r_start or content.row_start; + local col_start = content.col_start; local curr_col = 0; local curr_tbl_col = 1; + if content.content_positions and content.content_positions[r_num] then + col_start = content.content_positions[r_num].col_start; + end + for index, col in ipairs(content.rows[r_num]) do if index == 1 then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), col_start, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[5], set_hl(tbl_conf.hl[5]) } }, - end_col = content.col_start + 1, + end_col = col_start + 1, conceal = "" }); curr_col = curr_col + 1; elseif index == #content.rows[1] then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[7], set_hl(tbl_conf.hl[7]) } }, - end_col = content.col_start + curr_col + 1, + end_col = col_start + curr_col + 1, conceal = "" }); curr_col = curr_col + 1; elseif col == "|" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[8], set_hl(tbl_conf.hl[8]) } }, - end_col = content.col_start + curr_col + 1, + end_col = col_start + curr_col + 1, conceal = "" }); @@ -313,29 +326,29 @@ local table_seperator = function (buffer, content, user_config, r_num) if col:match(":") then if align == "left" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), col_start + curr_col, { 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]) } }, - end_col = content.col_start + curr_col + vim.fn.strchars(col) + 1, + end_col = col_start + curr_col + vim.fn.strchars(col) + 1, conceal = "" }); elseif align == "right" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start + curr_col, { + 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]) }, { tbl_conf.text[14], set_hl(tbl_conf.hl[14]) } }, - end_col = content.col_start + curr_col + vim.fn.strchars(col) + 1, + end_col = col_start + curr_col + vim.fn.strchars(col) + 1, conceal = "" }); elseif align == "center" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[15], set_hl(tbl_conf.hl[15]) }, @@ -343,18 +356,18 @@ local table_seperator = function (buffer, content, user_config, r_num) { tbl_conf.text[16], set_hl(tbl_conf.hl[16]) } }, - end_col = content.col_start + curr_col + vim.fn.strchars(col) + 1, + end_col = col_start + curr_col + vim.fn.strchars(col) + 1, conceal = "" }); end else - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start + (r_num - 1), content.col_start + curr_col, { + 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]) } }, - end_col = content.col_start + curr_col + vim.fn.strchars(col) + 1, + end_col = col_start + curr_col + vim.fn.strchars(col) + 1, conceal = "" }); end @@ -371,49 +384,56 @@ end ---@param config_table markview.config local table_footer = function (buffer, content, config_table) local tbl_conf = config_table.tables; + local row_end = content.__r_end or content.row_end; + local col_start = content.col_start; local curr_col = 0; local curr_tbl_col = 1; local virt_txt = {}; + if content.content_positions and content.content_positions[#content.content_positions] then + table.insert(virt_txt, { string.rep(" ", content.content_positions[#content.content_positions].col_start) }) + col_start = content.content_positions[#content.content_positions].col_start; + end + for index, col in ipairs(content.rows[#content.rows]) do if index == 1 then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } }, - end_col = content.col_start + 1, + end_col = col_start + 1, conceal = "" }); table.insert(virt_txt, { tbl_conf.text[9], set_hl(tbl_conf.hl[9]) }) curr_col = curr_col + 1 elseif index == #content.rows[1] then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } }, - end_col = content.col_start + curr_col + 1, + end_col = col_start + curr_col + 1, conceal = "" }); table.insert(virt_txt, { tbl_conf.text[11], set_hl(tbl_conf.hl[11]) }) if config_table.tables.use_virt_lines == true then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, 0, { virt_lines_above = false, virt_lines = { virt_txt } }); - elseif content.row_start > 0 then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end, content.col_start, { + elseif content.row_start < vim.api.nvim_buf_line_count(buffer) then + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end, 0, { virt_text_pos = "inline", virt_text = virt_txt }); @@ -421,13 +441,13 @@ local table_footer = function (buffer, content, config_table) curr_col = curr_col + 1 elseif col == "|" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } }, - end_col = content.col_start + curr_col + 1, + end_col = col_start + curr_col + 1, conceal = "" }); @@ -439,14 +459,14 @@ local table_footer = function (buffer, content, config_table) if width < actual_width then if align == "left" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start + curr_col + width + 1, { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } } }); elseif align == "right" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start, { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } @@ -455,14 +475,14 @@ local table_footer = function (buffer, content, config_table) else local before, after = math.floor((actual_width - width) / 2), math.ceil((actual_width - width) / 2); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start + curr_col + width + 1, { virt_text_pos = "inline", virt_text = { { string.rep(" ", after) } } }); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { string.rep(" ", before) } @@ -617,7 +637,7 @@ renderer.render_headings = function (buffer, content, config) { conf.corner_left or "", set_hl(conf.corner_left_hl) or set_hl(conf.hl) }, { conf.padding_left or "", set_hl(conf.padding_left_hl) or set_hl(conf.hl) }, { conf.icon or "", set_hl(conf.icon_hl) or set_hl(conf.hl) }, - { conf.text or content.title or "", set_hl(conf.text_hl) or set_hl(conf.hl) }, + { content.title or "", set_hl(conf.text_hl) or set_hl(conf.hl) }, { conf.padding_right or "", set_hl(conf.padding_right_hl) or set_hl(conf.hl) }, { conf.corner_right or "", set_hl(conf.corner_right_hl) or set_hl(conf.hl) }, }, @@ -649,7 +669,7 @@ renderer.render_headings = function (buffer, content, config) { string.rep(conf.shift_char or " ", shift * (content.level - 1)), set_hl(conf.shift_hl) }, { conf.icon or "", set_hl(conf.icon_hl) or set_hl(conf.hl) }, - { conf.text or content.title or "", set_hl(conf.text_hl) or set_hl(conf.hl) }, + { content.title or "", set_hl(conf.text_hl) or set_hl(conf.hl) }, }, hl_mode = "combine", @@ -1050,7 +1070,7 @@ renderer.render_links = function (buffer, content, config_table) end if content.link_type == "inline_link" then - lnk_conf = config_table.inline_links; + lnk_conf = config_table.hyperlinks; elseif content.link_type == "image" then lnk_conf = config_table.images; elseif content.link_type == "email_autolink" then @@ -1235,7 +1255,7 @@ renderer.render_tables = function (buffer, content, user_config) for row_number, _ in ipairs(content.rows) do if content.row_type[row_number] == "header" then table_header(buffer, content, user_config); - elseif content.row_type[row_number] == "seperator" then + elseif content.row_type[row_number] == "separator" then table_seperator(buffer, content, user_config, row_number) elseif content.row_type[row_number] == "content" and row_number == #content.rows then table_footer(buffer, content, user_config) @@ -1331,7 +1351,7 @@ renderer.render = function (buffer, parsed_content, config_table, conceal_start, elseif type == "checkbox" then pcall(renderer.render_checkboxes, buffer, content, config_table.checkboxes) elseif type == "table" then - pcall(renderer.render_tables, buffer, content, config_table) + pcall(renderer.render_tables, buffer, content, config_table); end ::extmark_skipped:: From 94ce522302f78167e278d3c7d82ff0206c74b4e3 Mon Sep 17 00:00:00 2001 From: Shawon Date: Fri, 2 Aug 2024 21:08:16 +0600 Subject: [PATCH 14/35] feat(renderer)!: Added support for simple html elements NOTE: You will now need the `html` parser for the plugin to work. Tags like , will now be concealed and an appropriate highlight group will be used instead. Added html elements & email support to tables. WARNING: Due to limitations of lua only single tags work as intended inside tables. --- ftplugin/markdown.lua | 12 +-- lua/markview.lua | 11 +++ lua/markview/parser.lua | 50 +++++++++++ lua/markview/renderer.lua | 169 ++++++++++++++++++++++++++++++++------ showcases/html.md | 38 +++++++++ 5 files changed, 252 insertions(+), 28 deletions(-) create mode 100644 showcases/html.md diff --git a/ftplugin/markdown.lua b/ftplugin/markdown.lua index a264478..bfbd829 100644 --- a/ftplugin/markdown.lua +++ b/ftplugin/markdown.lua @@ -3,19 +3,21 @@ local utils = require("markview.utils"); local ts_available, treesitter_parsers = pcall(require, "nvim-treesitter.parsers"); local function parser_installed(parser) - return (ts_available and treesitter_parsers.has_parser(parser)) or - (vim.treesitter.query.get(parser, "highlights")) + return (ts_available and treesitter_parsers.has_parser(parser)) or pcall(vim.treesitter.query.get, parser, "highlights") end -- Check for requirements if vim.fn.has("nvim-0.10") == 0 then - warn("[ markview.nvim ] : Thie plugin is only available on version 0.10.0 and higher!"); + vim.notify("[ markview.nvim ] : Thie plugin is only available on version 0.10.0 and higher!", vim.log.levels.WARN); return; elseif not parser_installed("markdown") then - warn("[ markview.nvim ] : Treesitter parser for 'markdown' wasn't found!"); + vim.notify("[ markview.nvim ] : Treesitter parser for 'markdown' wasn't found!", vim.log.levels.WARN); return; elseif not parser_installed("markdown_inline") then - warn("[ markview.nvim ] : Treesitter parser for 'markdown_inline' wasn't found!"); + vim.notify("[ markview.nvim ] : Treesitter parser for 'markdown_inline' wasn't found!", vim.log.levels.WARN); + return; +elseif not parser_installed("html") then + vim.notify("[ markview.nvim ] : Treesitter parser for 'html' wasn't found! It is required for basic html tag support.", vim.log.levels.WARN); return; end diff --git a/lua/markview.lua b/lua/markview.lua index 41c848a..5942ab2 100644 --- a/lua/markview.lua +++ b/lua/markview.lua @@ -1164,6 +1164,17 @@ markview.configuration = { } } }, + html = { + default = { + conceal = false + }, + + types = { + p = { conceal = true, hl = "Title" }, + u = { conceal = true, hl = "Underlined" }, + i = { conceal = true, hl = "Italic" } + } + }, links = { enable = true, diff --git a/lua/markview/parser.lua b/lua/markview/parser.lua index 10757df..4af70a2 100644 --- a/lua/markview/parser.lua +++ b/lua/markview/parser.lua @@ -518,6 +518,52 @@ parser.md_inline = function (buffer, TStree, from, to) end end +parser.html = function (buffer, TStree, from, to) + local scanned_queies = vim.treesitter.query.parse("html", [[ + ((element) @elem) + + ;((entity_reference) @entity) + ]]); + + for capture_id, capture_node, _, _ in scanned_queies:iter_captures(TStree:root(), buffer, from, to) do + local capture_name = scanned_queies.captures[capture_id]; + local capture_text = vim.treesitter.get_node_text(capture_node, buffer); + local row_start, col_start, row_end, col_end = capture_node:range(); + + if capture_name == "elem" then + local node_childs = capture_node:named_child_count(); + + local start_tag = capture_node:named_child(0); + local end_tag = capture_node:named_child(node_childs - 1); + + if start_tag:type() == "start_tag" and end_tag:type() == "end_tag" and row_start == row_end then + local _, ts_col_start, _, ts_col_end = start_tag:range(); + local _, te_col_start, _, te_col_end = end_tag:range(); + + table.insert(parser.parsed_content, { + node = capture_node, + type = "html_inline", + + tag = vim.treesitter.get_node_text(start_tag, buffer):gsub("[]", ""):match("%a+"), + text = capture_text, + + start_tag_col_start = ts_col_start, + start_tag_col_end = ts_col_end, + + end_tag_col_start = te_col_start, + end_tag_col_end = te_col_end, + + row_start = row_start, + row_end = row_end, + + col_start = col_start, + col_end = col_end + }) + end + end + end +end + --- Initializes the parsers on the specified buffer --- Parsed data is stored as a "view" in renderer.lua --- @@ -541,6 +587,8 @@ parser.init = function (buffer, config_table) parser.md(buffer, TStree) elseif tree_language == "markdown_inline" then parser.md_inline(buffer, TStree); + elseif tree_language == "html" then + parser.html(buffer, TStree); end end) @@ -566,6 +614,8 @@ parser.parse_range = function (buffer, config_table, from, to) parser.md(buffer, TStree, from, to) elseif tree_language == "markdown_inline" then parser.md_inline(buffer, TStree, from, to); + elseif tree_language == "html" then + parser.html(buffer, TStree, from, to); end end) diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 4b4f1bb..462868b 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -66,7 +66,9 @@ local display_width = function (text, config) local d_width = vim.fn.strchars(text); local inl_conf = config.inline_codes; - for inline_code in text:gmatch("`([^`]+)`") do + local final_string = text; + + for inline_code in final_string:gmatch("`([^`]+)`") do d_width = d_width - (vim.fn.strchars("`" .. inline_code .. "`")); if inl_conf ~= nil and inl_conf.enable ~= false then @@ -79,13 +81,26 @@ local display_width = function (text, config) inl_conf.padding_right or "", inl_conf.corner_right or "" })); + + final_string = final_string:gsub("`" .. inline_code .. "`", table.concat({ + inl_conf.corner_left or "", + inl_conf.padding_left or "", + + inline_code or "", + + inl_conf.padding_right or "", + inl_conf.corner_right or "" + })); end end local lnk_conf = config.links ~= nil and config.links.hyperlinks or nil; local img_conf = config.links ~= nil and config.links.images or nil; + local email_conf = config.links ~= nil and config.links.emails or nil; - for img_identifier, link, address in text:gmatch("(!?)%[([^%]]+)%]%(([^%)]+)%)") do + local html_conf = config.html; + + for img_identifier, link, address in final_string:gmatch("(!?)%[([^%]]+)%]%(([^%)]+)%)") do if img_identifier ~= "" then d_width = d_width - vim.fn.strchars("![" .. "](" .. address .. ")"); @@ -97,6 +112,15 @@ local display_width = function (text, config) img_conf.padding_right or "", img_conf.corner_right or "" })); + + final_string = final_string:gsub("!%[" .. link .. "%]%(" .. address .. "%)", table.concat({ + img_conf.corner_left or "", + img_conf.padding_left or "", + img_conf.icon or "", + link, + img_conf.padding_right or "", + img_conf.corner_right or "" + })); end else d_width = d_width - vim.fn.strchars("[" .. "](" .. address .. ")"); @@ -109,16 +133,25 @@ local display_width = function (text, config) lnk_conf.padding_right or "", lnk_conf.corner_right or "" })); + + final_string = final_string:gsub("%[" .. link .. "%]%(" .. address .. "%)", table.concat({ + lnk_conf.corner_left or "", + lnk_conf.padding_left or "", + lnk_conf.icon or "", + link, + lnk_conf.padding_right or "", + lnk_conf.corner_right or "" + })); end end end - for str_a, str_b in text:gmatch("([*]+)[^*]+([*]+)") do + for str_a, internal, str_b in final_string:gmatch("([*]+)([^*]+)([*]+)") do local min_signs = vim.fn.strchars(str_a) > vim.fn.strchars(str_b) and vim.fn.strchars(str_a) or vim.fn.strchars(str_b); - local start_pos, _ = text:find("([*]+)[^*]+([*]+)"); + local start_pos, _ = final_string:find("([*]+)[^*]+([*]+)"); - local c_before = text:sub(start_pos - 1, start_pos - 1); + local c_before = final_string:sub(start_pos - 1, start_pos - 1); -- local c_after = text:sub(end_pos + 1, end_pos + 1); -- Needs more flexibility @@ -132,14 +165,67 @@ local display_width = function (text, config) if a == b then d_width = d_width - 2; + + final_string = final_string:gsub(a .. internal .. b, internal); end end ::invalid:: end + for start_tag, tag_txt, end_tag in final_string:gmatch("<(.*)>([^<]-)") do + local start = start_tag:match("^(%a*)"); + + if not html_conf or html_conf.enable == false then + goto invalid; + end + + local ele_conf = html_conf.default or {}; - return d_width, vim.fn.strchars(text); + if html_conf.types and html_conf.types[start] then + ele_conf = html_conf.types[start]; + end + + if start ~= end_tag then + goto invalid; + end + + if ele_conf.conceal ~= false then + d_width = d_width - vim.fn.strchars("<" .. start_tag .. ">"); + d_width = d_width - vim.fn.strchars(""); + end + + final_string = final_string:gsub("<" .. start_tag .. ">" .. tag_txt .. "", tag_txt); + + ::invalid:: + end + + for username, domain, tdl in final_string:gmatch("<([%w._%+-]+)@([%w.-]+)%.([%w.-]+)>") do + d_width = d_width - vim.fn.strchars("<" .. ">"); + + if email_conf ~= nil and email_conf.enable ~= false then + d_width = d_width + vim.fn.strchars(table.concat({ + email_conf.corner_left or "", + email_conf.padding_left or "", + email_conf.icon or "", + email_conf.padding_right or "", + email_conf.corner_right or "" + })); + + final_string = final_string:gsub("<" .. username .. "@" .. domain .. "." .. tdl .. ">", table.concat({ + email_conf.corner_left or "", + email_conf.padding_left or "", + email_conf.icon or "", + + username, "@", domain, ".", tdl, + + email_conf.padding_right or "", + email_conf.corner_right or "" + })); + end + end + + return d_width, vim.fn.strchars(text), final_string; end @@ -227,14 +313,14 @@ local table_header = function (buffer, content, config_table) if width < actual_width then if align == "left" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col + vim.fn.strchars(col), { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } } }); elseif align == "right" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } @@ -243,7 +329,7 @@ local table_header = function (buffer, content, config_table) else local before, after = math.floor((actual_width - width) / 2), math.ceil((actual_width - width) / 2); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_start, col_start + curr_col + vim.fn.strchars(col), { virt_text_pos = "inline", virt_text = { { string.rep(" ", after) } @@ -459,14 +545,14 @@ local table_footer = function (buffer, content, config_table) if width < actual_width then if align == "left" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start + curr_col + vim.fn.strchars(col), { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } } }); elseif align == "right" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } @@ -475,7 +561,7 @@ local table_footer = function (buffer, content, config_table) else local before, after = math.floor((actual_width - width) / 2), math.ceil((actual_width - width) / 2); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start + curr_col + vim.fn.strchars(col), { virt_text_pos = "inline", virt_text = { { string.rep(" ", after) } @@ -506,42 +592,48 @@ end local table_content = function (buffer, content, config_table, r_num) local tbl_conf = config_table.tables; + local col_start = content.col_start; + local curr_col = 0; local curr_tbl_col = 1; + if content.content_positions and content.content_positions[r_num] then + col_start = content.content_positions[r_num].col_start; + end + for index, col in ipairs(content.rows[r_num]) do if index == 1 then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, col_start, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } }, - end_col = content.col_start + 1, + end_col = col_start + 1, conceal = "" }); curr_col = curr_col + 1 elseif index == #content.rows[1] then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } }, - end_col = content.col_start + curr_col + 1, + end_col = col_start + curr_col + 1, conceal = "" }); curr_col = curr_col + 1 elseif col == "|" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { tbl_conf.text[6], set_hl(tbl_conf.hl[6]) } }, - end_col = content.col_start + curr_col + 1, + end_col = col_start + curr_col + 1, conceal = "" }); @@ -552,14 +644,14 @@ local table_content = function (buffer, content, config_table, r_num) if width < actual_width then if align == "left" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, content.col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, col_start + curr_col + vim.fn.strchars(col), { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } } }); elseif align == "right" then - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, content.col_start, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { string.rep(" ", (actual_width - width)) } @@ -568,14 +660,14 @@ local table_content = function (buffer, content, config_table, r_num) else local before, after = math.floor((actual_width - width) / 2), math.ceil((actual_width - width) / 2); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, content.col_start + curr_col + width + 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, col_start + curr_col + vim.fn.strchars(col), { virt_text_pos = "inline", virt_text = { { string.rep(" ", after) } } }); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, content.col_start + curr_col, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + r_num - 1, col_start + curr_col, { virt_text_pos = "inline", virt_text = { { string.rep(" ", before) } @@ -628,7 +720,7 @@ renderer.render_headings = function (buffer, content, config) conf.icon or "", })); - -- Adds icons, seperators, paddings etc + -- Adds icons, separators, paddings etc vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, 0, { virt_text_pos = "overlay", virt_text = { @@ -1265,6 +1357,33 @@ renderer.render_tables = function (buffer, content, user_config) end end +renderer.render_html_inline = function (buffer, content, user_config) + if not user_config or user_config.enable == false then + return; + end + + local html_conf = user_config.default or {}; + + if user_config.types[content.tag] then + html_conf = user_config.types[content.tag]; + end + + if html_conf.conceal ~= false then + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.start_tag_col_start, { + end_col = content.start_tag_col_end, + conceal = "" + }); + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.end_tag_col_start, { + end_col = content.end_tag_col_end, + conceal = "" + }); + end + + if html_conf.hl then + vim.api.nvim_buf_add_highlight(buffer, renderer.namespace, html_conf.hl, content.row_start, content.col_start, content.col_end); + end +end + renderer.render_in_range = function (buffer, partial_contents, config_table) for _, content in ipairs(partial_contents) do local type = content.type; @@ -1296,6 +1415,8 @@ renderer.render_in_range = function (buffer, partial_contents, config_table) pcall(renderer.render_checkboxes, buffer, content, config_table.checkboxes) elseif type == "table" then pcall(renderer.render_tables, buffer, content, config_table) + elseif type == "html_inline" then + pcall(renderer.render_html_inline, buffer, content, config_table.html); end ::extmark_skipped:: @@ -1350,6 +1471,8 @@ renderer.render = function (buffer, parsed_content, config_table, conceal_start, pcall(renderer.render_lists, buffer, content, config_table.list_items) elseif type == "checkbox" then pcall(renderer.render_checkboxes, buffer, content, config_table.checkboxes) + elseif type == "html_inline" then + pcall(renderer.render_html_inline, buffer, content, config_table.html); elseif type == "table" then pcall(renderer.render_tables, buffer, content, config_table); end diff --git a/showcases/html.md b/showcases/html.md new file mode 100644 index 0000000..a3f2199 --- /dev/null +++ b/showcases/html.md @@ -0,0 +1,38 @@ +Hi

Hello

+ +

+ Hejejd +

+ +Underlined +Italic + +

Hello

+ +Hello + +| h | djjdjd | +|--------------------:|--------| +| 1 | 2 | +| [Li](https://h.com) | 2 | +| ![img5](euehehhehe) | 3 | +| h | 3 | + + +| test | +|---------:| +| `twtz`| + + +| Some text with html elements | +|:--------------------------------------------------------:| +| ~ ~ | +| A line with a [link](./html.md) and an ![img](./html.md) | +| Mail to | +| ~ ~ | + + + + + + From ab0e54e2992b3806fe2b3a68a49d050f1118159e Mon Sep 17 00:00:00 2001 From: Shawon Date: Sat, 3 Aug 2024 15:17:09 +0600 Subject: [PATCH 15/35] feat(renderer): Added better validation for html tags in table cells This is in NO way perfect and only covers the simplest of cases. --- lua/markview/renderer.lua | 81 ++++++++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 30 deletions(-) diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 462868b..0370235 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -98,8 +98,6 @@ local display_width = function (text, config) local img_conf = config.links ~= nil and config.links.images or nil; local email_conf = config.links ~= nil and config.links.emails or nil; - local html_conf = config.html; - for img_identifier, link, address in final_string:gmatch("(!?)%[([^%]]+)%]%(([^%)]+)%)") do if img_identifier ~= "" then d_width = d_width - vim.fn.strchars("![" .. "](" .. address .. ")"); @@ -173,33 +171,6 @@ local display_width = function (text, config) ::invalid:: end - for start_tag, tag_txt, end_tag in final_string:gmatch("<(.*)>([^<]-)") do - local start = start_tag:match("^(%a*)"); - - if not html_conf or html_conf.enable == false then - goto invalid; - end - - local ele_conf = html_conf.default or {}; - - if html_conf.types and html_conf.types[start] then - ele_conf = html_conf.types[start]; - end - - if start ~= end_tag then - goto invalid; - end - - if ele_conf.conceal ~= false then - d_width = d_width - vim.fn.strchars("<" .. start_tag .. ">"); - d_width = d_width - vim.fn.strchars(""); - end - - final_string = final_string:gsub("<" .. start_tag .. ">" .. tag_txt .. "", tag_txt); - - ::invalid:: - end - for username, domain, tdl in final_string:gmatch("<([%w._%+-]+)@([%w.-]+)%.([%w.-]+)>") do d_width = d_width - vim.fn.strchars("<" .. ">"); @@ -225,6 +196,56 @@ local display_width = function (text, config) end end + local tmp_string = final_string; + local iterations = 1; + + local html_conf = config.html; + + while tmp_string:match("<([^>]+)>") do + -- This shouldn't run so many times + if iterations > 10 then + break; + else + iterations = iterations + 1; + end + + local start_tag = tmp_string:match("<([^>]+)>"); + local s_tag_start, _ = tmp_string:find("<([^>]+)>"); + + local filtered_tag = start_tag:match("%a+"); + + -- No close tag + if not tmp_string:match("") then + goto invalid; + end + + local end_tag = tmp_string:match(""); + local e_tag_start, _ = tmp_string:find(""); + + -- Close tag before opening tag + if e_tag_start < s_tag_start then + goto invalid; + end + + local conf = html_conf.default or {}; + + if html_conf.types and html_conf.types[filtered_tag] then + conf = html_conf.types[filtered_tag] + end + + local internal_text = tmp_string:match("<" .. start_tag .. ">(.-)") or ""; + + -- Tag isn't concealed + if conf.conceal ~= false then + final_string = final_string:gsub("<" .. start_tag .. ">" .. internal_text .. "", internal_text) + d_width = d_width - vim.fn.strchars("<" .. start_tag .. ">" .. "", internal_text); + end + + tmp_string = tmp_string:gsub("<" .. start_tag .. ">" .. internal_text .. "", internal_text) + + ::invalid:: + end + return d_width, vim.fn.strchars(text), final_string; end @@ -1380,7 +1401,7 @@ renderer.render_html_inline = function (buffer, content, user_config) end if html_conf.hl then - vim.api.nvim_buf_add_highlight(buffer, renderer.namespace, html_conf.hl, content.row_start, content.col_start, content.col_end); + vim.api.nvim_buf_add_highlight(buffer, renderer.namespace, html_conf.hl, content.row_start, content.start_tag_col_end, content.end_tag_col_start); end end From 3b270c1dedbf02b4849341ff9e490a001041e248 Mon Sep 17 00:00:00 2001 From: Shawon Date: Sat, 3 Aug 2024 17:21:10 +0600 Subject: [PATCH 16/35] feat: Added support for HTML entites Both &; and & are supported --- lua/markview.lua | 20 ++- lua/markview/entites.lua | 256 ++++++++++++++++++++++++++++++++++++++ lua/markview/parser.lua | 17 ++- lua/markview/renderer.lua | 87 +++++++++++-- 4 files changed, 363 insertions(+), 17 deletions(-) create mode 100644 lua/markview/entites.lua diff --git a/lua/markview.lua b/lua/markview.lua index 5942ab2..d236668 100644 --- a/lua/markview.lua +++ b/lua/markview.lua @@ -1165,14 +1165,22 @@ markview.configuration = { } }, html = { - default = { - conceal = false + tags = { + enable = true, + + default = { + conceal = false + }, + + config = { + p = { conceal = true, hl = "Title" }, + u = { conceal = true, hl = "Underlined" }, + i = { conceal = true, hl = "Italic" } + } }, - types = { - p = { conceal = true, hl = "Title" }, - u = { conceal = true, hl = "Underlined" }, - i = { conceal = true, hl = "Italic" } + entites = { + enable = true } }, diff --git a/lua/markview/entites.lua b/lua/markview/entites.lua new file mode 100644 index 0000000..c0beec5 --- /dev/null +++ b/lua/markview/entites.lua @@ -0,0 +1,256 @@ +local entites = {}; + +entites.lookup = { + Aacute = "Á", + aacute = "á", + Acirc = "Â", + acirc = "â", + acute = "´", + AElig = "Æ", + aelig = "æ", + Agrave = "À", + agrave = "à", + alefsym = "ℵ", + Alpha = "Α", + alpha = "α", + amp = "&", + ["and"] = "∧", + ang = "∠", + Aring = "Å", + aring = "å", + asymp = "≈", + Atilde = "Ã", + atilde = "ã", + Auml = "Ä", + auml = "ä", + bdquo = "„", + Beta = "Β", + beta = "β", + brvbar = "¦", + bull = "•", + cap = "∩", + Ccedil = "Ç", + ccedil = "ç", + cedil = "¸", + cent = "¢", + Chi = "Χ", + chi = "χ", + circ = "ˆ", + clubs = "♣", + congc = "≅", + copy = "©", + crarr = "↵", + cup = "∪", + curren = "¤", + Dagger = "‡", + dagger = "†", + dArr = "⇓", + darr = "↓", + deg = "°", + Delta = "Δ", + delta = "δ", + diams = "♦", + divide = "÷", + Eacute = "É", + eacute = "é", + Ecirc = "Ê", + ecirc = "ê", + Egrave = "È", + egrave = "è", + empty = "∅", + Epsilon = "Ε", + epsilon = "ε", + equiv = "≡", + Eta = "Η", + eta = "η", + ETH = "Ð", + eth = "ð", + Euml = "Ë", + euml = "ë", + euro = "€", + exists = "∃", + fnof = "ƒ", + forall = "∀", + frac12 = "½", + frac14 = "¼", + frac34 = "¾", + frasl = "⁄", + Gamma = "Γ", + gamma = "γ", + ge = "≥", + gt = ">", + harr = "↔", + hArr = "⇔", + hearts = "♥", + hellip = "…", + Iacute = "Í", + iacute = "í", + Icirc = "Î", + icirc = "î", + iexcl = "¡", + Igrave = "Ì", + igrave = "ì", + image = "ℑ", + infin = "∞", + int = "∫", + Iota = "Ι", + iota = "ι", + iquest = "¿", + isin = "∈", + Iuml = "Ï", + iuml = "ï", + Kappa = "Κ", + kappa = "κ", + Lambda = "Λ", + lambda = "λ", + lang = "⟨", + laquo = "«", + lArr = "⇐", + larr = "←", + lceil = "⌈", + ldquo = "“", + le = "≤", + lfloor = "⌊", + lowast = "∗", + loz = "◊", + -- lrm = "‎", + lsaquo = "‹", + lsquo = "‘", + lt = "<", + macr = "¯", + mdash = "—", + micro = "µ", + middot = "·", + minus = "−", + Mu = "Μ", + mu = "μ", + nabla = "∇", + nbsp = " ", + ndash = "–", + ne = "≠", + ni = "∋", + ["not"] = "¬", + notin = "∉", + nsub = "⊄", + Ntilde = "Ñ", + ntilde = "ñ", + Nu = "Ν", + nu = "ν", + Oacute = "Ó", + oacute = "ó", + Ocirc = "Ô", + ocirc = "ô", + OElig = "Œ", + oelig = "œ", + Ograve = "Ò", + ograve = "ò", + Omeg = "Ω", + omega = "ω", + Omicron = "Ο", + omicron = "ο", + oline = "‾", + ["or"] = "∨", + Oslash = "Ø", + oslash = "ø", + Otilde = "Õ", + otilde = "õ", + Ouml = "Ö", + ouml = "ö", + para = "¶", + part = "∂", + permil = "‰", + perp = "⊥", + Phi = "Φ", + phi = "φ", + Pi = "Π", + pi = "π", + piv = "ϖ", + plusmn = "±", + pound = "£", + Prime = "″", + prime = "′", + prod = "∏", + prop = "∝", + Psi = "Ψ", + psi = "ψ", + quot = "\"", + radic = "√", + rang = "⟩", + raquo = "»", + rArr = "⇒", + rarr = "→", + rceil = "⌉", + rdquo = "”", + real = "ℜ", + reg = "®", + rflo = "⌋", + Rho = "Ρ", + rho = "ρ", + -- rlm = "‏", + rsaquo = "›", + rsquo = "’", + sbquo = "‚", + Scaron = "Š", + scaron = "š", + sdot = "⋅", + sect = "§", + shy = "­", + Sigma = "Σ", + sigma = "σ", + sigmaf = "ς", + sim = "∼", + spades = "♠", + sub = "⊂", + sube = "⊆", + sum = "∑", + sup = "⊃", + sup1 = "¹", + sup2 = "²", + sup3 = "³", + supe = "⊇", + szlig = "ß", + Tau = "Τ", + tau = "τ", + there4 = "∴", + Theta = "Θ", + theta = "θ", + thetasym = "ϑ", + thinsp = " ", + THORN = "Þ", + thorn = "þ", + tilde = "˜", + times = "×", + trade = "™", + Uacute = "Ú", + uacute = "ú", + uArr = "⇑", + uarr = "↑", + Ucirc = "Û", + ucirc = "û", + Ugrave = "Ù", + ugrave = "ù", + uml = "¨", + upsih = "ϒ", + Upsilon = "Υ", + upsilon = "υ", + Uuml = "Ü", + uuml = "ü", + weierp = "℘", + Xi = "Ξ", + xi = "ξ", + Yacute = "Ý", + yacute = "ý", + yen = "¥", + yuml = "ÿ", + Yuml = "Ÿ", + Zeta = "Ζ", + zeta = "ζ", + -- zwj = "‍", + -- zwnj = "‌" +} + +entites.get = function (string) + return entites.lookup[string], vim.fn.strdisplaywidth(entites.lookup[string]); +end + +return entites; diff --git a/lua/markview/parser.lua b/lua/markview/parser.lua index 4af70a2..5fc0269 100644 --- a/lua/markview/parser.lua +++ b/lua/markview/parser.lua @@ -430,6 +430,8 @@ parser.md_inline = function (buffer, TStree, from, to) ] @link) ((code_span) @code) + + ((entity_reference) @entity) ]]); -- The last 2 _ represent the metadata & query @@ -511,6 +513,19 @@ parser.md_inline = function (buffer, TStree, from, to) row_start = row_start, row_end = row_end, + col_start = col_start, + col_end = col_end + }) + elseif capture_name == "entity" then + table.insert(parser.parsed_content, { + node = capture_node, + type = "html_entity", + + text = capture_text, + + row_start = row_start, + row_end = row_end, + col_start = col_start, col_end = col_end }) @@ -521,8 +536,6 @@ end parser.html = function (buffer, TStree, from, to) local scanned_queies = vim.treesitter.query.parse("html", [[ ((element) @elem) - - ;((entity_reference) @entity) ]]); for capture_id, capture_node, _, _ in scanned_queies:iter_captures(TStree:root(), buffer, from, to) do diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 0370235..9ca7461 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -1,6 +1,7 @@ local renderer = {}; local devicons = require("nvim-web-devicons"); +local entites = require("markview.entites"); local utils = require("markview.utils"); @@ -203,7 +204,11 @@ local display_width = function (text, config) while tmp_string:match("<([^>]+)>") do -- This shouldn't run so many times - if iterations > 10 then + if not html_conf or html_conf.enable == false then + break; + elseif not html_conf.tags or html_conf.tags.enable == false then + break; + elseif iterations > 10 then break; else iterations = iterations + 1; @@ -227,10 +232,11 @@ local display_width = function (text, config) goto invalid; end - local conf = html_conf.default or {}; + local tag_conf = html_conf.tags; + local conf = tag_conf.default or {}; - if html_conf.types and html_conf.types[filtered_tag] then - conf = html_conf.types[filtered_tag] + if tag_conf.config and tag_conf.config[filtered_tag] then + conf = tag_conf.config[filtered_tag] end local internal_text = tmp_string:match("<" .. start_tag .. ">(.-)") or ""; @@ -246,6 +252,34 @@ local display_width = function (text, config) ::invalid:: end + for entity_name, semicolon in final_string:gmatch("&(%a+)(;?)") do + if not html_conf or html_conf.enable == false then + break; + elseif not html_conf.entites or html_conf.entites.enable == false then + break; + end + + local entity = entites.get(entity_name); + + if not entity then + goto invalid; + end + + if semicolon then + final_string = final_string:gsub("&" .. entity_name .. ";", entity); + + d_width = d_width - vim.fn.strchars("&" .. entity_name .. ";"); + d_width = d_width + vim.fn.strdisplaywidth(entity); + else + final_string = final_string:gsub("&" .. entity_name, entity); + + d_width = d_width - vim.fn.strchars("&" .. entity_name); + d_width = d_width + vim.fn.strdisplaywidth(entity); + end + + ::invalid:: + end + return d_width, vim.fn.strchars(text), final_string; end @@ -1383,10 +1417,14 @@ renderer.render_html_inline = function (buffer, content, user_config) return; end - local html_conf = user_config.default or {}; + if not user_config.tags or user_config.tags.enable == false then + return; + end + + local html_conf = user_config.tags.default or {}; - if user_config.types[content.tag] then - html_conf = user_config.types[content.tag]; + if user_config.tags.config[content.tag] then + html_conf = user_config.tags.config[content.tag]; end if html_conf.conceal ~= false then @@ -1405,6 +1443,33 @@ renderer.render_html_inline = function (buffer, content, user_config) end end +renderer.render_html_entities = function (buffer, content, user_config) + if not user_config or user_config.enable == false then + return; + end + + if not user_config.entites or user_config.entites.enable == false then + return; + end + + local filtered_entity = content.text:gsub("[&;]", ""); + local entity = entites.get(filtered_entity); + + if not entity then + return; + end + + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start, { + virt_text_pos = "inline", + virt_text = { + { entity, set_hl(user_config.entites.hl) } + }, + + end_col = content.col_end, + conceal = "" + }); +end + renderer.render_in_range = function (buffer, partial_contents, config_table) for _, content in ipairs(partial_contents) do local type = content.type; @@ -1434,10 +1499,12 @@ renderer.render_in_range = function (buffer, partial_contents, config_table) pcall(renderer.render_lists, buffer, content, config_table.list_items) elseif type == "checkbox" then pcall(renderer.render_checkboxes, buffer, content, config_table.checkboxes) - elseif type == "table" then - pcall(renderer.render_tables, buffer, content, config_table) elseif type == "html_inline" then pcall(renderer.render_html_inline, buffer, content, config_table.html); + elseif type == "html_entity" then + pcall(renderer.render_html_entities, buffer, content, config_table.html); + elseif type == "table" then + pcall(renderer.render_tables, buffer, content, config_table) end ::extmark_skipped:: @@ -1494,6 +1561,8 @@ renderer.render = function (buffer, parsed_content, config_table, conceal_start, pcall(renderer.render_checkboxes, buffer, content, config_table.checkboxes) elseif type == "html_inline" then pcall(renderer.render_html_inline, buffer, content, config_table.html); + elseif type == "html_entity" then + pcall(renderer.render_html_entities, buffer, content, config_table.html); elseif type == "table" then pcall(renderer.render_tables, buffer, content, config_table); end From c9b4f77e880eb0ab9afd370ad82e3758513a4a3a Mon Sep 17 00:00:00 2001 From: Shawon Date: Sat, 3 Aug 2024 21:08:08 +0600 Subject: [PATCH 17/35] feat(renderer): Added basic language names to code blocks Taken from Github syntax support page. A lot of them may be useless. Ref: #72 --- lua/markview/languages.lua | 221 +++++++++++++++++++++++++++++++++++++ lua/markview/renderer.lua | 17 ++- 2 files changed, 232 insertions(+), 6 deletions(-) create mode 100644 lua/markview/languages.lua diff --git a/lua/markview/languages.lua b/lua/markview/languages.lua new file mode 100644 index 0000000..64607ca --- /dev/null +++ b/lua/markview/languages.lua @@ -0,0 +1,221 @@ +local languages = {}; + +languages.patterns = { + { ".*%.feature", "Cucumber" }, + + { ".*%.abap", "Abap" }, + + { ".*%.ada", "Ada" }, + { "adb", "Ada" }, + { "ads$", "Ada" }, + + { "htaccess", "Apacheconf" }, + { "apache.conf", "Apacheconf" }, + { "apache2.conf", "Apacheconf" }, + + { ".*%.as", "As" }, + { ".%*%.asy", "Asy" }, + + { "ahkl", "Ahk" }, + + { "sh", "Bash" }, + { "ksh", "Bash" }, + { "ksh", "Bash" }, + { ".*%.ebuild", "Bash" }, + { ".*%.eclass", "Bash" }, + + { ".*%.befunge", "Befunge" }, + { ".*%.bmx", "Blitzmax" }, + { ".*%.boo", "Boo" }, + + { "bf", "Brainfuck" }, + { "b", "Brainfuck" }, + + { "cmd", "Bat" }, + + { ".*%.cfc", "Cfm" }, + { "cfml", "Cfm" }, + + { "cl", "Cl" }, + { "lisp", "Cl" }, + { ".*%.el", "Cl" }, + + { "clj", "Clojure" }, + { "cljs", "Clojure" }, + + { "h", "C" }, + { "c", "C" }, + { ".*.cmake", "Cmake" }, + + { "coffee", "Cofeescript" }, + { ".*%.sh%-session", "Console" }, + + { "cpp", "C++" }, + { "hpp", "C++" }, + { "cc", "C++" }, + { "hh", "C++" }, + { "cxx", "C++" }, + { "hxx", "C++" }, + { ".*%.pde", "C++" }, + + { "csharp", "C#" }, + { "cs", "C#" }, + { ".*.%cs", "C#" }, + + { "css", "CSS" }, + + { "pyx", "Cython" }, + { "pxd", "Cython" }, + { ".*%.pxi", "Cython" }, + + { "d", "D" }, + { "di", "D" }, + + { ".*%.pas", "Delphi" }, + + { "patch", "Diff" }, + + { "darcspatch", "Dpatch" }, + + { "jbst", "Duel" }, + + { "dyl", "Dylan" }, + + { ".*%.erb", "Erb" }, + + { ".*%.erl%-sh", "Erl" }, + + { "erl", "Erlang" }, + { "hrl", "Erlang" }, + + { "flx", "Felix" }, + { "flxh", "Felix" }, + + { "f", "Fortran" }, + { "f90", "Fortran" }, + + { "s", "Gas" }, + { "S", "Gas" }, + + { ".*%.kid", "Genshi" }, + + { "gitignore", "Gitignore" }, + + { "vert", "GLSL" }, + { "frag", "GLSL" }, + { ".*%.geo", "GLSL" }, + + { "plot", "Gnuplot" }, + { "plt", "Gnuplot" }, + + { ".*%.go", "Go" }, + + { "hs", "Haskell" }, + { ".*%.hs", "Haskell" }, + + { "htm", "Html" }, + { "xhtml", "Html" }, + { "xslt", "Html" }, + + { ".*%.hx", "Hx" }, + + { "hy", "Hybris" }, + { "hyb", "Hybris" }, + + { "ini", "INI" }, + { "cfg", "INI" }, + + { ".*%.io", "Io" }, + { "ik", "Ioke" }, + + { ".*%.jade", "Jade" }, + + { ".*%.Java", "Java" }, + + { "ll", "LLVM" }, + + { "wlua", "Lua" }, + + { "mak", "Make" }, + { "makefile", "Make" }, + { "Makefile", "Make" }, + { "GNUmakefile", "Make" }, + + { ".*%.mao", "Make" }, + + { "mhtml", "Mason" }, + { "mc", "Mason" }, + { ".*%.mi", "Mason" }, + { "autohandler", "Mason" }, + { "dhandler", "Mason" }, + + { "md", "Markdown" }, + + { "m", "Objective C" }, + { ".*%.m", "Objective C" }, + { ".*%.j", "Objective J" }, + + { "ml", "Ocaml" }, + { "mli", "Ocaml" }, + { "mll", "Ocaml" }, + { "mly", "Ocaml" }, + + { "pm", "Perl" }, + { "pl", "Perl" }, + + { "php", "PHP" }, + + { "ps", "Postscript" }, + { "eps", "Postscript" }, + + { "pro", "Prolog" }, + { ".*%.pl", "Prolog" }, + + { ".*%.properties", "Properties" }, + + { ".*%.py3tb", "Py3tb" }, + { ".*%.pytb", "Pytb" }, + { "py", "Python" }, + { "pyw", "Python" }, + { "sc", "Python" }, + { "SConstruct", "Python" }, + { "SConscript", "Python" }, + { "tac", "Python" }, + + { ".*%.R", "R" }, + + { "rb", "Ruby" }, + { "rbw", "Ruby" }, + { "RakeFile", "Ruby" }, + { "rake", "Ruby" }, + { "gemspec", "Ruby" }, + { "rbx", "Ruby" }, + { "duby", "Ruby" }, + + { "rs", "rust" }, + + { "sql", "SQL" }, + { ".*%.sql", "SQL" }, + + { "txt", "Text" }, + + { "ts", "Typescript" }, + + { "yml", "Yaml" }, +}; + +languages.get_name = function (name) + if not name or name == "" then + return "Unknown"; + end + + for _, pattern in ipairs(languages.patterns) do + if name:match("^" .. pattern[1] .. "$") then + return pattern[2]; + end + end + + return string.gsub(name, "^%l", string.upper); +end + +return languages; diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 9ca7461..9df5669 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -2,7 +2,7 @@ local renderer = {}; local devicons = require("nvim-web-devicons"); local entites = require("markview.entites"); -local utils = require("markview.utils"); +local languages = require("markview.languages"); _G.__markview_views = {}; @@ -972,27 +972,32 @@ renderer.render_code_blocks = function (buffer, content, config_table) local icon, hl = devicons.get_icon(nil, language, { default = true }); local block_length = content.largest_line; + local languageName; + if config_table.language_names ~= nil then for _, lang in ipairs(config_table.language_names) do if language == lang[1] then - language = lang[2]; - break; + languageName = lang[2]; + goto nameFound; end end end + languageName = languages.get_name(language) + ::nameFound:: + if type(config_table.min_width) == "number" and config_table.min_width > block_length then block_length = config_table.min_width end - local lang_width = vim.fn.strchars(" " .. icon .. " " .. (language == "" and "Unknown" or language) .. " "); + local lang_width = vim.fn.strchars(" " .. icon .. " " .. languageName .. " "); if config_table.language_direction == nil or config_table.language_direction == "left" then vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start + 3 + vim.fn.strlen(content.language), { virt_text_pos = config_table.position or "inline", virt_text = { { " " .. icon .. " ", set_hl(hl) }, - { (language == "" and "Unknown" or language) .. " ", set_hl(config_table.name_hl) or set_hl(hl) }, + { languageName .. " ", set_hl(config_table.name_hl) or set_hl(hl) }, { string.rep(config_table.pad_char or " ", block_length - lang_width + ((config_table.pad_amount or 1) * 2)), set_hl(config_table.hl) }, }, @@ -1007,7 +1012,7 @@ renderer.render_code_blocks = function (buffer, content, config_table) virt_text = { { string.rep(config_table.pad_char or " ", block_length - lang_width + ((config_table.pad_amount or 1) * 2)), set_hl(config_table.hl) }, { " " .. icon .. " ", set_hl(hl) }, - { (language == "" and "Unknown" or language) .. " ", set_hl(config_table.name_hl) or set_hl(hl) }, + { languageName .. " ", set_hl(config_table.name_hl) or set_hl(hl) }, }, sign_text = config_table.sign == true and icon or nil, From 8afbf13d3e3d8df58bd1a0c2f557f26170e4f9fe Mon Sep 17 00:00:00 2001 From: Shawon Date: Sun, 4 Aug 2024 07:32:33 +0600 Subject: [PATCH 18/35] chore: Updated README.md --- README.md | 315 +++++++++++++++++++++++++++++++++-------------- lua/markview.lua | 29 ++++- 2 files changed, 251 insertions(+), 93 deletions(-) diff --git a/README.md b/README.md index 4709425..164cd78 100644 --- a/README.md +++ b/README.md @@ -1,86 +1,86 @@ # 📜 Markview.nvim -

Simple markdown previewer for neovim

+An experimental `markdown` previewer for Neovim. +Wiki page ->[!IMPORTANT] -> Presets have been reworked, though you can still use the old presets. It is recommended that you switch to the newer ones as the old ones will be removed in the future. +## ✨ Features -![headings](./images/headings.jpg) -![lists](./images/lists.jpg) -![tables](./images/tables.jpg) +Markview.nvim comes with a ton of features such as, ->[!WARNING] -> This plugin is in it's alpha stage and may go through breaking changes. +- Close to `full render` of markdown documents. Currently supported items are, + * Block quotes(includes `callouts`/`alerts` + * Chekboxes(checked, unchecked & pending state) + * Headings(atx_headings & setext_headings) + * Horizontal rules + * Html support(only for simple tags, e.g. `Underline`) + * Html entites(both `&;` and `&` support) + * Inline codes + * Links(hyprlinks, images & email support) + * List item(ordered & unordered) + * Tables +- Fully customisable setup! You can customise everything to your needs! +- A `hybrid mode` that allows rendering in real-time! It will even unconceal nodes under the cursor. +- Dynamic `highlight groups` that allows support for almost any colorscheme! +- Can be loaded on other filetypes too! ->[!IMPORTANT] -> Highlights now use `PascalCase` so it is recommended to change your highlight group names to PascalCase. But don't worry, the previous names using `Markview_` are still supported! +And a lot more to come! -## 📑 Table of contents +## 📦 Requirements -- [Features](#-features) -- [Requirements](#-requirements) -- [Installation](#-installation) - - [Lazy.nvim](#-lazynvim) - - [Mini.deps](#-minideps) - - [Others](#-others) -- [Setup](#-setup) -- [Commands](#-commands) -- [Showcases](#-showcases) +- Neovim version: `0.10.0` or above. +- Tree-sitter parsers, + * markdown + * markdown_inline + * html +- Nerd font. -## 🛸 Features +Optional: +- A tree-sitter supported colorscheme. -- Fully customisable markdown `headings`. -- Custom `block quotes` with support for `callouts` & `alerts`. -- Custom `code blocks` with different style supports. -- Statusline-like `horizontal rules` customisation. -- Custom `links` and `image links`. -- Custom `inline codes`. -- Padded list items(with nested list support). -- Custom `checkboxes` for different checkbox states. -- Fully customisable `tables`. +## 🚀 Installation -## 🔭 Requirements - -- Neovim version: 0.10 or higher(unless API changes occurred). -- `nvim-treesitter` for easy installation of treesitter parsers. -- `markdown` and `markdown_inline` treesitter parsers. -- `nvim-web-devicons` for the icons. - -## 📦 Installation +Markview can be installed via your favourite `package manager`. ### 💤 Lazy.nvim -For `plugins.lua` or `lazy.lua` users. +>[!CAUTION] +> It is not recommended to lazy-load this plugin as it does that by default. + +For `lazy.lua` users. ```lua { "OXY2DEV/markview.nvim", - ft = "markdown", + lazy = false, -- Recommended + -- ft = "markdown" -- If you decide to lazy-load anyway dependencies = { - -- You may not need this if you don't lazy load + -- You will not need this if you installed the + -- parsers manually -- Or if the parsers are in your $RUNTIMEPATH "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons" - }, + } } ``` -For `plugins/markview.lua` users +For `plugins/markview.lua` users. ```lua return { "OXY2DEV/markview.nvim", - ft = "markdown", + lazy = false, -- Recommended + -- ft = "markdown" -- If you decide to lazy-load anyway dependencies = { - -- You may not need this if you don't lazy load + -- You will not need this if you installed the + -- parsers manually -- Or if the parsers are in your $RUNTIMEPATH "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons" - }, + } } ``` @@ -102,76 +102,209 @@ MiniDeps.add({ }) ``` -### 🤔 Others +### 🌒 Rocks.nvim -The installation process for any other plugin manager(s) is the same. +You can install the plugin by running the following command. -If your plugin manager doesn't support `dependencies` then you can always load the plugins in the right order. +```vim +:Rocks install markview.nvim +``` + +### 👾 Github releases + +You can also download one of the [releases](https://github.com/OXY2DEV/markview.nvim/releases/tag/v1.0.0). + +### 🛸 Testing + +If you don't mind a slightly `unstable` version of the plugin then you can use the [dev branch](https://github.com/OXY2DEV/markview.nvim/tree/dev). + +## 🌇 Commands + +Markview comes with a single command. ```vim -Plug "nvim-treesitter/nvim-treesitter" -Plug "nvim-tree/nvim-web-devicons" +:Markview +``` + +It has the following `sub-commands`, -Plug "OXY2DEV/markview.nvim" +- toggleAll, Toggles the plugin. Will set all **attached buffers** state to the plugin state. +- enableAll, Enables the plugin in all **attached buffers**. Will refresh the decorations if the plugin is already enabled. +- disableAll, Disables the plugin in all **attached buffers**. Will try to remove any remaining decorations if the plugin is already disabled. +- toggle {buffer}, Toggles the state of buffer. +- enable {buffer}, Enables/Refreshes the plugin on a specific buffer. +- disable {buffer}, Disables the plugin & clears decorations on a specific buffer. + + +## 🧭 Configuration + +You can use the `setup()` function to change how the plugin looks. + +```lua +local markview = require("markview"); +local presets = require("markview.presets"); + +markview.setup({ + headings = presets.headings.glow_labels +}); + +vim.cmd("Markview enableAll"); ``` -## 🧭 Setup +This can also be used at runtime. So, you can hot-swap the config anytime you want! + +Go ahead try running it. + +--- + +You can configure the plugin in 2 ways, + +### 📂 Presets + +Presets are an easy way to change the looks of some part of the plugin. + +Currently there are presets for the following items, + +- Headings +- Tables + +You can find more on presets on the [wiki page](). + +### 🎨 Manual ->[!NOTE] -> This plugin does not use `setup()` to initialize. So, it is completely optional to call it. +The plugin was created with the sole purpose of being **customisable**. -Configuration table for the `setup()` function is given below. +So, you can change everything to fit your needs. + +A simple example is given below, ```lua require("markview").setup({ - buf_ignore = { "nofile" }, - modes = { "n", "no" }, - - options = { - on_enable = {}, - on_disable = {} - }, - - block_quotes = {}, - checkboxes = {}, - code_blocks = {}, - headings = {}, - horizontal_rules = {}, - inline_codes = {}, - links = {}, - list_items = {}, - tables = {} + headings = { + enable = true, + + heading_1 = { + style = "label", + + padding_left = " ", + padding_right = " ", + + hl = "MarkviewHeading1" + } + } }); ``` - For customisation related options check the [wiki pages](https://github.com/OXY2DEV/markview.nvim/wiki). +You can check the [wiki](https://github.com/OXY2DEV/markview.nvim/wiki) to learn more about configuration. + +You can also check the [starter guide]() for some simple examples. + +## 🌃 highlight groups + +To make configuration easier `markview.nvim` comes with the following highlight groups. + +### 📦 Block quote + +Block quotes have the following highlight group by default, + +- MarkviewBlockQuoteDefault, also used by `Quote`. + +Various callouts/alerts use the following highlight groups, + +- MarkviewBlockQuoteOk, used by `Tip`, `Success`. +- MarkviewBlockQuoteWarn, used by `Question`, `Custom`, `Warning`. +- MarkviewBlockQuoteError, used by `Caution`, `Bug`, `Danger`, `Failure`. +- MarkviewBlockQuoteNote, used by `Note`, `Todo`, `Abstract`. +- MarkviewBlockQuoteSpecial, used `Important`, `Example`. + +### 🎯 Checkboxes + +Checkboxes use these highlight groups, + +- MarkviewCheckboxChecked, from `DiagnosticOk`. +- MarkviewCheckboxUnhecked, from `DiagnosticError`. +- MarkviewCheckboxPending, from `DiagnosticWarn`. + +### 💻 Code blocks & inline codes -## 🎹 Commands +Code blocks use the following highlight group, ->[!NOTE] -> Commands are a test feature. +- MarkviewCode -There is only a single command for now, `:Markview`. +Inline codes use the following highlight group, -When called without any arguments, it toggles the plugin. +- MarkviewInlineCode -Possible subcommands are, +### 🔖 Headings -- `toggleAll`, toggles the plugin -- `enableAll`, enables the plugin -- `disableAll`, disables the plugin -- `toggle`, toggles the plugin for the specified buffer(default is the current buffer) -- `enable`, enables the plugin for the specified buffer(default is the current buffer) -- `disable`, disables the plugin for the specified buffer(default is the current buffer) +Headings are highlighted with the following groups, -## 👾 Showcases +- MarkviewHeading1, from `DiagnosticVirtualTextOk` +- MarkviewHeading2, from `DiagnosticVirtualTextHint` +- MarkviewHeading3, from `DiagnosticVirtualTextInfo` +- MarkviewHeading4, from `Special` +- MarkviewHeading5, from `DiagnosticVirtualTextWarn` +- MarkviewHeading6, from `DiagnosticVirtualTextError` ->[!IMPORTANT] -> Screenshots on a phone are very blurry(Yes, the plugin was made on my phone). -> -> If you have screenshots of the plugin, you can submit them in the special issue. And yes, credit will be provided. +Signs are highlighted with the following groups, + +- MarkviewHeading1Sign, from `DiagnosticOk` +- MarkviewHeading2Sign, from `DiagnosticHint` +- MarkviewHeading3Sign, from `DiagnosticInfo` +- MarkviewHeading4Sign, from `Special` +- MarkviewHeading5Sign, from `DiagnosticWarn` +- MarkviewHeading6Sign, from `DiagnosticError` + +### 📏 Horizontal rules + +Horizontal rules use the following highlight groups for the gradient. + +- MarkviewGradient1, from `Normal`. +- MarkviewGradient2 +- MarkviewGradient3 +- MarkviewGradient4 +- MarkviewGradient5 +- MarkviewGradient6 +- MarkviewGradient7 +- MarkviewGradient8 +- MarkviewGradient9 +- MarkviewGradient10, from `Cursor`. + +### 🔗 Links + +Links use the following highlight groups, + +- MarkviewHyperlink, from `markdownLinkText`. +- MarkviewImageLink, from `markdownLinkText`. +- MarkviewEmail, from `@markup.link.url.markdown_inline`. + +### 📝 List items + +List items use the following highlight groups, + +- MarkviewListItemMinus, from `DiagnosticWarn`. +- MarkviewListItemPlus, from `DiagnosticOk`. +- MarkviewListItemStar, from `@comment.note`. + +### 📐 Tables + +Tables use the following highlight group for the border, + +- MarkviewTableBorder, from `Title`. + +For the column alignment markers these highlight groups are used, + +- MarkviewTableAlignLeft, from `Title`. +- MarkviewTableAlignRight, from `Title`. +- MarkviewTableAlignCenter, from `Title`. + +## ⭐ Plugin showcase ![showcase_1](./images/preview_1.png) Taken by @scottmckendry + + diff --git a/lua/markview.lua b/lua/markview.lua index d236668..853f7c1 100644 --- a/lua/markview.lua +++ b/lua/markview.lua @@ -703,6 +703,31 @@ markview.configuration = { end end }, + { + group_name = "InlineCode", + value = function () + local bg = markview.colors.get({ + markview.colors.get_hl_value(0, "Normal", "bg"), + markview.colors.get_hl_value(0, "Cursor", "fg"), + + vim.o.background == "dark" and "#1e1e2e" or "#cdd6f4" + }); + + local luminosity = markview.colors.get_brightness(bg); + + if luminosity < 0.5 then + return { + bg = markview.colors.mix(bg, bg, 1, math.max(luminosity, 0.5)), + default = true + }; + else + return { + bg = markview.colors.mix(bg, bg, 1, math.min(luminosity, 0.5) * -1), + default = true + }; + end + end + }, { @@ -1173,7 +1198,7 @@ markview.configuration = { }, config = { - p = { conceal = true, hl = "Title" }, + p = { conceal = true, hl = "Normal" }, u = { conceal = true, hl = "Underlined" }, i = { conceal = true, hl = "Italic" } } @@ -1206,7 +1231,7 @@ markview.configuration = { corner_left = " ", corner_right = " ", - hl = "MarkviewCode" + hl = "MarkviewInlineCode" }, list_items = { From e4fdd94ba54aa7239ca9aa6daa2c74435e72682b Mon Sep 17 00:00:00 2001 From: Shawon Date: Sun, 4 Aug 2024 07:34:44 +0600 Subject: [PATCH 19/35] chore: Fixed spacing before wiki link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 164cd78..dd755f8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # 📜 Markview.nvim An experimental `markdown` previewer for Neovim. + Wiki page ## ✨ Features From 33a4f1a9e13d856a9417b8352322c981d40e433c Mon Sep 17 00:00:00 2001 From: Shawon Date: Sun, 4 Aug 2024 07:43:03 +0600 Subject: [PATCH 20/35] chore: Centered Wiki link in README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dd755f8..937868b 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,9 @@ An experimental `markdown` previewer for Neovim. -Wiki page + ## ✨ Features From 139fca5ab45cecce69d893bf70d91d7983b51d1d Mon Sep 17 00:00:00 2001 From: Shawon Date: Sun, 4 Aug 2024 08:03:16 +0600 Subject: [PATCH 21/35] chore: Deleting unnecessary files --- images/headings.jpg | Bin 77467 -> 0 bytes images/lists.jpg | Bin 83363 -> 0 bytes images/preview_1.png | Bin 399967 -> 0 bytes images/tables.jpg | Bin 96429 -> 0 bytes showcases/html.md | 38 -------------------------------------- 5 files changed, 38 deletions(-) delete mode 100644 images/headings.jpg delete mode 100644 images/lists.jpg delete mode 100644 images/preview_1.png delete mode 100644 images/tables.jpg delete mode 100644 showcases/html.md diff --git a/images/headings.jpg b/images/headings.jpg deleted file mode 100644 index 46532138ef564c2512fce4411d893327ab6c2c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77467 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 F|1a+}zzhHY diff --git a/images/lists.jpg b/images/lists.jpg deleted file mode 100644 index f05449c00ffc15ba1da07bba6e0c9c1707885a2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83363 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.L)~yQyE-H~f&;SOEo%o%!h|@{vb`HtONYJ2v8t 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 JXxV;?`CrpYk;VW3 diff --git a/images/preview_1.png b/images/preview_1.png deleted file mode 100644 index fb49d522b1f9f984d06391d2f614fdfbf4267d35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399967 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∾X06~aRJ#s^Z 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%0AX- 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%0A;~qt` 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

975`sKS?{bg(%VFlpai~}LHJqEeE>iV;T}H+m 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 z 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 z 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 yao6DP?gUTJ1cC(!x$J$; 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%0A^8qxF42K#b2v!{n#f2KN3$k+dd$Kg^ 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

- -

- Hejejd -

- -Underlined -Italic - -

Hello

- -Hello - -| h | djjdjd | -|--------------------:|--------| -| 1 | 2 | -| [Li](https://h.com) | 2 | -| ![img5](euehehhehe) | 3 | -| h | 3 | - - -| test | -|---------:| -| `twtz`| - - -| Some text with html elements | -|:--------------------------------------------------------:| -| ~ ~ | -| A line with a [link](./html.md) and an ![img](./html.md) | -| Mail to | -| ~ ~ | - - - - - - From 777c6aa50d623eed5a17fb39be60f23fbc7bd4bc Mon Sep 17 00:00:00 2001 From: Shawon Date: Sun, 4 Aug 2024 10:33:24 +0600 Subject: [PATCH 22/35] fix(renderer): Fixed a bug leading to extmarks on the current line not being removed The current line will also be cleared(after clearing everything else) now. --- ftplugin/markdown.lua | 1 + lua/markview/renderer.lua | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ftplugin/markdown.lua b/ftplugin/markdown.lua index bfbd829..2f243f8 100644 --- a/ftplugin/markdown.lua +++ b/ftplugin/markdown.lua @@ -216,6 +216,7 @@ vim.api.nvim_create_autocmd(events, { markview.renderer.clear_content_range(event.buf, partial_contents) markview.renderer.clear_content_range(event.buf, prev_contents); + markview.renderer.clear(event.buf, parse_start, parse_stop); markview.renderer.render_in_range(event.buf, prev_contents, markview.configuration); markview.renderer.update_range(event.buf, current_range); diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 9df5669..5cffe69 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -1576,8 +1576,8 @@ renderer.render = function (buffer, parsed_content, config_table, conceal_start, end end -renderer.clear = function (buffer) - vim.api.nvim_buf_clear_namespace(buffer, renderer.namespace, 0, -1) +renderer.clear = function (buffer, from, to) + vim.api.nvim_buf_clear_namespace(buffer, renderer.namespace, from or 0, to or -1) end renderer.update_range = function (buffer, new_range) From e102b060907173fcafaa8e5e4edde993452a9808 Mon Sep 17 00:00:00 2001 From: Shawon Date: Sun, 4 Aug 2024 12:37:02 +0600 Subject: [PATCH 23/35] fix(renderer): Fixed a bug causing the last line to have border placed on the wrong column Added some validation to check for these types of lines(also checks the trailing characters). --- lua/markview/renderer.lua | 15 ++++++++++--- showcases/demo.md | 45 +++++++++++++++++++++++++++++++++++++++ showcases/hybrid_mode.md | 37 ++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 showcases/demo.md create mode 100644 showcases/hybrid_mode.md diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 5cffe69..0b8ee82 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -1022,10 +1022,19 @@ renderer.render_code_blocks = function (buffer, content, config_table) }); end - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_end - 1, content.col_start + 3, { + -- The text on the final line + -- We need to get the tail section to see if it contains ``` + local block_end_line = vim.api.nvim_buf_get_lines(buffer, content.row_end - 1, content.row_end, false)[1]; + local tail_section = vim.fn.strcharpart(block_end_line or "", content.col_start); + + if tail_section:match("```$") then + tail_section = tail_section:gsub("```$", ""); + end + + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_end - 1, vim.fn.strchars(block_end_line or ""), { virt_text_pos = config_table.position or "inline", virt_text = { - { string.rep(config_table.pad_char or " ", block_length + ((config_table.pad_amount or 1) * 2)), set_hl(config_table.hl) }, + { string.rep(config_table.pad_char or " ", (block_length - vim.fn.strchars(tail_section)) + ((config_table.pad_amount or 1) * 2)), set_hl(config_table.hl) }, }, hl_mode = "combine", @@ -1046,7 +1055,7 @@ renderer.render_code_blocks = function (buffer, content, config_table) } }) - local position, reduce_cols = get_str_width(text) + local position, reduce_cols = get_str_width(text); vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start + line, position, { virt_text_pos = "inline", diff --git a/showcases/demo.md b/showcases/demo.md new file mode 100644 index 0000000..6881174 --- /dev/null +++ b/showcases/demo.md @@ -0,0 +1,45 @@ +# Makrview.nvim + +An experimental markdown previewer for Neovim. + +```lua +vim.print(require("markview").state); +``` + +## Tasks + +- [X] Stability improvements +- [ ] Rocks.nvim workflow +- [-] Wiki updates + +## Links + +[Markview.nvim](https://www.github.com/markview.nvim) +![Showcase](../img/showcase.jpg) + + +## Notifications + +>[!Important] +> Old presets are about to be removed. + +>[!Tip] +> Don't forget to check the wiki! + +>[!Warning] +> Only for Neovim `0.10.0` and higher. + +## Github Insights + +| Entry name | Entry value | +|:------------------------|:-----------------------| +| Git clones | 1008 | +| Visitors | 3801 | +| Stars | 777 | +| Lines added | 8426 | +| Lines deleted | 3158 | + + + diff --git a/showcases/hybrid_mode.md b/showcases/hybrid_mode.md new file mode 100644 index 0000000..162b5fa --- /dev/null +++ b/showcases/hybrid_mode.md @@ -0,0 +1,37 @@ +# Markview.nvim + +An experimental markdown previewer for Neovim. + +Hybrid mode: +A way to preview & edit at the same time +--- + +It is now possible to see previews as you type. + +It works for all kinds of elements such as `inline codes`, +*italic*, **bold** etc. + +It also works for block elements. + +```lua +vim.print("Hello world"); +``` + +>[!Tip] +> It can also work on nested elements. +> +> ```vim +> set scrolloff=0 +> ``` + +It even works on list items, +- Item 1 +- Item 2 + - Nested 1 + - Nested 2 + +--- + + From 41d57ab40603b702cd7b7b920c71f7b20ba202aa Mon Sep 17 00:00:00 2001 From: Shawon Date: Sun, 4 Aug 2024 22:01:08 +0600 Subject: [PATCH 24/35] fix(renderer): Made headings use decorations around the text instead of replacing the main text Headings can now contain things like italic, bold text, inline codes, html entities and any other inline elements without appearing as raw text. --- lua/markview.lua | 10 ++++- lua/markview/parser.lua | 35 +++++++++++---- lua/markview/renderer.lua | 89 +++++++++++++++++---------------------- 3 files changed, 72 insertions(+), 62 deletions(-) diff --git a/lua/markview.lua b/lua/markview.lua index 853f7c1..e9660f9 100644 --- a/lua/markview.lua +++ b/lua/markview.lua @@ -1198,9 +1198,15 @@ markview.configuration = { }, config = { - p = { conceal = true, hl = "Normal" }, + b = { conceal = true, hl = "Bold" }, + strong = { conceal = true, hl = "Bold" }, + u = { conceal = true, hl = "Underlined" }, - i = { conceal = true, hl = "Italic" } + + i = { conceal = true, hl = "Italic" }, + emphasize = { conceal = true, hl = "Italic" }, + + marked = { conceal = true, hl = "Special" }, } }, diff --git a/lua/markview/parser.lua b/lua/markview/parser.lua index 5fc0269..8f255b6 100644 --- a/lua/markview/parser.lua +++ b/lua/markview/parser.lua @@ -100,6 +100,16 @@ parser.parsed_content = {}; ---@param buffer number ---@param TStree any parser.md = function (buffer, TStree, from, to) + if not parser.cached_conf or not parser.cached_conf.on_injected or parser.cached_conf.on_injected == false then + local root = TStree:root(); + local root_r_start, _, root_r_end, _ = root:range(); + local buf_lines = vim.api.nvim_buf_line_count(buffer); + + if root_r_start ~= 0 or root_r_end ~= buf_lines then + return; + end + end + local scanned_queies = vim.treesitter.query.parse("markdown", [[ ((setext_heading) @setext_heading) @@ -154,23 +164,21 @@ parser.md = function (buffer, TStree, from, to) col_end = col_end }) elseif capture_name == "heading" then + local parent = capture_node:parent(); + local heading_txt = capture_node:next_sibling(); - local title = heading_txt ~= nil and vim.treesitter.get_node_text(heading_txt, buffer) or ""; + local title = heading_txt ~= nil and vim.treesitter.get_node_text(heading_txt, buffer) or nil; local h_txt_r_start, h_txt_c_start, h_txt_r_end, h_txt_c_end; - if heading_txt ~= nil then - h_txt_r_start, h_txt_c_start, h_txt_r_end, h_txt_c_end = heading_txt:range(); - end - table.insert(parser.parsed_content, { node = capture_node, type = "heading", level = vim.fn.strchars(capture_text), + line = vim.treesitter.get_node_text(parent, buffer), marker = capture_text, title = title, - title_pos = { h_txt_r_start, h_txt_c_start, h_txt_r_end, h_txt_c_end }, row_start = row_start, row_end = row_end, @@ -534,6 +542,17 @@ parser.md_inline = function (buffer, TStree, from, to) end parser.html = function (buffer, TStree, from, to) + if not parser.cached_conf or not parser.cached_conf.on_injected or parser.cached_conf.on_injected == false then + local root = TStree:root(); + local root_r_start, _, _, _ = root:range(); + + local start_line = vim.api.nvim_buf_get_lines(buffer, root_r_start - 1, root_r_start, false)[1] or ""; + + if start_line:match("```") then + return; + end + end + local scanned_queies = vim.treesitter.query.parse("html", [[ ((element) @elem) ]]); @@ -591,7 +610,6 @@ parser.init = function (buffer, config_table) -- Clear the previous contents parser.parsed_content = {}; - local main_tree_parsed = false; root_parser:for_each_tree(function (TStree, language_tree) local tree_language = language_tree:lang(); @@ -618,13 +636,12 @@ parser.parse_range = function (buffer, config_table, from, to) -- Clear the previous contents parser.parsed_content = {}; - local main_tree_parsed = false; root_parser:for_each_tree(function (TStree, language_tree) local tree_language = language_tree:lang(); if tree_language == "markdown" then - parser.md(buffer, TStree, from, to) + parser.md(buffer, TStree, from, to); elseif tree_language == "markdown_inline" then parser.md_inline(buffer, TStree, from, to); elseif tree_language == "html" then diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 0b8ee82..2224d55 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -235,8 +235,8 @@ local display_width = function (text, config) local tag_conf = html_conf.tags; local conf = tag_conf.default or {}; - if tag_conf.config and tag_conf.config[filtered_tag] then - conf = tag_conf.config[filtered_tag] + if tag_conf.config and tag_conf.config[string.lower(filtered_tag)] then + conf = tag_conf.config[string.lower(filtered_tag)] end local internal_text = tmp_string:match("<" .. start_tag .. ">(.-)") or ""; @@ -252,7 +252,7 @@ local display_width = function (text, config) ::invalid:: end - for entity_name, semicolon in final_string:gmatch("&(%a+)(;?)") do + for entity_name, semicolon in final_string:gmatch("&([%a%d]+)(;?)") do if not html_conf or html_conf.enable == false then break; elseif not html_conf.entites or html_conf.entites.enable == false then @@ -553,7 +553,7 @@ local table_footer = function (buffer, content, config_table) table.insert(virt_txt, { tbl_conf.text[9], set_hl(tbl_conf.hl[9]) }) curr_col = curr_col + 1 - elseif index == #content.rows[1] then + elseif index == #content.rows[#content.rows] then vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, row_end - 1, col_start + curr_col, { virt_text_pos = "inline", virt_text = { @@ -767,74 +767,61 @@ renderer.render_headings = function (buffer, content, config) hl_mode = "combine" }); elseif conf.style == "label" then - -- FIX: Make headings editable - local add_spaces = vim.fn.strchars(table.concat({ - string.rep(conf.shift_char or " ", shift * (content.level - 1)), - conf.corner_left or "", - conf.padding_left or "", - conf.icon or "", - })); - - -- Adds icons, separators, paddings etc - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, 0, { - virt_text_pos = "overlay", + local conceal_start = string.match(content.line, "^[#]+(%s*)"); + local line_length = vim.fn.strchars(content.line); + + -- Heading rules + -- 1. Must start at the first column + -- 2. Must have 1 space between the marker and the title + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start, { + virt_text_pos = "inline", virt_text = { { string.rep(conf.shift_char or " ", shift * (content.level - 1)), conf.shift_hl }, { conf.corner_left or "", set_hl(conf.corner_left_hl) or set_hl(conf.hl) }, { conf.padding_left or "", set_hl(conf.padding_left_hl) or set_hl(conf.hl) }, - { conf.icon or "", set_hl(conf.icon_hl) or set_hl(conf.hl) }, - { content.title or "", set_hl(conf.text_hl) or set_hl(conf.hl) }, - { conf.padding_right or "", set_hl(conf.padding_right_hl) or set_hl(conf.hl) }, - { conf.corner_right or "", set_hl(conf.corner_right_hl) or set_hl(conf.hl) }, + { conf.icon or "", set_hl(conf.icon_hl) or set_hl(conf.hl) } }, - sign_text = conf.sign, sign_hl_group = set_hl(conf.sign_hl) or set_hl(conf.hl), - + sign_text = conf.sign, sign_hl_group = set_hl(conf.sign_hl), hl_mode = "combine", - }) - -- Add extra spaces to match the virtual text - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, 0, { + end_col = content.level + vim.fn.strchars(conceal_start), + conceal = "" + }); + + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, line_length, { virt_text_pos = "inline", - virt_text = { { string.rep(" ", add_spaces) } }, + virt_text = { + { conf.padding_right or "", set_hl(conf.padding_right_hl) or set_hl(conf.hl) }, + { conf.corner_right or "", set_hl(conf.corner_right_hl) or set_hl(conf.hl) } + }, - end_col = content.title_pos[2] or content.col_end, - conceal = "" + hl_mode = "combine" }); + + vim.api.nvim_buf_add_highlight(buffer, renderer.namespace, set_hl(conf.hl), content.row_start, 0, line_length); elseif conf.style == "icon" then - -- FIX: Make headings editable - local add_spaces = vim.fn.strchars(table.concat({ - string.rep(conf.shift_char or " ", shift * (content.level - 1)), - conf.icon or "" - })); - - -- Adds simple icons with paddings - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, 0, { - virt_text_pos = "overlay", + local conceal_start = string.match(content.line, "^[#]+(%s*)"); + + -- Heading rules + -- 1. Must start at the first column + -- 2. Must have 1 space between the marker and the title + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_start, { + virt_text_pos = "inline", virt_text = { { string.rep(conf.shift_char or " ", shift * (content.level - 1)), set_hl(conf.shift_hl) }, { conf.icon or "", set_hl(conf.icon_hl) or set_hl(conf.hl) }, - { content.title or "", set_hl(conf.text_hl) or set_hl(conf.hl) }, }, + sign_text = conf.sign, sign_hl_group = set_hl(conf.sign_hl), + line_hl_group = set_hl(conf.hl), hl_mode = "combine", - }) - - -- Add extra spaces to match the virtual text - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, 0, { - virt_text_pos = "inline", - virt_text = { { string.rep(" ", add_spaces) } }, - end_col = content.title_pos[2] or content.col_end, + end_col = content.level + vim.fn.strchars(conceal_start), conceal = "" }); - - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, 0, { - line_hl_group = set_hl(conf.hl), - sign_text = conf.sign, sign_hl_group = set_hl(conf.sign_hl), - }); end end @@ -1437,8 +1424,8 @@ renderer.render_html_inline = function (buffer, content, user_config) local html_conf = user_config.tags.default or {}; - if user_config.tags.config[content.tag] then - html_conf = user_config.tags.config[content.tag]; + if user_config.tags.config[string.lower(content.tag)] then + html_conf = user_config.tags.config[string.lower(content.tag)]; end if html_conf.conceal ~= false then From 0eb84e5721dfd2ded1c598eba3ec018d5fd1cd9d Mon Sep 17 00:00:00 2001 From: Shawon Date: Sun, 4 Aug 2024 22:04:17 +0600 Subject: [PATCH 25/35] fix(renderer): Fixed a bug causing inconsistency between the left & right padding in inline codes Fixed decorations being added to the wrong column. --- lua/markview/renderer.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index 2224d55..af55e3a 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -1276,7 +1276,7 @@ renderer.render_inline_codes = function (buffer, content, config_table) vim.api.nvim_buf_add_highlight(buffer, renderer.namespace, set_hl(config_table.hl), content.row_start, content.col_start, content.col_end); - vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_end - 1, { + vim.api.nvim_buf_set_extmark(buffer, renderer.namespace, content.row_start, content.col_end, { virt_text_pos = "inline", virt_text = { { config_table.padding_right or "", set_hl(config_table.padding_right_hl) or set_hl(config_table.hl) }, From 2118149742bf8e6b6d629d9aafcf63ce11ae0a91 Mon Sep 17 00:00:00 2001 From: Shawon Date: Sun, 4 Aug 2024 22:44:23 +0600 Subject: [PATCH 26/35] chore: Added new showcase file --- README.md | 2 +- showcases/html.md | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 showcases/html.md diff --git a/README.md b/README.md index 937868b..51eea08 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ An experimental `markdown` previewer for Neovim.
## ✨ Features diff --git a/showcases/html.md b/showcases/html.md new file mode 100644 index 0000000..b29962f --- /dev/null +++ b/showcases/html.md @@ -0,0 +1,56 @@ +# Makrview.nvim + +An experimental markdown previewer for Neovim. + +## Basic html tag support + +Markview.nvim supports some simple `html`. + +For example, + +- Bold: Example text +- Strong: Example text +- Underline: Example text +- Italic: Example text +- Emphasize: Example text +- Marked: Example text + +These tags can also be used inside of your Normal text. + +## Html entity support + +Markview.nvim has basic support of `html entites`. + + ← ↓ ↑ → + + ∠ ≡ ∫ ≥ ≤ > < ∞ ∈ ∅ + ½ ¼ ¾ + +And a lot more symbols are also supported. + +## Supported in tables + +| Using tags in tables | Using entites in tables | +|:------------------------------:|---------------------------| +| Single tag usage | Single entity(←) | +| Multi tag usage | ∠ ¾ | +| =|= | +| You can also use both together: Underline & ⟩ | + +>[!Note] +> Html support is exclusive to tables! Other block elements +> will render them as raw text. + + + + + + + + + + + + From bca51235fd729059cdbb6cf15e8c8c50b601cae2 Mon Sep 17 00:00:00 2001 From: Shawon Date: Sun, 4 Aug 2024 23:03:41 +0600 Subject: [PATCH 27/35] chore: Changed
to

--- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 51eea08..a8ab0f2 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ An experimental `markdown` previewer for Neovim. -

+

## ✨ Features From a6392ddeb627a4ebd218718bc4f80b5fca1a1803 Mon Sep 17 00:00:00 2001 From: Shawon Date: Mon, 5 Aug 2024 12:31:24 +0600 Subject: [PATCH 28/35] fix(parser): Improved validation of pending checkboxes Using [-] anywhere other then the start of a list will no longer be considered a pending checkbox. fix: Fixed odd naming of html tags configuration `config` -> `configs` to make the purpose of the option more obvious. --- lua/definitions.lua | 15 +++------------ lua/markview.lua | 2 +- lua/markview/parser.lua | 39 ++++++++++++++++++++++++++++----------- lua/markview/renderer.lua | 14 +++++++------- 4 files changed, 39 insertions(+), 31 deletions(-) diff --git a/lua/definitions.lua b/lua/definitions.lua index 6a94091..ff235f2 100644 --- a/lua/definitions.lua +++ b/lua/definitions.lua @@ -83,7 +83,7 @@ --- Table for hyperlink configuration ---@field links markview.render_config.links --- ---- Table for hyperlink configuration +--- Table for inline code configuration ---@field inline_codes markview.render_config.inline_codes --- --- Table for list item configuration @@ -137,7 +137,7 @@ --- Used for highlighting the line when the style is "simple" ---@field hl string? --- ---- Character added before the heading name to seperate heading levels +--- Character added before the heading name to separate heading levels ---@field shift_char string? --- --- Highlight group for shift_char @@ -258,10 +258,7 @@ ---@class markview.render_config.block_quotes.callouts --- --- String to match to detect the callout, this is not case-sensitive ----@field match_string string ---- ---- Aliases for the callout, this is not case-sensitive ----@field aliases string[]? +---@field match_string string|string[] --- --- The text to show for the callout ---@field callout_preview string @@ -371,12 +368,6 @@ --- Default highlight group for the various parts ---@field hl string? --- ---- Custom text for the heading. The heading text is used when nil ----@field text string? ---- ---- Highlight group for the heading text, inherits from icon_hl ----@field text_hl string? ---- --- Used bu the "label" style to add text before the left padding ---@field corner_left string? --- diff --git a/lua/markview.lua b/lua/markview.lua index e9660f9..214eeea 100644 --- a/lua/markview.lua +++ b/lua/markview.lua @@ -1197,7 +1197,7 @@ markview.configuration = { conceal = false }, - config = { + configs = { b = { conceal = true, hl = "Bold" }, strong = { conceal = true, hl = "Bold" }, diff --git a/lua/markview/parser.lua b/lua/markview/parser.lua index 8f255b6..405f128 100644 --- a/lua/markview/parser.lua +++ b/lua/markview/parser.lua @@ -453,25 +453,42 @@ parser.md_inline = function (buffer, TStree, from, to) local title = string.match(line ~= nil and line[1] or "", "%b[]%s*(.*)$") if capture_text == "[-]" then - table.insert(parser.parsed_content, { - node = capture_node, - type = "checkbox", - state = "pending", + for _, extmark in ipairs(parser.parsed_content) do + if extmark.type == "list_item" and extmark.row_start == row_start then + local start_line = extmark.list_lines[1] or ""; + local atStart = start_line:match("%-%s+(%[%-%])%s+"); - row_start = row_start, - row_end = row_end, + local chk_start, _ = start_line:find("%[%-%]"); - col_start = col_start, - col_end = col_end - }) + if not atStart or not chk_start or chk_start - 1 ~= col_start then + goto invalid; + end + + table.insert(parser.parsed_content, { + node = capture_node, + type = "checkbox", + state = "pending", + + row_start = row_start, + row_end = row_end, + + col_start = col_start, + col_end = col_end + }); + + break; + end + ::invalid:: + end else for _, extmark in ipairs(parser.parsed_content) do if extmark.type == "block_quote" and extmark.row_start == row_start then - extmark.callout = string.match(capture_text, "%[!([^%]]+)%]"); extmark.title = title; - extmark.line_width = vim.fn.strchars(line[1]) + extmark.line_width = vim.fn.strchars(line[1]); + + break; end end end diff --git a/lua/markview/renderer.lua b/lua/markview/renderer.lua index af55e3a..8a77231 100644 --- a/lua/markview/renderer.lua +++ b/lua/markview/renderer.lua @@ -235,8 +235,8 @@ local display_width = function (text, config) local tag_conf = html_conf.tags; local conf = tag_conf.default or {}; - if tag_conf.config and tag_conf.config[string.lower(filtered_tag)] then - conf = tag_conf.config[string.lower(filtered_tag)] + if tag_conf.configs and tag_conf.configs[string.lower(filtered_tag)] then + conf = tag_conf.configs[string.lower(filtered_tag)] end local internal_text = tmp_string:match("<" .. start_tag .. ">(.-)") or ""; @@ -1068,10 +1068,10 @@ renderer.render_block_quotes = function (buffer, content, config_table) if content.callout ~= nil then for _, callout in ipairs(config_table.callouts) do - if type(callout.match_string) == "string" and callout.match_string:upper() == content.callout:upper() then + if type(callout.match_string) == "string" and string.upper(callout.match_string --[[@as string]]) == content.callout:upper() then qt_config = callout; - elseif vim.islist(callout.aliases) then - for _, alias in ipairs(callout.aliases) do + elseif vim.islist(callout.match_string) then + for _, alias in ipairs(callout.match_string --[[@as string[] ]]) do if type(alias) == "string" and alias:upper() == content.callout.upper() then qt_config = callout; end @@ -1424,8 +1424,8 @@ renderer.render_html_inline = function (buffer, content, user_config) local html_conf = user_config.tags.default or {}; - if user_config.tags.config[string.lower(content.tag)] then - html_conf = user_config.tags.config[string.lower(content.tag)]; + if user_config.tags.configs[string.lower(content.tag)] then + html_conf = user_config.tags.configs[string.lower(content.tag)]; end if html_conf.conceal ~= false then From 3e5ceec5beab5730aa3a730126b229801b449f0f Mon Sep 17 00:00:00 2001 From: Shawon Date: Mon, 5 Aug 2024 16:06:14 +0600 Subject: [PATCH 29/35] chore: added some test condition for adfing highlight --- ftplugin/markdown.lua | 11 +++-------- lua/markview.lua | 1 - 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/ftplugin/markdown.lua b/ftplugin/markdown.lua index 2f243f8..a1de838 100644 --- a/ftplugin/markdown.lua +++ b/ftplugin/markdown.lua @@ -25,8 +25,10 @@ if vim.islist(markview.configuration.buf_ignore) and vim.list_contains(markview. return end -if vim.islist(markview.configuration.highlight_groups) then +-- Don't add hls unless absolutely necessary +if not markview.added_hls and vim.islist(markview.configuration.highlight_groups) then markview.add_hls(markview.configuration.highlight_groups) + markview.added_hls = true; end local markview_augroup = vim.api.nvim_create_augroup("markview_buf_" .. vim.api.nvim_get_current_buf(), { clear = true }); @@ -73,13 +75,6 @@ vim.api.nvim_create_autocmd({ "BufWinEnter" }, { markview.state.buf_states[buffer] = true; - if vim.tbl_isempty(markview.global_options) then - markview.global_options = { - conceallevel = vim.o.conceallevel, - concealcursor = vim.o.concealcursor - } - end - local parsed_content = markview.parser.init(buffer, markview.configuration); markview.renderer.clear(buffer); diff --git a/lua/markview.lua b/lua/markview.lua index 214eeea..12008ce 100644 --- a/lua/markview.lua +++ b/lua/markview.lua @@ -1474,7 +1474,6 @@ end, { end }) - markview.setup = function (user_config) ---@type markview.config -- Merged configuration tables From 26b5abe363a7bc6c40c3ed1ccf26cb477d3bd678 Mon Sep 17 00:00:00 2001 From: Shawon Date: Mon, 5 Aug 2024 16:11:32 +0600 Subject: [PATCH 30/35] chore: Fixed removed wiki submodule --- .gitmodules | 3 +++ markview.nvim.wiki | 1 + wiki | 1 - 3 files changed, 4 insertions(+), 1 deletion(-) create mode 160000 markview.nvim.wiki delete mode 160000 wiki diff --git a/.gitmodules b/.gitmodules index 203bc8a..7a4def7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "wiki"] path = wiki url = https://github.com/OXY2DEV/markview.nvim.wiki.git +[submodule "markview.nvim.wiki"] + path = markview.nvim.wiki + url = https://github.com/OXY2DEV/markview.nvim.wiki.git diff --git a/markview.nvim.wiki b/markview.nvim.wiki new file mode 160000 index 0000000..873da3f --- /dev/null +++ b/markview.nvim.wiki @@ -0,0 +1 @@ +Subproject commit 873da3fa850e608a7c51023bbd54bae453757b66 diff --git a/wiki b/wiki deleted file mode 160000 index 9d04479..0000000 --- a/wiki +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9d04479666463d12a2a406e1a2ca8e9cc5c6ef28 From 39a03d65ddd76ca002b4f0d5c2a16fcb5467cfc5 Mon Sep 17 00:00:00 2001 From: Shawon Date: Mon, 5 Aug 2024 16:18:08 +0600 Subject: [PATCH 31/35] chore: Added image to README.md --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a8ab0f2..8077824 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,13 @@ An experimental `markdown` previewer for Neovim.

- Wiki page + Wiki page

+![hybrid_mode_showcase](https://github.com/OXY2DEV/markview.nvim/blob/images/Main/hybrid_mode_showcase.gif) +![screenshot](https://github.com/OXY2DEV/markview.nvim/blob/images/Main/plugin_showcase_landscape.jpg) +![screenshot_small](https://github.com/OXY2DEV/markview.nvim/blob/images/Main/plugin_showcase_mobile.jpg) + ## ✨ Features Markview.nvim comes with a ton of features such as, From 4ecd5e65785170b763150da7e8eaeaa49d47a2a1 Mon Sep 17 00:00:00 2001 From: Shawon Date: Mon, 5 Aug 2024 16:29:40 +0600 Subject: [PATCH 32/35] chore: Fixed broken link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8077824..209d477 100644 --- a/README.md +++ b/README.md @@ -307,7 +307,7 @@ For the column alignment markers these highlight groups are used, ## ⭐ Plugin showcase -![showcase_1](./images/preview_1.png) +![showcase_1](https://github.com/OXY2DEV/markview.nvim/blob/images/Submitted/sc_scottmckendry.png) Taken by @scottmckendry From a6065ea233a15593a1eb5145d2792497f64a156b Mon Sep 17 00:00:00 2001 From: Shawon Date: Mon, 5 Aug 2024 16:42:05 +0600 Subject: [PATCH 33/35] chore: Added html support showcase image to the README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 209d477..b16ded7 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ An experimental `markdown` previewer for Neovim.

![hybrid_mode_showcase](https://github.com/OXY2DEV/markview.nvim/blob/images/Main/hybrid_mode_showcase.gif) +![html_showcase](https://github.com/OXY2DEV/markview.nvim/blob/images/Main/html_showcase.gif) ![screenshot](https://github.com/OXY2DEV/markview.nvim/blob/images/Main/plugin_showcase_landscape.jpg) ![screenshot_small](https://github.com/OXY2DEV/markview.nvim/blob/images/Main/plugin_showcase_mobile.jpg) From 25bcac5d3b0bfef1a6cbea6965a719d37cfb661c Mon Sep 17 00:00:00 2001 From: Shawon Date: Mon, 5 Aug 2024 16:47:37 +0600 Subject: [PATCH 34/35] ci(luarocks): Added workflow for `rocks.nvim` This is a test commit. Ref: #60 --- .github/workflows/luarocks.yml | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .github/workflows/luarocks.yml diff --git a/.github/workflows/luarocks.yml b/.github/workflows/luarocks.yml new file mode 100644 index 0000000..c927624 --- /dev/null +++ b/.github/workflows/luarocks.yml @@ -0,0 +1,42 @@ +name: Luarocks + +on: + push: + tags: + - '*' + release: + types: + - created + pull_request: # Tests packaging on PR + workflow_dispatch: + +jobs: + luarocks-upload: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Required to get the tags + - name: Get Version + run: echo "LUAROCKS_VERSION=$(git describe --abbrev=0 --tags)" >> $GITHUB_ENV + + # Needed to build the tree-sitter parser dependencies + - name: Install C/C++ Compiler + uses: rlalik/setup-cpp-compiler@master + with: + compiler: clang-latest + - name: Install tree-sitter CLI + uses: baptiste0928/cargo-install@v3 + with: + crate: tree-sitter-cli + + - name: LuaRocks Upload + uses: nvim-neorocks/luarocks-tag-release@v7 + env: + LUAROCKS_API_KEY: ${{ secrets.LUAROCKS_API_KEY }} + with: + version: ${{ env.LUAROCKS_VERSION }} + dependencies: | + tree-sitter-markdown + nvim-web-devicons + From 391bf440f6b43d8b6951eb109fb13870cdc097b9 Mon Sep 17 00:00:00 2001 From: Moinul Hossain <122956967+OXY2DEV@users.noreply.github.com> Date: Mon, 5 Aug 2024 16:48:18 +0600 Subject: [PATCH 35/35] chore(dev): release 19.0.0 --- CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..c01fc31 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,30 @@ +# Changelog + +## [19.0.0](https://github.com/OXY2DEV/markview.nvim/compare/v18.0.0...v19.0.0) (2024-08-05) + + +### ⚠ BREAKING CHANGES + +* **renderer:** Added support for simple html elements +* **renderer:** Support for tables that don't start at the start of the line + +### Features + +* Added support for HTML entites ([3b270c1](https://github.com/OXY2DEV/markview.nvim/commit/3b270c1dedbf02b4849341ff9e490a001041e248)) +* **renderer:** Added basic language names to code blocks ([c9b4f77](https://github.com/OXY2DEV/markview.nvim/commit/c9b4f77e880eb0ab9afd370ad82e3758513a4a3a)), closes [#72](https://github.com/OXY2DEV/markview.nvim/issues/72) +* **renderer:** Added better validation for html tags in table cells ([ab0e54e](https://github.com/OXY2DEV/markview.nvim/commit/ab0e54e2992b3806fe2b3a68a49d050f1118159e)) +* **renderer:** Added hybrid-mode support to the plugin ([4a93e15](https://github.com/OXY2DEV/markview.nvim/commit/4a93e155261508b89d5c6146ba6cc0da91be0883)), closes [#64](https://github.com/OXY2DEV/markview.nvim/issues/64) +* **renderer:** Added support for simple html elements ([94ce522](https://github.com/OXY2DEV/markview.nvim/commit/94ce522302f78167e278d3c7d82ff0206c74b4e3)) +* **renderer:** Support for tables that don't start at the start of the line ([3c8b0dc](https://github.com/OXY2DEV/markview.nvim/commit/3c8b0dc5a9b02264f94137b23279db7d3198ac7a)) +* replace tbl_islist to islist ([f1e66c7](https://github.com/OXY2DEV/markview.nvim/commit/f1e66c78ba28b3b2399a4b76febc42ceb3211fd1)) + + +### Bug Fixes + +* **parser:** Added logic for supporting markers inside code blocks ([a38dd1f](https://github.com/OXY2DEV/markview.nvim/commit/a38dd1f01c31b4201b4355fe8ebaa439621e5b35)), closes [#69](https://github.com/OXY2DEV/markview.nvim/issues/69) +* **parser:** Improved validation of pending checkboxes ([a6392dd](https://github.com/OXY2DEV/markview.nvim/commit/a6392ddeb627a4ebd218718bc4f80b5fca1a1803)) +* **renderer:** Fixed a bug causing inconsistency between the left & right padding in inline codes ([0eb84e5](https://github.com/OXY2DEV/markview.nvim/commit/0eb84e5721dfd2ded1c598eba3ec018d5fd1cd9d)) +* **renderer:** Fixed a bug causing the last line to have border placed on the wrong column ([e102b06](https://github.com/OXY2DEV/markview.nvim/commit/e102b060907173fcafaa8e5e4edde993452a9808)) +* **renderer:** Fixed a bug leading to extmarks on the current line not being removed ([777c6aa](https://github.com/OXY2DEV/markview.nvim/commit/777c6aa50d623eed5a17fb39be60f23fbc7bd4bc)) +* **renderer:** Fixed screen not updating in "no" mode ([60bc13b](https://github.com/OXY2DEV/markview.nvim/commit/60bc13b9492570d4d321391517eb9677918f540e)), closes [#70](https://github.com/OXY2DEV/markview.nvim/issues/70) +* **renderer:** Made headings use decorations around the text instead of replacing the main text ([41d57ab](https://github.com/OXY2DEV/markview.nvim/commit/41d57ab40603b702cd7b7b920c71f7b20ba202aa))