aboutsummaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorCrony Akatsuki <crony@cronyakatsuki.xyz>2026-01-02 16:39:27 +0100
committerCrony Akatsuki <crony@cronyakatsuki.xyz>2026-01-02 16:39:27 +0100
commit475b794b98c26cc58b3f3ada624ab05bb718b4b5 (patch)
treecba74bf73c7afbcd514bfe6c0a8b3c277fd05f1f /lua
parentd83216191929b4eb4c3c7cb971c3697ae9ba9c8b (diff)
downloadnvim-475b794b98c26cc58b3f3ada624ab05bb718b4b5.zip
nvim-475b794b98c26cc58b3f3ada624ab05bb718b4b5.tar.gz
feat: add todo.txt support.
Diffstat (limited to 'lua')
-rw-r--r--lua/plugins/init.lua1
-rw-r--r--lua/plugins/todotxt.lua41
2 files changed, 42 insertions, 0 deletions
diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua
index 287cd2f..1ce2bb7 100644
--- a/lua/plugins/init.lua
+++ b/lua/plugins/init.lua
@@ -5,3 +5,4 @@ require("plugins.mini")
require("plugins.mini.init")
require("plugins.markdown")
require("plugins.conform")
+require("plugins.todotxt")
diff --git a/lua/plugins/todotxt.lua b/lua/plugins/todotxt.lua
new file mode 100644
index 0000000..7794ae3
--- /dev/null
+++ b/lua/plugins/todotxt.lua
@@ -0,0 +1,41 @@
+vim.pack.add({
+ { src = "https://github.com/phrmendes/todotxt.nvim" },
+})
+
+require("todotxt").setup({
+ todotxt = vim.env.HOME .. "/docs/sb/todo/todo.txt",
+ donetxt = vim.env.HOME .. "/docs/sb/todo/done.txt",
+ ghost_text = {
+ enable = true,
+ mappings = {
+ ["(A)"] = "now", -- High priority tasks
+ ["(B)"] = "next", -- Medium priority tasks
+ ["(C)"] = "today", -- Lower priority tasks
+ ["(D)"] = "tomorrow", -- Even lower priority
+ ["(E)"] = "this week",
+ ["(F)"] = "next week",
+ },
+ prefix = " ", -- Text prefix
+ highlight = "Comment", -- Highlight group
+ }
+})
+
+vim.filetype.add({
+ filename = {
+ ["todo.txt"] = "todotxt",
+ ["done.txt"] = "todotxt",
+ },
+})
+
+vim.keymap.set("n", "<leader>tn", "<cmd>TodoTxt new<cr>", { desc = "New todo entry" })
+vim.keymap.set("n", "<leader>tt", "<cmd>TodoTxt<cr>", { desc = "Toggle todo.txt" })
+vim.keymap.set("n", "<leader>td", "<cmd>DoneTxt<cr>", { desc = "Toggle done.txt" })
+vim.keymap.set("n", "<leader>tg", "<cmd>TodoTxt ghost<cr>", { desc = "Toggle ghost text" })
+vim.keymap.set("n", "<cr>", "<Plug>(TodoTxtToggleState)", { desc = "Toggle task state" })
+vim.keymap.set("n", "<c-c>n", "<Plug>(TodoTxtCyclePriority)", { desc = "Cycle priority" })
+vim.keymap.set("n", "<leader>tm", "<Plug>(TodoTxtMoveDone)", { desc = "Move done tasks" })
+vim.keymap.set("n", "<leader>tss", "<Plug>(TodoTxtSortTasks)", { desc = "Sort tasks (default)" })
+vim.keymap.set("n", "<leader>tsp", "<Plug>(TodoTxtSortByPriority)", { desc = "Sort by priority" })
+vim.keymap.set("n", "<leader>tsc", "<Plug>(TodoTxtSortByContext)", { desc = "Sort by context" })
+vim.keymap.set("n", "<leader>tsP", "<Plug>(TodoTxtSortByProject)", { desc = "Sort by project" })
+vim.keymap.set("n", "<leader>tsd", "<Plug>(TodoTxtSortByDueDate)", { desc = "Sort by due date" })