alias -l config { ; Mandatory settings var %TIMESTAMP_PATTERN = ^\[(\d\d:\d\d:\d\d)\].*$ var %PLAYBACK_BEGIN = Buffer Playback... var %PLAYBACK_END = Playback Complete. var %VARIABLE_PREFIX = gbuffer ; Optional settings ; Indent wrapped lines var %INDENT_LINES = $false ; Add the mode prefix to the nick (if possible) var %PREFIX_NICKS = $false ; Are there other ON TEXT processors in place? var %EXTERNAL_RENDERER = $true ; Possible values are NORMAL/LINESEP/NONE var %STATUS_DISPLAY = LINESEP ; Make use of space-preserving spaces.dll var %USE_SPACES_DLL = $false return $eval( $+( %, $1 ), 2 ) } alias -l makeNick { var %nick = $nick( $1, $2 ).pnick if ( ( 0 == $len( %nick ) ) || ( $true != $config( PREFIX_NICKS ) ) ) %nick = $2 return %nick } alias -l handleMessage { var %chan = $1 var %nick = $2 var %color = $3 var %pattern = $4 var %text = $5 var %pnick = $makeNick( %chan, %nick ) ; Buffered input if ( $true == $eval( $+( %, $config( VARIABLE_PREFIX ), ., $cid, ., %chan, ., playback ), 2 ) ) { noop $regex( %text, $config( TIMESTAMP_PATTERN ) ) ) var %timestamp = $+([,$regml( 1 ),]) var %params if ( $config( INDENT_LINES ) ) %params = $+( i, $calc( $len( %timestamp ) + $len( %pnick ) + 4 ) ) if ( %nick != $me ) %params = $+( %params, lmr ) if ( 0 != $len( %params ) ) %params = $+( -, %params ) if ( $true == $config( USE_SPACES_DLL ) ) { var %result noop $regex( %text, ^.*? (.*)$ ) noop $regsub( $regml( 1 ), /\\/g, \\\\, %result ) noop $regsub( %pattern, &TEXT&, %result, %result ) noop $regsub( %result , &NICK&, %pnick, %result ) noop $dll( spaces.dll, echo, $color( %color ) %params $chan %timestamp %result ) } else { echo $color( %color ) %params $chan %timestamp $replacecs( %pattern, &NICK&, %pnick, &TEXT&, $gettok( %text, 2-, 32 ) ) } } else { ; Current events (optional) if ( $true == $config( EXTERNAL_RENDERER ) ) return $false if ( $true == $config( USE_SPACES_DLL ) ) { var %result noop $regsub( %pattern, &NICK&, %pnick, %result ) noop $regsub( %text, /\\/g, \\\\, %text ) noop $regsub( %result, &TEXT&, %text, %result ) noop $dll( spaces.dll, echo, $color( %color ) $+( -i, $calc( $len( $timestamp ) + $len( %pnick ) + 5 ), lmrt ) $chan %result ) } else { echo $color( %color ) $+( -i, $calc( $len( $timestamp ) + $len( %pnick ) + 4 ), lmrt ) $chan $replacecs( %pattern, &NICK&, %pnick, &TEXT&, %text ) } } return $true } on ^*:text:*:#:{ ; Handle savebuff output if ( $nick == *savebuff ) { var %nick = $gettok( $2, 1, $asc( ! ) ) var %timestamp = $asctime( $1, $timestampfmt ) if ( $3 == MODE ) echo $color( mode ) $chan %timestamp * %nick sets mode: $4- elseif ( $3 == JOIN ) echo $color( join ) $chan %timestamp * %nick ( $+ $gettok( $2, 2, $asc( ! ) ) $+ ) has joined $chan elseif ( $3 == QUIT ) echo $color( quit ) $chan %timestamp * %nick ( $+ $gettok( $2, 2, $asc( ! ) ) $+ ) Quit ( $+ $4- $+ ) elseif ( $3 == PART ) echo $color( part ) $chan %timestamp * %nick ( $+ $gettok( $2, 2, $asc( ! ) ) $+ ) has left $chan elseif ( $3 == NICK ) echo $color( nick ) $chan %timestamp * %nick is now known as $4 elseif ( $3 == KICK ) echo $color( kick ) $chan %timestamp * $2 was kicked by $gettok( $4, 1, $asc( ! ) ) ( $+ $5- $+ ) elseif ( $3 == TOPIC ) echo $color( topic ) $chan %timestamp * %nick changes topic to ' $+ $right($4-, -1) $+ ' else echo $color( erro ) $chan *** UNHANDLED LINE < $+ $1- $+ > } ; Handle playback state notifications elseif ( $nick == *** ) { if ( $1- == $config( PLAYBACK_BEGIN ) ) { set -e $+( %, $config( VARIABLE_PREFIX ), ., $cid, ., $chan, ., playback ) $true } elseif ( $1- == $config( PLAYBACK_END ) ) { unset $eval( $+( %, $config( VARIABLE_PREFIX ), ., $cid, ., $chan, ., playback ), 1 ) } if ( $config( STATUS_DISPLAY ) == NORMAL ) { echo $color( notice ) $chan *** $1- } elseif ( $config( STATUS_DISPLAY ) == LINESEP ) { linesep $chan } halt } ; Handle usual input else { var %pattern = ^:.*? :(.*)$ noop $regex( $rawmsg, %pattern ) if ( $false == $handleMessage( $chan, $nick, normal, $+(<,$nick($chan, $nick).color,&NICK&,>) &TEXT&, $regml( 1 ) ) ) return } halt } on ^*:action:*:#:{ ;noop $dll( spaces.dll, echo, $chan $rawmsg ) var %pattern = ^:.*? :\x01ACTION (.*)\x01$ noop $regex( $rawmsg, %pattern ) if ( $true == $handleMessage( $chan, $nick, action, * &NICK& &TEXT&, $regml( 1 ) ) ) halt } on ^*:notice:*:#:{ ;noop $dll( spaces.dll, echo, $chan $rawmsg ) var %pattern = ^:.*? :(.*)$ noop $regex( $rawmsg, %pattern ) if ( $true == $handleMessage( $chan, $nick, notice, -&NICK&- &TEXT&, $regml( 1 ) ) ) halt }