This script was contributed by Sargas. The real stand-out feature on this one (to my mind, anyway) is the enter-completion, which lets you get away with partial names. Since I use my own speedwalker, I haven't tried this one. (This means you'll have to ask Sargas for support)
;; sw.tf - nice little speedwalk script featuring a kind of half-assed ;; tab-complete ( uses enter ) but you don't have to remember ;; long names. replaces ';'s in speedwalks with '%;'s so you dont ;; have too. ;; ;; 02/2002 - first incarnation - lucas ;; 07/2002 - finaly get around to fixing /run to do enter-complete ;; - add 0-9- to speedwalk names ;; setup - place sw.tf and the speedwalk file of our choice into ~/mud ;; ( assuming you start tf from your home dir ). From tf issue ;; '/load mud/sw.tf' and '/loadruns' and you should be set. ;; read speedwalks from file into two vars, one for speedwalk, one for name ;; useage /loadruns path/to/sw.txt or without a name points to mud/sw.txt /def loadruns=/if ( {1} =~ "" ) \ /loadruns mud/sw.txt%;\ /else \ /let a=$[ tfopen( {1}, "r" ) ]%;\ /if ( a != -1 ) \ /set swcount=0%;\ /while ( tfread( a, _runtmp ) != -1 ) \ /if ( regmatch( "^([a-z0-9_-]+) (.*)$", _runtmp ))\ /set _run_%swcount=%P2%;\ /set _runnames_%swcount=%P1%;\ /set swcount=$[swcount+1]%;\ /endif%;\ /done%;\ /test tfclose( a )%;\ /endif%;\ /echo ==============================%;\ /echo %swcount Speedwalks Loaded.%;\ /echo ==============================%;\ /endif ;; remove all loaded runs /def purgeruns=/quote -S /unset `/listvar -s _run* ;; return name or run given number /def getname = /return _runnames_%1 ;; if the user entered a valid name, run there, else show a ;; list of partial matches /def run = \ /if ( {1} !~ '' ) \ /let _rc=0%;\ /let _ri=0%;\ /let _tmp_run=-1%;\ /while ( _ri < swcount ) \ /if ( {1} =~ getname( _ri ) ) \ /let _tmp_run=$[ _ri ]%;\ /let _ri=$[ swcount ]%;\ /elseif ( strncmp( getname( _ri ), {1}, strlen( {1} ) ) == 0 ) \ /set _tmp_n_%_rc=%_ri%;\ /let _rc=$[ _rc + 1 ]%;\ /endif%;\ /let _ri=$[ _ri + 1 ]%;\ /done%;\ /let _ri=0%;\ /if ( _tmp_run == -1 ) \ /if ( _rc == 0 ) \ /echo ==============================%;\ /echo 0 matches found...%;\ /echo ==============================%;\ /elseif ( _rc == 1 ) \ /input /run $[getname( _tmp_n_0 )]%;\ /else \ /echo ==============================%;\ /echo %_rc matches found...%;\ /let _ta=0%;\ /let _tb=0%;\ /let _tm=256%;\ /let _ti=$[ strlen( {1} ) ]%;\ /while ( _ta < _rc ) \ /test getname( _tmp_n_%_ta )%;\ /echo %?%;\ ;; auto complete part, find longest substring all matches share /while ( _tb < _rc ) \ /test scomp( getname( _tmp_n_%_ta ), getname( _tmp_n_%_tb ), {_ti} )%;\ /let _ri=%?%;\ /if ( _ri < _tm ) \ /let _tm=%_ri%;\ /endif%;\ /let _tb=$[ _tb + 1 ]%;\ /done%;\ /let _ta=$[ _ta + 1 ]%;\ /done%;\ /echo ==============================%;\ ;; rewrite input with match /input /run $[ substr( getname( _tmp_n_0 ), 0, _tm ) ]%;\ /endif%;\ /else \ ;; run away!!! /test replace( ";", "\%;", _run_%_tmp_run )%;/eval %?%;\ /endif%;\ ;; clean up non let'd vars /while ( _rc >= 0 ) \ /unset _tmp_n_%_rc%;\ /let _rc=$[_rc-1]%;\ /done%;\ /else \ /echo ==============================%;\ /echo sorry, you need to supply atleast part of a name, I'm%;\ /echo not going to list all %swcount speedwalks for you.%;\ /echo ==============================%;\ /endif ;; and of course i just think of a nicer way to do this.. to late now ;; return the last position %1 and %2 are equal starting at position %3 /def scomp = \ /set k=%3%;\ /while ( strncmp( {1}, {2}, k ) == 0 & k < 255 ) \ /set k=$[k+1]%;\ /done%;\ /return $[k-1] ;; do not remove this line