1 # This pseudo-package is loaded from jimsh to add additional
2 # paths to $auto_path and to source ~/.jimrc
6 global jim
::exe jim
::argv0 tcl_interactive auto_path tcl_platform
8 # Stash the result of [info nameofexecutable] now, before a possible [cd]
9 if {[exists jim
::argv0]} {
10 if {[string match
"*/*" $jim::argv0]} {
11 set jim
::exe [file join [pwd] $jim::argv0]
13 foreach path
[split [env PATH
""] $tcl_platform(pathSeparator
)] {
14 set exec [file join [pwd] [string map
{\\ /} $path] $jim::argv0]
15 if {[file executable
$exec]} {
23 # Add to the standard auto_path
24 lappend p
{*}[split [env JIMLIB
{}] $tcl_platform(pathSeparator
)]
25 if {[exists jim
::exe]} {
26 lappend p
[file dirname
$jim::exe]
28 lappend p
{*}$auto_path
31 if {$tcl_interactive && [env HOME
{}] ne
""} {
32 foreach src
{.jimrc jimrc.tcl
} {
33 if {[file exists
[env HOME
]/$src]} {
34 uplevel #0 source [env HOME]/$src
42 if {$tcl_platform(platform
) eq
"windows"} {
43 set jim
::argv0 [string map
{\\ /} $jim::argv0]
46 # Simple interactive command line completion callback
47 # Explicitly knows about some commands that support "-commands"
48 proc tcl
::autocomplete {prefix
} {
49 if {[string match
"* " $prefix]} {
50 set cmd
[string range
$prefix 0 end-1
]
51 if {$cmd in
{info tcl
::prefix socket namespace array clock file package string dict signal
history} ||
[info channel
$cmd] ne
""} {
52 # Add any results from -commands
53 return [lmap p
[$cmd -commands] {
58 # Find matching commands, omitting results containing spaces
59 return [lmap p
[lsort [info commands
$prefix*]] {
60 if {[string match
"* *" $p]} {