diff options
| author | Robby Russell <robby@planetargon.com> | 2014-03-22 07:53:36 -0700 | 
|---|---|---|
| committer | Robby Russell <robby@planetargon.com> | 2014-03-22 07:53:36 -0700 | 
| commit | 2e06412ee070a102b81d80bd39e637d2f87bf1b2 (patch) | |
| tree | a3194d787a6a932668285c8e6172b8bfce3327b1 /plugins/rake-fast/rake-fast.plugin.zsh | |
| parent | 6d616de6f1a9046de75198959a55e96e110b38f0 (diff) | |
| parent | baeac5bec9cc9b2da5ac69054d91ae3838fde402 (diff) | |
| download | zsh-2e06412ee070a102b81d80bd39e637d2f87bf1b2.tar.gz zsh-2e06412ee070a102b81d80bd39e637d2f87bf1b2.tar.bz2 zsh-2e06412ee070a102b81d80bd39e637d2f87bf1b2.zip | |
Merge pull request #2531 from KevinBongart/rake-fast
Add rake-fast plugin for fast rake autocompletion
Diffstat (limited to 'plugins/rake-fast/rake-fast.plugin.zsh')
| -rw-r--r-- | plugins/rake-fast/rake-fast.plugin.zsh | 51 | 
1 files changed, 51 insertions, 0 deletions
| diff --git a/plugins/rake-fast/rake-fast.plugin.zsh b/plugins/rake-fast/rake-fast.plugin.zsh new file mode 100644 index 000000000..320855233 --- /dev/null +++ b/plugins/rake-fast/rake-fast.plugin.zsh @@ -0,0 +1,51 @@ +# rake-fast +# Fast rake autocompletion plugin for oh-my-zsh + +# This script caches the output for later usage and significantly speeds it up. +# It generates a .rake_tasks file in parallel to the Rakefile. + +# You'll want to add `.rake_tasks` to your global .git_ignore file: +# https://help.github.com/articles/ignoring-files#global-gitignore + +# You can force .rake_tasks to refresh with: +# $ rake_refresh + +# This is entirely based on Ullrich Schäfer's work +# (https://github.com/robb/.dotfiles/pull/10/), +# which is inspired by this Ruby on Rails trick from 2006: +# http://weblog.rubyonrails.org/2006/3/9/fast-rake-task-completion-for-zsh/ + +_rake_refresh () { +  if [ -f .rake_tasks ]; then +    rm .rake_tasks +  fi +  echo "Generating .rake_tasks..." > /dev/stderr +  _rake_generate +  cat .rake_tasks +} + +_rake_does_task_list_need_generating () { +  if [ ! -f .rake_tasks ]; then return 0; +  else +    accurate=$(stat -f%m .rake_tasks) +    changed=$(stat -f%m Rakefile) +    return $(expr $accurate '>=' $changed) +  fi +} + +_rake_generate () { +  rake --silent --tasks | cut -d " " -f 2 > .rake_tasks +} + +_rake () { +  if [ -f Rakefile ]; then +    if _rake_does_task_list_need_generating; then +      echo "\nGenerating .rake_tasks..." > /dev/stderr +      _rake_generate +    fi +    compadd `cat .rake_tasks` +  fi +} + +compdef _rake rake +alias rake_refresh='_rake_refresh' | 
