From 07a668805e96b0975e6d5b0b50fd1d7b54e74417 Mon Sep 17 00:00:00 2001 From: Shawon Date: Sat, 8 Feb 2025 09:13:38 +0600 Subject: [PATCH] feat(renderer_markdown): Dynamic `indent_size` & `shift_width` support for list items Ref: #283 --- doc/markdown_options.txt | 4 ++-- lua/definitions/markdown.lua | 26 ++++++++++++++++++++++++++ lua/markview/parsers/markdown.lua | 13 ------------- lua/markview/renderers/markdown.lua | 7 +++++-- markview.nvim.wiki | 2 +- 5 files changed, 34 insertions(+), 18 deletions(-) diff --git a/doc/markdown_options.txt b/doc/markdown_options.txt index db9e2c4..3aab01e 100644 --- a/doc/markdown_options.txt +++ b/doc/markdown_options.txt @@ -888,8 +888,8 @@ Configuration for various list items. --- ---@field enable boolean --- - ---@field indent_size integer Indentation size for list items. - ---@field shift_width integer Virtual indentation size for previewed list items. + ---@field indent_size integer | fun(buffer: integer, item: __markdown.list_items): integer Indentation size for list items. + ---@field shift_width integer | fun(buffer: integer, item: __markdown.list_items): integer Virtual indentation size for previewed list items. --- ---@field marker_dot list_items.ordered Configuration for `n.` list items. ---@field marker_minus list_items.unordered Configuration for `-` list items. diff --git a/lua/definitions/markdown.lua b/lua/definitions/markdown.lua index c9a9ff3..239803d 100644 --- a/lua/definitions/markdown.lua +++ b/lua/definitions/markdown.lua @@ -519,6 +519,32 @@ M.__markdown_hr = { --- ---@field enable boolean --- +---@field indent_size integer | fun(buffer: integer, item: __markdown.list_items): integer Indentation size for list items. +---@field shift_width integer | fun(buffer: integer, item: __markdown.list_items): integer Virtual indentation size for previewed list items. +--- +---@field marker_dot list_items.ordered Configuration for `n.` list items. +---@field marker_minus list_items.unordered Configuration for `-` list items. +---@field marker_parenthesis list_items.ordered Configuration for `n)` list items. +---@field marker_plus list_items.unordered Configuration for `+` list items. +---@field marker_star list_items.unordered Configuration for `*` list items. +--- +---@field wrap? boolean Enables wrap support. +M.markdown_list_items = { + enable = true, + marker_plus = {}, + marker_star = {}, + marker_minus = {}, + marker_dot = {}, + marker_parenthesis = {} +}; + +-- [ Markdown | List items • Static ] ----------------------------------------------------- + +--- Configuration for list items. +---@class markdown.list_items_static +--- +---@field enable boolean +--- ---@field indent_size integer Indentation size for list items. ---@field shift_width integer Virtual indentation size for previewed list items. --- diff --git a/lua/markview/parsers/markdown.lua b/lua/markview/parsers/markdown.lua index eeb10ad..ad2880d 100644 --- a/lua/markview/parsers/markdown.lua +++ b/lua/markview/parsers/markdown.lua @@ -366,22 +366,9 @@ markdown.list_item = function (buffer, TSNode, _, range) ---_ end - local node = TSNode; - local block = false; - - while node do - if node:type() == "block_quote" then - block = true; - break; - end - - node = node:parent(); - end - ---@type __markdown.list_items markdown.insert({ class = "markdown_list_item", - __block = block, candidates = candidates, marker = marker:gsub("%s", ""), diff --git a/lua/markview/renderers/markdown.lua b/lua/markview/renderers/markdown.lua index 3338960..3095d0a 100644 --- a/lua/markview/renderers/markdown.lua +++ b/lua/markview/renderers/markdown.lua @@ -1883,8 +1883,11 @@ end markdown.list_item = function (buffer, item) ---+${func, Renders List items} - ---@type markdown.list_items? - local main_config = spec.get({ "markdown", "list_items" }, { fallback = nil }); + ---@type markdown.list_items_static? + local main_config = spec.get({ "markdown", "list_items" }, { + fallback = nil, + eval_args = { buffer, item } + }); local range = item.range; if not main_config then diff --git a/markview.nvim.wiki b/markview.nvim.wiki index b80de73..356ca78 160000 --- a/markview.nvim.wiki +++ b/markview.nvim.wiki @@ -1 +1 @@ -Subproject commit b80de73284932a9db9ac93f198460fde037bd5c9 +Subproject commit 356ca7806c45d96f719bf39143ce1802c2fd89e4