Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
devtodo(1)		       Programming utility		      devtodo(1)

NAME
     todo - a reminder/task program aimed at developers

SYNPOSIS
     todo [<options>]
	    With no options, displays the items in the current directory.

     tda [-p <priority>] [-g <index>] [<text>]
	    Add a new item, optionally grafting it as a child of the given item.

     tde <index>
	    Edit the given item.

     tdr <indices>
	    Remove the given items.

     tdd <indices>
	    Mark the specified items as being done.

     tdl [-g <index>] <database>
	    Link the specified devtodo database into the current one, optionally
	    grafting it as a child of the specified index.

DESCRIPTION
     todo  is a program aimed specifically at programmers (but usable by anybody
     at the terminal) to aid in day-to-day development.

     It maintains a list of items that have yet to be completed. This allows the
     programmer to track outstanding bugs or items that  need  to  be  completed
     with very little effort.

     Items  can be prioritised and can also be displayed in a hierarchy, so that
     one item may depend on another.

     With the use of some small shell scripts (scripts.* in the doc directory of
     the source distribution), todo can also display the outstanding items in  a
     directory as you change into it. So, for example, if you cd into the source
     directory	for todo itself you should see a list of outstanding items...un-
     less all of the bugs have been fixed ;).

OPTIONS
     Options can have both a long and a short form.

     Short options can be combined into one argument by using a hyphen	followed
     by  a  string of short options. Parameters of short options can also be ap-
     pended to this string.

     -v, --verbose
	    Display verbosely

     -a, --add [<text>]
	    Add a note (will prompt for a note if one is not supplied).

     -g, --graft <index>
	    In conjunction with --add or --link, graft the new item to the spec-
	    ified item.

     -l, --link <database>
	    Link the specified todo file into the  body  of  this  one.  If  the
	    linked  database  has  a title set, this will be used as the body of
	    the linking item otherwise the directory name of the linked database
	    will be used. Use --remove (or tdr) to  remove  linked  databases  -
	    this does not remove the database itself, only the link.

     -R,--reparent <index>[,<index>]
	    Change  the parent of the first item index to the second item index.
	    If no second index is given the item is reparented to  the	root  of
	    the tree.

     -p, --priority <priority>
	    In	conjunction  with  --add  or --edit, set the priority (default |
	    veryhigh | high | medium | low | verylow)

     -e, --edit <index>
	    Edit the note that is indexed by the given number.

     --remove <indices>
	    Remove the note indexed by the given numbers,  including  any  chil-
	    dren.

     -d, --done <indices>
	    Mark the specified notes (and their children) as done.

     -D, --not-done <indices>
	    Mark the specified notes (and all children) as not done.

     --global-database <file>
	    Specify the database to use if either the -G or --global options are
	    specified.

     -G, --global
	    Force  todo to use the database specified with --global-database. If
	    this is placed in your ~/.todorc it will  force  todo  to  use  that
	    database to the exclusion of all others.

     --database <file>
	    Change the database from whatever the default is (typically '.todo')
	    to the file specified.

     -T, --TODO
	    Generate a typical TODO output text file from a Todo DB.

     -A, --all
	    Shortcut for the filter '+done,+children' to show all notes.

     -f, --filter <filter>
	    Display only those notes that pass the filter. Please refer the sec-
	    tion FILTERS for more information.

     --colour <colours>
	    Override  default colours of todo items. Please refer to the section
	    COLOUR for more information.

     --force-colour
	    Force use of colour even when not outputting to a TTY. This is  use-
	    ful when piping to less(1) -R.

     --mono
	    Remove all ANSI escape sequences from output - useful for colour im-
	    paired terminals.

     --help
	    Display this help.

     --version
	    Display version of ToDo.

     --title [<text>]
	    Set the title of this directory's todo notes.

     --date-format <format>
	    Format  the display of time values. The format is that used by strf-
	    time(3). The default format is '%c'. This option is  best  specified
	    in the ~/.todorc.

     --format <identifier>=<format>
	    Specify  the  formatting of output. Please refer to the section FOR-
	    MATTING for more information.

     --use-format <builtin>=<identifier>
	    Use the format  string  identified	by  <identifier>  (defined  with
	    --format)  as  the	format	string	to  use when formatting with the
	    builtin format <builtin>.

     --sort <expression>
	    Sort the database with the specified expression. Refer to  the  sec-
	    tion SORTING for more detailed information.

     --paranoid
	    Be paranoid about some settings, including permissions.

     --database-loaders <loader list>
	    Try  the  database formats in the given order. Valid formats are xml
	    and binary. eg. todo --database-loaders binary,xml. The default for-
	    mat is XML.

     --backup [<n>]
	    Backup the database up to <n> times, just before it is  written  to.
	    If <n> is not specified, one backup will be made. The filenames used
	    to	store the backups are the default database name with their revi-
	    sion appended like so: .todo.1, .todo.2, etc. To actually use one of
	    these backups, you can either mv  it  to  .todo  or  use  --database
	    .todo.<n> to explicitly specify its use.

     -s, --summary
	    Toggle "summary" mode, where long items are truncated to one line.

     -c, --comment
	    Edit or show comments respectively.

     --timeout [<time>]
	    If <time> is specified, the timeout between database displays is set
	    to	this number of seconds. If no <time> is specified, the behaviour
	    is to display the database only if it has not been displayed for the
	    number of seconds specified by --timeout with the <time> given.  eg.
	    todo  --timeout 10 --timeout would only display the database at most
	    once every 10 seconds. Putting a timeout 10 in your ~/.todorc  is  a
	    good  option, then the --timeout in the doc/scripts.* will mean that
	    the database won't be displayed every time you cd into a directory.

     --purge [<days-old>]
	    Purge all completed items older than <days-old>.  If  <days-old>  is
	    omitted, all completed records are purged.

PRIORITIES
     Priorities can be specified symbolically using the words default, veryhigh,
     high, medium, low and verylow.

     The  default  priority  has special meaning in that it will use the default
     priority for any action. This means that when editing an existing item, its
     priority is preserved; when creating a new item, the priority will  be  set
     to  medium; when grafting a new item, its priority will be that of its par-
     ent. DevTodo will not prompt for priority if this is specified, making it a
     handy feature for your todorc. As with all options,  the  priority  can  be
     overridden on the command line.

FILTERS
     Filters  are  comprised  of  a list of expressions used to define the notes
     that are displayed.

     The general format of a filter expression is:

     ([-|=|+](all|children|done|<index>|<priority>)) | (/<search expression>)

     Generally, if a filter expression is prefixed with a '-' it will  not  dis-
     play  items  that match the expression, if prefixed with a '+' it will dis-
     play items that match this expression in addition to others, or if prefixed
     with a '=' (or no prefix at all) it will  display	only  those  items  that
     match the expression. Note that this will only search items not excluded by
     other  filters,  so to search the entire database you will have to do some-
     thing like: todo --filter all,/some-search-string.

     The second form of filter expression is used for searching for  text  in  a
     database.	<search  expression>  is  a  regular expression which is matched
     against the text body of each item.

     Filter atoms are filtered in order by done state, priority, then search. So
     first items that do not match the "done"  filter  will  be  excluded,  then
     those that do not match the priority filter, and so on.

     The expressions in detail:

     all    Forces  all  items to be displayed. The various prefixes have no ef-
	    fect on this expression.

     children
	    Collapse or expand child items. If the '-' prefix is  present  chil-
	    dren are collapsed, otherwise children are displayed.

     done   Filter on whether an item is completed or not.

     <index>
	    Note  indices  are	specified  as  numbers.  Ranges can be given ala
	    '1.2.10-20'.

     <priority>
	    Priorities are specified as described in the PRIORITIES  section.  A
	    prefix  of	'-'  will display all items with priorities less than or
	    equal to the given priority. With a '+' prefix, all items with  pri-
	    orities  greater  than  or equal to the given priority are shown. If
	    '=' or no prefix is given, only items with	the  specified	priority
	    are displayed.

     Examples:

     todo --filter done,-children,+low

     This will display only those items that are done and have a priority of low
     or higher. In addition, children will be collapsed.

     todo /[Tt]he

     Display  only those items with the word 'the' in them, where the first let-
     ter can be lower or upper case. It may be necessary to quote the search ex-
     pression to ensure the shell does not interpret them.

FORMATTING
     The output of todo can be changed to be more to  your  liking  by	defining
     your  own	formatting  strings.  These strings are similar to those used in
     printf(3) and strftime(3).

     The following examples, which can be placed in ~/.todorc,	will  mimic  the
     default behaviour:

     # Display in default format
     format display=%i%[info]%f%2n.%[priority]%T

     # Display in default format
     format generated=%2i-%T%2i  (added %d, priority %p)\n\n

     There are four seperate format options: display, generated, verbose-display
     and  verbose-generated.  The latter two are used to format their respective
     text when --verbose is specified as an argument to todo.

     In addition, users can create their own format strings by simply passing  a
     different	identifier  to	format.  This  can  then  be  enabled  by  using
     --use-format. eg.

     format  full-report=%i%[info]%f%2n.%[priority]%+1T%+1i%[info]Added:  %[nor-
     mal]%c    %[info]Completed:  %[normal]%d\n%+1i%[info]Duration:  %[normal]%D
     %[info]Priority: %[normal]%p\n\n
     # Override the display format to use "full-report".
     use-format display=full-report

     The various flags that are available are:

     %<n>>  The > flag sets the number of spaces <n> to use for all  future  in-
	    denting.

     %[+|-][<n>]i
	    Indent  to	depth of current item. <n> specifies the depth to indent
	    to. If <n> is ommitted, the current level is used.	Relative  values
	    can  be  used.  eg. '%+1T' would indent to one level higher than the
	    current indentation level.

     %[+|-][<n>]T
	    Display the text of the item, wrapped at 80 characters and	indented
	    to	the  specified level. Semantics of <n> are as with %i. Note that
	    wrapped text automatically adds a '0 at the end of the text, whereas
	    %t will not.

     %t     Unwrapped, unformatted text of the item.

     %s     Summary text (ie. one line only, equivalent to --summary).

     %p     The priority level of the current item.

     %c     The current items creation date, formatted according to  --date-for-
	    mat.

     %d     The  date  when  the item was marked as done, formatted according to
	    --date-format.

     %D     The duration of the item, formatted according to --date-format.

     %[<n>]n
	    The index number of the current item. The optional numeric value <n>
	    specifies the number of characters the  number  should  occupy.  The
	    number  is padded out with spaces so as to fill this number of char-
	    acters.

     %f     The state flag of the current item. The displayed  values  for  this
	    flag  are  '+'  means children, '-' means done', '*' means done with
	    children.

     %F     The human readable state flag of the  current  item.  The  displayed
	    values  for  this  flag  are  'children', 'done' means done', 'done,
	    children' and 'open'.

     %[<colour>]
	    Colours can be specified  with  this  flag.  The  valid  values  for
	    <colour> are: verylow, low, medium, high, veryhigh, title, info, and
	    priority. These are fairly self explanatory, except priority changes
	    to the current items priority colour. eg. %[priority]

     Please  note  that  when indenting, you will typically want to use a prefix
     value of '+1' with %T. ie. %+1T. This forces the  text  to  indent  to  one
     level deeper than the current level, making it sit away from any other for-
     matting you may have used.

SORTING
     The  display  of  items in the database can be sorted on a variety of keys.
     Given a series of keys todo sorts on each successive key, continuing to the
     next only if the previous key comparison was equal. For example:

     todo --sort -done,text

     This will sort firstly by whether an item	is  completed  and  secondly  by
     their  text. This effectively groups items into two blocks - those that are
     complete and those that aren't.

     The keys that are available are created, completed, text,	priority,  dura-
     tion,  none and done. Each key, except none can be prefixed with a - to re-
     verse its default order and multiple keys must be seperated with a ,.

     If multiple --sort parameters are encountered the last one  is  used.  This
     means  that  a  'sort'  entry in ~/.todorc will be overridden by any on the
     command line.

INDICES
     Indicies are used as options to a variety of command line arguments. Multi-
     ple note indices are seperated with commas (spaces are not allowed).  Chil-
     dren are scoped using a '.'.

     For example, given the following notes:

     1. Do man pages
	1. Make them more beautiful.
	2. Make HTML documentation as well.

     The second sub-item would be represented like this: 1.2

     The wildcard '*' can be used to represent all children of a node. eg. 1.*

     Ranges  of  notes can be specified by using '<a>-<b>'. For example, to mark
     notes 10.1.2, 10.1.3 and 10.3.4 as done, you could do: todo --done 10.1.2-4

COLOUR
     Various items can be colourised. Items that can are veryhigh, high, medium,
     low, verylow, title and info. info is used for displaying item numbers  and
     general information.

     These  items  can	be set to one of eight colours. Those colours are black,
     red, green, yellow, blue, magenta, cyan, white and default. The colour  de-
     fault is used to specify the default foreground terminal colour.

     Colours are specified like so:

     <item>=[+]<colour>

     If  the optional + in this expression is used it will cause the item to be-
     come bold.

     For example, a line in your ~/.todorc might look like:

     colour    medium=+white

     Which would make medium text bold white.

TODORC
     todo can load options from a number of resource files. The order  in  which
     these are parsed is as follows:

     1.  The  file specified in the environment variable TODORC or, if that does
     not exist, /usr/local/etc/todorc.
     2. ~/.todorc

     Options are cumulative in that those loaded from $TODORC will be overridden
     or added to by those in ~/.todorc.

     These options are specified as key/value pairs, one per line The key is the
     long name of a command line argument and the value is the parameter to that
     argument,if any. In addition, environment variables are expanded.

     For example, the --filter command line argument accepts a parameter that is
     a filter expression. A default filter could be added to the ~/.todorc  file
     like so:

     # Don't display child items by default
     filter -children

     The  only	difference between options specified in the rc file and those on
     the command line is that options in the rc file are not prefixed by --.

     In addition, there are two commands available in the RC file that	are  not
     available on the command line. They are:

     The  first command, on, is used to conditionally add specific commands. The
     format of this command is: on <event> <command> [<arguments>]. Valid events
     are add, remove, view, edit,  generate,  done,  notdone,  title,  reparent,
     load,  save,  link, create and purge. Multiple commands can be passed to on
     by enclosing them in braces (whitespace is required between  tokens).  Full
     example below.

     The  second  command is exec <shell command>. This command will execute the
     argument it is given in a shell. The environment variable $TODODB	contains
     the filename of the current database. eg. exec chmod 600 $TODODB

     There is an example rc file in the doc subdirectory of the source distribu-
     tion.

EXAMPLES
     To display any outstanding items in the current directory, simply type:

	  todo

     To remove notes 1, 2 and 4:

	  todo --remove 1,2,4

     To display ALL items:

	  todo all

     To display only the top-level items and not their children:

	  todo -children

     (even though -children is not a valid argument, this works because todo in-
     terprets any command line arguments it doesn't recognise as being part of a
     filter expression)

     A	more  complex  example.  This adds a new item, with the text of the item
     specified on the command line, with a priority of high as a  child  of  the
     third child of the second item (if that makes any sense):

	  todo -a "Fix the man page" -p high -g 2.3

     This  is  an  example of how to use the TODO feature of todo. It makes todo
     generate a new TODO file from the information stored in the database.  This
     particular example outputs all items to the TODO file, even those marked as
     done.

	  todo --filter all --TODO

     This example shows a nice use of the event triggers. When a new database is
     created it will force its permissions to 0600.

	  on create {
	       verbose
	       exec chmod 600 .todo
	  }

FILES
      .todo
	    Items are stored as XML in this file.

     /usr/local/etc/todorc
	    Default  options  can be specified in this file. Please refer to the
	    section TODORC for more information.

     ~/.todorc
	    User-specific options are specified in this file.  Please  refer  to
	    the section TODORC for more information.

AUTHORS
     Alec Thomas <alec@swapoff.org>

SEE ALSO
     phpsat <http://sourceforge.net/projects/phpsat>

Alec Thomas			     0.1.20			      devtodo(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=todo&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help