the original script doesnt give 100 instances of what ever that is said in channel, it gives ever instance in the first 100 lines in the channel buffer, if the channel buffer is 1000 lines then it misses the last 900 lines.
alias Track: {
var %win $+(@,$$1), %temp = $+(%win,.temp), %input = $chan
set -u0 %Track.filter.alias.win %win
window -c %win | window -exnk0 %win
window -c %temp | window -hn %temp
filter -wwc %input %temp $+(*,$$1,*)
filter -wwcr $+($iif(($calc($line(%temp,0) - 49) < 1),1,$v1),-,$line(%temp,0)) %temp %temp
filter -wwk %temp Track.filter.alias
window -c %temp
}
alias -l Track.filter.alias { iline -p %Track.filter.alias.win 1 $1- }
* whats it do
filters all instances to a window (%temp)
filters the last 50 only back into %temp
filters to a alias to reverse the order (couldnt think of a better way, im sure there is one but it eludes me right now) leaving them in %win