Update of /project/climacs/cvsroot/climacs In directory clnet:/tmp/cvs-serv31013
Modified Files: gui.lisp core.lisp Log Message: Made code for buffer switching in Climacs a bit more centralised, you no longer have to use `switch-to-buffer' or experience pain.
--- /project/climacs/cvsroot/climacs/gui.lisp 2007/02/19 22:06:18 1.236 +++ /project/climacs/cvsroot/climacs/gui.lisp 2007/11/16 09:25:03 1.237 @@ -61,6 +61,14 @@ (setf (active pane) nil))) (windows (pane-frame climacs-pane))))
+(defmethod (setf buffer) :before ((buffer climacs-buffer) (pane climacs-pane)) + (with-accessors ((buffers buffers)) *application-frame* + (unless (member buffer buffers) + (error "Attempting to switch to a buffer not known to Climacs")) + (setf buffers (delete buffer buffers)) + (push buffer buffers) + (full-redisplay pane))) + (defmethod command-table ((drei climacs-pane)) (command-table (pane-frame drei)))
--- /project/climacs/cvsroot/climacs/core.lisp 2007/08/24 13:13:00 1.12 +++ /project/climacs/cvsroot/climacs/core.lisp 2007/11/16 09:25:03 1.13 @@ -68,16 +68,7 @@ (defgeneric switch-to-buffer (pane buffer))
(defmethod switch-to-buffer ((pane drei) (buffer drei-buffer)) - (with-accessors ((buffers buffers)) *application-frame* - (let* ((position (position buffer buffers)) - (pane (current-window))) - (when position - (setf buffers (delete buffer buffers))) - (push buffer buffers) - (setf (offset (point (buffer pane))) (offset (point pane))) - (setf (buffer pane) buffer) - (full-redisplay pane) - buffer))) + (setf (buffer pane) buffer))
(defmethod switch-to-buffer ((pane typeout-pane) (buffer drei-buffer)) (let ((usable-pane (or (find-if #'(lambda (pane)