#!/opt/p9p/bin/rc # Given a python name foo.bar.baz, try to find that module in source. # Start relative to the current path; eventually, look up in stdlib. rfork en . 9.rc wdir=$1 shift # Given args 'dir', 'foo' and 'bar', find 'foo/bar.py' in various dirs; stop at first hit. fn findfile { cwd=$1 while(! ~ $cwd '') { d=`{basename $cwd | tr -d ' '} if(~ $d $2) { if(test -r $cwd^/^$3^.py) { echo -n $cwd^/^$3^.py } } cwd=`{basename -d $cwd | tr -d ' '} } } for (i in $*) { ifs=' ' args=`{echo $i | tr . ' '} dir=$args(1) mod=$args(2) def=`{echo $args(3) | tr -d ' '} file=`{findfile $wdir $dir $mod} addr=`{echo -n 'addr=/^def.'^$def} plumb -d edit -a $"addr $file }