diff options
author | dgp <dgp@users.sourceforge.net> | 2005-06-24 15:02:03 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2005-06-24 15:02:03 (GMT) |
commit | bd8c715bee17fc9d82ec02595c68e6d3bde727ec (patch) | |
tree | 91af766ce80507bbbbb1f25342e264649ad3ab00 /library | |
parent | ef5d05a4956fa93a69fc19b1ae94d1fbe240f553 (diff) | |
download | tcl-bd8c715bee17fc9d82ec02595c68e6d3bde727ec.zip tcl-bd8c715bee17fc9d82ec02595c68e6d3bde727ec.tar.gz tcl-bd8c715bee17fc9d82ec02595c68e6d3bde727ec.tar.bz2 |
* library/auto.tcl: Make file safe to re-[source] without
destroying registered auto_mkindex_parser hooks.
Diffstat (limited to 'library')
-rw-r--r-- | library/auto.tcl | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/library/auto.tcl b/library/auto.tcl index 3262f5f..35ce6f2 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -3,7 +3,7 @@ # utility procs formerly in init.tcl dealing with auto execution # of commands and can be auto loaded themselves. # -# RCS: @(#) $Id: auto.tcl,v 1.12.2.5 2005/01/27 22:26:17 dgp Exp $ +# RCS: @(#) $Id: auto.tcl,v 1.12.2.6 2005/06/24 15:02:25 dgp Exp $ # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. @@ -309,7 +309,10 @@ namespace eval auto_mkindex_parser { variable scriptFile "" ;# name of file being processed variable contextStack "" ;# stack of namespace scopes variable imports "" ;# keeps track of all imported cmds - variable initCommands "" ;# list of commands that create aliases + variable initCommands ;# list of commands that create aliases + if {![info exists initCommands]} { + set initCommands [list] + } proc init {} { variable parser @@ -533,24 +536,6 @@ proc auto_mkindex_parser::fullname {name} { return $name } -# Register all of the procedures for the auto_mkindex parser that -# will build the "tclIndex" file. - -# AUTO MKINDEX: proc name arglist body -# Adds an entry to the auto index list for the given procedure name. - -auto_mkindex_parser::command proc {name args} { - variable index - variable scriptFile - # Do some fancy reformatting on the "source" call to handle platform - # differences with respect to pathnames. Use format just so that the - # command is a little easier to read (otherwise it'd be full of - # backslashed dollar signs, etc. - append index [list set auto_index([fullname $name])] \ - [format { [list source [file join $dir %s]]} \ - [file split $scriptFile]] "\n" -} - # Conditionally add support for Tcl byte code files. There are some # tricky details here. First, we need to get the tbcload library # initialized in the current interpreter. We cannot load tbcload into the @@ -584,6 +569,28 @@ auto_mkindex_parser::hook { } } +if {[llength $::auto_mkindex_parser::initCommands]} { + return +} + +# Register all of the procedures for the auto_mkindex parser that +# will build the "tclIndex" file. + +# AUTO MKINDEX: proc name arglist body +# Adds an entry to the auto index list for the given procedure name. + +auto_mkindex_parser::command proc {name args} { + variable index + variable scriptFile + # Do some fancy reformatting on the "source" call to handle platform + # differences with respect to pathnames. Use format just so that the + # command is a little easier to read (otherwise it'd be full of + # backslashed dollar signs, etc. + append index [list set auto_index([fullname $name])] \ + [format { [list source [file join $dir %s]]} \ + [file split $scriptFile]] "\n" +} + # AUTO MKINDEX: namespace eval name command ?arg arg...? # Adds the namespace name onto the context stack and evaluates the # associated body of commands. |