On Tue 12.Jun.07 16:14, Peter Stephenson wrote:
If you have version 4.3.4 the sched mechanism will call functions asynchronously within zle, if that's running. So something like clear-zle-screen() { zle && zle clear-screen sched +60 clear-zle-screen } sched +60 clear-zle-screen does the basics. However, it will attempt to clear the screen *every* 60 seconds, not just after 60 seconds of idleness. One possible way around that is to look at the modification time for the terminal and compare it with the current time: clear-zle-screen() { zmodload -i zsh/stat zmodload -i zsh/datetime local -a mtime integer diff stat -A mtime +mtime $TTY (( diff = EPOCHSECONDS - ${mtime} )) if (( diff > 60 )); then zle && zle clear-screen sched +60 clear-zle-screen else sched +$(( 60 - diff )) clear-zle-screen fi }
Amazing, thanks a lot, Peter! Here's the (maybe) final setup: ## $fpath[1]/clear-zle-screen zmodload -i zsh/stat zmodload -i zsh/datetime clear-zle-screen() { local -a mtime integer diff stat -A mtime +mtime $TTY (( diff = EPOCHSECONDS - ${mtime} )) if (( diff >= CLRTMOUT )); then zle && zle clear-screen # function called from precmd(), to avoid multiple clearouts # sched +$CLRTMOUT clear-zle-screen else sched +$(( CLRTMOUT - diff )) clear-zle-screen fi } functions[precmd]+="; sched +$CLRTMOUT clear-zle-screen" clear-zle-screen ## zshrc ## Clear the screen after CLRTMOUT seconds of inactivity if [[ $ZSH_VERSION == 4.3.<4-> ]]; then CLRTMOUT=3600 autoload clear-zle-screen clear-zle-screen fiNow, for every prompt that is printed I get a new sched job queued. This might get as big as 3600 or more. Do you think that is going to be a serious performance penalty on my daily zsh routine?
Cheers; and, again, thank you. -- redondos
Attachment:
pgpR4kiRIIJtu.pgp
Description: PGP signature