Commit Graph

256 Commits

Author SHA1 Message Date
85
3d308a6f79 Minimal config file / default filenames (todo.txt, done.txt, report.txt) (#289)
* Set default files name

* Add test for minimal config file
2020-03-29 14:33:16 -05:00
Tiziano Zito
355166da67 Highlighting of dates, metadata and item numbers (#264)
* add highlighting of dates, item numbers, and metadata

* add test for highlighting of dates, item numbers, and metadata

Co-authored-by: Ali Karbassi <ali@karbassi.com>
2020-03-29 14:20:06 -05:00
Ingo Karkat
861ad5ec41 Fix/noeol (#295)
* Handle missing EOL in todo.txt

This can happen easily with certain editors (such as Mousepad) that do not automatically add a newline character at the end of a file.
In _addto(), ensure a trailing newline via sed (taken from https://unix.stackexchange.com/a/31955/18876).

Fixes #294

* Tests: Add basic coverage of move

* Handle missing EOL in todo.txt for move, too

This can happen easily with certain editors (such as Mousepad) that do not automatically add a newline character at the end of a file.

* Refactoring: Extract fixMissingEndOfLine()

* FIX: Compatibility: sed \+ multi not supported on MacOS

Use the POSIX \{1,\} instead.

Co-authored-by: Ali Karbassi <ali@karbassi.com>
2020-03-29 12:03:33 -05:00
kh80
d589fd0570 Add 'done' option as alias of 'do' (#169) 2018-04-11 13:34:19 -05:00
tpikonen
7a30199fe0 Cleanup (#247)
- Fixed: Reduce shellcheck warnings.
- Fixed: Remove trailing whitespace.
- Fixed: Double quote to prevent globbing and word splitting. [SC2086]
- Fixed: Invalid flags are not handled. [SC2220]
- Fixed: Cleaned up string replaces.
2018-04-04 19:33:09 -05:00
tpikonen
867ade5701 new: Add default priority variable TODOTXT_PRIORITY_ON_ADD. (#246)
Adds the config / env variable `TODOTXT_PRIORITY_ON_ADD`, which when set to one of the capital letters `A` to `Z` is given as a priority to a new task, if a priority is not given on command line.
2018-03-28 16:58:48 -05:00
Anton Ermolenko
14f5de1579 interpreter reference update to be portable (#160) 2018-03-28 16:09:07 -05:00
Guilherme Reis
7ec2a1263e Read the task's name and uses as default (#249)
Read the task's name and uses as default, so the user can read the previous task's name.

Thanks @guifeliper
2018-03-26 13:23:27 -05:00
Ali Karbassi
9c390a84cb fix: Update url in code. (#237) 2017-10-23 14:20:37 -05:00
Simon M
b7fb2ac2be fix: Make text input more user-friendly (#208)
The use of the default read command will not allow the user to use arrow keys and shortcuts to enter the data when doing a replace or entering any input, which can be frustrating. Besides, backslashed are interpreted and can be mangled.

- Using the `-e` option will trigger the use of the readline library: you can then, as expected in bash, use the arrow keys and all shortcuts to move around the line before pressing enter.
- Using the `-r` option will prevent the interpretation of the "" and insert them as typed, useful when pasting code:
2017-10-13 16:32:13 -05:00
Daniel St.Jacques
94e1c6e406 Updated add command to accept lowercase priority (#230)
- Updated add command to accept lowercase priority
- Added testcase for add with lowercase priority
2017-10-10 09:10:34 -05:00
Adam Goldsmith
34b6135415 add support for $XDG_CONFIG_HOME config file/actions location 2017-08-22 23:24:23 -04:00
Josh Lubaway
98141a6e36 Update links to use https
If the links in the comment at the top support https, prefer https.
2015-12-31 09:48:31 -08:00
nthorne
7c92f46c25 Allow for placing addons in subfolders.
Addons can be placed in subfolders with the same name as the action,
in order to be able to e.g. clone git repos into the TODO_ACTIONS_DIR
rather than having to download addons and manage updates manually.

Closes #120
2013-12-05 23:47:16 -08:00
Matt Wozniski
07b50a07e0 Allow coloring contexts and projects independently
Because @contexts and +projects are metadata as much as they are text,
it can be nice to highlight them independently of the coloring of the line
that contains them.  This is tough to do correctly in
a TODOTXT_FINAL_FILTER because doing it at that layer requires
re-parsing the text of the line to find the appropriate PRI_$x color to
reset to after coloring the word, or trying to reverse engineer where
the color codes inserted by todo.sh end and the user's text begins (and
vice versa).

Closes #119
2013-12-05 23:23:25 -08:00
Gina Trapani
745f5d5179 Merge pull request #111 from mgarrido/global_opts
Allow the use of a global config file
2013-12-05 23:06:37 -08:00
Ingo Karkat
07821f9cff Simplify empty data file creation.
No need to use the external cp command; shell redirection will create an
empty file for us.
2013-11-05 13:05:38 +01:00
Ingo Karkat
2faf072cf7 ENH: Allow configuring null data files and then don't create them.
Request from exatto (http://article.gmane.org/gmane.comp.diary.todotxt/4699), who doesn't want to use done.txt and report.txt.

Also consider character devices (-c; /dev/null is one) in the file existence checks so that no empty file is then created.
2013-11-05 13:02:40 +01:00
Manuel J. Garrido
ce365df67c Allow the use of global config file
If not found elsewhere, look for the config file in /etc/todo/config.
`make install` installs a global config file, setting TODO_DIR=~/.todo.
todo.sh creates TODO_DIR if it doesn't exist.
2013-06-24 13:39:50 +02:00
Jon Knapp
ec9613e19e ensure GREP_OPTIONS doesn't break listproj output 2013-02-01 11:03:24 -08:00
Ingo Karkat
8ff79102a5 ENH: Handle -h, shorthelp and help when a Fatal Error happens.
The user may need the help to solve any fatal error that appears while todo.sh isn't properly set up. As the help actions do not depend on any setting that the fatal errors check, we can still invoke them.

Factor out dieWithHelp() and use that for printing the fatal errors.
2012-08-30 13:16:02 +02:00
Ingo Karkat
8d8ef812a2 FIX: Short help -h inaccessible when custom config is used.
When short-circuiting the option parsing, the OPTIND must be adapted, too, so that the getopts processing loop is quit correctly.
2012-08-30 12:38:54 +02:00
Gina Trapani
da683366f4 Merge pull request #89 from inkarkat/individual-help-enhancement
Individual help enhancement
2012-05-12 09:59:44 -07:00
Ingo Karkat
e48ad81ecc FIX: Built-in action help for OS X.
POSIX sed doesn't support regex branches; I don't want to switch to modern regexp (via -E), since that makes more characters special. Rather, expand the alternatives into two sed commands.
2012-05-11 21:18:43 +02:00
Gina Trapani
f67f630466 Merge pull request #82 from inkarkat/listcon-filters
Accept filters for listcon, too.
2012-05-11 09:41:56 -07:00
Gina Trapani
137140a542 Merge pull request #85 from inkarkat/replace-fixes
FIX: Replacement with priority and date doesn't replace existing date.
2012-05-10 20:55:15 -07:00
Ingo Karkat
f2b9734047 FIX: Always return success after help.
Usually (i.e. when a pager is available), the help() output is piped through the pager, and then the return code will be the one of the pager. So the exit 1 at the end of help() doesn't make much sense, and should be abolished for consistency.
2012-04-27 13:40:52 +02:00
Ingo Karkat
97035d3425 ENH: Print usage help for all passed actions.
Extend the support for specific usage help to built-in actions.
2012-04-27 13:37:14 +02:00
Ingo Karkat
42424d5881 ENH: Print usage help for custom action.
Currently, the only way to get usage help for a custom action is to use "todo.sh help" and scroll / search for the action name. (Or try to call the action without / with invalid parameters to hopefully get a one-line syntax summary.)
This extends the help command to print the usage of optionally passed custom action names.
2012-04-27 11:48:01 +02:00
Ingo Karkat
736e69bd6c Allow use of post_filter_command for listall and listpri, too.
For ls / _list(), custom add-ons can use post_filter_command for additional filtering before the highlighting is applied. Let's allow that for listall and listpri, too, although they employ post_filter_command themselves.
2012-04-25 14:48:09 +02:00
Ingo Karkat
f45bbd1a1d Minor: Move cleaninput call closer to sed command. 2012-04-19 14:19:30 +02:00
Ingo Karkat
e0b93e48fb Refactoring: Extract duplicated regexp for priority and date. 2012-04-19 14:12:35 +02:00
Ingo Karkat
24d0fb003a FIX: Replacement with priority and date doesn't replace existing date. 2012-04-19 14:08:39 +02:00
Ingo Karkat
e5e31b0f75 Refactoring: Extract listWordsWithSigil() from listcon and listproj. 2012-04-13 21:16:33 +02:00
Ingo Karkat
d7056c5e1e FIX: Mention filter capability in long help for listproj.
This was forgotten in the original enhancement in b824479.
2012-04-13 10:51:43 +02:00
Ingo Karkat
92322e7064 Accept filters for listcon, too.
This has been implemented for listproj already, for consistency in use and implementation, the same should be available for listcon, too.
2012-04-13 10:47:56 +02:00
Ingo Karkat
bc81db2f2b ENH: Better completion for custom add-ons via new listaddons command.
The todo_completion had the problem that it didn't consider the todo.cfg itself for the location of TODO_ACTIONS_DIR, it just tried the default location or a globally exported config value. With the injection of custom configuration now in place, we can actually delegate the listing to todo.sh itself.
The added built-in "listaddons" command is used for that; it may also be helpful for troubleshooting or to find out about available add-ons. (But the help / shorthelp commands offer more information.)

Additionally, completion is now more precise; only executable actions and no subdirs are listed now; this is also covered by the enhanced test.

The last bonus: The custom add-on actions are now only determined when there's actually completion of commands.
2012-02-29 08:53:18 +01:00
Ingo Karkat
46afb7f46a ENH: TODOTXT_SOURCEVAR enables different source file for listproj. 2012-02-23 09:14:41 +01:00
Ingo Karkat
9e13dfd290 ENH: TODOTXT_SOURCEVAR enables different source file for listcon.
To be used by todo_completion (to offer candidates from done.txt when there are no matches in todo.txt), and maybe by custom addons.
2012-02-23 09:14:41 +01:00
Ingo Karkat
3b960a2e3c Revert to safer POSIX AWK regexp.
AWK from Ubuntu 8.04 (mawk) doesn't support [[:space:]]; so for backwards compatibility use a plain ASCII space instead.
2012-02-21 09:18:39 +01:00
Gina Trapani
ad1ca6c2c9 Merge pull request #75 from inkarkat/rid-tmp-file
Split up _list() and get rid of $TMP_FILE and cleanup().
2012-02-14 21:59:10 -08:00
Ingo Karkat
cf7f7531be Break up _list(), get rid of TMP_FILE.
Extract a new function _format() (and getPadding(), both also exported for add-ons) from _list(), which includes the main formatting and filtering pipeline, without the file handling and verbose summary. This can receive the todo file via stdin, so the listall action is able to format the concatenated files without going through a temporary file.

Eventually, after further refactorings, _format() could be used for actual formatted verbose messages in all commands; currently, the raw, unformatted task is printed.
2012-01-26 16:18:30 +01:00
Ingo Karkat
28ec5a06f2 Get rid of cleanup, only use TMP_FILE in listall.
After the recent refactorings, the temporary file is only needed for the listall action. Therefore, the creation-checks and eventual cleanup can be restricted to the listall action, which should slightly speed up the overall script execution.
2012-01-26 14:48:29 +01:00
Ingo Karkat
dfec12e2a4 ENH: Allow listpri filtering with priority ranges.
So far, the listpri action only supports a single priority. Allowing priority ranges (e.g. todo.sh listpri A-C @work) is a simple but useful enhancement.

Note: The syntax extension only clashes with the [TERM] filtering in a few corner cases, and this can be worked around (e.g. "todo.sh listpri A-Z A-Z" lists all prioritized tasks containing the text A-Z).
2012-01-26 13:17:31 +01:00
Gina Trapani
9e38fa11ee Merge pull request #72 from inkarkat/list-optimization2
Optimization: Put grep -v empty task filter inside sed.
2012-01-24 11:28:53 -08:00
Ingo Karkat
f3fc18af6b Optimization: Put grep -v empty task filter inside sed.
No need to spawn off another process for this; we can do this inside the sed command that joins the task numbers with the task text.

Note: The sed on OS X does not understand the \+ bound, only in the form of + when used with -E. Instead, I chose to fall back to the \{1,\} basic regexp, in the hope that it is very portable, and to avoid introducing extended regexps to the script.
2012-01-23 11:55:15 +01:00
Ingo Karkat
25e6d7ae24 FIX: Adapt deduplicate sed command for OS X.
The sed command of BSD / OS X doesn't like { command } blocks in a single expression. So move the (dynamic) deduplicate sed command(s) to the end, and use a label to access them. This also makes the entire sed script somewhat easier to understand.
2012-01-23 11:05:12 +01:00
Ingo Karkat
7e525ee743 ENH: Only add new data to report.
When the last reported values are identical to the current values, do not append the same information (just with a new timestamp) to the report. Instead, just print the last report line.

With this, the report action can be scheduled periodically (e.g. via cron) without artificially inflating the report file.
2012-01-21 14:30:21 +01:00
Ingo Karkat
d46adadb1d Align report order with other actions.
Like "add" or "do", first the object, then (in verbose mode) the status message is printed.
2012-01-21 14:29:11 +01:00
Ingo Karkat
d0205b48a6 Use ISO 8601 timestamp format.
IMO 2012-01-14T14:49 looks better than the messy -*-*-*- of 2012-01-14-14:49, and is more aligned with standards.
2012-01-21 14:27:19 +01:00