You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.7 KiB
Lua
77 lines
2.7 KiB
Lua
print("primer keymap")
|
|
|
|
vim.keymap.set("n", "<leader>t", function() end, { desc = "+Todos" })
|
|
|
|
-- add new todo line when previous is already a todo
|
|
|
|
local function on_enter()
|
|
local current_line = vim.api.nvim_get_current_line()
|
|
print("entro en onenter")
|
|
-- Check if the current line matches the pattern
|
|
local pattern = "^%- %[[ x]%] .*$"
|
|
local match = string.match(current_line, pattern)
|
|
|
|
if match then
|
|
if string.len(current_line) >= 7 then
|
|
vim.api.nvim_feedkeys("\n- [ ] ", "n", true)
|
|
else
|
|
-- go to normal mode before removing the content of the line
|
|
vim.api.nvim_feedkeys(vim.api.nvim_eval('"\\<esc>"'), "n", true)
|
|
vim.api.nvim_feedkeys("_", "n", true)
|
|
vim.api.nvim_feedkeys("C", "n", true)
|
|
vim.api.nvim_feedkeys("\n", "n", true)
|
|
-- vim.api.nvim_set_current_line("")
|
|
end
|
|
else
|
|
vim.api.nvim_feedkeys("\n", "n", true)
|
|
end
|
|
end
|
|
vim.keymap.set("i", "<CR>", on_enter, { desc = "On enter", noremap = true, expr = true })
|
|
|
|
print("segundo keymap")
|
|
|
|
-- function that checks if the current line starts with the string "- [ ]" or "- [x]" and toggles the x
|
|
local function toggle_todo()
|
|
local line = vim.api.nvim_get_current_line()
|
|
if string.sub(line, 1, 5) == "- [ ]" then
|
|
line = string.sub(line, 6, -1)
|
|
line = "- [x]" .. line
|
|
vim.api.nvim_set_current_line(line)
|
|
elseif string.sub(line, 1, 5) == "- [x]" then
|
|
line = string.sub(line, 6, -1)
|
|
line = "- [ ]" .. line
|
|
vim.api.nvim_set_current_line(line)
|
|
elseif string.sub(line, 1, 5) == "# [ ]" then
|
|
line = string.sub(line, 6, -1)
|
|
line = "# [x]" .. line
|
|
vim.api.nvim_set_current_line(line)
|
|
elseif string.sub(line, 1, 5) == "# [x]" then
|
|
line = string.sub(line, 6, -1)
|
|
line = "# [ ]" .. line
|
|
vim.api.nvim_set_current_line(line)
|
|
end
|
|
end
|
|
vim.keymap.set("n", "<leader>tt", toggle_todo, { desc = "Toggle todo" })
|
|
|
|
print("tercero")
|
|
-- function that checks if the current line doesn't start with the string "- [ ] " and, if it doesn't, adds the string at the beginning of the line
|
|
local function add_todo()
|
|
local line = vim.api.nvim_get_current_line()
|
|
if string.sub(line, 1, 5) ~= "- [ ] " then
|
|
line = "- [ ] " .. line
|
|
vim.api.nvim_set_current_line(line)
|
|
vim.api.nvim_feedkeys("A", "n", true)
|
|
end
|
|
end
|
|
vim.keymap.set("n", "<leader>ta", add_todo, { desc = "Add todo" })
|
|
|
|
-- function that checks if the current line starts with the string "- [ ]" or "- [x]" and, if it does, removes that string from the line
|
|
local function remove_todo()
|
|
local line = vim.api.nvim_get_current_line()
|
|
if string.sub(line, 1, 6) == "- [ ] " or string.sub(line, 1, 6) == "- [x] " then
|
|
line = string.sub(line, 7, -1)
|
|
vim.api.nvim_set_current_line(line)
|
|
end
|
|
end
|
|
vim.keymap.set("n", "<leader>td", remove_todo, { desc = "Remove todo" })
|