| Crates.io | patto |
| lib.rs | patto |
| version | 0.3.1 |
| created_at | 2024-11-23 10:43:40.061666+00 |
| updated_at | 2026-01-21 02:22:03.693738+00 |
| description | 🪽 Yet another plain text format for quick note taking and task management |
| homepage | https://github.com/ompugao/patto |
| repository | https://github.com/ompugao/patto |
| max_upload_size | |
| id | 1458380 |
| size | 3,673,637 |
A simple plain-text format for note-taking, outlining, and task management. Inspired by Cosense/Scrapbox, powered by LSP.
A line-oriented text format where newlines create lines and tabs create nesting. Perfect for:
[note name] with backlinks and 2-hop visualization!2024-12-31 or {@task due=2024-12-31} (sorted by Overdue, Today, This Week)Plain text
Tab to nest
Tab twice for deeper nesting
[* bold] [/ italic] [` code `]
[other note] Link to note
[note#anchor] Link to section
[https://example.com Title] External link
!2024-12-31 Todo with deadline
*2024-12-31 In progress
-2024-12-31 Done
[@code python]
print("hello")
[@quote]
Quoted text
[@table]
header col1 col2
row1 a b
[@math]
\sum_{n=0}^{10} = 55
Install with cargo:
cargo install patto
Or download from: GitHub Releases
Plug 'neovim/nvim-lspconfig'
Plug 'hrsh7th/nvim-cmp'
Plug 'ompugao/patto'
lua << EOF
require('patto')
vim.lsp.config('patto_lsp', {})
vim.lsp.config('patto_preview', {})
vim.lsp.enable({'patto_lsp', 'patto_preview'})
EOF
Plug 'prabirshrestha/vim-lsp'
Plug 'ompugao/patto', {'for': 'patto'}
Install from VS Marketplace
.pn file[ for link completion, @ for blocks:LspPattoTasks to view all tasks (Vim/Neovim)Commands: :LspPattoTasks or :Trouble patto_tasks (trouble.nvim)
$ patto-markdown-importer -f note.md -o note.pn
$ patto-markdown-importer -d path/to/markdown_dir -o path/to/patto_dir # batch mode
$ patto-markdown-renderer -f note.pn -o note.md
$ patto-markdown-renderer -f note.pn --flavor obsidian # autodetect [[wikilinks]]
$ patto-markdown-renderer -f note.pn --flavor github
Build with --features zotero (enabled by default) and configure ~/.config/patto/patto-lsp.toml:
[zotero]
user_id = "1234567"
api_key = "your_key"
endpoint = "http://127.0.0.1:23119/api/" # for communication with zotero on localhost
Sync task deadlines to Google Calendar with patto-gcal-sync - a separate tool that keeps your Patto tasks in sync with Google Calendar events.
Why not Markdown? Different parsers behave inconsistently (e.g., code fences in lists work in GitHub but not Obsidian).
print('hello')
Templates? Use your editor's snippet engine (LuaSnip, vim-vsnip, etc.)
CLI task search:
rg --vimgrep '.*@task.*todo' . | \
awk '{match($0, /due=([0-9:\-T]+)/, m); print (RLENGTH>0 ? m[1] : "9999-99-99"), $0}' | \
sort | cut -d' ' -f2-
v0.3.1 - Add markdown import support, nested quotes, anchor renaming, and fix tab indentation handling
v0.3.0 - Complete Markdown export overhaul with 72 new tests
v0.2.10 - Bump nextjs
v0.2.9 - Minor fix
v0.2.8 - Zotero integration
v0.2.7 - Real-time preview without saving
v0.2.6 - Enhanced diagnostic messages, Improved neovim integration
v0.2.5 - Comprehensive tests for lsp server added
v0.2.4 - Lsp Renaming Support
v0.2.3 - Minor fix of vscode extension
v0.2.2 - VS Code extension, semantic highlighting
v0.2.0 - Repository system, LSP scanning, trouble.nvim integration