Ingo Karkat bf1bf1ae84 ENH: Allow to customize what can be before / inside / after +project and @context (#271)
* ENH: Allow to customize what can be before / inside / after +project and @context

I noticed that todo.sh mistakenly picks up some random stuff as projects and contexts. The todo.txt specification is very lenient in what makes those (allowing any length of non-whitespace characters), but in practice, every user has its own idea of the set of used words. This change allows (expert) users to tweak the pattern (via TODOTXT_SIGIL_VALID_PATTERN), to be able to reduce the amount of "false positives" that listproj and listcon show.
Additionally, there's a (mainly unspecified) extension mechanism in the form of key:value, which often is used to implement custom "markers", like w:something to make a task blocked and waiting for "something". It would be nice to be able to refer to @contexts (and maybe also +projects), but the default syntax (which requires whitespace around those) doesn't allow it, and these context then don't show up in searches, which is unfortunate. The added TODOTXT_SIGIL_BEFORE_PATTERN and TODOTXT_SIGIL_AFTER_PATTERN allow to tweak the syntax to accommodate this.
The implementation just exchanges grep with a corresponding sed pipeline step, which shouldn't negatively affect the performance at all (as sed is one of the main commands used thoughout the script), but which allows for the additional matching flexibility.

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

Use the POSIX \{0,1\} instead.

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

Concatenate both alternatives as optional matches; this is only an approximation but satisfies the test case here. It would probably be better if the entire sed code used extended regular expression syntax (-E) instead of basic ones (-e), but that change would also affect all add-ons. As this is an optional customization feature, uses who really need this either also have to work around, or supply a GNU sed port on MacOS.

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

Use the POSIX \{1,\} instead.

Co-authored-by: Ali Karbassi <ali@karbassi.com>
2020-03-30 18:13:29 -05:00
2020-03-29 21:26:56 -05:00
2012-03-19 11:00:51 -05:00
2020-03-29 21:26:56 -05:00
2018-03-26 11:09:35 -05:00
2020-03-29 21:26:56 -05:00

todo.txt-cli

A simple and extensible shell script for managing your todo.txt file.

CI GitHub issues GitHub forks GitHub stars GitHub license Gitter

gif

Read our contributing guide if you're looking to contribute (issues/PRs/etc).

Installation

Download

Download the latest stable release for use on your desktop or server.

OS X / macOS

brew install todo-txt

Linux

From command line

make
make install
make test

NOTE: Makefile defaults to several default paths for installed files. Adjust to your system:

  • INSTALL_DIR: PATH for executables (default /usr/local/bin)
  • CONFIG_DIR: PATH for todo.txt config
  • BASH_COMPLETION: PATH for autocompletion scripts (default to /etc/bash_completion.d)
make install CONFIG_DIR=/etc INSTALL_DIR=/usr/bin BASH_COMPLETION=/usr/share/bash-completion/completions

Arch Linux (AUR)

https://aur.archlinux.org/packages/todotxt-git/

Usage

todo.sh [-fhpantvV] [-d todo_config] action [task_number] [task_description]

For example, to add a todo item, you can do:

todo.sh add "THING I NEED TO DO +project @context"

Read about all the possible commands in the USAGE file.

Release History

See CHANGELOG.md

Support

Code of Conduct

Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Contributing

We welcome all contributations. First read our Contributor Code of Conduct and then get started contributing.

License

GNU General Public License v3.0 © todo.txt org

Description
☑ A simple and extensible shell script for managing your todo.txt file.
http://todotxt.org
Readme 6.3 MiB
Languages
Shell 98.7%
Makefile 1.3%