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

使用大型TCL项目打印出源层次结构,tcl,Tcl,因此,我正在处理一个大型TCL项目,并认为构建一个树视图来查看项目中文件的来源是多么的酷。我修改了源命令以执行以下操作: 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 upleve

因此,我正在处理一个大型TCL项目,并认为构建一个树视图来查看项目中文件的来源是多么的酷。我修改了源命令以执行以下操作:

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中的所有源文件似乎都正常工作,但下面的任何内容似乎都要回到使用旧的源程序。你知道为什么会这样吗

[info script]
将为您提供调用
源代码的文件名

例如:

a、 tcl

b、 tcl

c、 tcl

输出

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

不同文件执行“令人惊讶的操作”的问题看起来有点复杂。请就此提出另一个问题。(一个问题中包含太多内容。)
puts "in file b"
source c.tcl
puts "in file c"
a.tcl sources b.tcl
in file b
b.tcl sources c.tcl
in file c