? abbrev.dfsl
? base-test.dfsl
? base.dfsl
? buffer-test.dfsl
? buffer.dfsl
? cl-syntax.dfsl
? delegating-buffer.dfsl
? Flexichain
? gui.dfsl
? html-syntax.dfsl
? io.dfsl
? kill-ring.dfsl
? packages.dfsl
? pane.dfsl
? prolog-syntax.dfsl
? syntax.dfsl
? text-syntax.dfsl
? translate.dfsl
? undo.dfsl
? Persistent/binseq-package.dfsl
? Persistent/binseq.dfsl
? Persistent/binseq2.dfsl
? Persistent/obinseq.dfsl
? Persistent/persistent-buffer.dfsl
? Persistent/persistent-undo.dfsl
? testing/rt.dfsl
Index: gui.lisp
===================================================================
RCS file: /project/climacs/cvsroot/climacs/gui.lisp,v
retrieving revision 1.133
diff -u -r1.133 gui.lisp
--- gui.lisp	6 May 2005 16:56:32 -0000	1.133
+++ gui.lisp	7 May 2005 10:35:29 -0000
@@ -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
@@ -786,6 +787,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)))
 
@@ -965,7 +967,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*))
@@ -979,7 +982,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: pane.lisp
===================================================================
RCS file: /project/climacs/cvsroot/climacs/pane.lisp,v
retrieving revision 1.24
diff -u -r1.24 pane.lisp
--- pane.lisp	6 Apr 2005 05:31:53 -0000	1.24
+++ pane.lisp	7 May 2005 10:35:29 -0000
@@ -196,6 +196,7 @@
 (defclass climacs-buffer (delegating-buffer filename-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))))
