Add a SHRINK-LENGTH field to the group data structure, and change the
authorChris Hanson <org/chris-hanson/cph>
Sat, 9 Jan 1993 09:41:30 +0000 (09:41 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sat, 9 Jan 1993 09:41:30 +0000 (09:41 +0000)
allocation of groups to initialize them to a fixed minimum size.

v7/src/edwin/buffer.scm
v7/src/edwin/edwin.pkg
v7/src/edwin/struct.scm

index 322ce6754e074ff47e088d29a4d1a550defb5cd0..904322c9aa90398d2a023f4f70f093f17b49b113 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: buffer.scm,v 1.160 1992/11/17 21:31:20 cph Exp $
+;;;    $Id: buffer.scm,v 1.161 1993/01/09 09:38:53 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
@@ -81,7 +81,7 @@ The buffer is guaranteed to be deselected at that time."
 
 (define (make-buffer name mode directory)
   (let ((buffer (%make-buffer)))
-    (let ((group (make-group (string-copy "") buffer)))
+    (let ((group (make-group buffer)))
       (vector-set! buffer buffer-index:name name)
       (vector-set! buffer buffer-index:group group)
       (add-group-clip-daemon! group (buffer-clip-daemon buffer))
index 6258ec29dfe839a86b3e943ecc854d07598ce60d..891898f6919d9faf47341e087c6da9b0c8287bbd 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: edwin.pkg,v 1.110 1993/01/09 01:16:07 cph Exp $
+$Id: edwin.pkg,v 1.111 1993/01/09 09:39:03 cph Exp $
 
 Copyright (c) 1989-1993 Massachusetts Institute of Technology
 
@@ -181,6 +181,7 @@ MIT in each case. |#
          group-insert-string!
          group-insert-substring!
          group-left-char
+         group-minimum-length
          group-right-char
          prepare-gap-for-insert!))
 
index d74a971477b723917dcca36aa2ca62264be390cd..221a5ddcd2c35b0c5eba6abeabd7bb5dcea6d218 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: struct.scm,v 1.82 1993/01/09 01:16:20 cph Exp $
+;;;    $Id: struct.scm,v 1.83 1993/01/09 09:41:30 cph Exp $
 ;;;
 ;;;    Copyright (c) 1985, 1989-93 Massachusetts Institute of Technology
 ;;;
   modified?
   point
   buffer
-  )
-
-(define (make-group string buffer)
-  (let ((group (%make-group))
-       (n (string-length string)))
-    (vector-set! group group-index:text string)
-    (vector-set! group group-index:gap-start n)
-    (vector-set! group group-index:gap-length 0)
-    (vector-set! group group-index:gap-end n)
+  shrink-length)
+
+(define (make-group buffer)
+  (let ((group (%make-group)))
+    (vector-set! group group-index:text (string-allocate group-minimum-length))
+    (vector-set! group group-index:gap-start 0)
+    (vector-set! group group-index:gap-length group-minimum-length)
+    (vector-set! group group-index:gap-end 0)
     (vector-set! group group-index:marks '())
     (let ((start (make-permanent-mark group 0 false)))
       (vector-set! group group-index:start-mark start)
       (vector-set! group group-index:display-start start))
-    (let ((end (make-permanent-mark group n true)))
+    (let ((end (make-permanent-mark group 0 true)))
       (vector-set! group group-index:end-mark end)
       (vector-set! group group-index:display-end end))
     (vector-set! group group-index:read-only? false)
     (vector-set! group group-index:modified? false)
     (vector-set! group group-index:point (make-permanent-mark group 0 true))
     (vector-set! group group-index:buffer buffer)
+    (vector-set! group group-index:shrink-length false)
     group))
 
 (define (group-length group)