I posted wrong code for Plan 9 by error. The E script: ----------------- #!/bin/rc files=() dest=() if(~ $#* 0){ echo usage: E file ... >[1=2] exit usage } for(i) switch($i){ case /* files = ( $files $i ) case * files = ( $files `{cleanname `{pwd}^/$i} ) } if(test -f /mnt/term/srv/sam.$user) dest = /mnt/term/srv/sam.$user if not if(test -f /srv/sam.$user) dest = /srv/sam.$user if not { switch($files){ case *:* for(i in $files){ fi = `{echo $i | sed 's/(.*):[^:]*/\1/'} ad = `{echo $i | sed 's/.*:([^:]*)/\1/'} plumb -d edit -a 'addr='$"ad'' $fi } case * plumb -d edit $files } exit } switch($files){ case *:* for(i in $files) echo $i | sed 's/^/B /;s/:(.*)$/\n\1/g' >> $dest case * echo B $files >> $dest } ----------------- The plumb rules: ----------------- # existing files, possibly tagged by line number, go to editor type is text data matches '([.a-zA-Z¡-￿0-9_/+\-]*[a-zA-Z¡-￿0-9_/+\-])('$addr')?' arg isfile $1 plumb start E $file:$3 ## man index entries are synthesized type is text data matches '([a-zA-ZÀ-ʨ¡-￿0-9_-./+\-]+)\(([1-8])\)' plumb start rc -c 'if(test -f /mnt/term/srv/sam.$user) dest = /mnt/term/srv/sam.$user; if not if(test -f /srv/sam.$user) dest = /srv/sam.$user; if not {man '$2' '$1' >[2=1] | plumb -i -d edit -a ''action=showdata filename=/man/'$1'('$2')''; exit}; {echo ''{}''; echo ''B ~~'$1'('$2')~~''; echo ''[2=1]''} >>$dest' # poor man's sam file browser type is text data matches '([.a-zA-Z¡-￿0-9_/\-;&$,'']+)' arg isdir $0 plumb start rc -c 'if(test -f /mnt/term/srv/sam.$user) dest = /mnt/term/srv/sam.$user; if not if(test -f /srv/sam.$user) dest = /srv/sam.$user; if not {plumb -d edit '$dir'; exit}; cd '$dir'; DIR = `{pwd}; {echo ''{}''; echo B $DIR/~~samdir~~; echo '',>/srv/sam.$user' ## poor man's sam exec in current file's cwd type is text data matches '(¤)([a-zA-ZÀ-ʨ¡-￿0-9_\-./\+^,()$:|#%<>*&'' ]+)' plumb start rc -c 'if(test -f /mnt/term/srv/sam.$user) dest = /mnt/term/srv/sam.$user; if not if(test -f /srv/sam.$user) dest = /srv/sam.$user; if not {echo can''''t find sam server file >[1=2]; exit open}; {cd '$wdir'; {echo '$wdir' ¤'''$2'''; echo; {'$2'}; echo} >/tmp/sam_ecfcwd_$pid >[2=1]; {echo ''{}''; echo B '$wdir'^/~~cmd~~; echo ''$''; echo ''>$dest}' ----------------- I've tested it in 9front, and all works good. Of course you can delete all the acme part if you don't use it. Remember that you have to edit samterm/io.c to create always the pipe [...] hoststart(); plumbstart(); extstart(); } And in P9P you need to set the shell to rc in sam/unix.c #define SHNAME "rc" #define SHPATHNAME "/usr/local/plan9/bin/rc" Or adapt the rules for sh... trebol.