Use add-zsh-hook to add functions to hooks. That way they won't be added again
when doing `source ~/.zshrc` multiple times.
Co-authored-by: Marc Cornellà <marc.cornella@live.com>
Use ">!" to overwrite $cache_file in case noclobber is set.
When noclobber is set, zsh will not allow the use of ">" to overwrite
the contents of a file. Instead, it displays a "file exists" error.
By using ">!" instead, we tell zsh to overwrite the file without
complaining.
Keeps track of the last changed directory. When a new shell is created,
the last directory will be restored. Mimics how tabs works in many
terminal emulators.