Skip to content

Commit

Permalink
fix(concealer): minor fixes, plus wiki error fix (#916)
Browse files Browse the repository at this point in the history
* fix(concealer): fix ternary op order, fix empty line padding, optimize

* fix(concealer): lazy compile query to workaround wiki generation issue
  • Loading branch information
champignoom authored May 31, 2023
1 parent 151c033 commit 5629898
Showing 1 changed file with 46 additions and 39 deletions.
85 changes: 46 additions & 39 deletions lua/neorg/modules/core/concealer/module.lua
Original file line number Diff line number Diff line change
Expand Up @@ -553,13 +553,13 @@ module.public = {
local len = line_lengths[row_0b - row_start_0b + 1]
local mark_col_start_0b = math.max(0, col_start_0b - config.padding.left)
local mark_col_end_0bex = max_len + config.padding.right
if len >= col_start_0b then
if len >= mark_col_start_0b then
vim.api.nvim_buf_set_extmark(bufid, module.private.ns_icon, row_0b, mark_col_start_0b, {
end_row = row_0b + 1,
hl_eol = to_eol,
hl_group = config.highlight,
hl_mode = "blend",
virt_text = to_eol and nil or { { (" "):rep(mark_col_end_0bex - len), config.highlight } },
virt_text = not to_eol and { { (" "):rep(mark_col_end_0bex - len), config.highlight } } or nil,
virt_text_pos = "overlay",
virt_text_win_col = len,
})
Expand All @@ -570,8 +570,8 @@ module.public = {
hl_group = config.highlight,
hl_mode = "blend",
virt_text = {
{ (" "):rep(col_start_0b - len) },
{ (" "):rep(mark_col_end_0bex - col_start_0b), config.highlight },
{ (" "):rep(mark_col_start_0b - len) },
{ not to_eol and (" "):rep(mark_col_end_0bex - mark_col_start_0b) or "", config.highlight },
},
virt_text_pos = "overlay",
virt_text_win_col = len,
Expand Down Expand Up @@ -953,6 +953,46 @@ local function get_visible_line_range(winid)
return (row_start_1b - 1), row_end_1b
end

local function get_parsed_query_lazy()
if module.private.prettify_query then
return module.private.prettify_query
end

local function traverse_config(config, f)
if config == false then
return
end
if config.nodes then
f(config)
return
end
for _, sub_config in pairs(config) do
traverse_config(sub_config, f)
end
end

local config_by_node_name = {}
local queries = { "[" }

traverse_config(module.config.public.icons, function(config)
for _, node_type in ipairs(config.nodes) do
table.insert(queries, ("(%s)@icon"):format(node_type))
config_by_node_name[node_type] = config
end
for _, node_type in ipairs(config.nodes.concealed or {}) do
table.insert(queries, ("(%s)@icon-concealed"):format(node_type))
config_by_node_name[node_type] = config
end
end)

table.insert(queries, "]")
local query_combined = table.concat(queries, " ")
module.private.prettify_query = neorg.utils.ts_parse_query("norg", query_combined)
assert(module.private.prettify_query)
module.private.config_by_node_name = config_by_node_name
return module.private.prettify_query
end

local function prettify_range(bufid, row_start_0b, row_end_0bex)
-- in case there's undo/removal garbage
-- TODO: optimize
Expand All @@ -961,8 +1001,9 @@ local function prettify_range(bufid, row_start_0b, row_end_0bex)
local treesitter_module = module.required["core.integrations.treesitter"]
local document_root = treesitter_module.get_document_root(bufid)
assert(document_root)

local nodes, concealed_node_ids =
query_get_nodes(module.private.prettify_query, document_root, bufid, row_start_0b, row_end_0bex)
query_get_nodes(get_parsed_query_lazy(), document_root, bufid, row_start_0b, row_end_0bex)

local pos_start_0b_0b = { x = row_start_0b, y = 0 }
local pos_end_0bin_0bex = { x = row_end_0bex - 1, y = get_line_length(bufid, row_end_0bex - 1) }
Expand Down Expand Up @@ -1266,40 +1307,6 @@ module.load = function()
end,
})
end

-- compile treesitter query
local function traverse_config(config, f)
if config == false then
return
end
if config.nodes then
f(config)
return
end
for _, sub_config in pairs(config) do
traverse_config(sub_config, f)
end
end

local config_by_node_name = {}
local queries = { "[" }

traverse_config(module.config.public.icons, function(config)
for _, node_type in ipairs(config.nodes) do
table.insert(queries, ("(%s)@icon"):format(node_type))
config_by_node_name[node_type] = config
end
for _, node_type in ipairs(config.nodes.concealed or {}) do
table.insert(queries, ("(%s)@icon-concealed"):format(node_type))
config_by_node_name[node_type] = config
end
end)

table.insert(queries, "]")
local query_combined = table.concat(queries, " ")
local prettify_query = neorg.utils.ts_parse_query("norg", query_combined)
module.private.prettify_query = prettify_query
module.private.config_by_node_name = config_by_node_name
end

-- TODO;
Expand Down

0 comments on commit 5629898

Please sign in to comment.