home *** CD-ROM | disk | FTP | other *** search
- ;;;
- ;;; Copyright (c) 1985 Massachusetts Institute of Technology
- ;;;
- ;;; This material was developed by the Scheme project at the
- ;;; Massachusetts Institute of Technology, Department of
- ;;; Electrical Engineering and Computer Science. Permission to
- ;;; copy this software, to redistribute it, and to use it for any
- ;;; purpose is granted, subject to the following restrictions and
- ;;; understandings.
- ;;;
- ;;; 1. Any copy made of this software must include this copyright
- ;;; notice in full.
- ;;;
- ;;; 2. Users of this software agree to make their best efforts (a)
- ;;; to return to the MIT Scheme project any improvements or
- ;;; extensions that they make, so that these may be included in
- ;;; future releases; and (b) to inform MIT of noteworthy uses of
- ;;; this software.
- ;;;
- ;;; 3. All materials developed as a consequence of the use of
- ;;; this software shall duly acknowledge such use, in accordance
- ;;; with the usual standards of acknowledging credit in academic
- ;;; research.
- ;;;
- ;;; 4. MIT has made no warrantee or representation that the
- ;;; operation of this software will be error-free, and MIT is
- ;;; under no obligation to provide any services, by way of
- ;;; maintenance, update, or otherwise.
- ;;;
- ;;; 5. In conjunction with products arising from the use of this
- ;;; material, there shall be no use of the name of the
- ;;; Massachusetts Institute of Technology nor of any adaptation
- ;;; thereof in any advertising, promotional, or sales literature
- ;;; without prior written consent from MIT in each case.
- ;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;
- ;;; Modified by Texas Instruments Inc 8/15/85
- ;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
- ;;;; Current State
-
- ;;;; Windows
- (begin
-
- (define-integrable current-window
- (lambda ()
- (current-buffer-window)))
-
-
- ;;;; Buffers
-
- (define-integrable buffer-list
- (lambda ()
- (bufferset-buffer-list (current-bufferset))))
-
- (define-integrable buffer-names
- (lambda ()
- (bufferset-names (current-bufferset))))
-
- (define-integrable current-buffer
- (lambda ()
- (window-buffer (current-window))))
-
- (define-integrable find-buffer
- (lambda (name)
- (bufferset-find-buffer (current-bufferset) name)))
-
- (define-integrable create-buffer
- (lambda (name)
- (bufferset-create-buffer (current-bufferset) name)))
-
- (define-integrable find-or-create-buffer
- (lambda (name)
- (bufferset-find-or-create-buffer (current-bufferset) name)))
-
- (define-integrable rename-buffer
- (lambda (buffer new-name)
- (bufferset-rename-buffer (current-bufferset) buffer new-name)))
-
- (define-integrable current-point
- (lambda ()
- (window-point (current-window))))
-
- (define-integrable set-current-point!
- (lambda (mark)
- (set-window-point! (current-window) mark)))
-
- (define-integrable current-mark
- (lambda ()
- (buffer-mark (current-buffer))))
-
- (define-integrable set-current-mark!
- (lambda (mark)
- (set-buffer-mark! (current-buffer) mark)))
-
- (define-integrable push-current-mark!
- (lambda (mark)
- (push-buffer-mark! (current-buffer) mark)))
-
- (define-integrable pop-current-mark!
- (lambda ()
- (pop-buffer-mark! (current-buffer))))
-
- (define-integrable current-region
- (lambda ()
- (make-region (current-point) (current-mark))))
- )
-
- ;;; These have been commented out as are not currently used. However,
- ;;; these are useful routines and should not be deleted from this file.
-
-
- ;;;(define (kill-buffer buffer)
- ;;; (let ((new-buffer (other-buffer buffer))
- ;;; (current? (eq? buffer (current-buffer)))
- ;;; (windows (buffer-windows buffer)))
- ;;; (if (and (not new-buffer) (not (null? windows)))
- ;;; (error "Buffer to be killed has no replacement" buffer))
- ;;; (bufferset-kill-buffer! (current-bufferset) buffer)
- ;;; (if current? (select-buffer new-buffer))
- ;;; (mapc (lambda (window) (set-window-buffer! window new-buffer))
- ;;; windows)))
-
- ;;;(define (with-current-window new-window thunk)
- ;;; (define old-window)
- ;;; (dynamic-wind (lambda ()
- ;;; (set! old-window (current-window))
- ;;; (select-window (set! new-window)))
- ;;; thunk
- ;;; (lambda ()
- ;;; (set! new-window (current-window))
- ;;; (select-window (set! old-window)))))
- ;;;
- ;;;(define (with-selected-buffer buffer thunk)
- ;;; (define old-buffer)
- ;;; (dynamic-wind (lambda ()
- ;;; (set! old-buffer (current-buffer))
- ;;; (select-buffer-no-record buffer))
- ;;; thunk
- ;;; (lambda ()
- ;;; (set! buffer (current-buffer))
- ;;; (select-buffer-no-record old-buffer))))
-
-
- ;;;; Point and Mark
-
- ;;;(define (with-current-point new-point thunk)
- ;;; (define old-point)
- ;;; (dynamic-wind (lambda ()
- ;;; (set! old-point (current-point))
- ;;; (set-current-point! new-point))
- ;;; thunk
- ;;; (lambda ()
- ;;; (set! new-point (current-point))
- ;;; (set-current-point! old-point))))
-
- (define (buffer-mark buffer)
- (let ((ring (buffer-mark-ring buffer)))
- (if (ring-empty? ring) (editor-error))
- (ring-ref ring 0)))
-
- (define (set-buffer-mark! buffer mark)
- (ring-set! (buffer-mark-ring buffer)
- 0
- (mark-right-inserting mark)))
-
- (define (push-buffer-mark! buffer mark)
- (ring-push! (buffer-mark-ring buffer)
- (mark-right-inserting mark)))
-
- (define (pop-buffer-mark! buffer)
- (ring-pop! (buffer-mark-ring buffer)))
-
- (define (set-current-region! region)
- (set-current-point! (region-start region))
- (push-current-mark! (region-end region)))
-
- (define (set-current-region-reversed! region)
- (push-current-mark! (region-start region))
- (set-current-point! (region-end region)))
-