&| '''What''' | '''eltclsh''' |& &| '''Where''' | http://homepages.laas.fr/mallet/soft/shell/eltclsh (latest version) <
> https://www.openrobots.org/wiki/eltclsh (outdated) |& &| '''Description''' | The editline tcl shell is an interactive shell for the Tcl interpreter. It provides command line editing, history browsing, and variable/command completion thanks to [http://thrysoee.dk/editline/%|%editline]'s features. The completion engine is programmable and comes with built-in completion for all of [Tk]. The package also includes elwish, an interactive interpreter for Tcl/Tk analogous to [wish]. <
> Currently at version 1.16. |& &| '''Updated''' | 2017-01-16 |& ** Summary ** [aspect]: The eltclsh distribution packages eltclsh as an extension, which the binary simply [package require]s into the interpreter it creates. The extension includes a signal handler and the editline binding itself. ** Building ** On FreeBSD you will need [gmake], and to touch `eltclsh.1.cat` in the unpacked eltclsh-1.9 directory before running ======none ./configure --with-tk=no; gmake install clean ====== ------ When built for Tcl/Tk 8.5: * eltclsh operated correctly; * elwish did not show the initial Tk window (and eltclsh with `package require Tk` did). You can reveal with window with `wm deiconify .` On a [Debian]-based machine building it successfully required installing `libxss-dev`. ** Use ** To make eltclsh your completion engine for the standard [tclsh] in interactive mode (similarly to how it is done on [tclreadline]), simply add something like the following to your [tclshrc]: ====== if {![file exists /usr/local/share/eltcl/pkgIndex.tcl] || [catch { lappend ::auto_path /usr/local/share/eltcl package require eltclsh set ::el::prompt1 {list tclsh [info patchlevel] %} set ::el::prompt2 {list tclsh ...... >} interactive exit }]} { puts "Failed to load eltclsh!" } ====== If eltclsh can't be loaded, you can try to fall back on [tclreadline], or the standard tclsh prompt (which is default behaviour with the above code). The `interactive` command is eltclsh's equivalent of `::tclreadline::Loop`. Loading eltclsh in this manner has at least a few advantages: you don't have to retrain your fingers from typing `tclsh`, and the same mechanism can work against multiple tclsh versions, without having to link multiple eltclsh binaries. The eltclsh code is quite tidy and straightforward. Noteworthy is `tools/complete.tcl`, which sets up the variable `::el::completionPatterns` which it uses to do argument completion of core Tcl commands. <> Application | Dev. Tools | Package