'''Interactive Tcl''' describes the various facilities for using [Tcl] interactively. ** See Also ** [An Interactive Approach to Experimenting with Tcl]: [The RC File]: Information about configuring Tcl for interactive work. [Is tclsh or wish suitable as a login shell]: [Is tclsh running interactively?]: Detect whether stdin is a [terminal]. [Why is keyboard entry in Tcl so crude]: [http://groups.google.com/forum/?fromgroups=#!topic/comp.lang.tcl/5mgS2wi2ddE%|%tclreadline vs etclsh, comp.lang.tcl, 2005-07-04%|%]: [Is tclsh or wish suitable as a login shell]: [gush]: Graphical User SHell - a Unix shell/terminal written in Tcl/Tk. ** Interactive Interpreters ** [emacs]: with '''inferior-tcl''' mode is probably the most common method for interacting with a Tcl interpreter. [tclsh]: The interactive interpreter that is distributed with Tcl [eltclsh]: an interactive interpreter with line editing provided by '''editline''' [interact]: [An interactive tclsh with an event loop (but no Tk)]: [commandloop]: a [Tclx] command providing an interactive command loop ** Interactive Tk facilities ** [console]: [Tkcon]: ** Line Editing ** [linenoise]: a minimal, zero-config, BSD-licensed, readline replacement for use in Redis, MongoDB, and Android (Tcl bindings available) [tclreadline]: Tcl bindings for GNU readline [rlwrap]: GNU readline wrapper. Invoke `rlwrap -c tclsh` to add line editing functionality to tclsh [http://www.astro.caltech.edu/~mcs/tecla/%|%tecla%|%]: line editing library with a permissive X11-like license [http://kaolin.essi.fr/Cle/%|%Cle%|%]: invoke `cle tclsh` to add command-line editing functionality to tclsh [http://www.thrysoee.dk/editline/%|%editline%|%]: NetBSD editline library (libedit) [Pure-tcl readline]: [Pure-tcl readline2]: [Linux Console Text Editor In Pure TCL]: ** Description ** [JMN] 2004-03-20: According to 'requirements' tclreadline works with at least some versions of tcl8.4. I struggled to build tclreadline 2.1.1 on FreeBSD5.1, against tcl8.4.6 only to get a core dump when running ::tclreadline::Loop I've also tried using rlwrap, which does not appear to run on FreeBSD4.9 and which complains "could not open master pty" on my FreeBSD5.1 box. Seeing as I really only want the basic up & down arrow cycling through history, and not the fancy readline search & autocompletion and whatever else it may offer - is there some other way I can achieve this functionality in a plain tclsh shell? (I need to run this on plain X-less boxes and ssh sessions.) It seems to me a very unfortunate lack of cross-platform consistency that the functionality I've always taken for granted on windows boxes doesn't seem to work on Unix-like machines. I understand the gnu readline license is unsuitable for inclusion in TCL, but is there no interest in including some *basic* history editing in tclsh to bring it into line with Windows behaviour? [NEM] When you say it works on Windows, you mean in the Tk console, or when running tclsh from the command prompt? If the former, then you can just use [tkcon] on Unix to get the same behaviour (plus a lot more). When running at the command prompt, you could use the [history] command. It's not as convenient, but it works. I don't think there is any code for readline style editing for tclsh on any platform, so if it works on Windows I assume it's the windows console which makes it work (somehow). ---- [SRIV] 2004-03-20: I tried tclreadline and found it a pain to setup. A much easier solution on linux is rlwrap [http://utopia.knoware.nl/~hlub/uck/rlwrap/]. I stick it on all my linux computers. Since I use tclkit instead of tclsh, I run '''rlwrap tclkit''' and I get a % prompt with full readline history, even across invocations. Give it a try. I use it most often while debugging small scripts while logged in to a remote server. ---- 2004-04-22: I wonder how hard it would be to integrate Tecla with the tcl shell? http://www.astro.caltech.edu/~mcs/tecla/ Unlike readline, this software has a BSD-like license. It'd be nice to have this available across all tcl platforms without having to use special wrappers and workarounds - a 'package require' would do I guess, but it'd be better if it just worked and provided a consistent environment even on platforms such as windows which already automatically provide similar console functionality. ---- [Steve Bennett]: 2010-12-02: There is another, recent option - linenoise [https://github.com/antirez/linenoise] - which is used in [Jim] to support line editing. BSD licensed. Small and simple. ---- '''[mjs] - 2010-12-02 17:15:29''' Has anyone considered an alternative to tclreadline using libedit that would be friendly for no-GPL projects? [AMG]: Actually, I kind of want to see linenoise get integrated. linenoise is very small and simple, so it can easily be put directly into the Tcl distribution, along with a standard extension that makes it available to the script. The trouble with libedit is that it's uncommon and too large to bundle. If I have some free time I might go ahead and write this extension, along with a Wiki page. [aspect]: [eltclsh] already seems to offer what you want, though its availability as an extension is not clearly advertised. <> Documentation