]> Joshua Wise's Git repositories - tdl.git/blame - tdl.1
Fix such that dashed args are allowed for things like 'tdll'.
[tdl.git] / tdl.1
CommitLineData
7024e37b
JW
1.TH "tdl" 1 "May 2003" "1.4"
2.SH NAME
3tdl \- To do list manager
4.SH SYNOPSIS
5tdl [\-q]
6.br
7tdl [\-q] add|edit|defer|log
8.br
9tdl [\-q] list|done|undo|report
10.br
11tdl [\-q] remove|above|below|into|clone|copyto
12.br
13tdl [\-q] postpone|ignore|open
14.br
15tdl [\-q] which|version|help
16.br
17tdla [\-q]
18.br
19tdll [\-q]
20.br
21tdls [\-q]
22.br
23tdld [\-q]
24.br
25tdlg [\-q]
26
27.SH DESCRIPTION
28A program for managing a to-do list.
29.PP
30tdl has a set of functions that can be accessed in two different ways:
31
32 * Directly from the command line
33 * Interactively
34
35In the 'direct' method, the function and its arguments are provided on the
36command line. This mode is useful if you only want to perform a single
37operation. An example
38
39 % tdl add "A task"
40 %
41
42The 'interactive' method is entered when the tdl command is run with no
43arguments. In this mode, many tdl operations may be performed within a
44single run of the program. This avoids loading and saving the database
45for each operation, which may have a small performance benefit.
46However, if the program is compiled with the readline library, the
47<tab> key will provide various completion functions. An example
48
49 % tdl
50 tdl> add "A task"
51 tdl> exit
52 %
53
54When in interactive mode, these methods can be used to exit and return
55to the shell:
56
57* The
58.B exit
59command (see exit command)
60.br
61* Hitting <Ctrl-D> (i.e. end of file on stdin)
62.br
63* Hitting <Ctrl-C>, <Ctrl-\> etc. The associated signals are caught by
64tdl and it will attempt to save the database. However, this method is
65more risky than the first two.
66.br
67* The
68.B quit
69command (see quit command). Caution: this does not save the
70modified database back to the disk. Only use it if you want to discard
71all changes made in this tdl run.
72
73.pp
74All forms may take
75.I \-q
76as the first command line argument. Currently, this suppresses the warning
77message if no existing database can be found. The intended use is for using
78.B tdll
79when changing into a directory, to list outstanding work in that directory.
80.PP
81Any command that modifies the database will rename the old database to a file
82called
83.B .tdldb.bak
84before writing out the new
85.B .tdldb
86(The backup file will be in the same directory as the main one.) This allows
87for one level of database recovery, if the database is corrupted or a command
88is issued in error which causes large losses of data (e.g. misuse of the
89.B remove
90command.)
91
92
93.SH SUBCOMMANDS
94.B tdl above
95.I index_to_insert_above
96.I index_to_move ...
97.br
98.B tdl before
99.I index_to_insert_above
100.I index_to_move ...
101.PP
102This command moves one or more entries to a new location in the tree. The
103first index specifies the entry which will end up immediately below the moved
104entries after the operation. As a special case, you can specify the final
105component of the first argument as zero. In this case, the moved entries
106appear as the last children of the parent node afterwards.
107.P
108.ce 1
109--ooOOoo--
110.PP
111.B tdl add
112.I [@datespec]
113.I [parent_index]
114.I [priority]
115.I text_for_node
116.br
117.B tdla
118.I [@datespec]
119.I [parent_index]
120.I [priority]
121.I text_for_node
122.PP
123The
124.B add
125command is used to add a new entry to the database.
126.PP
127.B datespec
128is the time at which the entry will be visible when the database is printed
129with the
130.B list
131command. It defaults to now. The format for datespec is described in the
132.B "DATE SPECIFICATION"
133section later in this page.
134.PP
135.B parent_index
136is the index of the parent node (e.g. 1 or 2.4). This defaults to the root
137node if missing, i.e. a new top-level entry is created.
138.PP
139.B priority is one of
140.IR urgent ,
141.IR high ,
142.IR normal ,
143.IR low " or"
144.IR verylow .
145Normal is the default if this argument is not specified. Priorities may be
146abbreviated (even to just the first letter.)
147.PP
148.B text_for_node
149is the text describing the task for this entry. If this is more than a single
150word, you will need to quote it to make the shell keep it as a single argument
151to tdl. The text may span multiple lines (i.e. if you hit return whilst the
152quotation marks are still open in the shell.)
153.PP
154If no database exists, the
155.B add
156command will create it automatically (in the current directory, unless the
157.B TDL_DATABASE
158environment is set, in which case this specifies the path to use).
159.P
160.ce 1
161--ooOOoo--
162.PP
163.B tdl below
164.I index_to_insert_below
165.I index_to_move ...
166.br
167.B tdl after
168.I index_to_insert_below
169.I index_to_move ...
170.PP
171This command moves one or more entries to a new location in the tree. The
172first index specifies the entry which will end up immediately above the moved
173entries after the operation. As a special case, you can specify the final
174component of the first argument as zero. In this case, the moved entries
175appear as the first children of the parent node afterwards.
176.P
177.ce 1
178--ooOOoo--
179.PP
180.B tdl clone
181.I index_to_clone ...
182.PP
183The clone command can be used to make a deep copy of one or more entries and
184add them as new top-level entries in the database. You might use this if you
185have a task with a set of subtasks, and find that the same subtasks apply to
186some new task. You could copy the first task, and edit the new top-level task
187to change its text.
188.P
189.ce 1
190--ooOOoo--
191.PP
192.B tdl copyto
193.I new_parent_index
194.I index_to_clone ...
195.PP
196The copyto command is very similar to the
197.B clone
198command. The difference is that copyto inserts the newly created entries as
199children of an existing entry, rather than making them new top level entries.
200.P
201.ce 1
202--ooOOoo--
203.PP
204.B tdl create
205.PP
206This command is used to create a .tdldb file in the current
207directory (or at the location specified by the environment variable
208TDL_DATABASE). If the database file is already found to exist, a warning will
209be printed and the command has no effect.
210.PP
211The situation where you are likely to use this command is where there is
212already a .tdldb file in another directory further up the path from this one.
213Most of the tdl commands will find and use this other database file, assuming
214that you want to share it across all the directories in the tree. You might
215want to use a single database across an entire large project, for example. The
216.B create
217command will ignore any .tdldb file found in an ancestor directory. It always
218operates in either the current directory or on the file pointed to by
219TDL_DATABASE.
220.P
221.ce 1
222--ooOOoo--
223.PP
224.B tdl defer
225.I [@datespec]
226.I index_to_change...
227.PP
228The defer command is used to modify the start-time of one or more existing entries,
229where the @ on the datespec is optional because the argument is required, although
230the @ can be included for consistency with other commands where a datespec is optional.
231.PP
232An example of use is
233.P
234 tdl> defer @+fri 1 2.1... 5
235.P
236which defers entries 1, 2.1 and all its children, and 5 until the following Friday.
237To list deferred entries, use
238.I list \-p
239, to defer entries indefinitely, see
240.I postpone
241command.
242To re-activate deferred or postponed entries, see
243.I open
244command.
245.P
246.ce 1
247--ooOOoo--
248.PP
249.B tdl done
250.I @datespec
251.I index_of_done_entry ...
252.br
253.B tdld
254.I @datespec
255.I index_of_done_entry ...
256.PP
257The
258.B done
259command is used to mark one or more tasks as completed. The effects are as follows:
260.IP o
261The entries no longer appear on the default listing (tdl list / tdll)
262.IP o
263The entries are eligible to appear on the report list (tdl report)
264.IP o
265The entries are eligible for removal by the purge command (tdl purge.)
266.PP
267If the string "..." is appended to an index, it means that entry and all its
268descendents. This provides a quick way to mark a whole sub-tree of tasks as
269being completed.
270.PP
271.B datespec
272is the time at which the entry/entries should be marked as having been
273completed. The default is to mark them completed at the current time. The
274competion time of an entry affects whether it is shown by the
275.B report
276command for a particular range of reported times.
277.PP
278The format for datespec is described in the
279.B "DATE SPECIFICATION"
280section later in this page.
281.P
282.ce 1
283--ooOOoo--
284.PP
285.B tdl edit
286.I index_to_change
287.I [new_text]
288.PP
289This command is used to change the text of an entry. If no [new-text] is
290provided, you will be prompted with the old text to edit interactively. (This
291is only useful if the GNU readline library has been linked in.)
292.PP
293Note, in earlier versions, edit could be used to change the start-time of one
294or more entries. This is now handled by the
295.B defer
296command.
297.P
298.ce 1
299--ooOOoo--
300.PP
301.B exit
302.PP
303The exit command is used to exit from tdl when it is used in interactive mode.
304The exit command is not available in the command line mode, where it would not
305make sense.
306.br
307The exit command writes any pending updates to the database before exiting.
308Compare the
309.B quit
310command, which loses all updates made during the current tdl run.
311.P
312.ce 1
313--ooOOoo--
314.PP
315.B tdl export
316.I filename
317.I index_to_export ...
318.PP
319This command is used to create a new TDL database (whose name is given by the
320.I filename
321argument). The initial contents of the new database are the entries specified
322by the list of indices following the filename, in that order. Each index
323becomes a top-level entry of the new database. The operation is read-only on
324the original database.
325.P
326.ce 1
327--ooOOoo--
328.PP
329.B tdl help
330.PP
331This command displays a summary of use of each of the commands.
332.P
333.ce 1
334--ooOOoo--
335.PP
336.B tdl ignore
337.I index_to_ignore ...
338.PP
339The ignore command puts one or more entries into an ignored state. It is
340actually implemented in the same way as marking them as done, but as though
341they were done a very long time ago. Thus, ignored entries will be deleted
342by any subsequent purge operation.
343.br
344I added this feature because, when applying remove to several entries, I kept
345getting tripped up by the indices changing below the entry that was removed
346(I kept removing the wrong entries later by not using the revised indices).
347Instead, I can ignore them and rely on a periodic purge to clean up the database.
348.br
349Another use for the ignore command would be to move moribund entries into a
350wastebasket to stop them cluttering up the normal listing, but without removing
351them entirely in case you need to reprieve them later.
352.br
353If you need to un-ignore an entry, just
354.B undo
355it
356.P
357.ce 1
358--ooOOoo--
359.PP
360.B tdl import
361.I filename
362.PP
363This command is used to merge entries from the TDL database
364.I filename
365into the default TDL database (i.e. the one that most of the other commands
366would be accessing).
367.PP
368You might use this command if you had a number of separate TDL databases, and
369wanted to merge their entries to form one combo database.
370.P
371.ce 1
372--ooOOoo--
373.PP
374.B tdl into
375.I new_parent_index
376.I indices_to_move ...
377.PP
378This command moves one or more entries under a new parent entry. It is
379equivalent to the
380.B above
381command when the
382.B new_parent_index
383argument has ".0" appended to it.
384.P
385.ce 1
386--ooOOoo--
387.PP
388.B tdl list
389.I [\-v]
390.I [\-a]
391.I [\-p]
392.I [\-m]
393.I [\-1...9]
394.I [<min-priority>]
395.I [<parent_index>|<search_conditions>...]
396.br
397.B tdll
398.I [\-v]
399.I [\-a]
400.I [\-p]
401.I [\-m]
402.I [\-1...9]
403.I [<min-priority>]
404.I [<parent_index>|<search_conditions...]
405.br
406.B tdls
407.I [\-v]
408.I [\-a]
409.I [\-p]
410.I [\-m]
411.I [\-1...9]
412.I [<min-priority>]
413.I [<parent_index>|<search_conditions...]
414.PP
415The
416.B list
417or it's synonymous
418.B ls
419command is used to display the entries in the database. By default, only
420entries that have not been marked
421.B done
422and which don't have start times deferred into the future are shown. If you
423want to display all entries, include the
424.B \-a
425option (which means 'all'). If you want to display the dates and times when
426the entries were added and/or done, include the
427.B \-v
428option (which means 'verbose').
429The
430.B \-p
431option stands for postponed. It means that tasks which are 'deferred' or 'postponed'
432are shown as well as open tasks.
433.PP
434By default, only entries having normal, high or urgent priority are shown. To
435change the minimum priority shown, specify the
436.B min-priority
437argument. For example, 'tdll h' will only show entries with priority high or
438urgent.
439.PP
440By default, the whole database is scanned. If you only want to show part(s) of
441the database, additional arguments can be given. These are the indices of the
442top node of each part of the database you want to show. So if your database
443contains entries with indices 1, 2, 2.1, 2.2, 2.2.1, 3 and 4, the command
444.PP
445tdl list \-a 2
446.PP
447will show all entries 2, 2.1, 2.2 and 2.2.1, whether or not they are completed.
448.PP
449Also by default, all entries in the database, at any depth, will be shown. If
450you only wish to show 'top-level' entries, for example, you can use
451.PP
452tdl list \-1
453.PP
454This lists level-1 entries. Any level-1 entry with hidden child entries
455underneath it will show a summary of how many such children there are. For
456example, the output
457.PP
4583 [2/7] A top level entry
459.PP
460means that the entry with index 3 has a total of 7 entries underneath it, of
461which 2 are still open and 5 are completed (i.e. they've had 'tdl done' applied
462to them.)
463.PP
464Because the single digit arguments are used this way for the 'list' subcommand,
465the normal 'negative index' method can't be used to specify an entry a certain
466distance from the end of the list. If you want to do this, use a syntax like
467.PP
468tdl list \-\- \-1
469.PP
470to show the last index in the array, or
471.PP
472tdl list \-2 \-\- \-3 \-2 \-1
473.PP
474to show level-1 and level-2 entries within the last 3 level-1 entries in the
475list.
476.PP
477Each
478.B search condition
479specifies a case-insensitive substring match that is applied to all parent
480indices further on in the arguments. (If no parent indices are given, all the
481search conditions are and'ed together and applied to filter all the nodes that
482would be shown according to the depth, priority etc arguments).
483.PP
484Each search condition takes one of the following forms
485.PP
486 /substring
487 /substring/1
488.PP
489In each case, an entry will match if substring is actually a substring of the
490text of that entry. In the second form (where the number may be 0, 1, 2 or 3),
491a match occurs if there are up to that many errors in the substring. An error
492is a single character inserted, removed or changed.
493.PP
494This option is most useful if you have a large database and can remember you
495have an entry somewhere containing particular word(s), but can't remember where
496it is.
497.PP
498If you need regular expression matching, the best approach would be to run
499tdll from the shell and pipe the output to grep. The internal matching does
500approximate matches with keys up to 31 characters.
501.PP
502By default, the listing is produced with colour highlighting. The
503.B \-m
504option can be used to produce a monochrome listing instead. Alternatively, the
505.B TDL_LIST_MONOCHROME
506enviroment variable can be set (to any value) to achieve the same effect.
507.PP
508The colours are assigned as follows:
509.PP
510.TS
511tab(&);
512l | l.
513_
514Colour & Meaning
515_
516Red & Urgent task
517Yellow & High priority task
518White & Normal priority task
519Cyan & Low priority task, done task
520Blue & Very low priority task
521Green & Captions
522_
523.TE
524.P
525.ce 1
526--ooOOoo--
527.PP
528.B tdl log
529.br
530.B tdlg
531.PP
532This command is used to add a new entry and mark it done immediately. It is
533most useful in conjunction with the
534.B report
535command, to record unexpected extra tasks you had to do.
536.PP
537The arguments for the
538.B log
539command are the same as those for the
540.B add
541command.
542.P
543.ce 1
544--ooOOoo--
545.PP
546.B narrow
547.I new_root_index
548.br
549.PP
550The
551.B narrow
552command can be used to limit the effects of later commands to operate within
553a particular sub-tree of your database. Because the indices you specify for
554the later operations have the common prefix omitted, this can save typing if
555you have many changes to make within the same subtree.
556.P
557If your listings are in colour, the common prefix is coloured in blue whilst
558the paths below the root of the sub-tree are shown in the usual green.
559(In monochrome mode, there is no distinction.)
560.P
561Whilst your view is narrowed, the index of the sub-tree root is shown in square
562brackets between tdl and > (i.e. [2]).
563.P
564If you want to operate on the sub-tree root entry itself whilst you are
565narrowed, you can use . to specify its index (think: current directory in Unix.)
566.P
567To reverse the effects of the narrow command, use the
568.B widen
569command (see widen command).
570.P
571This command is only available when tdl is being run interactively, i.e. when
572you have a tdl prompt. It is not available directly from the shell (where it
573wouldn't make much sense).
574.P
575.ce 1
576--ooOOoo--
577.PP
578.B tdl open
579.I index_to_reopen[...] ...
580.PP
581The open command is used to reverse the effect of the
582.B postpone
583command. Its effect is actually to set the arrival time of the entries to the
584current time.
585.P
586.ce 1
587--ooOOoo--
588.PP
589.B tdl postpone
590.I index_to_postpone[...] ...
591.PP
592The postpone command is used to make 1 more more entries postponed. Its effect
593is actually to set the arrival time of the entries a long way in the future
594(i.e. it's an extreme form of the 'deferred' feature available through the add and
595defer commands.) Postponed entries can be re-activated with the
596.B open
597command.
598.P
599.ce 1
600--ooOOoo--
601.PP
602.B tdl pri
603.I new_priority
604.I index_to_change ...
605.PP
606This command changes the priority of one or more entries. The indices are in
607the same format as those in the output of the
608.B list
609command. The
610.B new_priority
611argument takes the same possible values as for the
612.B add
613command.
614.P
615.ce 1
616--ooOOoo--
617.PP
618.B tdl purge
619.I since_epoch
620.I [entry_index...]
621.PP
622This command is used to remove old done entries from the database. It is much more convenient than repeated
623.B remove
624commands.
625.PP
626The
627.B since_epoch
628argument specifies a time. The format for this argument is described in the
629.B "DATE SPECIFICATION"
630section later. Entries that were marked done (using the
631.B done
632command) before that epoch will be purged.
633.PP
634Zero or more
635.B entry_indices
636may be given. These restrict the purging to just those entries and their
637descendents. The default is to purge the entire database.
638.P
639.ce 1
640--ooOOoo--
641.PP
642.B quit
643.PP
644The quit command is used to exit from tdl when it is used in interactive mode.
645The quit command is not available in the command line mode, where it would not
646make sense.
647.P
648The quit command DOES NOT write any pending updates to the database before
649exiting. Compare the
650.B exit
651command, which does write all updates made during the current tdl run.
652.P
653The main use for the quit command would be to avoid damaging the database if a serious error had been made.
654.P
655.ce 1
656--ooOOoo--
657.PP
658.B tdl remove
659.I index_to_remove ...
660.br
661.B tdl delete
662.I index_to_remove ...
663.PP
664Completely remove one or more entries from the database. The indices are the
665same format as those shown in the output of the
666.B done
667command.
668.PP
669If the string "..." is appended to an index, it means that entry and all its
670descendents. This provides a quick way to remove a whole sub-tree of tasks.
671.P
672.ce 1
673--ooOOoo--
674.PP
675.B tdl report
676.I start_time
677.I [end_time]
678.PP
679The
680.B report
681command produces a report (in bulleted list format) of tasks completed in a
682certain time period. This is useful if (for example) you have to write a
683weekly summary of the work you've done.
684.PP
685The default for the end of the time period is the current time, if the
686.B end_time
687argument is not present. The start of the period to report on must always be
688specified. The format for the time arguments is described in the
689.B "DATE SPECIFICATION"
690section later.
691Examples :
692.PP
693tdl report 1w
694.PP
695will list all tasks completed in the previous week, whereas
696.PP
697tdl report 2w 1w
698.PP
699will list all tasks completed between 2 and 1 weeks ago.
700.PP
701Where a child entry has been completed in the reporting period, but its parent
702has not been completed, the parent text in the report will be surrounded by
703'[[' and ']]'. To give one example, this will happen if the parent has other
704child entries that haven't been completed yet.
705.P
706.ce 1
707--ooOOoo--
708.PP
709.B revert
710.PP
711The revert command discards any changes made in the session and reloads the
712in-memory database from disc. If you have used the
713.B save
714command in the session, the database will revert to its state at the most
715recent save. Otherwise it will revert to its state when tdl was initially run.
716.P
717The revert command does not take any arguments.
718.P
719.ce 1
720--ooOOoo--
721.PP
722.B save
723.PP
724The
725.B save
726command can be used to write the current in-memory database out to the disc
727database file. The behaviour is currently equivalent to the command exit
728followed by re-running tdl from the shell.
729
730This command is useful if you tend to do long interactive tdl sessions.
731It guards against the risks of
732.P
7331. accidentally typing quit when you meant exit
734.br
7352. machine crashes
736.br
7373. running tdl in another window and seeing a stale copy of the database file.
738.P
739The save command does not take any arguments.
740.P
741.ce 1
742--ooOOoo--
743.PP
744.B tdl undo
745.I index_of_entry_to_undo ...
746.PP
747This command cancels the effect of the
748.B done
749command for one or more entries, e.g. after they have been mistakenly marked as
750done.
751.PP
752If the string "..." is appended to an index, it means that entry and all its
753descendents. This provides a quick way to re-open a whole sub-tree of tasks.
754.P
755.ce 1
756--ooOOoo--
757.PP
758.B tdl usage
759.PP
760Same as
761.B tdl help
762(q.v.)
763.P
764.ce 1
765--ooOOoo--
766.PP
767.B tdl version
768.PP
769Show the version number of the software.
770.P
771.ce 1
772--ooOOoo--
773.PP
774.B tdl which
775.PP
776Show the filename of the database that tdl accesses in the current context.
777.P
778.ce 1
779--ooOOoo--
780.PP
781.B widen
782.I n_level
783.PP
784The optional n_levels parameter tells tdl how many levels to widen the view.
785If the parameter is not specified, it defaults to 1. If you try to widen more
786levels than the depth of the current sub-tree root node, the widening will be
787silently limited to its depth.
788.P
789This command is only available when tdl is being run interactively, i.e. when
790you have a tdl prompt. It is not available directly from the shell
791(where it wouldn't make much sense).
792
793.SH Completion facilities
794.PP
795
796When tdl has been compiled to use the readline library, the interactive mode
797supports a number of completion functions, activated with the <tab> key.
798.P
799In particular, the following are supported:
800
801.B Command completion.
802If <tab> is pressed when the command line is empty, a list of possible commands
803will be shown. If <tab> is pressed when a partial command has been typed, the
804command will be completed immediately if possible, otherwise a list of commands
805matching the already-typed prefix will be shown.
806.P
807.B Help completion.
808If help or usage is already in the buffer, a list of commands will be shown
809(as above). The <tab> completion works in the same way to complete the name of
810the command you want a help summary for.
811.P
812.B Priority completion.
813If list or priority is at the start of the input buffer and the current word
814starts with a letter, tdl will try to complete the name of a priority level if
815<tab> is pressed.
816.P
817.B Open task completion.
818If done is at the start of the input buffer, hitting <tab> will show a list of
819task indices that are still open. If part of an index has already been typed,
820the open task indices for which the typed characters are a prefix will be shown.
821.P
822.B Postpone completion.
823If postpone is at the start of the input buffer, hitting <tab> will show a list
824of tasks that may be postponed. Tasks marked done are excluded. If open is at
825the start of the input buffer, hitting <tab> will show a list of tasks that may
826be opened.
827.P
828.B Parameter hints.
829If some other command is at the start of the input buffer and <tab> is pressed,
830tdl will show a one-line summary of that command's parameters.
831
832.SH DATE SPECIFICATIONS
833.PP
834The commands
835.BR add ,
836.BR done ,
837.BR purge ,
838.BR report ,
839take arguments defining dates (with add and done it is optional). Dates may be
840specified in several formats, shown by the following examples:
841.PP
842.TS
843tab(&);
844l l.
845\-1h & exactly 1 hour ago
846\-2d & exactly 2 days ago
847+1w & exactly 1 week in the future
848+1m & exactly 1 month (30 days) in the future
849+2y & exactly 2 years in the future
850\-1d\-0815 & 08:15am yesterday
851+1d\-08 & 8am tomorrow
852+1w\-08 & 8am on the same day as today next week
853+6h\-08 & 8am on the day containing the time 6 hours ahead of now
854\.\-08 & 8am today
855\.\-20 & 8pm today
85620011020 & absolute : 12 noon on 20th October 2001
857011020 & absolute : 12 noon on 20th October 2001 (current century)
8581020 & absolute : 12 noon on 20th October 2001 (current century and year)
85920 & absolute : 12 noon on 20th October 2001 (current century, year and month)
86020011020\-081500 & absolute : 08:15am on 20th October 2001
86120011020\-0815 & absolute : 08:15am on 20th October 2001 (seconds=0)
86220011020\-08 & absolute : 08:00am on 20th October 2001 (minutes=seconds=0)
863011020\-08 & absolute : 08:00am on 20th October 2001 (minutes=seconds=0, current century)
864etc & (see below)
865\-sun & 12 noon on the previous Sunday
866+sat & 12 noon on the following Saturday
867+sat\-08 & 8am on the following Saturday
868\-tue\-0815 & 08:15am on the previous Tuesday
869etc & (see below)
870.TE
871.PP
872In the 'all-numeric' format, the rule is that dates can have fields omitted
873from the start (assumed to be the current value), and times can have fields
874omitted from the end (assumed to be zero, except if the hours figure is missing
875it is assumed to be 12, since most work is done in the day.)
876.PP
877In the 'weekday and time' format, the time rule is the same: missing minutes
878and seconds are taken as zero and missing hours as 12. If the weekday is the
879same as today, the offset is always 7 days in the required direction. If the
880weekday is not the same as today, the offset will always be less than 7 days in
881the required direction.
882.PP
883In the 'relative' format, when a time is included as well, the procedure is as
884follows. First the time is determined which is the given number of hours, days
885etc away from the current time. Then the specified time on that day is used.
886The main use for this is to specify times like '8am yesterday'. Obviously some
887of the more uses of this mode are rather far-fetched.
888.PP
889For the weekday and relative formats, the sign is actually optional. The
890default sign (implying past (-) or future (+)) will then be assumed depending on
891the command as shown below:
892
893.PP
894.TS
895tab(&);
896l l l.
897Command & Default & Reason
898_
899add & + & Add entries with deferred start times
900done & - & Entries have been completed at some time in the past
901report & - & Reporting on earlier completed tasks not future ones
902purge & - & Tasks won't be completed in the future, so no need to purge future ones
903.TE
904
905.SH HOMEPAGE
906.PP
907The homepage for
908.B tdl
909on the internet is http://www.rc0.org.uk/tdl/
910.SH AUTHOR
911.PP
912The author is Richard P. Curnow <rc@rc0.org.uk>.
913.SH ACKNOWLEDGEMENTS
914.PP
915I got the idea from a program called devtodo. I liked what that program did
916and the command line approach to using it, but I ran into lots of compilation
917problems with it on older C++ installations. The path of least resistance
918turned out to be to hack up a C program to do a similar job.
919
920.SH ENVIRONMENT
921.TP
922TDL_DATABASE
923If this variable is set, it defines the name of the file to use for holding the
924database of tasks. If the variable is not set, the search approach described
925in the FILES section is used.
926.TP
927TDL_LIST_MONOCHROME
928If this variable is set, the output from the
929.B list
930command is produced in monochrome instead of colour (the default).
931.SH FILES
932.TP
933 ./.tdldb, ../.tdldb, ../../.tdldb, ...
934If the TDL_DATABASE environment variable is not present, the file .tdldb in the
935current directory is used, if that is present. If not, the same file in the
936parent directory is used, and so on, until the root directory of the filesystem
937is reached. If the database is still not found, a new one will be created in
938the current directory (except for options that don't modify the database, such
939as list, help and version.)
940.PP
941If you want to have a .tdldb file in
942.I every
943directory, the suggested approach is to set the TDL_DATABASE environment variable to "./.tdldb". So in a Bourne-like shell (sh, bash, zsh, ksh etc), you'd write
944.IP
945TDL_DATABASE=./.tdldb
946.br
947export TDL_DATABASE
948.PP
949and in a C-like shell (csh, tcsh etc) you'd write
950.IP
951setenv TDL_DATABASE ./.tdldb
952.PP
953If you want to share .tdldb files between directory hierarchies in some non-standard way, the suggested approach is to use symbolic links to do this, for example:
954.IP
955cd project1
956.br
957ln \-s ../project2/.tdldb .
958
959.SH BUGS
960Please report them to the author.
961
962.SH SEE ALSO
963The full documentation for tdl is maintained as a Texinfo manual. If the info and tdl
964programs are properly installed at your site, the command
965.IP
966info tdl
967.PP
968should give you access to the complete manual.
969
This page took 0.121653 seconds and 4 git commands to generate.