Update of /project/mcclim/cvsroot/mcclim In directory clnet:/tmp/cvs-serv30204
Modified Files: input-editing.lisp decls.lisp Log Message: Fixed last known Drei input-editing-stream issue by implementing Goatee-style handling of :REPLACE keyword parameter to STREAM-REPLACE-INPUT (not mentioned in the spec).
--- /project/mcclim/cvsroot/mcclim/input-editing.lisp 2006/12/12 22:36:32 1.55 +++ /project/mcclim/cvsroot/mcclim/input-editing.lisp 2007/08/20 14:27:14 1.56 @@ -382,6 +382,7 @@ (adjust-array so-far (length input) :fill-pointer (length input)) (replace so-far input) + ;; XXX: Relies on non-specified behavior of :rescan. (replace-input stream input :rescan nil))) (multiple-value-bind (object success input) (complete-input-rescan stream func partial-completers @@ -420,9 +421,8 @@ :n-columns 1) (declare (ignore event)) (if item - (progn - (setf (values input success object nmatches) - (values (car item) t menu-object 1))) + (setf (values input success object nmatches) + (values (car item) t menu-object 1)) (setf success nil nmatches 0)))) (unless (and (eq mode :complete) (not success)) --- /project/mcclim/cvsroot/mcclim/decls.lisp 2007/02/07 12:44:16 1.46 +++ /project/mcclim/cvsroot/mcclim/decls.lisp 2007/08/20 14:27:14 1.47 @@ -581,10 +581,42 @@ ;;; 24.4 Reading and Writing of Tokens
(defgeneric replace-input - (stream new-input &key start end buffer-start rescan)) + (stream new-input &key start end buffer-start rescan) + ;; XXX: Nonstandard behavior for :rescan. + (:documentation "Replaces the part of the input editing stream +`stream's input buffer that extends from `buffer-start' to its +scan pointer with the string `new-input'. `buffer-start' defaults +to the current input position of stream, which is the position at +which the current accept "session" starts. `start' and `end' can be +supplied to specify a subsequence of `new-input'; start defaults to +0 and end defaults to the length of `new-input'. + +`replace-input' will queue a rescan by calling `queue-rescan' if +the new input does not match the old input, or `rescan' is +true. If `rescan' is explicitly provided as NIL, no rescan will +be queued in any case. + +The returned value is the position in the input buffer.")) + (defgeneric presentation-replace-input (stream object type view - &key buffer-start rescan query-identifier for-context-type)) + &key buffer-start rescan query-identifier for-context-type) + (:documentation "Like `replace-input', except that the new +input to insert into the input buffer is gotten by presenting +`object' with the presentation type `type' and view +`view'. `buffer-start' and `rescan' are as for `replace-input', +and `query-identifier' and `for-context-type' as as for +`present'. + +Typically, this function will be implemented by calling +`present-to-string' on `object', `type', `view', and +`for-context-type', and then calling `replace-input' on the +resulting string. + +If the object cannot be transformed into an acceptable textual +form, it may be inserted as a special "accept result" that is +considered a single gesture. These accept result objects have no +standardised form."))
;;; 27.3 Command Menus