Browse Source

Merge pull request #5601 from mcornella/refactor-zsh_reload-plugin

Refactor zsh_reload plugin
Marc Cornellà 7 years ago
parent
commit
dd39d43021
2 changed files with 32 additions and 10 deletions
  1. 23 0
      plugins/zsh_reload/README.md
  2. 9 10
      plugins/zsh_reload/zsh_reload.plugin.zsh

+ 23 - 0
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!
+```

+ 9 - 10
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
 }
 }