|  | #!/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 | 
|  | } | 
|  |  |