Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: re-source rc atomically



On Wed, 23 Jul 2014 08:02:27 -0400
shawn wilson <ag4ve.us@xxxxxxxxx> wrote:
> Is there a way to source my zshrc somewhat atomically?
> 
> I wouldn't want to do this to all of my sessions in case I mess
> something up. But it would be nice if this were re-sourced in most as
> automatic as possible so that when I change an alias or add a new
> function I don't have to remember what was added when and manually
> source my config when something doesn't work as expected.

I guess you know about ". ~/.zshrc" and are asking if there's a way to
do that without you having to type it.

You can do stuff like this.  Use the array precmd_functions if you
have other things in precmd.

precmd() {
   local -a stat
   integer last_change
   zmodload -F zsh/stat b:zstat
   zstat -A stat +mtime ~/.zshrc
   last_change=$stat[1]
   if [[ -n $ZSHRC_LAST_CHANGE && last_change -gt ZSHRC_LAST_CHANGE ]]; then
     # We don't want this to occur in function scope.
     trap '. ~/.zshrc' EXIT
   fi
   typeset -ig ZSHRC_LAST_CHANGE
   ZSHRC_LAST_CHANGE=last_change
}


You'd better make sure .zshrc doesn't define a conflicting precmd(), of
course (as mine just did...)

You could loop over other functions if you wanted.

pws



Messages sorted by: Reverse Date, Date, Thread, Author