Lisp HUG Maillist Archive

Preventing let variables being disposed when creating interfaces

Hi,

I am trying to write a function that extends part of a CAPI interface as follows:

(defun addchooser (data interface)
  (let ((chooser-layout (slot-value interface 'choosers))
        (new-chooser (make-instance 'push-button :data "Sheep")))
    (setf (layout-description chooser-layout) (append (layout-description chooser-layout) '(new-chooser)))))

However, when used this generates a "cannot find pane" error, presumably because the variable new-chooser is disposed of outside of the let form. But how do I prevent this? Do I have to store it in a named global variable somehow?

Mark


Re: Preventing let variables being disposed when creating interfaces

Get rid of the quote!

- nick

> On 13 Jun 2016, at 16:32, Mark Green <mark@antelope.nildram.co.uk> wrote:
> 
> Hi,
> 
> I am trying to write a function that extends part of a CAPI interface as follows:
> 
> (defun addchooser (data interface)
>   (let ((chooser-layout (slot-value interface 'choosers))
>         (new-chooser (make-instance 'push-button :data "Sheep")))
>     (setf (layout-description chooser-layout) (append (layout-description chooser-layout) '(new-chooser)))))
> 
> However, when used this generates a "cannot find pane" error, presumably because the variable new-chooser is disposed of outside of the let form. But how do I prevent this? Do I have to store it in a named global variable somehow?
> 
> Mark
> 
> 


_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Updated at: 2020-12-10 08:32 UTC