#!/usr/local/plan9/bin/rc . 9.rc . $PLAN9/lib/acme.rc fn event { # $1 - c1 origin of event # $2 - c2 type of action # $3 - q0 beginning of selection # $4 - q1 end of selection # $5 - eq0 beginning of expanded selection # $6 - eq1 end of expanded selection # $7 - flag # $8 - nr number of runes in $9 # $9 - text # $10 - chorded argument # $11 - origin of chorded argument switch($1$2){ case E* # write to body or tag case F* # generated by ourselves; ignore case K* # type away we do not care case Mi # mouse: text inserted in tag case MI # mouse: text inserted in body case Md # mouse: text deleted from tag case MD # mouse: text deleted from body case Mx MX # button 2 in tag or body winwriteevent $* case Ml ML # button 3 in tag or body { if(~ $dict NONE) dictwin /adict/$9/ $9 if not dictwin /adict/$dict/$9 $dict $9 } & } } fn dictwin { newwindow winname $1 switch($#*){ case 1 dict -d '?' >[2=1] | sed 1d | winwrite body case 2 dict=$2 case 3 dict=$2 dict -d $dict $3 >[2=1] | winwrite body } winctl clean wineventloop } dict=NONE if(~ $1 -d){ shift dict=$1 shift } if(~ $1 -d*){ dict=`{echo $1 | sed 's/-d//'} shift } if(~ $1 -*){ echo 'usage: adict [-d dict] [word...]' >[1=2] exit usage } switch($#*){ case 0 if(~ $dict NONE) dictwin /adict/ if not dictwin /adict/$dict/ $dict case * if(~ $dict NONE){ dict=`{dict -d'?' | 9 sed -n 's/^ ([^\[ ]+).*/\1/p' | sed 1q} if(~ $#dict 0){ echo 'no dictionaries present on this system' >[1=2] exit nodict } } for(i) dictwin /adict/$dict/$i $dict $i }