43
43
module .load = function ()
44
44
--- @type core.esupports.indent
45
45
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 )
60
52
end
61
53
62
54
module .private = {
@@ -87,10 +79,7 @@ module.private = {
87
79
get_line = function (buffer , target_row )
88
80
return vim .api .nvim_buf_get_lines (buffer , target_row , target_row + 1 , true )[1 ]
89
81
end ,
90
- }
91
82
92
- --- @class core.promo
93
- module .public = {
94
83
get_promotable_node_prefix = function (node )
95
84
for _ , data in pairs (module .private .types ) do
96
85
if node :type ():match (data .pattern ) then
@@ -161,7 +150,7 @@ module.public = {
161
150
return
162
151
end
163
152
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 )
165
154
if not root_prefix_char then
166
155
local n_space_diff = vim .bo .shiftwidth * action_count
167
156
if mode == " demote" then
@@ -251,7 +240,7 @@ module.public = {
251
240
local apply_recursive = root_level < HEADING_VERYLOW_LEVEL and apply_recursive_normal or apply_recursive_verylow
252
241
253
242
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
255
244
end , function (node )
256
245
indent_targets [# indent_targets + 1 ] = node
257
246
end )
@@ -274,43 +263,52 @@ module.public = {
274
263
end ,
275
264
}
276
265
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
279
271
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
283
277
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 , " >" )
291
284
292
285
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 )
294
287
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 , " >" )
299
306
300
307
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 )
302
309
end
303
- indent .reindent_range (event . buffer , start_pos [1 ], end_pos [1 ])
310
+ indent .reindent_range (buffer , start_pos [1 ], end_pos [1 ])
304
311
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
- },
314
312
}
315
313
316
314
return module
0 commit comments