Blob


1 #!/usr/local/plan9/bin/rc
3 . 9.rc
4 . $PLAN9/lib/acme.rc
6 fn event {
7 # $1 - c1 origin of event
8 # $2 - c2 type of action
9 # $3 - q0 beginning of selection
10 # $4 - q1 end of selection
11 # $5 - eq0 beginning of expanded selection
12 # $6 - eq1 end of expanded selection
13 # $7 - flag
14 # $8 - nr number of runes in $9
15 # $9 - text
16 # $10 - chorded argument
17 # $11 - origin of chorded argument
19 switch($1$2){
20 case E* # write to body or tag
21 case F* # generated by ourselves; ignore
22 case K* # type away we do not care
23 case Mi # mouse: text inserted in tag
24 case MI # mouse: text inserted in body
25 case Md # mouse: text deleted from tag
26 case MD # mouse: text deleted from body
28 case Mx MX # button 2 in tag or body
29 winwriteevent $*
31 case Ml ML # button 3 in tag or body
32 {
33 if(~ $dict NONE)
34 dictwin /adict/$9/ $9
35 if not
36 dictwin /adict/$dict/$9 $dict $9
37 } &
38 }
39 }
41 fn dictwin {
42 newwindow
43 winname $1
44 switch($#*){
45 case 1
46 dict -d '?' >[2=1] | sed 1d | winwrite body
47 case 2
48 dict=$2
49 case 3
50 dict=$2
51 dict -d $dict $3 >[2=1] | winwrite body
52 }
53 winctl clean
54 wineventloop
55 }
57 dict=NONE
58 if(~ $1 -d){
59 shift
60 dict=$1
61 shift
62 }
63 if(~ $1 -d*){
64 dict=`{echo $1 | sed 's/-d//'}
65 shift
66 }
67 if(~ $1 -*){
68 echo 'usage: adict [-d dict] [word...]' >[1=2]
69 exit usage
70 }
72 switch($#*){
73 case 0
74 if(~ $dict NONE)
75 dictwin /adict/
76 if not
77 dictwin /adict/$dict/ $dict
78 case *
79 if(~ $dict NONE){
80 dict=`{dict -d'?' | 9 sed -n 's/^ ([^\[ ]+).*/\1/p' | sed 1q}
81 if(~ $#dict 0){
82 echo 'no dictionaries present on this system' >[1=2]
83 exit nodict
84 }
85 }
86 for(i)
87 dictwin /adict/$dict/$i $dict $i
88 }