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

1 year ago
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()
1 year ago
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 = false, expr = true })
1 year ago
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" })
1 year ago
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" })