#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