2011-09-20 4 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 
} 

が供給されているが、誰もが、私はファイルをsourceコマンドを呼び出しているかを決定することができる方法上の任意のアイデアを持っていた場合、私は思っていましたか?

私が実行している別の興味深い問題は、新しいソースプロシージャが一部のファイルでのみ動作するように見えるということです。 File AソースファイルBとFile Bのすべてのソースが正しく動作しているようですが、その下のものは古いソースプロシージャを使用して戻っているようです。なぜこれが起こっているのかについてのアイデアはありますか?

+0

異なるファイルは、「驚くべき何か」をやっての問題は、少し複雑に見えます。そのために別の質問を開いてください。 (1つの質問で多すぎることがあります) –

答えて

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

関連する問題