39 lines
1.0 KiB
Lua
39 lines
1.0 KiB
Lua
|
local M = {}
|
||
|
local header_regex = "^(#+) (.+)"
|
||
|
|
||
|
M.promote = function()
|
||
|
if vim.api.nvim_get_mode().mode == "n" then
|
||
|
local current_line = vim.api.nvim_get_current_line()
|
||
|
local row, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||
|
local new_line = ""
|
||
|
|
||
|
if current_line:match(header_regex) then
|
||
|
if current_line:match("^# (.+)") then
|
||
|
vim.notify("You can't promote this header anymore")
|
||
|
return
|
||
|
end
|
||
|
new_line = current_line:gsub("^#", "", 1)
|
||
|
vim.api.nvim_buf_set_lines(0, row - 1, row, true, { new_line })
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
M.demote = function()
|
||
|
if vim.api.nvim_get_mode().mode == "n" then
|
||
|
local current_line = vim.api.nvim_get_current_line()
|
||
|
local row, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||
|
local new_line = ""
|
||
|
|
||
|
if current_line:match(header_regex) then
|
||
|
if current_line:match("^###### (.+)") then
|
||
|
vim.notify("You can't demote this header anymore")
|
||
|
return
|
||
|
end
|
||
|
new_line = current_line:gsub("^#", "##", 1)
|
||
|
vim.api.nvim_buf_set_lines(0, row - 1, row, true, { new_line })
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return M
|