Posted to tcl by kbk at Mon Jan 04 22:25:51 GMT 2010view pretty

foreach filename $argv {
set f [open $filename r]
set script [read $f]
close $f

set patStart {\[('|(?:(?:::)?msgcat::)?mc)\s}
set patEnd {[\];\n]}

set pos 0
while {[regexp -indices -start $pos -- $patStart $script where]} {
    foreach {start end} $where break
    incr start
    set pos2 [expr {$start+1}]
    while {[regexp -indices -start $pos2 -- $patEnd $script where]} {
	set end [lindex $where 0]
	set command [string range $script $start [expr {$end-1}]]
	if {[info complete $command\n]} {
	    puts $command
	    break
	} else {
	    set pos2 [expr {$end + 1}]
	}
    }
    set pos [expr {$end + 1}]
}

}