[mcclim-ticket] #1: Bug in handling of delimiter/completion gestures in McCLIM input editing

mcclim mcclim-devel at common-lisp.net
Tue Mar 13 16:10:46 UTC 2007


#1: Bug in handling of delimiter/completion gestures in McCLIM input editing
---------------------------------+------------------------------------------
 Reporter:  thenriksen           |       Owner:  somebody
     Type:  defect               |      Status:  new     
 Priority:  major                |   Milestone:          
Component:  component1           |     Version:          
 Keywords:  Drei, input-editing  |  
---------------------------------+------------------------------------------
 Observe the following presentation type definition:

 {{{
 (in-package :clim-user)

 (define-presentation-type unacceptable ())

 (define-presentation-method accept
     ((type unacceptable) stream view &key)
   (with-delimiter-gestures (#\Space)
     (list (accept 'package :stream stream :view view :prompt nil)
           (accept 'package :stream stream :view view :prompt nil))))

 }}}

 Using Drei, doing (accept 'unacceptable) will work while accepting the
 first package, but when you press space to accept the second one, a
 debugger will pop up and inform you that you did not provide any input,
 and that there is not a default value. I think the problem is that the
 delimiter gesture is "re-evaluated" as a terminating delimiter gesture.
 The problem does not show up with Goatee, because Goatee implements a non-
 standard hack with which you can inhabit rescanning by providing :rescan
 nil as argument to ''replace-input''. This is used in the completion done
 when pressing space after entering the first package name. I don't think
 the McCLIM input editing routines should expect input-editing-streams to
 implement nonstandard hacks in order to work properly, but I haven't yet
 been able to figure out how to fix this. In case anyone is interested, I
 think the buggy function is ''complete-input''. At least, that's where the
 ''replace-input''-call is. This is a very serious problem that prevents
 Drei from being able to accept many interesting presentation types,
 including some seen in classic CLIM applications.

-- 
Ticket URL: <http://trac.common-lisp.net/mcclim/ticket/1>
mcclim <http://common-lisp.net/project/mcclim>
mcclim


More information about the Mcclim-ticket mailing list