[climacs-cvs] CVS update: climacs/gui.lisp

Robert Strandh rstrandh at common-lisp.net
Mon Jul 18 06:09:53 UTC 2005


Update of /project/climacs/cvsroot/climacs
In directory common-lisp.net:/tmp/cvs-serv31484

Modified Files:
	gui.lisp 
Log Message:
Renamed things that aren't Climacs specific.

Moved the code for marking buffers as needing to be saved to an :after
method of execute-frame-command.  The previous code was not right, in
that it is entirely possible for a command to modify a buffer which is
not the current one. 


Date: Mon Jul 18 08:09:51 2005
Author: rstrandh

Index: climacs/gui.lisp
diff -u climacs/gui.lisp:1.156 climacs/gui.lisp:1.157
--- climacs/gui.lisp:1.156	Mon Jul 18 00:40:37 2005
+++ climacs/gui.lisp	Mon Jul 18 08:09:50 2005
@@ -182,9 +182,9 @@
 	      (#\5 :meta) (#\6 :meta) (#\7 :meta) (#\8 :meta) (#\9 :meta))
 	    :test #'event-matches-gesture-name-p))
 
-(defun climacs-read-gesture ()
+(defun generic-read-gesture ()
   (unless (null (remaining-keys *application-frame*))
-    (return-from climacs-read-gesture
+    (return-from generic-read-gesture
       (pop (remaining-keys *application-frame*))))
   (loop for gesture = (read-gesture :stream *standard-input*)
 	until (or (characterp gesture)
@@ -203,7 +203,7 @@
 			 (push gesture (recorded-keys *application-frame*)))
 		       (return gesture))))
 
-(defun climacs-unread-gesture (gesture stream)
+(defun generic-unread-gesture (gesture stream)
   (cond ((recordingp *application-frame*)
 	 (pop (recorded-keys *application-frame*))
 	 (unread-gesture gesture :stream stream))
@@ -213,35 +213,35 @@
 	 (unread-gesture gesture :stream stream))))
 
 (defun read-numeric-argument (&key (stream *standard-input*))
-  (let ((gesture (climacs-read-gesture)))
+  (let ((gesture (generic-read-gesture)))
     (cond ((event-matches-gesture-name-p gesture '(:keyboard #\u 512)) ; FIXME
 	   (let ((numarg 4))
-	     (loop for gesture = (climacs-read-gesture)
+	     (loop for gesture = (generic-read-gesture)
 		   while (event-matches-gesture-name-p gesture '(:keyboard #\u 512)) ; FIXME
 		   do (setf numarg (* 4 numarg))
-		   finally (climacs-unread-gesture gesture stream))
-	     (let ((gesture (climacs-read-gesture)))
+		   finally (generic-unread-gesture gesture stream))
+	     (let ((gesture (generic-read-gesture)))
 	       (cond ((and (characterp gesture)
 			   (digit-char-p gesture 10))
 		      (setf numarg (- (char-code gesture) (char-code #\0)))
-		      (loop for gesture = (climacs-read-gesture)
+		      (loop for gesture = (generic-read-gesture)
 			    while (and (characterp gesture)
 				       (digit-char-p gesture 10))
 			    do (setf numarg (+ (* 10 numarg)
 					       (- (char-code gesture) (char-code #\0))))
-			    finally (climacs-unread-gesture gesture stream)
+			    finally (generic-unread-gesture gesture stream)
 				    (return (values numarg t))))
 		     (t
-		      (climacs-unread-gesture gesture stream)
+		      (generic-unread-gesture gesture stream)
 		      (values numarg t))))))
 	  ((meta-digit gesture)
 	   (let ((numarg (meta-digit gesture)))
-	     (loop for gesture = (climacs-read-gesture)
+	     (loop for gesture = (generic-read-gesture)
 		   while (meta-digit gesture)
 		   do (setf numarg (+ (* 10 numarg) (meta-digit gesture)))
-		   finally (climacs-unread-gesture gesture stream)
+		   finally (generic-unread-gesture gesture stream)
 			   (return (values numarg t)))))
-	  (t (climacs-unread-gesture gesture stream)
+	  (t (generic-unread-gesture gesture stream)
 	     (values 1 nil)))))
 
 ;;; we know the vbox pane has a scroller pane and an info
@@ -276,6 +276,11 @@
     (no-such-operation ()
       (beep) (display-message "Operation unavailable for syntax"))))  
 
+(defmethod execute-frame-command :after ((frame climacs) command)
+  (loop for buffer in (buffers frame)
+	do (when (modified-p buffer)
+	     (setf (needs-saving buffer) t))))	
+
 (defun do-command (frame command)
   (execute-frame-command frame command)
   (setf (previous-command *standard-output*)
@@ -283,10 +288,10 @@
 	    (car command)
 	    command)))
 	     
-(defun update-climacs (frame)
-  (let ((buffer (buffer (current-window))))
-    (when (modified-p buffer)
-      (setf (needs-saving buffer) t)))
+(defgeneric update-frame (frame)
+  (:method (frame) (declare (ignore frame)) nil))
+
+(defmethod update-frame ((frame climacs))
   (when (null (remaining-keys *application-frame*))
     (setf (executingp *application-frame*) nil)
     (redisplay-frame-panes frame)))
@@ -297,7 +302,7 @@
    do (multiple-value-bind (numarg numargp)
 	  (read-numeric-argument :stream *standard-input*)
 	(loop 
-	 (setf *current-gesture* (climacs-read-gesture))
+	 (setf *current-gesture* (generic-read-gesture))
 	 (setf gestures 
 	       (nconc gestures (list *current-gesture*)))
 	 (let ((item (find-gestures gestures 'global-climacs-table)))
@@ -313,7 +318,7 @@
 		(do-command frame command)
 		(return)))
 	     (t nil)))))
-   do (update-climacs frame)))
+   do (update-frame frame)))
 
 (defun climacs-top-level (frame &key
                           command-parser command-unparser
@@ -342,7 +347,7 @@
 	      (abort-gesture () (display-message "Quit")))
 	     (when maybe-error
 	       (beep))
-	     (update-climacs frame))
+	     (update-frame frame))
 	   (return-to-climacs () nil))))))
 
 (defmacro simple-command-loop (command-table loop-condition end-clauses)
@@ -352,7 +357,7 @@
     `(progn 
        (redisplay-frame-panes *application-frame*)
        (loop while ,loop-condition
-             as ,gesture = (climacs-read-gesture)
+             as ,gesture = (generic-read-gesture)
              as ,item = (find-gestures (list ,gesture) ,command-table)
              do (cond ((and ,item (eq (command-menu-item-type ,item) :command))
                        (setf *current-gesture* ,gesture)




More information about the Climacs-cvs mailing list