phrmendes/todotxt.nvim

github github
note-taking
stars 24
issues 1
subscribers 1
forks 3
CREATED

UPDATED


todotxt.nvim

A lua version of todotxt.vim.

Installation

Using mini.deps:

MiniDeps.now(function()
  MiniDeps.add({ source = "phrmendes/todotxt.nvim" })

  require("todotxt").setup({
    todotxt = vim.env.HOME .. "/Documents/notes/todo.txt",
    donetxt = vim.env.HOME .. "/Documents/notes/done.txt",
    create_commands = true,
  })
end)

Using lazy.nvim:

return {
  "phrmendes/todotxt.nvim",
  cmd = { "TodoTxt", "DoneTxt" },
  opts = {
    todotxt = "path/to/the/todo.txt",
    donetxt = "path/to/the/done.txt",
  },
}

Suggested keybindings:

vim.keymap.set("n", "<leader>tn", function() require("todotxt").capture_todo() end, {
  desc = "New entry"
})

vim.keymap.set("n", "<leader>tt", function() require("todotxt").toggle_todotxt() end, {
  desc = "Open"
})

vim.keymap.set("n", "<c-c>n", function() require("todotxt").cycle_priority() end, {
  desc = "todo.txt: cycle priority",
})

vim.keymap.set("n", "<cr>", function() require("todotxt").toggle_todo_state() end, {
  desc = "todo.txt: toggle task state",
})

vim.keymap.set("n", "<leader>td", function() require("todotxt").move_done_tasks() end, {
  desc = "Move to done.txt",
})

vim.keymap.set("n", "<leader>tsd", function() require("todotxt").sort_tasks_by_due_date() end, {
  desc = "By due:date",
})

vim.keymap.set("n", "<leader>tsP", function() require("todotxt").sort_tasks_by_priority() end, {
  desc = "By (priority)",
})

vim.keymap.set("n", "<leader>tsc", function() require("todotxt").sort_tasks_by_context() end, {
  desc = "By @context",
})

vim.keymap.set("n", "<leader>tsp", function() require("todotxt").sort_tasks_by_project() end, {
  desc = "By +project",
})

vim.keymap.set("n", "<leader>tss", function() require("todotxt").sort_tasks() end, {
  desc = "Default"
})

This plugin works without dependencies, but for enhanced functionality (like syntax highlighting), the nvim-treesitter plugin with the todotxt parser is recommended:

require("nvim-treesitter.configs").setup({
  ensure_installed = { "todotxt" },
  highlight = { enable = true },
})

The default path for todo.txt is ~/Documents/todo.txt. Check the help file for more information.

References