summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorNick Stenning <nick@whiteink.com>2011-09-24 17:09:57 +0100
committerNick Stenning <nick@whiteink.com>2011-09-24 17:22:20 +0100
commit8287cc177e993aebc8ee0a9f5ee5a1cee6893253 (patch)
tree831fa30f1142c6f2e8d54dd8ae02cc7e872f9a81 /plugins
parent762b55bb2bc0452ce3f5f2f21bc22b61936ef704 (diff)
downloadzsh-8287cc177e993aebc8ee0a9f5ee5a1cee6893253.tar.gz
zsh-8287cc177e993aebc8ee0a9f5ee5a1cee6893253.tar.bz2
zsh-8287cc177e993aebc8ee0a9f5ee5a1cee6893253.zip
Better cake completion: don't barf on options, and don't clobber user's namespace
Diffstat (limited to 'plugins')
-rw-r--r--plugins/cake/cake.plugin.zsh22
1 files changed, 13 insertions, 9 deletions
diff --git a/plugins/cake/cake.plugin.zsh b/plugins/cake/cake.plugin.zsh
index f968c71d5..1d0d196ee 100644
--- a/plugins/cake/cake.plugin.zsh
+++ b/plugins/cake/cake.plugin.zsh
@@ -1,18 +1,22 @@
# Set this to 1 if you want to cache the tasks
-cache_task_list=1
+_cake_cache_task_list=1
# Cache filename
-cache_file='.cake_task_cache'
+_cake_task_cache_file='.cake_task_cache'
+
+_cake_get_target_list () {
+ cake | grep '^cake ' | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$'
+}
_cake_does_target_list_need_generating () {
- if [ $cache_task_list -eq 0 ]; then
+ if [ ${_cake_cache_task_list} -eq 0 ]; then
return 1;
fi
- if [ ! -f $cache_file ]; then return 0;
+ if [ ! -f ${_cake_task_cache_file} ]; then return 0;
else
- accurate=$(stat -f%m $cache_file)
+ accurate=$(stat -f%m $_cake_task_cache_file)
changed=$(stat -f%m Cakefile)
return $(expr $accurate '>=' $changed)
fi
@@ -21,12 +25,12 @@ _cake_does_target_list_need_generating () {
_cake () {
if [ -f Cakefile ]; then
if _cake_does_target_list_need_generating; then
- cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$' > $cache_file
- compadd `cat $cache_file`
+ _cake_get_target_list > ${_cake_task_cache_file}
+ compadd `cat ${_cake_task_cache_file}`
else
- compadd `cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$'`
+ compadd `_cake_get_target_list`
fi
fi
}
-compdef _cake cake
+compdef _cake cake \ No newline at end of file