summaryrefslogtreecommitdiff
path: root/examples/jtclsh.tcl
blob: dc92bcaeb7535776e73f579b92fe248904476175 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 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
while 1 {
	if {[history getline "jim> " cmd] < 0} {
		break
	}
	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
	}
	# jimsh also does:
	# - check for a complete command: [info complete]
	# - handle other non-error return codes and changes the prompt: [info returncodes]
	# - displays the complete error message: [errorInfo]
	try {
		set result [eval $cmd]
		if {$result ne {}} {
			puts $result
		}
	} on error msg {
		puts $msg
	}
}