#echo %%% Loading events... ^assign event_id wizirc event ^assign retrytime 3 alias assign_event { #echo ??? assign_events ^assign events ${events + 1} eval on ^hook "$event_id $events" $0 if ([$1]) {^assign ok_handler $1-} {^assign -ok_handler} if ([$events]==[1]) {^assign active_event 1} @function_return = [$events] } alias this_event { #echo ??? this_event timer 1 eval ^on hook -"$event_id $active_event" hook wizirc event $active_event } alias next_event { #echo ??? next_event if (![$ok_active]) { ^assign active_event ${active_event + 1} this_event } } alias ok_last_event { #echo ??? ok_last_event eval ^on hook -"$event_id $events" if ([$events]==[1]) { ^bind ^J send_line ^timer -delete $refnum ^assign active_event 0 ^assign -refnum } ^assign events ${events - 1} ^assign ok_active $word(0 $ok_handler) $ok_handler ^assign -ok_active ^assign -ok_handler } alias returnhandler { #echo ??? returnhandler ^bind ^J send_line sendline $L ^timer -delete $refnum this_event } alias checkinputbuffer { #echo ??? checkinputbuffer if ([$L]) { ^assign REFNUM $nextrefnum($REFNUM) timer -refnum $refnum $retrytime checkinputbuffer } { ^bind ^J send_line this_event } } alias delayiftyping { #echo ??? delayiftyping if ([$0]==[1]) { if ([$L]) { ^bind ^J parse_command returnhandler ^assign refnum $SERIAL_NO timer -refnum $refnum 3 checkinputbuffer @function_return = [1] } { ^assign -ok_handler @function_return = [0] this_event } } { @function_return = [1] } } alias nextrefnum { if ([$0]==[$SERIAL_NO]) {@function_return = SERIAL_NO + 1} {@function_return = SERIAL_NO} } alias clear_events { #echo ??? clear_events ^timer -delete $REFNUM ^assign events 0 ^assign active_event 0 ^assign -ok_handler ^assign -ok_active ^assign -refnum } # Initialize clear_events eval on ^hook "$event_id %" clear_events eval on ^hook "$event_id ok" if ([$ok_handler]) {ok_last_event} if (![$SERIAL_NO]) {^assign SERIAL_NO 3344} bind ^O parse_command if ([$ok_handler]) { hook $event_id ok } { parsekey toggle_insert_mode }