2011-09-20 57 views
3

因此,我正在与一个大型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 
    uplevel 1 ::real_source $args 
} 

其中一期工程,并保存所有文件被采购,但我想知道是否有人对我怎么能确定哪些文件被调用源命令的任何想法?

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

+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 
+0

这很有用,谢谢! – tgai

+0

@Tarmon,一定要接受答案 – kostix