Version 11 of eltclsh

Updated 2012-06-09 16:23:35 by aspect
 What: eltclsh
 Where: http://freshmeat.net/projects/eltclsh/ (out of date, refers to v1.5)
        http://www.openrobots.org/wiki/eltclsh
        http://homepages.laas.fr/mallet/soft/shell/eltclsh
 Description: editline tcl shell is an interactive shell for the Tcl
        language.  It provides command line editing, history browsing,
        and variable/command completion, thanks to editline 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.  
        Currently at version 1.12.
 Updated: 05/2012
 Contact: See web site

 on FreeBSD: need gmake, and to touch  eltclsh.1.cat in the unpacked eltclsh-1.9 directory; before running ./configure --with-tk=no;gmake install clean

Build for a Tcl/Tk8.5 system:

  • eltclsh has proved to operate correctly.
  • elwish did not show up the initial Tk window (eltclsh with package require Tk does).

Upon a sample build session of eltcsh with editline a link error (missing lXss) has been encountered (on a debian-based machine). This could be resolved by installing libxss-dev.


aspect: The eltclsh distribution packages eltclsh as an extension, which the binary simply package requires into the interpreter it creates. The extension includes a signal handler and the editline binding itself.

To get eltclsh as the completion engine for your standard tclsh in interactive mode (similar 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!"
    }

.. at this point you could 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.


Category Application | Category Dev. Tools