# Simple example of how the history extension
# can be used to provide line editing and history

# Build jimsh with the history extension and enable line editing (the default)
# ./configure --with-ext=history

package require history

set histfile [env HOME]/.jtclsh
history load $histfile
# Use the standard Tcl autocompletion and hint support
history completion tcl::autocomplete tcl::autohint
set prefix ""
while {1} {
	# Read a complete line (script)
	set prompt "${prefix}jim> "
	set cmd {}
	while {1} {
		if {[history getline $prompt line] < 0} {
			exit 0
		}
		if {$cmd ne ""} {
			append cmd \n
		}
		append cmd $line
		if {[info complete $cmd char]} {
			break
		}
		set prompt "$char> "
	}

	if {$cmd eq "h"} {
		history show
		continue
	}

	# Don't bother adding single char commands to the history
	if {[string length $cmd] > 1} {
		history add $cmd
		history save $histfile
	}

	# Evaluate the script and display the error
	try {
		set result [eval $cmd]
		set prefix ""
	} on {error return break continue signal} {result opts} {
		set rcname [info returncodes $opts(-code)]
		if {$rcname eq "ok" } {
			# Note: return set -code to 0
			set rcname return
		} elseif {$rcname eq "error"} {
			set result [errorInfo $result]
		}
		set prefix "\[$rcname\] "
	}
	if {$result ne {}} {
		puts $result
	}
}
