Posted to tcl by Poor Yorick at Wed Feb 05 02:49:43 GMT 2014view raw
- #! /bin/env tclsh
- proc alias {alias target} {
- set fulltarget [uplevel [list namespace which $target]]
- namespace eval [namespace qualifiers $fulltarget] \
- [list namespace export [namespace tail $fulltarget]]
- set newcmd [namespace eval [info cmdcount] [string map [
- list @{alias} [list $alias] @{fulltarget} [list $fulltarget] ] {
- namespace import @{fulltarget}
- rename [namespace tail @{fulltarget}] @{alias}
- ::namespace export @{alias}
- ::namespace which @{alias}
- }]]
- uplevel [list namespace import $newcmd]
- uplevel [list trace add command $fulltarget delete [list apply [list {stash args} {
- namespace delete [namespace qualifiers $stash]
- }] $newcmd]]
- }
- proc proc1 args {}
- alias newproc proc1
- proc proc1 {} {}