#!/usr/bin/tclsh # # A wrapper around cg_annotate that sets appropriate command-line options # and rearranges the output so that annotated files occur in a consistent # sorted order. # set in [open |[list cg_annotate --show=Ir --auto=yes --context=40 {*}$argv] r] set dest ! set out(!) {} while {![eof $in]} { set line [string map {\t { }} [gets $in]] if {[regexp {^-- Auto-annotated source: (.*)} $line all name]} { set dest $name } elseif {[regexp {^-- line \d+ ------} $line]} { set line [lreplace $line 2 2 {#}] } elseif {[regexp {^The following files chosen for } $line]} { set dest ! } append out($dest) $line\n } foreach x [lsort [array names out]] { puts $out($x) }