Subject: Re: [ANN] Ltk - The Lisp Toolkit
From: rpw3@rpw3.org (Rob Warnock)
Date: Sat, 12 Jun 2004 20:34:20 -0500
Newsgroups: comp.lang.lisp
Message-ID: <YNqdnSwiJJSBMlbd4p2dnA@speakeasy.net>
Peter Herth  <herth@netcologne.de> wrote:
+---------------
| thewrights@ozemail.com.au wrote:
| > debugger invoked on a TYPE-ERROR in thread 1968:
| >   The value NAME is not of type LIST.
| 
| A bug in Ltk. I just uploaded a fixed version. 
| Thanks for reporting it.
+---------------

Aha! I was having the same problem under CMUCL/FreeBSD, now also fixed.
Thanks!

A few small suggestions:

- The interaction between DO-EXECUTE, START-W, *W*, the callers of
  START-W, and the users of *W* seems a bit awkward. Since you already
  have DO-EXECUTE heavily conditionalized for various operating systems,
  it might be better to simply eliminate START-W altogether, pull the
  pathname for "wish" out into a global constant to make it easier to
  conditionalize for local variations [see next item], and just have
  the two former callers of START-W call DO-EXECUTE directly. And perhaps
  the same for the args to the "wish" process (in case somebody wants to
  start "wish" with a different colormap or something). The result might
  look something like this:

	(defconstant +wish-pathname+
	  #+freebsd			"wish8.3"	; or 8.4, whatever
	  #+(and sbcl (not freebsd))	"/usr/bin/wish"
	  #-(or sbcl freebsd)		"wish")

	(defconstant +wish-args+ '("-name" "LTK"))

	...

	(defmacro with-ltk (&rest body)
	  `(progn
	     (setf *w* (do-execute +wish-pathname+ +wish-args+))
	     ,@body
	     (mainloop)))

- Your doc file suggests:

	Note: on FreeBSD wish resides in /usr/local/bin/wish8.4 for
	Tcl/Tk version 8.4. You either have to modify the path to wish
	in ltk.lisp or create a link called wish to the executable
	(like: cd /usr/local/bin;ln -s /usr/local/bin/wish8.4 wish).

  Actually, on FreeBSD there is *already* a program named "wish", which
  when run, says this:

	% wish
	In FreeBSD, wish is named with a version number.  This is
	because different versions of wish are not compatible with
	each other and they can not all be called "wish"!  You may
	need multiple versions installed because a given port may
	depend on a specific version.

	On your system, wish is installed under at least the following
	names:

	wish8.3
	% 

  So you probably don't want to overwrite that program.  ;-}

- On Common Lisps which provide threads (CMUCL, SBCL, others), it would
  be nice if LTK:MAINLOOP ran in a separate thread, so that one still
  had access to the main REPL, at least while debugging. [Time permitting,
  I'll try to hack something up to work under CMUCL as a base case...]


-Rob

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607