Commit Diff


commit - 566f93c70d2f97fb885e350764cd750f2d107119
commit + 474ef694962718ddf82f93f841f91ee0a1dc6252
blob - /dev/null
blob + 979c6473da7536d46524649f331f7b1d9781d46f (mode 755)
--- /dev/null
+++ bin/adict
@@ -0,0 +1,86 @@
+#!/usr/local/plan9/bin/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 - flag
+	# $6 - nr number of runes in $7
+	# $7 - text
+	# $8 - chorded argument
+	# $9 - 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/$7/ $7
+			if not
+				dictwin /adict/$dict/$7 $dict $7
+		} &
+	}
+}
+
+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=$2
+	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'?' | 9sed -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
+}
+