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 # Set a global variable here so that custom commands can be added post hoc
47 set tcl
::autocomplete_commands {info tcl
::prefix socket namespace array clock file package string dict signal
history}
49 # Simple interactive command line completion callback
50 # Explicitly knows about some commands that support "-commands"
51 proc tcl
::autocomplete {prefix
} {
52 if {[string match
"* " $prefix]} {
53 set cmd
[string range
$prefix 0 end-1
]
54 if {$cmd in
$::tcl::autocomplete_commands ||
[info channel
$cmd] ne
""} {
55 # Add any results from -commands
56 return [lmap p
[$cmd -commands] {
61 # Find matching files.
62 if {[string match
"source *" $prefix]} {
63 set path
[string range
$prefix 7 end
]
64 return [lmap p
[glob -nocomplain "${path}*"] {
68 # Find matching commands, omitting results containing spaces
69 return [lmap p
[lsort [info commands
$prefix*]] {
70 if {[string match
"* *" $p]} {