;load the history buffer of any window(s)
;usage /load.history windowname text
; ^ windowname can only be one word
;usage $load.history(windowname,text content)
; ^ windowname can be multiple words ie: "status window", NB if hardcoding text beware of the limitation of placing commas
;
;NB : History well not be stored untill calling script completes
;
alias load.history {
if (($len($1) == 0) || ($len($2) == 0)) { return }
hadd -m history.spool.buffer Buffer.Start $int($calc($hget(history.spool.buffer,Buffer.Start) + 0))
hadd -m history.spool.buffer Buffer.Finish $iif($int($calc($hget(history.spool.buffer,Buffer.Finish) + 1)),$v1)
hadd -m history.spool.buffer $v1 $+($1,$cr,$2-)
.timer.despool.history.spool.buffer 1 0 despool.history.spool.buffer
}
alias -l despool.history.spool.buffer {
if ($0) { var %active = $1- } | else { var %active = $active }
var %start = $int($calc($hget(history.spool.buffer,Buffer.Start) + 0))
var %finish = $int($calc($hget(history.spool.buffer,Buffer.Finish) + 0))
while ( (%start <= %finish) && ( ($numtok($hget(history.spool.buffer,%start),$asc($cr)) < 2) || (!$numtok($gettok($hget(history.spool.buffer,%start),1,$asc($cr)),32)) || (!$numtok($gettok($hget(history.spool.buffer,%start),2-,$asc($cr)),32)) || (!$window($gettok($gettok($hget(history.spool.buffer,%start),1 ,$asc($cr)),1-,32))) ) ) { inc %start }
if (%start <= %finish) {
hadd -m history.spool.buffer Buffer.Start %start
var %window = $gettok($gettok($hget(history.spool.buffer,%start),1 ,$asc($cr)),1-,32)
var %text = $gettok($gettok($hget(history.spool.buffer,%start),2-,$asc($cr)),1-,32)
hdel history.spool.buffer %start
set -u1000000000 %history.buffer.load.text %text
.timer.despool.history.spool.buffer 1 0 despool.history.spool.buffer %active
window -a $+(",%window,")
editbox $iif((%window == Status Window),-ns,-n %window) %text
}
else {
hfree -w history.spool.buffer
window -a $+(",%active,")
}
}
on *:INPUT:*:{ if ($1- == %history.buffer.load.text) { unset %history.buffer.load.text | halt } }