[climacs-devel] execute-frame-command

Christophe Rhodes csr21 at cam.ac.uk
Sat Mar 25 21:08:19 UTC 2006


Christophe Rhodes <csr21 at cam.ac.uk> writes:

> executed.  I think ESA and Climacs get the latter right but not the
> former; with the following patch, I am able to do things like
>
>   (sb-thread:make-thread (lambda () (climacs-gui::climacs)))
>   (defvar *foo*)
>   (sb-thread:interrupt-thread * (lambda () (setf *foo* *application-frame*)))
>   (clim:execute-frame-command 
>    *foo* `(climacs-gui::com-insert-parentheses 0 nil))
>
> and watch the parens be inserted into the *scratch* buffer.  (Warning:
> I haven't in fact done precisely this -- I have instead been running
> climacs under the new mcclim "Null" backend and inspecting the data
> structures themselves).

So it turned out that in a backend with actual display this wasn't
behaving quite right, in that the panes weren't being redisplayed
after a synthetic command event.  I turned that on, and then got all
sorts of errors, which I think the attached patch resolves.

The basic point is that methods on both execute-frame-command and
redisplay-frame-panes must not assume that they are being run within
the thread of the application; nor must display-functions for panes.
I think the attached fixes this for climacs, and involves some ESA
modifications.

Cheers,

Christophe



More information about the climacs-devel mailing list