Update of /project/mcclim/cvsroot/mcclim/Drei In directory clnet:/tmp/cvs-serv30204/Drei
Modified Files: input-editor.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/Drei/input-editor.lisp 2007/02/19 00:12:22 1.17 +++ /project/mcclim/cvsroot/mcclim/Drei/input-editor.lisp 2007/08/20 14:27:13 1.18 @@ -165,8 +165,8 @@ (loop with buffer = (buffer (drei-instance stream)) until (>= (stream-scan-pointer stream) (size buffer)) - while (typep (buffer-object buffer (stream-scan-pointer stream)) - 'noise-string) + while (or (typep #1=(buffer-object buffer (stream-scan-pointer stream)) 'noise-string) + (delimiter-gesture-p #1#)) do (incf (stream-scan-pointer stream))) (setf (input-position stream) (stream-scan-pointer stream))))
@@ -310,7 +310,7 @@ (start 0) (end (length new-input)) (buffer-start (input-position stream)) - rescan) + (rescan nil rescan-supplied-p)) (check-type start integer) (check-type end integer) (check-type buffer-start integer) @@ -338,7 +338,11 @@ ;; Make the buffer reflect the changes in the array. (synchronize-input-buffer-array stream)) (display-drei drei) - (when (or rescan (not equal)) + ;; XXX: This behavior for the :rescan parameter is not mentioned + ;; explicitly in any CLIM guide, but McCLIM input-editing + ;; machinery relies on it. + (when (and (or rescan (not equal)) + (or rescan (not rescan-supplied-p))) (queue-rescan stream)) ;; We have to return "the position in the input buffer". We ;; return the insertion position.