Code Monkey home page Code Monkey logo

toodle-o's Introduction

Toodle-O!

Plain text todo manager

icon

Plain text is simple, easily created, easy to understand, and infinitely portable. It’s also dead simple to write tools for and cut and slice anywhichway you need.

Effective Todo List Format

  1. Every Todo item starts with a special character ([], *, -, +, or #)
  2. A ‘completed’ Todo can be deleted or marked with a starting x.
  3. You can add tags :tag1, :tag2 to any Todo.
  4. Use the special tag :later to mark Todo’s to be done later.
  5. Todo’s can be indented to make for easier entry/reading. Indented Todo’s inherit the tags of it’s ‘parent’ Todo.
  6. Lines that don’t start with any todo markers are considered supporting notes or rough scribbles. Notes are associated with the previous todo item.

Example

* Write a todo list
* Buy Eggs :shopping :joes
* Butter :shopping
* Cheese :shopping
* Release Toodle-O :toodle-o
x* Write Readme :toodle-o
* Implement :toodle-o
	* Write Parser
	* Write Command-Line Interface
* :supermarket
	* Pencils
	* Chicken
* :toodle-o
Write toodle-o's command line in python because it's pretty ideal for little utilites like this.
At some point port it to the web?
	* web-version :later:

Setup

The toodle-o command-line script, by default, will work with a todo.txt file in your HOME directory. It will also look for a toodle-o.conf file in your HOME directory which can contain a list of todo files scattered across various directories.

toodle-o.conf:

[files]
./Desktop/todo.txt
./my/projects/toodle-o/todo.txt
...

toodle-o is good at understanding a variety of todo formats and importing them for use.

You can bypass the default $HOME/todo.txt and files in toodle-o.conf by providing files yourself on the command line using multiple -f flags:

$> tt -f mytodo.txt -f ../project/todo.txt ...

If you would like to simply add a file temporarily to the defaults use the +f flag instead:

$> tt +f mytodo.txt

Usage

Let’s link our toodle-o command-line script to the short form tt for easy typing in the examples below. To add a new Todo, start with a +:

$> tt + add a new todo :project
$> tt + :shopping bread

If we provide a tag it will show us the list for those particular tags (without completed (x) and :later items).

$> tt -ss :shopping
Buy Eggs
Butter
Cheese
Bread
$> tt -ss :toodle-o
Release Toodle-O
Implement Toodle-O
	Write Parser
	Write Command-Line Interface

The nested elements are indented using tabs so they can be easily piped for further processing if you only want the top level etc.

We can see more details (including later and done entries along with the file name) with the verbose tag:

$> tt -v :shopping :supermarket
TODO	(shopping,joes)	Buy Eggs
TODO	(shopping)	Butter
TODO	(shopping)	Cheese
TODO	(supermarket)	Pencils
TODO	(supermarket)	Chicken
TODO	(shopping)	Bread
TODO	(shopping)	Bacon
TODO	(supermarket)	Rice

/my/shopping/list.txt
/my/todo/list.txt

$> tt -v :toodle-o
TODO	(toodle-o)	Release Toodle-O
DONE	(toodle-o)	Write Readme
TODO	(toodle-o)	Implement Toodle-O
TODO	(toodle-o)		Write Parser
TODO	(toodle-o)		Write Command-Line Interface
NOTE	(toodle-o)	Write toodle-o's command line in python because it's pretty ideal for little utilites like this.
NOTE	(toodle-o)	At some point port it to the web?
LATR	(toodle-o)	Web Version

/my/projects/toodle-o/todo.txt

To see everything:

$> tt -v

And to find items that do not have any tags:

$> tt -ss :
Write a todo list

You can also just search for any matching word:

$> tt -ss eggs
Buy Eggs

You can search for items not matching a tag or word using ^:

$> tt -ss :shopping ^:supermarket ^eggs
Butter
Cheese
Bread
Bacon

To get the list of tags:

$> tt -t
:shopping
:supermarket
:toodle-o

To mark matching items as completed:

$> tt -x :shopping eggs
x Buy Eggs

To manually edit all matching files:

$> tt -e :shopping eggs
# opens using the $EDITOR or vim by default

Enjoy

toodle-o's People

Contributors

theproductiveprogrammer avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.