Yet another todo app.
A [very] simple todo list management cli tool for developers, with an optional gui. The fastest way I've found to go from needing to write something quickly (i.e during a meeting) to having it written down.
- Simple GUI
- CLI for efficiency
- Local Persistence Option
- Soft Delete Done Items
- Permanent Deletion (Drap-n-drop to trash bin)
- Todo Language & LSP
- Remind Command: /r (Desktop Notifications)
- Remote Persistence Option
curl -fsSL https://raw.githubusercontent.com/Gnarus-G/mynd/main/install.sh | sh
This depends on you having installed bun and rust; git
as well, but you
probably already have that. Lastly, importantly, system prerequisites for tauri.
Find the executables in the releases.
At any point you can pull up your terminal and add a todo item like so.
todo "todo message"
or, to launch your default editor [$EDITOR].
todo
Note: This option [editor] is only viable with the lsp integration.
Start up the GUI.
todo gui
Or just call mynd
directly, which is what todo gui
does.
Very convenient when your manager is rapping requirements at you during a meeting.
Usage: todo [MESSAGE] [COMMAND]
Commands:
done Mark one or more todo items as done
rm Delete a todo item, regardless of if it's done or not
ls List all todos that aren't done
gui Launch the GUI (mynd). Assuming it's in the path
import Read and save todos from a given file
edit Edit the todo list in your default editor ($EDITOR) [default]
dump Dump all todos as json
config Manage global configuration values
lsp Start the language server
help Print this message or the help of the given subcommand(s)
Arguments:
[MESSAGE] What to do
Options:
-h, --help Print help
-V, --version Print version
There is a treesitter grammar for the todo
syntax.
To setup syntax Highlighting in Neovim, see tree-sitter-todolang
I doubt this language server will ever land into neovim/nvim-lspconfig
, so here's an example
of my lsp config setup.
local nvim_lsp = require("lspconfig");
local configs = require 'lspconfig.configs'
if not configs.todols then
configs.todols = {
default_config = {
cmd = { "todo", "lsp" },
filetypes = { "todolang" },
},
}
end
nvim_lsp.todols.setup({
on_attach = on_attach, --[[your on_attach function goes here]]
single_file_support = true,
--[[ capabilities = ... -- your capabilities here ]]
})
For codelens support in Neovim; Set it up so the codelenses refresh often, and have a convenient shortcut for running codelenses.
local codelens_augroup = vim.api.nvim_create_augroup("todols:codeLenses", { clear = true })
vim.api.nvim_create_autocmd('LspAttach', {
desc = 'Sets up todols codelens autocommands',
pattern = { "*.td", "*.todo" },
group = codelens_augroup,
callback = function(event)
vim.api.nvim_create_autocmd({ 'CursorHold', 'BufEnter', 'InsertLeave' }, {
group = codelens_augroup,
buffer = event.buf,
callback = function()
vim.lsp.codelens.refresh({ bufnr = event.buf })
end
})
vim.api.nvim_create_autocmd('LspDetach', {
group = codelens_augroup,
buffer = event.buf,
callback = function(e)
vim.lsp.codelens.clear(e.data.client_id, e.buf)
end
})
-- If this action (codelens.run) is not already bound to a key.
-- i.e you don't already a keymap for running codelenses
vim.keymap.set('n', '<leader>lr', vim.lsp.codelens.run, { buffer = event.buf, remap = false })
end
})
https://github.com/tauri-apps/tauri-docs/blob/8cdc0505ffb9e78be768a0216bd91980306206a5/docs/guides/distribution/sign-android.md neovim/neovim#13165 https://github.com/ray-x/navigator.lua/blob/master/lua/navigator/lspwrapper.lua#L122