Basic Functionality

Signed-off-by: Syed Daanish <syed@sixzix.com>
This commit is contained in:
2025-02-10 13:30:42 +03:00
parent 3aa31ca2e8
commit c8902137d0
2 changed files with 79 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
local M = {}
local function highlight_todo_items()
local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
for i, line in ipairs(lines) do
if line:match("^✔ ") then
vim.api.nvim_buf_add_highlight(0, -1, "TodoDoneHighlight", i - 1, 0, 3)
vim.api.nvim_buf_add_highlight(0, -1, "TodoDone", i - 1, 3, -1)
elseif line:match("^● ") then
vim.api.nvim_buf_add_highlight(0, -1, "TodoPendingHighlight", i - 1, 0, 3)
vim.api.nvim_buf_add_highlight(0, -1, "TodoPending", i - 1, 3, -1)
elseif line:match("^⚠ ") then
vim.api.nvim_buf_add_highlight(0, -1, "TodoImportantHighlight", i - 1, 0, 3)
vim.api.nvim_buf_add_highlight(0, -1, "TodoImportant", i - 1, 3, -1)
else
vim.api.nvim_buf_add_highlight(0, -1, "Normal", i - 1, 0, -1)
end
end
end
local function replace_task_symbols()
local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
for i, line in ipairs(lines) do
if line:match("^x ") then
vim.api.nvim_buf_set_text(0, i - 1, 0, i - 1, 1, { "" })
elseif line:match("^- ") then
vim.api.nvim_buf_set_text(0, i - 1, 0, i - 1, 1, { "" })
elseif line:match("^! ") then
vim.api.nvim_buf_set_text(0, i - 1, 0, i - 1, 1, { "" })
end
end
end
function M.setup()
vim.api.nvim_set_hl(0, "TodoDoneHighlight", { fg = "#00FF00", bold = true })
vim.api.nvim_set_hl(0, "TodoPendingHighlight", { fg = "#FFFF00", bold = true })
vim.api.nvim_set_hl(0, "TodoImportantHighlight", { fg = "#FF0000", bold = true })
vim.api.nvim_set_hl(0, "TodoDone", { link = "Comment" })
vim.api.nvim_set_hl(0, "TodoPending", { link = "Identifier" })
vim.api.nvim_set_hl(0, "TodoImportant", { link = "Error" })
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
pattern = "*.udi",
callback = function()
vim.bo.filetype = "udi"
vim.opt_local.conceallevel = 2
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "udi",
callback = function()
replace_task_symbols()
highlight_todo_items()
end,
})
vim.api.nvim_create_autocmd("TextChangedI", {
pattern = "*.udi",
callback = function()
replace_task_symbols()
highlight_todo_items()
end,
})
end
function M.toggle_todo()
local line = vim.api.nvim_get_current_line()
if line:match("^✔ ") then
vim.api.nvim_set_current_line("" .. line:sub(4))
elseif line:match("^● ") then
vim.api.nvim_set_current_line("" .. line:sub(4))
elseif line:match("^⚠ ") then
vim.api.nvim_set_current_line("" .. line:sub(4))
end
highlight_todo_items()
end
vim.api.nvim_set_keymap("n", "<leader>t", ":lua require('udivim').toggle_todo()<CR>", { noremap = true, silent = true })
return M