Skip to content

Commit 5bcc5c6

Browse files
benlubasvhyrro
authored andcommitted
chore(promo): refactor indent functions into indent
1 parent a94d1e6 commit 5bcc5c6

File tree

2 files changed

+33
-28
lines changed

2 files changed

+33
-28
lines changed

lua/neorg/modules/core/esupports/indent/module.lua

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,31 @@ module.public = {
122122

123123
return new_indent
124124
end,
125+
126+
---re-evaluate the indent expression for each line in the range, and apply the new indentation
127+
---@param buffer number
128+
---@param row_start number 0 based
129+
---@param row_end number 0 based exclusive
130+
reindent_range = function(buffer, row_start, row_end)
131+
for i = row_start, row_end - 1 do
132+
local indent_level = module.public.indentexpr(buffer, i)
133+
module.public.buffer_set_line_indent(buffer, i, indent_level)
134+
end
135+
end,
136+
137+
---Set the indent of the given line to the new value
138+
---@param buffer number
139+
---@param start_row number 0 based
140+
---@param new_indent number
141+
buffer_set_line_indent = function(buffer, start_row, new_indent)
142+
local line = vim.api.nvim_buf_get_lines(buffer, start_row, start_row + 1, true)[1]
143+
if line:match("^%s*$") then
144+
return
145+
end
146+
147+
local leading_whitespace = line:match("^%s*"):len()
148+
return vim.api.nvim_buf_set_text(buffer, start_row, 0, start_row, leading_whitespace, { (" "):rep(new_indent) })
149+
end,
125150
}
126151

127152
module.config.public = {

lua/neorg/modules/core/promo/module.lua

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,21 @@ local neorg = require("neorg.core")
2828
local modules = neorg.modules
2929

3030
local module = modules.create("core.promo")
31+
local indent
3132

3233
module.setup = function()
3334
return {
3435
success = true,
3536
requires = {
3637
"core.integrations.treesitter",
38+
"core.esupports.indent",
3739
},
3840
}
3941
end
4042

4143
module.load = function()
44+
---@type core.esupports.indent
45+
indent = module.required["core.esupports.indent"]
4246
modules.await("core.keybinds", function(keybinds)
4347
keybinds.register_keybinds(
4448
module.name,
@@ -83,30 +87,6 @@ module.private = {
8387
get_line = function(buffer, target_row)
8488
return vim.api.nvim_buf_get_lines(buffer, target_row, target_row + 1, true)[1]
8589
end,
86-
87-
buffer_set_line_indent = function(buffer, start_row, new_indent)
88-
local line = module.private.get_line(buffer, start_row)
89-
90-
if line:match("^%s*$") then
91-
return
92-
end
93-
94-
local leading_whitespace = line:match("^%s*"):len()
95-
96-
return vim.api.nvim_buf_set_text(buffer, start_row, 0, start_row, leading_whitespace, { (" "):rep(new_indent) })
97-
end,
98-
99-
reindent_range = function(buffer, row_start, row_end)
100-
local indent_module = modules.get_module("core.esupports.indent")
101-
if not indent_module then
102-
return
103-
end
104-
105-
for i = row_start, row_end - 1 do
106-
local indent_level = indent_module.indentexpr(buffer, i)
107-
module.private.buffer_set_line_indent(buffer, i, indent_level)
108-
end
109-
end,
11090
}
11191

11292
---@class core.promo
@@ -191,7 +171,7 @@ module.public = {
191171
local current_visual_indent = vim.fn.indent(row + 1)
192172
local new_indent = math.max(0, current_visual_indent + n_space_diff)
193173

194-
module.private.buffer_set_line_indent(buffer, row, new_indent)
174+
indent.buffer_set_line_indent(buffer, row, new_indent)
195175
return
196176
end
197177

@@ -290,7 +270,7 @@ module.public = {
290270
return
291271
end
292272

293-
module.private.reindent_range(buffer, indent_row_start, indent_row_end)
273+
indent.reindent_range(buffer, indent_row_start, indent_row_end)
294274
end,
295275
}
296276

@@ -312,15 +292,15 @@ module.on_event = neorg.utils.wrap_dotrepeat(function(event)
312292
for i = start_pos[1], end_pos[1] do
313293
module.public.promote_or_demote(event.buffer, "promote", i - 1, false, false)
314294
end
315-
module.private.reindent_range(event.buffer, start_pos[1], end_pos[1])
295+
indent.reindent_range(event.buffer, start_pos[1], end_pos[1])
316296
elseif event.split_type[2] == "core.promo.demote_range" then
317297
local start_pos = vim.api.nvim_buf_get_mark(event.buffer, "<")
318298
local end_pos = vim.api.nvim_buf_get_mark(event.buffer, ">")
319299

320300
for i = start_pos[1], end_pos[1] do
321301
module.public.promote_or_demote(event.buffer, "demote", i - 1, false, false)
322302
end
323-
module.private.reindent_range(event.buffer, start_pos[1], end_pos[1])
303+
indent.reindent_range(event.buffer, start_pos[1], end_pos[1])
324304
end
325305
end)
326306

0 commit comments

Comments
 (0)