[mcclim-cvs] CVS mcclim/Drei
thenriksen
thenriksen at common-lisp.net
Tue Nov 14 07:48:31 UTC 2006
Update of /project/mcclim/cvsroot/mcclim/Drei
In directory clnet:/tmp/cvs-serv21453
Modified Files:
drei.lisp drei-clim.lisp
Log Message:
Make use of `accepting-from-user' general (seems to work) and move
definition of `display-drei' to drei.lisp
--- /project/mcclim/cvsroot/mcclim/Drei/drei.lisp 2006/11/11 00:08:30 1.4
+++ /project/mcclim/cvsroot/mcclim/Drei/drei.lisp 2006/11/14 07:48:30 1.5
@@ -615,6 +615,10 @@
top (clone-mark (low-mark buffer) :left)
bot (clone-mark (high-mark buffer) :right))))
+;; Main redisplay entry point.
+(defgeneric display-drei (frame drei)
+ (:documentation "Display the given Drei instance."))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Some standard building block machinery.
@@ -754,6 +758,23 @@
(unwind-protect (progn , at body)
,@(remove-if #'null (mapcar #'third triple-list))))))))
+(defgeneric invoke-accepting-from-user (drei continuation)
+ (:documentation "Set up `drei' and the environment so that
+calls to `accept' will behave properly. Then call
+`continuation'."))
+
+(defmethod invoke-accepting-from-user ((drei drei) (continuation function))
+ ;; By default, everything should work.
+ (funcall continuation))
+
+(defmacro accepting-from-user ((drei) &body body)
+ "Modidfy `drei' and the environment so that calls to `accept'
+can be done to arbitrary streams from within `body'. Or, at
+least, make sure the Drei instance will not be a problem. When
+Drei calls a command, it will be wrapped in this macro, so it
+should be safe to use `accept' within Drei commands."
+ `(invoke-accepting-from-user ,drei #'(lambda () , at body)))
+
;;; Plain `execute-frame-command' is not good enough for us. Our
;;; event-handler method uses this function to invoke commands, note
;;; that it is also responsible for updating the syntax of the buffer
@@ -774,7 +795,8 @@
(handling-drei-conditions
;; Must be a list of buffers, so wrap in call to `list'.
(with-undo ((list buffer))
- (execute-frame-command frame command))
+ (accepting-from-user (drei-instance)
+ (execute-frame-command frame command)))
(setf (previous-command drei-instance) command)
(update-syntax buffer (syntax buffer))
(when (modified-p buffer)
@@ -784,20 +806,3 @@
(let ((*standard-input* (or *minibuffer* *standard-input*)))
(execute-drei-command-for-frame (pane-frame (editor-pane drei))
drei command)))
-
-(defgeneric invoke-accepting-from-user (drei continuation)
- (:documentation "Set up `drei' and the environment so that
-calls to `accept' will behave properly. Then call
-`continuation'."))
-
-(defmethod invoke-accepting-from-user ((drei drei) (continuation function))
- ;; By default, everything should work.
- (funcall continuation))
-
-(defmacro accepting-from-user ((drei) &body body)
- "Modidfy `drei' and the environment so that calls to `accept'
-can be done to arbitrary streams from within `body'. Or, at
-least, make sure the Drei instance will not be a problem. When
-Drei calls a command, it will be wrapped in this macro, so it
-should be safe to use `accept' within Drei commands."
- `(invoke-accepting-from-user ,drei #'(lambda () , at body)))
--- /project/mcclim/cvsroot/mcclim/Drei/drei-clim.lisp 2006/11/11 00:08:30 1.5
+++ /project/mcclim/cvsroot/mcclim/Drei/drei-clim.lisp 2006/11/14 07:48:30 1.6
@@ -287,8 +287,7 @@
(let* ((*minibuffer* (or *minibuffer*
(unless (eq drei *standard-input*)
*standard-input*))))
- (accepting-from-user (drei)
- (execute-drei-command-for-frame (pane-frame drei) drei command))))
+ (execute-drei-command-for-frame (pane-frame drei) drei command)))
(defmethod additional-command-tables append ((drei drei-gadget-pane)
(table drei-command-table))
@@ -344,20 +343,17 @@
(:documentation "A constellation of a Drei gadget instance and
a minibuffer."))
-(defgeneric display-drei (frame instance)
- (:documentation "Display the given Drei instance."))
-
-(defmethod display-drei (frame (instance drei-pane))
+(defmethod display-drei (frame (drei drei-pane))
(declare (ignore frame))
- (display-drei-pane instance (active instance)))
+ (display-drei-pane drei (active drei)))
-(defmethod display-drei :after (frame (instance drei))
- (with-accessors ((minibuffer minibuffer)) instance
- (when (and minibuffer (not (eq minibuffer (editor-pane instance))))
+(defmethod display-drei :after (frame (drei drei))
+ (with-accessors ((minibuffer minibuffer)) drei
+ (when (and minibuffer (not (eq minibuffer (editor-pane drei))))
(redisplay-frame-pane (pane-frame minibuffer) minibuffer))))
-(defmethod display-drei (frame (instance drei-area))
- (display-drei-area instance))
+(defmethod display-drei (frame (drei drei-area))
+ (display-drei-area drei))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
More information about the Mcclim-cvs
mailing list