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.
		
		
		
		
		
			
		
			
				
	
	
		
			99 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Lua
		
	
| vim.keymap.set("n", "<leader>t", function() end, { desc = "+Todos" })
 | |
| 
 | |
| -- add new todo line when previous is already a todo
 | |
| 
 | |
| local function press_enter()
 | |
| 	local current_line = vim.api.nvim_get_current_line()
 | |
| 	-- 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>", press_enter, { desc = "On enter", noremap = true, expr = true })
 | |
| 
 | |
| -- function that checks if the current line starts with the string "- [ ]" or "- [x]" and toggles the x
 | |
| 
 | |
| local function toggle_todo()
 | |
| 	-- create a variable called openpattern with a pattern that matches a string that starts with any amount of spaces or tabs followed by "- [ ]"
 | |
| 	local openpattern = "^%s*%- %[[ ]%]"
 | |
| 
 | |
| 	-- create a variable called closepattern with a pattern that matches a string that starts with any amount of spaces or tabs followed by "- [x]"
 | |
| 	local closedpattern = "^%s*%- %[[x]%]"
 | |
| 
 | |
| 	-- create a variable called titleopenpattern with a pattern that matches a string that starts with "# [ ]"
 | |
| 	local titleopenpattern = "^# [ ] "
 | |
| 
 | |
| 	-- create a variable called titleclosedpattern with a pattern that matches a string that starts with "# [x]"
 | |
| 	local titleclosedpattern = "^# [x] "
 | |
| 
 | |
| 	local line = vim.api.nvim_get_current_line()
 | |
| 
 | |
| 	if string.match(line, openpattern) then
 | |
| 		line = string.gsub(line, openpattern, "- [x]")
 | |
| 		vim.api.nvim_set_current_line(line)
 | |
| 	elseif string.match(line, closedpattern) then
 | |
| 		line = string.gsub(line, closedpattern, "- [ ]")
 | |
| 		vim.api.nvim_set_current_line(line)
 | |
| 	elseif string.match(line, titleopenpattern) then
 | |
| 		line = string.gsub(line, titleopenpattern, "# [x]")
 | |
| 		vim.api.nvim_set_current_line(line)
 | |
| 	elseif string.match(line, titleclosedpattern) then
 | |
| 		line = string.gsub(line, titleclosedpattern, "# [ ]")
 | |
| 		vim.api.nvim_set_current_line(line)
 | |
| 	end
 | |
| 
 | |
| 	-- 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" })
 | |
| 
 | |
| -- 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" })
 |