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

Robert Strandh rstrandh at common-lisp.net
Mon May 9 14:47:47 UTC 2005


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

Modified Files:
	gui.lisp pane.lisp 
Log Message:
Patch from John Q Splittist making the behavior of points in panes 
more natural.


Date: Mon May  9 16:47:45 2005
Author: rstrandh

Index: climacs/gui.lisp
diff -u climacs/gui.lisp:1.136 climacs/gui.lisp:1.137
--- climacs/gui.lisp:1.136	Mon May  9 16:13:44 2005
+++ climacs/gui.lisp	Mon May  9 16:47:45 2005
@@ -704,6 +704,7 @@
 			  :prompt "Find File"))
 	(buffer (make-instance 'climacs-buffer))
 	(pane (current-window)))
+    (setf (point (buffer pane)) (clone-mark (point pane)))
     (push buffer (buffers *application-frame*))
     (setf (buffer (current-window)) buffer)
     (setf (syntax buffer) (make-instance
@@ -787,6 +788,7 @@
   (let ((buffer (accept 'buffer
 			:prompt "Switch to buffer"))
 	(pane (current-window)))
+    (setf (point (buffer pane)) (clone-mark (point pane)))
     (setf (buffer pane) buffer)
     (full-redisplay pane)))
 
@@ -966,7 +968,8 @@
     (multiple-value-bind (vbox new-pane) (make-pane-constellation)
       (let* ((current-window (current-window))
 	     (constellation-root (parent3 current-window)))
-        (setf (buffer new-pane) (buffer current-window)
+        (setf (point (buffer current-window)) (clone-mark (point current-window))
+	      (buffer new-pane) (buffer current-window)
               (auto-fill-mode new-pane) (auto-fill-mode current-window)
               (auto-fill-column new-pane) (auto-fill-column current-window))
 	(push new-pane (windows *application-frame*))
@@ -980,7 +983,8 @@
     (multiple-value-bind (vbox new-pane) (make-pane-constellation)
       (let* ((current-window (current-window))
 	     (constellation-root (parent3 current-window)))
-        (setf (buffer new-pane) (buffer current-window)
+        (setf (point (buffer current-window)) (clone-mark (point current-window))
+	      (buffer new-pane) (buffer current-window)
               (auto-fill-mode new-pane) (auto-fill-mode current-window)
               (auto-fill-column new-pane) (auto-fill-column current-window))
 	(push new-pane (windows *application-frame*))


Index: climacs/pane.lisp
diff -u climacs/pane.lisp:1.25 climacs/pane.lisp:1.26
--- climacs/pane.lisp:1.25	Sat May  7 00:32:28 2005
+++ climacs/pane.lisp	Mon May  9 16:47:45 2005
@@ -196,6 +196,7 @@
 (defclass climacs-buffer (delegating-buffer filepath-mixin name-mixin)
   ((needs-saving :initform nil :accessor needs-saving)
    (syntax :accessor syntax)
+   (point :initform nil :initarg :point :accessor point)
    (indent-tabs-mode :initarg indent-tabs-mode :initform t
                      :accessor indent-tabs-mode))
   (:default-initargs
@@ -204,13 +205,14 @@
 
 (defmethod initialize-instance :after ((buffer climacs-buffer) &rest args)
   (declare (ignore args))
-  (with-slots (syntax) buffer
+  (with-slots (syntax point) buffer
      (setf syntax (make-instance
-		   'basic-syntax :buffer (implementation buffer)))))
+		   'basic-syntax :buffer (implementation buffer))
+	   point (clone-mark (low-mark buffer) :right))))
 
 (defclass climacs-pane (application-pane)
   ((buffer :initform (make-instance 'climacs-buffer) :accessor buffer)
-   (point :initform nil :initarg :point :reader point)
+   (point :initform nil :initarg :point :accessor point)
    (mark :initform nil :initarg :mark :accessor mark)
    (top :reader top)
    (bot :reader bot)
@@ -240,6 +242,7 @@
 (defmethod initialize-instance :after ((pane climacs-pane) &rest args)
   (declare (ignore args))
   (with-slots (buffer point mark) pane
+     (setf point (clone-mark (point buffer)))
      (when (null point)
        (setf point (clone-mark (low-mark buffer) :right)))
      (when (null mark)
@@ -256,7 +259,7 @@
 
 (defmethod (setf buffer) :after (buffer (pane climacs-pane))
   (with-slots (point mark top bot) pane
-       (setf point (clone-mark (low-mark buffer) :right)
+       (setf point (clone-mark (point buffer))
 	     mark (clone-mark (low-mark buffer) :right)
 	     top (clone-mark (low-mark buffer) :left)
 	     bot (clone-mark (high-mark buffer) :right))))




More information about the Climacs-cvs mailing list