Search code examples
tclproc

TCL obtain the proc name in which I am


How to know what is the name of the proc in which I am. I mean I need this:

proc nameOfTheProc {} {

    #a lot of code here
    puts "ERROR: You are using 'nameOfTheProc' proc wrongly"
}

so I want to obtain "nameOfTheProc" but not hard-code. So that when someone will change the proc name it will still work properly.


Solution

  • You can use the info level command for your issue:

    proc nameOfTheProc {} {
    
        #a lot of code here
        puts "ERROR: You are using '[lindex [info level 0] 0]' proc wrongly"
        puts "INFO:  You specified the arguments: '[lrange [info level [info level]] 1 end]'"
    }
    

    With the inner info level you will get the level of the procedure call depth you are currently in. The outer one will return the name of the procedure itself.