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.
This commit is contained in:
Ingo Karkat
2012-02-28 14:55:27 +01:00
parent f4145348d0
commit 707ebf1522
4 changed files with 75 additions and 15 deletions

16
todo.sh
View File

@@ -57,6 +57,7 @@ shorthelp()
help
list|ls [TERM...]
listall|lsa [TERM...]
listaddons
listcon|lsc
listfile|lf [SRC [TERM...]]
listpri|lsp [PRIORITIES] [TERM...]
@@ -219,6 +220,9 @@ help()
TERM specified, lists entire todo.txt AND done.txt
concatenated and sorted.
listaddons
Lists all added and overridden actions in the actions directory.
listcon
lsc
Lists all the task contexts that start with the @ sign in todo.txt.
@@ -1300,6 +1304,18 @@ note: PRIORITY must be anywhere from A to Z."
fi
;;
"listaddons" )
if [ -d "$TODO_ACTIONS_DIR" ]; then
cd "$TODO_ACTIONS_DIR" || exit $?
for action in *
do
if [ -f "$action" -a -x "$action" ]; then
echo "$action"
fi
done
fi
;;
* )
usage;;
esac