Add zsh/oh my zsh/w10k

This commit is contained in:
Tim
2020-01-22 17:37:20 +01:00
committed by Tim
parent ca9600417a
commit 55329b15f9
839 changed files with 62270 additions and 13 deletions

View File

@ -0,0 +1,35 @@
# rake-fast
Fast rake autocompletion plugin.
This plugin caches the output for later usage and significantly speeds it up.
It generates a `.rake_tasks` cache file in parallel to the Rakefile. It also
checks the file modification time to see if it needs to regenerate the cache
file.
This is entirely based on [this pull request by Ullrich Schäfer](https://github.com/robb/.dotfiles/pull/10/),
which is inspired by [this Ruby on Rails trick from 2006](https://weblog.rubyonrails.org/2006/3/9/fast-rake-task-completion-for-zsh/).
Think about that. 2006.
----------
Since August of 2016, it also checks if it's in a Rails project and looks at
rake files inside `lib/tasks` and their modification time to know if the
cache file needs to be regenerated.
## Installation
Just add the plugin to your `.zshrc`:
```zsh
plugins=(... rake-fast)
```
You might consider adding `.rake_tasks` to your [global .gitignore](https://help.github.com/articles/ignoring-files#global-gitignore)
## Usage
Type `rake`, then press tab.
If you want to force the regeneration of the `.rake_tasks` file, run `rake_refresh`.

View File

@ -0,0 +1,43 @@
_rake_does_task_list_need_generating () {
[[ ! -f .rake_tasks ]] || [[ Rakefile -nt .rake_tasks ]] || { _is_rails_app && _tasks_changed }
}
_is_rails_app () {
[[ -e "bin/rails" ]] || [[ -e "script/rails" ]]
}
_tasks_changed () {
local -a files
files=(lib/tasks lib/tasks/**/*(N))
for file in $files; do
if [[ "$file" -nt .rake_tasks ]]; then
return 0
fi
done
return 1
}
_rake_generate () {
rake --silent --tasks | cut -d " " -f 2 | sed 's/\[.*\]//g' > .rake_tasks
}
_rake () {
if [[ -f Rakefile ]]; then
if _rake_does_task_list_need_generating; then
echo "\nGenerating .rake_tasks..." >&2
_rake_generate
fi
compadd $(cat .rake_tasks)
fi
}
compdef _rake rake
rake_refresh () {
[[ -f .rake_tasks ]] && rm -f .rake_tasks
echo "Generating .rake_tasks..." >&2
_rake_generate
cat .rake_tasks
}