ted-editor
Version:
Lightweight ergonomic interactive command line task editor
165 lines (107 loc) • 4.73 kB
Markdown
## ted
Ted is the standard task editor :P
Lightweight ergonomic interactive command line task list editor
[`ed`](http://wiki.c2.com/?EdIsTheStandardTextEditor) for tasks
For the people who appreciate the simplicity of traditional TODO
files but who also has a lot of tasks and wish they were easily
taggable sortable filterable without requiring a bloated issue
tracker.
Read on to see what's different from existing command line task
managers.
## features & design choices
`ted` ..
- is an editor that works on a given directory. It has no implicit
project database.
- supports tag based categorization & filtering and priority based
ordering.
- has no configuration, no command line flags and has only around
10 commands. You can get comfortable with the whole feature set
in 15 minutes.
- stores tasks as regular files in the task directory being
edited. The directory and file structures are very simple and
VCS-friendly. Diffs will be straightforward if you track your
changes.
- is interactive. Commands are sent from inside the `ted` shell.
You don't have to repeat the `ted` command every time. There is
no non-interactive mode as `ted` is intended to be used directly
by its end power-users all the time and not by scripts.
- is intentionally stateful. It remembers the filter, order and
limit you set so you don't type them again and again.
- is all about intuitive single letter commands: c(reate), e(dit),
... You need A LOT less keystrokes to accomplish things compared
to many other command line task managers.
- is not tightly coupled to any version control or synchronization
system.
- is similar to the venerable UNIX editor `ed` (which is THE
standard editor) in some ways.
## non-features
Things that are intentionally not supported and suggested
alternatives:
- Attribution & synchronization: Use a VCS
- Assignments: Use tags like `@john`, `@jack`
- Statuses: Use tags like `!doing`, `!rejected`, `!blocked`
- Attachments: Link to files on the cloud
- Discussions, mentions, merge requests: Use email lists, email,
patches over email. I mean, what was wrong with email?
- Reporting and fancy charts: Use your UNIX-fu to parse the
indexes and pipe them to GGPlot or something. Or maybe switch to
[Taskwarrior](https://taskwarrior.org) if you really need this.
## known issues
- Written in Javascript. An implementation in a compiled language
would probably be better. Any volunteers for porting?
- Not written with performance in mind, for now. Especially the
indexing mechanism is very inefficient. That'll be addressed
sooner or later.
## usage
npm install -g ted-editor
ted myissues
## commands
**Display:**
<empty> List tasks that match the current filter
<id> Show task #<id>
t Show tag list
f Show current filter
o Show current order
l Show current limit
**Filter order limit:**
f & <t1> [<t2> ..] Set filter for all matching tags
f | <t1> [<t2> ..] Set filter for any matching tag
f / <regex> Set filter for given regex
F Reset filter
o <col1> [<col2> ..] Set column(s) to order the list by. Prefix column names with "-" for descending order
O Reset order
l <lim> Set limit
L Reset limit
**Manipulate task:**
c Create new task with system editor
c <title> Create new task immediately with the given title
e <id> Edit task with system editor
t <id> <t1> [<t2> ..] Add/remove tags to/from task. Prefix a tag with "-" to remove it.
p <id> <pri> Set task priority
a <id> Archive task
A <id> Unarchive task
d <id> Delete task completely
**Other:**
a Switch to the archives
A Switch back from the archives
h Help
q Quit
reindex Update the internal index. Trigger after external updates
## task file format
title
priority tag1 tag2 tag3 ...
all lines starting with this one are considered the task
description.
lorem ipsum dolor sit amet consectetuer adipisicing elit
another paragraph w;elkr lk asdfasdkjf asdoiufh asdjf
asdk faspdfi japdsiofh peiurhqewfk adslfhaspdoifh oadsf
- john
- paul
- george
- ringo
## index file format
{
"1":{"title":"lorem ipsum","pri":"5","tags":["test"]},
"2":{"title":"dolor sit amet","pri":"9","tags":[]},
...
}