Skip to content

Commit faad665

Browse files
committed
refactor!: migrate core.promo to new keybind system
1 parent cdfbe19 commit faad665

File tree

1 file changed

+45
-47
lines changed

1 file changed

+45
-47
lines changed

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

+45-47
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,12 @@ end
4343
module.load = function()
4444
---@type core.esupports.indent
4545
indent = module.required["core.esupports.indent"]
46-
modules.await("core.keybinds", function(keybinds)
47-
keybinds.register_keybinds(
48-
module.name,
49-
(function()
50-
local keys = vim.tbl_keys(module.events.subscribed["core.keybinds"])
51-
52-
for i, key in ipairs(keys) do
53-
keys[i] = key:sub(module.name:len() + 2)
54-
end
55-
56-
return keys
57-
end)()
58-
)
59-
end)
46+
vim.keymap.set("", "<Plug>(neorg.promo.promote)", module.public.promote)
47+
vim.keymap.set("", "<Plug>(neorg.promo.promote.nested)", module.public.promote_nested)
48+
vim.keymap.set("", "<Plug>(neorg.promo.promote.range)", module.public.promote_range)
49+
vim.keymap.set("", "<Plug>(neorg.promo.demote)", module.public.demote)
50+
vim.keymap.set("", "<Plug>(neorg.promo.demote.nested)", module.public.demote_nested)
51+
vim.keymap.set("", "<Plug>(neorg.promo.demote.range)", module.public.demote_range)
6052
end
6153

6254
module.private = {
@@ -87,10 +79,7 @@ module.private = {
8779
get_line = function(buffer, target_row)
8880
return vim.api.nvim_buf_get_lines(buffer, target_row, target_row + 1, true)[1]
8981
end,
90-
}
9182

92-
---@class core.promo
93-
module.public = {
9483
get_promotable_node_prefix = function(node)
9584
for _, data in pairs(module.private.types) do
9685
if node:type():match(data.pattern) then
@@ -161,7 +150,7 @@ module.public = {
161150
return
162151
end
163152

164-
local root_prefix_char = module.public.get_promotable_node_prefix(root_node)
153+
local root_prefix_char = module.private.get_promotable_node_prefix(root_node)
165154
if not root_prefix_char then
166155
local n_space_diff = vim.bo.shiftwidth * action_count
167156
if mode == "demote" then
@@ -251,7 +240,7 @@ module.public = {
251240
local apply_recursive = root_level < HEADING_VERYLOW_LEVEL and apply_recursive_normal or apply_recursive_verylow
252241

253242
apply_recursive(root_node, function(node)
254-
return module.public.get_promotable_node_prefix(node) == root_prefix_char
243+
return module.private.get_promotable_node_prefix(node) == root_prefix_char
255244
end, function(node)
256245
indent_targets[#indent_targets + 1] = node
257246
end)
@@ -274,43 +263,52 @@ module.public = {
274263
end,
275264
}
276265

277-
module.on_event = neorg.utils.wrap_dotrepeat(function(event)
278-
local row = event.cursor_position[1] - 1
266+
---@class core.promo
267+
module.public = {
268+
promote = function()
269+
local buffer = vim.api.nvim_get_current_buf()
270+
local row = vim.api.nvim_win_get_cursor(0)[1] - 1
279271

280-
if event.split_type[1] ~= "core.keybinds" then
281-
return
282-
end
272+
module.private.promote_or_demote(buffer, "promote", row, true, false)
273+
end,
274+
promote_nested = function()
275+
local buffer = vim.api.nvim_get_current_buf()
276+
local row = vim.api.nvim_win_get_cursor(0)[1] - 1
283277

284-
if event.split_type[2] == "core.promo.promote" then
285-
module.public.promote_or_demote(event.buffer, "promote", row, true, event.content[1] == "nested")
286-
elseif event.split_type[2] == "core.promo.demote" then
287-
module.public.promote_or_demote(event.buffer, "demote", row, true, event.content[1] == "nested")
288-
elseif event.split_type[2] == "core.promo.promote_range" then
289-
local start_pos = vim.api.nvim_buf_get_mark(event.buffer, "<")
290-
local end_pos = vim.api.nvim_buf_get_mark(event.buffer, ">")
278+
module.private.promote_or_demote(buffer, "promote", row, true, true)
279+
end,
280+
promote_range = function()
281+
local buffer = vim.api.nvim_get_current_buf()
282+
local start_pos = vim.api.nvim_buf_get_mark(buffer, "<")
283+
local end_pos = vim.api.nvim_buf_get_mark(buffer, ">")
291284

292285
for i = start_pos[1], end_pos[1] do
293-
module.public.promote_or_demote(event.buffer, "promote", i - 1, false, false)
286+
module.private.promote_or_demote(buffer, "promote", i - 1, false, false)
294287
end
295-
indent.reindent_range(event.buffer, start_pos[1], end_pos[1])
296-
elseif event.split_type[2] == "core.promo.demote_range" then
297-
local start_pos = vim.api.nvim_buf_get_mark(event.buffer, "<")
298-
local end_pos = vim.api.nvim_buf_get_mark(event.buffer, ">")
288+
indent.reindent_range(buffer, start_pos[1], end_pos[1])
289+
end,
290+
demote = function()
291+
local buffer = vim.api.nvim_get_current_buf()
292+
local row = vim.api.nvim_win_get_cursor(0)[1] - 1
293+
294+
module.private.promote_or_demote(buffer, "demote", row, true, false)
295+
end,
296+
demote_nested = function()
297+
local buffer = vim.api.nvim_get_current_buf()
298+
local row = vim.api.nvim_win_get_cursor(0)[1] - 1
299+
300+
module.private.promote_or_demote(buffer, "demote", row, true, true)
301+
end,
302+
demote_range = function()
303+
local buffer = vim.api.nvim_get_current_buf()
304+
local start_pos = vim.api.nvim_buf_get_mark(buffer, "<")
305+
local end_pos = vim.api.nvim_buf_get_mark(buffer, ">")
299306

300307
for i = start_pos[1], end_pos[1] do
301-
module.public.promote_or_demote(event.buffer, "demote", i - 1, false, false)
308+
module.private.promote_or_demote(buffer, "demote", i - 1, false, false)
302309
end
303-
indent.reindent_range(event.buffer, start_pos[1], end_pos[1])
310+
indent.reindent_range(buffer, start_pos[1], end_pos[1])
304311
end
305-
end)
306-
307-
module.events.subscribed = {
308-
["core.keybinds"] = {
309-
["core.promo.promote"] = true,
310-
["core.promo.demote"] = true,
311-
["core.promo.promote_range"] = true,
312-
["core.promo.demote_range"] = true,
313-
},
314312
}
315313

316314
return module

0 commit comments

Comments
 (0)