summaryrefslogtreecommitdiff
path: root/plugins/zsh_reload
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/zsh_reload')
-rw-r--r--plugins/zsh_reload/README.md23
-rw-r--r--plugins/zsh_reload/zsh_reload.plugin.zsh19
2 files changed, 32 insertions, 10 deletions
diff --git a/plugins/zsh_reload/README.md b/plugins/zsh_reload/README.md
new file mode 100644
index 000000000..d31a827fe
--- /dev/null
+++ b/plugins/zsh_reload/README.md
@@ -0,0 +1,23 @@
+# zsh_reload plugin
+
+The zsh_reload plugin defines a function to reload the zsh session with
+just a few keystrokes.
+
+To use it, add `zsh_reload` to the plugins array in your zshrc file:
+
+```zsh
+plugins=(... zsh_reload)
+```
+
+## Usage
+
+To reload the zsh session, just run `src`:
+
+```zsh
+$ vim ~/.zshrc # enabled a plugin
+$ src
+re-compiling /home/user/.zshrc.zwc: succeeded
+re-compiling /home/user/.oh-my-zsh/cache/zcomp-host.zwc: succeeded
+
+# you now have a fresh zsh session. happy hacking!
+```
diff --git a/plugins/zsh_reload/zsh_reload.plugin.zsh b/plugins/zsh_reload/zsh_reload.plugin.zsh
index cde9ebeca..51048ba9d 100644
--- a/plugins/zsh_reload/zsh_reload.plugin.zsh
+++ b/plugins/zsh_reload/zsh_reload.plugin.zsh
@@ -1,13 +1,12 @@
-# reload zshrc
-function src()
-{
- local cache=$ZSH_CACHE_DIR
- autoload -U compinit zrecompile
- compinit -d "$cache/zcomp-$HOST"
+src() {
+ local cache="$ZSH_CACHE_DIR"
+ autoload -U compinit zrecompile
+ compinit -i -d "$cache/zcomp-$HOST"
- for f in ~/.zshrc "$cache/zcomp-$HOST"; do
- zrecompile -p $f && command rm -f $f.zwc.old
- done
+ for f in ~/.zshrc "$cache/zcomp-$HOST"; do
+ zrecompile -p $f && command rm -f $f.zwc.old
+ done
- source ~/.zshrc
+ # Use $SHELL if available; remove leading dash if login shell
+ [[ -n "$SHELL" ]] && exec ${SHELL#-} || exec zsh
}