Update of /project/mcclim/cvsroot/mcclim/Drei In directory clnet:/tmp/cvs-serv6127/Drei
Modified Files: input-editor.lisp Log Message: I decided that input-editing was too simple, so I added some more incomprehensible complexity.
This should ensure commercial CLIM never copies code from us.
Incidentally, also fixes prompting semantics, probably broke something else though.
--- /project/mcclim/cvsroot/mcclim/Drei/input-editor.lisp 2008/01/19 09:38:20 1.23 +++ /project/mcclim/cvsroot/mcclim/Drei/input-editor.lisp 2008/01/23 10:16:25 1.24 @@ -155,8 +155,7 @@ ;; already at the input position or if we are rescanning. This is so ;; we can support fancy accept methods such as the one for ;; `command-or-form' - (unless (or (stream-rescanning-p stream) - (= (stream-scan-pointer stream) (input-position stream))) + (unless (stream-rescanning-p stream) (call-next-method) ;; We skip ahead of any noise strings to put us past the ;; prompt. This is safe, because the noise strings are to be @@ -478,7 +477,8 @@ (with-accessors ((insertion-pointer stream-insertion-pointer) (scan-pointer stream-scan-pointer) (activation-gesture activation-gesture)) stream - (let ((buffer (buffer (view (drei-instance stream))))) + (let ((buffer (buffer (view (drei-instance stream)))) + (last-was-noisy nil)) ; T if last passed gesture is noise-string (loop (loop while (< scan-pointer insertion-pointer) @@ -486,7 +486,8 @@ do (let ((gesture (buffer-object buffer scan-pointer))) ;; Skip noise strings. (cond ((typep gesture 'noise-string) - (incf scan-pointer)) + (incf scan-pointer) + (setf last-was-noisy t)) ((and (not peek-p) (typep gesture 'accept-result)) (incf scan-pointer) @@ -512,8 +513,10 @@ (unless peek-p (incf scan-pointer)) (return-from stream-read-gesture gesture)) - (t (incf scan-pointer))))) - (setf (stream-rescanning stream) nil) + (t (incf scan-pointer) + (setf last-was-noisy nil))))) + (unless last-was-noisy ; This prevents double-prompting. + (setf (stream-rescanning stream) nil)) (when activation-gesture (return-from stream-read-gesture (prog1 activation-gesture