Provided by: devtodo_0.1.20+git20200830.0ad52b0-3_amd64 bug

NAME

       todo - a reminder/task program aimed at developers

SYNOPSIS

       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...unless 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 appended 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 specified 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 children.

       -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 section 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 useful when piping
              to less(1) -R.

       --mono Remove all  ANSI  escape  sequences  from  output  -  useful  for  colour  impaired
              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 strftime(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 FORMATTING  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 section  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 format 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 revision 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  parent. 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  display  items  that
       match  the  expression,  if  prefixed  with  a  '+'  it will display 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
       something 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  effect  on  this
              expression.

       children
              Collapse  or  expand  child  items.  If  the  '-'  prefix  is  present children 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 priorities 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 letter can be lower
       or upper case. It may be necessary to quote the search expression 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 separate 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:       %[normal]%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 indenting.

       %[+|-][<n>]i
              Indent to depth of current item. <n> specifies the depth to indent to.  If  <n>  is
              omitted,  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-format.

       %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 characters.

       %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 formatting 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,  duration,  none  and
       done.  Each  key,  except  none  can be prefixed with a - to reverse its default order and
       multiple keys must be separated 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. Multiple note indices
       are separated with commas (spaces are not allowed). Children 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 default 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 become 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,
       /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 distribution.

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  interprets  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.

       /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>