;;; -*-Scheme-*-
;;;
-;;; $Id: buffer.scm,v 1.162 1993/08/10 23:28:12 cph Exp $
+;;; $Id: buffer.scm,v 1.163 1993/08/13 23:20:09 cph Exp $
;;;
;;; Copyright (c) 1986, 1989-93 Massachusetts Institute of Technology
;;;
(let ((group (buffer-group buffer)))
(if (group-modified? group)
(begin
- (set-group-modified! group false)
+ (set-group-modified?! group false)
(buffer-modeline-event! buffer 'BUFFER-MODIFIED)
(vector-set! buffer buffer-index:auto-saved? false)))))))
(let ((group (buffer-group buffer)))
(if (not (group-modified? group))
(begin
- (set-group-modified! group true)
+ (set-group-modified?! group true)
(buffer-modeline-event! buffer 'BUFFER-MODIFIED)))))))
(define (set-buffer-auto-saved! buffer)
(vector-set! buffer buffer-index:auto-saved? true)
- (set-group-modified! (buffer-group buffer) 'AUTO-SAVED))
+ (set-group-modified?! (buffer-group buffer) 'AUTO-SAVED))
(define-integrable (buffer-auto-save-modified? buffer)
(eq? true (group-modified? (buffer-group buffer))))
(define (with-read-only-defeated mark thunk)
(let ((group (mark-group mark))
(outside)
- (inside false))
+ (inside 'FULLY))
(dynamic-wind (lambda ()
- (set! outside (group-read-only? group))
- (if inside
- (set-group-read-only! group)
- (set-group-writable! group)))
+ (set! outside (group-writable? group))
+ (set-group-writable?! group inside))
thunk
(lambda ()
- (set! inside (group-read-only? group))
- (if outside
- (set-group-read-only! group)
- (set-group-writable! group))))))
+ (set! inside (group-writable? group))
+ (set-group-writable?! group outside)))))
\f
;;;; Local Bindings
;;; -*-Scheme-*-
;;;
-;;; $Id: fileio.scm,v 1.118 1993/08/10 06:41:16 cph Exp $
+;;; $Id: fileio.scm,v 1.119 1993/08/13 23:20:57 cph Exp $
;;;
;;; Copyright (c) 1986, 1989-1993 Massachusetts Institute of Technology
;;;
(let ((truename false)
(file-error false))
;; Set modified so that file supercession check isn't done.
- (set-group-modified! (buffer-group buffer) true)
+ (set-group-modified?! (buffer-group buffer) true)
(region-delete! (buffer-unclipped-region buffer))
(call-with-current-continuation
(lambda (continuation)
;;; -*-Scheme-*-
;;;
-;;; $Id: grpops.scm,v 1.20 1993/08/10 23:36:03 cph Exp $
+;;; $Id: grpops.scm,v 1.21 1993/08/13 23:20:39 cph Exp $
;;;
;;; Copyright (c) 1986, 1989-93 Massachusetts Institute of Technology
;;;
(fix:+ (group-modified-tick group) 1))
(undo-record-insertion! group index (fix:+ index n))
;; The MODIFIED? bit must be set *after* the undo recording.
- (set-group-modified! group true)
+ (set-group-modified?! group true)
(if (group-text-properties group)
(update-intervals-for-insertion! group index n)))
\f
(vector-set! group group-index:modified-tick
(fix:+ (group-modified-tick group) 1))
;; The MODIFIED? bit must be set *after* the undo recording.
- (set-group-modified! group true)
+ (set-group-modified?! group true)
(if (group-text-properties group)
(update-intervals-for-deletion! group start end))
(set-interrupt-enables! interrupt-mask)
;;; -*-Scheme-*-
;;;
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/regops.scm,v 1.85 1992/02/04 04:03:52 cph Exp $
+;;; $Id: regops.scm,v 1.86 1993/08/13 23:20:45 cph Exp $
;;;
-;;; Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
+;;; Copyright (c) 1986, 1989-93 Massachusetts Institute of Technology
;;;
;;; This material was developed by the Scheme project at the
;;; Massachusetts Institute of Technology, Department of
(define (%group-narrow! group start end)
(let ((start (make-permanent-mark group start false))
(end (make-permanent-mark group end true)))
- (vector-set! group group-index:start-mark start)
- (vector-set! group group-index:end-mark end)
- (vector-set! group group-index:display-start start)
- (vector-set! group group-index:display-end end)))
+ (set-group-start-mark! group start)
+ (set-group-end-mark! group end)
+ (set-group-display-start! group start)
+ (set-group-display-end! group end)))
(define (group-widen! group)
(record-clipping! group 0 (group-length group))
;;; -*-Scheme-*-
;;;
-;;; $Id: rmail.scm,v 1.27 1993/01/12 19:05:06 gjr Exp $
+;;; $Id: rmail.scm,v 1.28 1993/08/13 23:20:16 cph Exp $
;;;
;;; Copyright (c) 1991-1993 Massachusetts Institute of Technology
;;;
(with-group-undo-disabled (buffer-group buffer) thunk))
(define (with-group-open group thunk)
- (let ((outside-ro)
- (inside-ro false)
+ (let ((outside-writable)
+ (inside-writable 'FULLY)
(outside-start)
(outside-end)
(inside-start (mark-permanent! (group-absolute-start group)))
(inside-end (mark-permanent! (group-absolute-end group))))
(unwind-protect (lambda ()
- (set! outside-ro (group-read-only? group))
+ (set! outside-writable (group-writable? group))
(set! outside-start (group-start-mark group))
(set! outside-end (group-end-mark group))
- (vector-set! group group-index:read-only? inside-ro)
- (vector-set! group group-index:start-mark inside-start)
- (vector-set! group group-index:end-mark inside-end))
+ (set-group-writable?! group inside-writable)
+ (set-group-start-mark! group inside-start)
+ (set-group-end-mark! group inside-end))
thunk
(lambda ()
- (set! inside-ro (group-read-only? group))
+ (set! inside-writable (group-writable? group))
(set! inside-start (group-start-mark group))
(set! inside-end (group-end-mark group))
- (vector-set! group group-index:read-only? outside-ro)
- (vector-set! group group-index:start-mark outside-start)
- (vector-set! group group-index:end-mark outside-end)))))
+ (set-group-writable?! group outside-writable)
+ (set-group-start-mark! group outside-start)
+ (set-group-end-mark! group outside-end)))))
\f
;;;; Constants
;;; -*-Scheme-*-
;;;
-;;; $Id: struct.scm,v 1.86 1993/08/09 19:15:15 jawilson Exp $
+;;; $Id: struct.scm,v 1.87 1993/08/13 23:19:57 cph Exp $
;;;
;;; Copyright (c) 1985, 1989-93 Massachusetts Institute of Technology
;;;
marks
start-mark
end-mark
- read-only?
+ writable?
display-start
display-end
start-changes-index
shrink-length
text-properties)
+(define-integrable (set-group-marks! group marks)
+ (vector-set! group group-index:marks marks))
+
+(define-integrable (set-group-start-mark! group start)
+ (vector-set! group group-index:start-mark start))
+
+(define-integrable (set-group-end-mark! group end)
+ (vector-set! group group-index:end-mark end))
+
+(define-integrable (set-group-writable?! group writable?)
+ (vector-set! group group-index:writable? writable?))
+
+(define-integrable (set-group-display-start! group start)
+ (vector-set! group group-index:display-start start))
+
+(define-integrable (set-group-display-end! group end)
+ (vector-set! group group-index:display-end end))
+
+(define-integrable (set-group-start-changes-index! group start)
+ (vector-set! group group-index:start-changes-index start))
+
+(define-integrable (set-group-end-changes-index! group end)
+ (vector-set! group group-index:end-changes-index end))
+
+(define-integrable (set-group-modified-tick! group tick)
+ (vector-set! group group-index:modified-tick tick))
+
+(define-integrable (set-group-undo-data! group undo-data)
+ (vector-set! group group-index:undo-data undo-data))
+
+(define-integrable (set-group-modified?! group sense)
+ (vector-set! group group-index:modified? sense))
+
+(define-integrable (set-group-text-properties! group properties)
+ (vector-set! group group-index:text-properties properties))
+\f
(define (make-group buffer)
(let ((group (%make-group)))
(vector-set! group group-index:text (string-allocate 0))
(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:writable? false)
(vector-set! group group-index:start-changes-index false)
(vector-set! group group-index:end-changes-index false)
(vector-set! group group-index:modified-tick 0)
(define-integrable (group-display-end-index? group index)
(fix:>= index (group-display-end-index group)))
\f
-(define-integrable (set-group-read-only! group)
- (vector-set! group group-index:read-only? true))
-
(define-integrable (set-group-writable! group)
- (vector-set! group group-index:read-only? false))
-
-(define-integrable (set-group-start-changes-index! group start)
- (vector-set! group group-index:start-changes-index start))
-
-(define-integrable (set-group-end-changes-index! group end)
- (vector-set! group group-index:end-changes-index end))
+ (set-group-writable?! group #t))
-(define-integrable (set-group-marks! group marks)
- (vector-set! group group-index:marks marks))
+(define-integrable (set-group-read-only! group)
+ (set-group-writable?! group #f))
-(define-integrable (set-group-text-properties! group properties)
- (vector-set! group group-index:text-properties properties))
+(define-integrable (group-read-only? group)
+ (not (group-writable? group)))
(define (group-region group)
(%make-region (group-start-mark group) (group-end-mark group)))
(else
(group-gap-start group))))
-(define-integrable (set-group-undo-data! group undo-data)
- (vector-set! group group-index:undo-data undo-data))
-
-(define-integrable (set-group-modified! group sense)
- (vector-set! group group-index:modified? sense))
-
(define-integrable (set-group-point! group point)
(vector-set! group group-index:point (mark-left-inserting-copy point)))
;;; -*-Scheme-*-
;;;
-;;; $Id: txtprp.scm,v 1.4 1993/08/13 11:17:59 jawilson Exp $
+;;; $Id: txtprp.scm,v 1.5 1993/08/13 23:20:31 cph Exp $
;;;
;;; Copyright (c) 1993 Massachusetts Institute of Technology
;;;
(if p
(begin
(undo-record-property-changes! group p)
- (set-group-modified! group true)
+ (set-group-modified?! group true)
(vector-set! group group-index:modified-tick
(fix:+ (group-modified-tick group) 1))
true)
(or (not root)
(fix:= start 0)
(fix:= start (interval-total-length root)))))
+ (not (eq? 'FULLY (group-writable? group)))
(let ((interval (find-interval group start)))
(let ((datum (interval-property interval 'READ-ONLY)))
(and datum
;; export
(define (text-not-deleteable? group start end)
(and (group-text-properties group)
+ (not (eq? 'FULLY (group-writable? group)))
(let loop ((interval (find-interval group start)))
(or (interval-property interval 'READ-ONLY)
(let ((next (next-interval interval)))