(DEFINE-FILE-INFO §READTABLE "XCL" §PACKAGE (DEFPACKAGE "LAYOUT-SEDIT" (§NICKNAMES "L-S"))) (il:filecreated " 9-Jan-87 19:55:25" il:{eris}lispcore>layout-sedit.\;2 7190 il:|changes| il:|to:| (il:variables user::*l-s-region-zero* user::*l-s-region-delta* user::*l-s-reuse-earlier-regions*) (il:functions get-region save-region user::use-l-s-regions user::stop-using-l-s-regions) (il:vars il:layout-seditcoms) il:|previous| il:|date:| "26-Dec-86 19:42:46" il:{eris}lisp>layout-sedit.\;2) ; Copyright (c) 1986, 1987 by Pavel Curtis. All rights reserved. (il:prettycomprint il:layout-seditcoms) (il:rpaqq il:layout-seditcoms ((il:functions user::use-l-s-regions user::stop-using-l-s-regions) (il:variables *region-alist* user::*l-s-region-zero* user::*l-s-region-delta* user::*l-s-reuse-earlier-regions*) (il:functions region-plus) (il:functions get-region save-region) (il:declare\: il:donteval@load il:donteval@compile il:docopy (il:p (user::use-l-s-regions))) (il:* il:|;;| "Arrange to use the proper compiler and makefile environment ") (il:prop (il:filetype il:makefile-environment) il:layout-sedit))) (defun user::use-l-s-regions nil (assert (null il:|\\\\contexts|) nil "Close all open SEdit windows") (il:sedit.reset) (il:movd 'il:sedit.get.window.region 'old-get-region) (il:movd 'il:sedit.save.window.region 'old-save-region) (il:movd 'get-region 'il:sedit.get.window.region) (il:movd 'save-region 'il:sedit.save.window.region)) (defun user::stop-using-l-s-regions nil (assert (null il:|\\\\contexts|) nil "Close all open SEdit windows") (il:sedit.reset) (il:movd 'old-get-region 'il:sedit.get.window.region) (il:movd 'old-save-region 'il:sedit.save.window.region)) (defvar *region-alist* nil (il:* il:|;;;| "An AList mapping a region to the SEdit context that currently owns it. The associations of regions no longer in use should have a CDR of NIL. The list is kept in reverse order, with the farthest region from *REGION-ZERO* at the front of the list. So as to allow experimentation by users, we maintain the invariant that the first association on the list never has a CDR of NIL. To reestablish that invariant, we sometimes POP the AList rather than set the CDR to NIL.") ) (defvar user::*l-s-region-zero* (il:createregion 25 (- (truncate il:screenheight 2) 19) (truncate il:screenwidth 2) (truncate il:screenheight 2)) (il:* il:|;;;| "The region to be used by the first SEdit window. This works in conjunction with USER::*L-S-REGION-DELTA* to specify the region for each new SEdit window.") ) (defvar user::*l-s-region-delta* (il:createregion 11 -44 0 0) ) (defvar user::*l-s-reuse-earlier-regions* nil (il:* il:|;;;| "If non-NIL, then earlier regions (i.e., those closer to USER::*L-S-REGION-ZERO* will get reused when free. Otherwise, new regions, farther from USER::*L-S-REGION-ZERO* than any currently in use, will be created.") ) (defun region-plus (one two) (il:createregion (+ (il:fetch (il:region il:left) il:of one) (il:fetch (il:region il:left) il:of two)) (+ (il:fetch (il:region il:bottom) il:of one) (il:fetch (il:region il:bottom) il:of two)) (+ (il:fetch (il:region il:width) il:of one) (il:fetch (il:region il:width) il:of two)) (+ (il:fetch (il:region il:height) il:of one) (il:fetch (il:region il:height) il:of two)))) (defun get-region (context) (let ((pair (and user::*l-s-reuse-earlier-regions* (find nil *region-alist* :key 'cdr)))) (cond ((null pair) (cond ((null *region-alist*) (setq *region-alist* (list (cons user::*l-s-region-zero* context))) user::*l-s-region-zero*) (t (let ((new-region (region-plus (car (first *region-alist*) ) user::*l-s-region-delta*))) (push (cons new-region context) *region-alist*) new-region)))) (t (setf (cdr pair) context) (car pair))))) (defun save-region (context) (il:* il:|;;;| "The context is done with its region. Deallocate it.") (let ((pair (find context *region-alist* :key 'cdr))) (if (null pair) (warn "An SEdit context is trying to give up an unallocated region.") (setf (cdr pair) nil)) (setq *region-alist* (member-if-not 'null *region-alist* :key 'cdr)))) (il:declare\: il:donteval@load il:donteval@compile il:docopy (user::use-l-s-regions) ) (il:* il:|;;| "Arrange to use the proper compiler and makefile environment ") (il:putprops il:layout-sedit il:filetype compile-file) (il:putprops il:layout-sedit il:makefile-environment (:readtable "XCL" :package (xcl:defpackage "LAYOUT-SEDIT" (:nicknames "L-S")))) (il:putprops il:layout-sedit il:copyright ("Pavel Curtis" 1986 1987)) (il:declare\: il:dontcopy (il:filemap (nil))) il:stop