使用大型TCL项目打印出源层次结构

时间:2011-09-20 17:24:59

标签: tcl

所以我正在使用一个大型TCL项目,并认为构建一个关于文件如何在项目中获取的树视图会很酷。我修改了source命令来执行以下操作:

rename ::source ::real_source

proc ::source args {
    set file_handle [open "file_source.tcl" a]
    puts $file_handle $args
    puts $file_handle $argv0
    close $file_handle
    uplevel 1 ::real_source $args
}

哪个工作并保存所有源文件,但我想知道是否有人对如何确定哪些文件调用源命令有任何想法?

我遇到的另一个有趣的问题是我的新源程序似乎只适用于某些文件。文件A源文件B和文件B中的所有源似乎都正常工作,但其下的任何内容似乎都回到使用旧的源程序。有关为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:4)

[info script]会为您提供调用source

的文件的名称

示例:

a.tcl

rename ::source ::real_source
proc ::source args {
    puts "[info script] sources $args"
    uplevel 1 ::real_source $args
}
source b.tcl

b.tcl

puts "in file b"
source c.tcl

c.tcl

puts "in file c"

输出

a.tcl sources b.tcl
in file b
b.tcl sources c.tcl
in file c