Compare commits
21 Commits
medley-220
...
medley-220
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ca33b92033 | ||
|
|
fe90ac5f9f | ||
|
|
b791bff070 | ||
|
|
ab8e97ff7b | ||
|
|
f8e4bbd7cb | ||
|
|
c7272e78f2 | ||
|
|
f531e89dde | ||
|
|
293c973f1d | ||
|
|
fe62e8e6e2 | ||
|
|
51f0c19ad1 | ||
|
|
1438ddba1f | ||
|
|
ae3851ccf9 | ||
|
|
e3f9a4ca9a | ||
|
|
7966704f1e | ||
|
|
311e4f049c | ||
|
|
e119314a9e | ||
|
|
27d4df45e6 | ||
|
|
312e99b0f4 | ||
|
|
82eaacc542 | ||
|
|
479de87011 | ||
|
|
5445a12b7e |
16
README.md
16
README.md
@@ -2,32 +2,32 @@
|
||||
|
||||
This repository is for the Lisp environment of [Medley Interlisp](https://Interlisp.org).
|
||||
|
||||
See the [Medley Interlisp Wiki](https://github.com/Interlisp/medley/wiki/) for an overview and pointers to available documentation.
|
||||
See the [Documentation links](https://github.com/Interlisp/medley/wiki/Documentation) for an overview and pointers to documentation.
|
||||
In particular [Running](https://github.com/Interlisp/medley/wiki/Running) explains other methods of getting Medley Interlisp.
|
||||
|
||||
A sub-project is [Interlisp/maiko](https://github.com/Interlisp/maiko), which is the implementation (in C) of the Medley virtual machine.
|
||||
[Interlisp/maiko](https://github.com/Interlisp/maiko), is the repo for the implementation (in C) of the Medley virtual machine.
|
||||
|
||||
## Using releases
|
||||
|
||||
There currently are separate releases of medley and maiko; get the latest version of each.
|
||||
There (soon) will also be Docker containers with the latest, and a way to try out Medley in the cloud (without installing).
|
||||
|
||||
|
||||
### Getting releases
|
||||
|
||||
Get the Maiko release [here](https://github.com/Interlisp/maiko/releases). You'll need the one corresponding to your operating system and processor (for Windows with WSL or Intel Linux, use `linux.x86_64`; for Macs use `darwin.x86_64` for Intel and `darwin.aarch64` for M1.)
|
||||
Get the Maiko release [here](https://github.com/Interlisp/maiko/releases). You'll need the .tgz file corresponding to your operating system and processor (for Windows with WSL or Intel Linux, use `linux.x86_64`; for Macs use `darwin.x86_64` for Intel and `darwin.aarch64` for M1.)
|
||||
|
||||
Or, build your own maiko (the binaries `lde` `ldex` and `ldeinit`.) We can build for other OS arch pairs depending on what is available for GitHub actions.
|
||||
Or, build your own maiko (the binaries `lde` `ldex` and `ldeinit`) We can build for other OS arch pairs depending on what is available for GitHub actions.
|
||||
|
||||
The medley release comes in two parts, found [here](https://github.com/Interlisp/medley/releases)
|
||||
1. The "loadups" (download `medley-`YYMMDD`-loadups.tgz`)
|
||||
2. The "runtime" (download `medley-`YYMMDD`-runtime.tgz`)
|
||||
|
||||
You don't need the "runtime" if you've cloned this (medley) repo.
|
||||
You don't need the "runtime" if you've cloned this (medley) repo, but you'll still need the "loadups" release.
|
||||
|
||||
If you happen to have the 'gh' GitHub command line installed you can download both using
|
||||
```
|
||||
gh release download -R Interlisp/medley -p "*"
|
||||
```
|
||||
but otherwise just click on the link(s) to the parts you need.
|
||||
but otherwise just click on the link(s) below to the parts you need.
|
||||
|
||||
### Unpacking releases
|
||||
|
||||
|
||||
@@ -1,43 +1,41 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
|
||||
|
||||
(FILECREATED "25-Oct-2021 14:54:43" |{DSK}<home>larry>medley>internal>library>MEDLEY-UTILS.;14| 9472
|
||||
(FILECREATED "26-Dec-2021 18:58:43" |{DSK}<home>larry>medley>internal>library>MEDLEY-UTILS.;2| 9049
|
||||
|
||||
|changes| |to:| (VARS MEDLEY-UTILSCOMS)
|
||||
(FNS GATHER-INFO)
|
||||
:CHANGES-TO (FNS GATHER-INFO)
|
||||
|
||||
|previous| |date:| "23-Oct-2021 14:53:16"
|
||||
|{DSK}<home>larry>medley>internal>library>MEDLEY-UTILS.;2|)
|
||||
:PREVIOUS-DATE "25-Oct-2021 14:54:43" |{DSK}<home>larry>medley>internal>library>MEDLEY-UTILS.;1|
|
||||
)
|
||||
|
||||
|
||||
(PRETTYCOMPRINT MEDLEY-UTILSCOMS)
|
||||
|
||||
(RPAQQ MEDLEY-UTILSCOMS ((FNS GATHER-INFO MEDLEY-FIX-LINKS MEDLEY-FIX-DATES)
|
||||
(VARS MEDLEY-FIX-DIRS)
|
||||
(FNS MAKE-EXPORTS-ALL MAKE-WHEREIS-HASH)))
|
||||
(VARS MEDLEY-FIX-DIRS)
|
||||
(FNS MAKE-EXPORTS-ALL MAKE-WHEREIS-HASH)))
|
||||
(DEFINEQ
|
||||
|
||||
(GATHER-INFO
|
||||
(LAMBDA (PHASE) (* \;
|
||||
"Edited 24-Oct-2021 09:43 by larry")
|
||||
"Edited 26-Dec-2021 18:56 by larry")
|
||||
(* \;
|
||||
"Edited 24-Oct-2021 09:43 by larry")
|
||||
(SELECTQ PHASE
|
||||
(ALL (SETQ SYSFILES (UNION SYSFILES FILELST))
|
||||
(SETQ FILELST NIL)
|
||||
(FILESLOAD (SOURCE)
|
||||
SYSEDIT)
|
||||
(|for| I |from| 1 |to| 4 |do| (GATHER-INFO I)))
|
||||
(1 (SETQ LOADEDFILES (|for| X |in| LOADEDFILELST |collect| (FILENAMEFIELD
|
||||
X
|
||||
'NAME)))
|
||||
(ALL (|for| I |from| 0 |to| 4 |do| (GATHER-INFO I)))
|
||||
(0 (SETQ SYSFILES (UNION SYSFILES FILELST))
|
||||
(SETQ FILELST NIL)
|
||||
(FILESLOAD (SOURCE)
|
||||
SYSEDIT))
|
||||
(1 (SETQ LOADEDFILES (|for| X |in| LOADEDFILELST |collect| (FILENAMEFIELD X 'NAME)))
|
||||
(FILESLOAD FILESETS)
|
||||
(SETQ ALLFILESETSFILES (|for| X |in| FILESETS |join| (APPEND (EVAL X))))
|
||||
(SETQ SOURCES (|for| X |in| (DIRECTORY (MEDLEYDIR "sources" "*.*;" T))
|
||||
|when| (NOT (MEMB (FILENAMEFIELD X 'EXTENSION)
|
||||
'(LCOM DFASL TEDIT TXT)))
|
||||
'(LCOM DFASL TEDIT TXT)))
|
||||
|collect| (FILENAMEFIELD X 'NAME))))
|
||||
(-1 (PRINTOUT T " loaded files not in SYSFILES or FILELST: "
|
||||
(|for| X |in| LOADEDFILES |when| (NOT (OR (FMEMB X SYSFILES)
|
||||
(FMEMB X FILELST)))
|
||||
|collect| X)
|
||||
(FMEMB X FILELST))) |collect| X)
|
||||
T)
|
||||
(PRINTOUT T "Sources not loaded: " (CL:SET-DIFFERENCE SOURCES (APPEND ALLFILESETSFILES
|
||||
LOADEDFILES))
|
||||
@@ -52,50 +50,45 @@
|
||||
DEFD))
|
||||
(|for| X |in| DEFINEDFNS |when| (CCODEP X)
|
||||
|do| (LET ((Y (PUTPROP X 'CCC (CALLSCCODE X))))
|
||||
(|for| REV |in| '(BLOCK-CALLED-BY CALLED-BY SPECIAL-BY GLOBAL-BY)
|
||||
|as| VAL |in| Y
|
||||
|do| (|for| S |in| VAL
|
||||
|do| (PUTPROP S REV (CONS X (GETPROP S REV)))))))
|
||||
(|for| REV |in| '(BLOCK-CALLED-BY CALLED-BY SPECIAL-BY GLOBAL-BY)
|
||||
|as| VAL |in| Y |do| (|for| S |in| VAL
|
||||
|do| (PUTPROP S REV (CONS X (GETPROP S REV)))))))
|
||||
(SETQ CALLEDFNS NIL)
|
||||
(MAPATOMS (FUNCTION (LAMBDA (X)
|
||||
(|if| (AND (NOT (GETD X))
|
||||
(GETPROP X 'CALLED-BY))
|
||||
(GETPROP X 'CALLED-BY))
|
||||
|then| (CL:PUSH X CALLEDFNS))))))
|
||||
(-2 (PRINTOUT T "Functions called and not defined" CALLEDFNS T))
|
||||
(3 (|for| X |in| SYSFILES
|
||||
|do|
|
||||
(LOAD X 'PROP)
|
||||
(PUTPROP X 'CONTENT (READFILE X))
|
||||
(|for| EXR |in| (GETPROP X 'CONTENT)
|
||||
|do| (SELECTQ (CAR EXR)
|
||||
(DEFINEQ (|for| DFN |in| (CDR EXR)
|
||||
|do| (|if| (EQUAL (CADR DFN)
|
||||
(GETPROP (CAR DFN)
|
||||
'EXPR))
|
||||
|then| (PRINTOUT T (CAR DFN)
|
||||
" ")
|
||||
(PUTPROP (CAR DFN)
|
||||
'EXPR
|
||||
(CADR DFN))
|
||||
|else| (PRINTOUT T (CAR DFN)
|
||||
"* "))))
|
||||
NIL)))
|
||||
(SETQ ALLCONTENT (|for| X |in| SYSFILES |collect| (CONS X (GETPROP
|
||||
X
|
||||
'CONTENT))))
|
||||
|do| (LOAD X 'PROP)
|
||||
(PUTPROP X 'CONTENT (READFILE X))
|
||||
(|for| EXR |in| (GETPROP X 'CONTENT)
|
||||
|do| (SELECTQ (CAR EXR)
|
||||
(DEFINEQ (|for| DFN |in| (CDR EXR)
|
||||
|do| (|if| (EQUAL (CADR DFN)
|
||||
(GETPROP (CAR DFN)
|
||||
'EXPR))
|
||||
|then| (PRINTOUT T (CAR DFN)
|
||||
" ")
|
||||
(PUTPROP (CAR DFN)
|
||||
'EXPR
|
||||
(CADR DFN))
|
||||
|else| (PRINTOUT T (CAR DFN)
|
||||
"* "))))
|
||||
NIL)))
|
||||
(SETQ ALLCONTENT (|for| X |in| SYSFILES |collect| (CONS X (GETPROP X 'CONTENT))))
|
||||
(* \; " don't edit with SEDIT")
|
||||
(LET (DUPS)
|
||||
(|for| X |in| SYSFILES
|
||||
|do| (|for| FN |in| (FILEFNSLST X)
|
||||
|do| (|if| (GETPROP FN 'WHEREIS)
|
||||
|then| (NCONC1 (GETPROP FN 'WHEREIS)
|
||||
X)
|
||||
(OR (FMEMB FN DUPS)
|
||||
(SETQ DUPS (CONS FN DUPS)))
|
||||
|else| (PUTPROP FN 'WHEREIS (LIST X)))))
|
||||
|do| (|if| (GETPROP FN 'WHEREIS)
|
||||
|then| (NCONC1 (GETPROP FN 'WHEREIS)
|
||||
X)
|
||||
(OR (FMEMB FN DUPS)
|
||||
(SETQ DUPS (CONS FN DUPS)))
|
||||
|else| (PUTPROP FN 'WHEREIS (LIST X)))))
|
||||
(SETQ DUPFNS DUPS))
|
||||
(SETQ NO-SOURCE (|for| X |in| DEFINEDFNS |when| (NOT (GETPROP X 'EXPR))
|
||||
|collect| X)))
|
||||
(SETQ NO-SOURCE (|for| X |in| DEFINEDFNS |when| (NOT (GETPROP X 'EXPR)) |collect| X)))
|
||||
(-3 (PRINTOUT T "Functions compiled but no expr" NO-SOURCE T)
|
||||
(PRINTOUT T "Functions on more than one file: " DUPFNS T))
|
||||
(4 (PRINTOUT T T "STARTING MASTERSCOPE PHASE ON " (DATE)
|
||||
@@ -104,7 +97,7 @@
|
||||
SYSEDIT)
|
||||
(|for| X |in| SYSFILES |do| (MSNOTICEFILE X))
|
||||
(|for| X |in| SYSFILES |do| (PRINTOUT T T "Analyzing " X T)
|
||||
(MASTERSCOPE `(ANALYZE ON ,(KWOTE X)))))
|
||||
(MASTERSCOPE `(ANALYZE ON ,(KWOTE X)))))
|
||||
(-4 "No queries yet")
|
||||
(HELP))))
|
||||
|
||||
@@ -124,7 +117,7 @@
|
||||
)
|
||||
|
||||
(RPAQQ MEDLEY-FIX-DIRS ("sources" "library" "lispusers" "internal/library" "greetfiles"
|
||||
"docs>Documentation Tools"))
|
||||
"docs>Documentation Tools"))
|
||||
(DEFINEQ
|
||||
|
||||
(MAKE-EXPORTS-ALL
|
||||
@@ -157,6 +150,6 @@
|
||||
(DRIBBLE))))
|
||||
)
|
||||
(DECLARE\: DONTCOPY
|
||||
(FILEMAP (NIL (618 7420 (GATHER-INFO 628 . 6522) (MEDLEY-FIX-LINKS 6524 . 7047) (MEDLEY-FIX-DATES 7049
|
||||
. 7418)) (7578 9449 (MAKE-EXPORTS-ALL 7588 . 8604) (MAKE-WHEREIS-HASH 8606 . 9447)))))
|
||||
(FILEMAP (NIL (553 7001 (GATHER-INFO 563 . 6103) (MEDLEY-FIX-LINKS 6105 . 6628) (MEDLEY-FIX-DATES 6630
|
||||
. 6999)) (7155 9026 (MAKE-EXPORTS-ALL 7165 . 8181) (MAKE-WHEREIS-HASH 8183 . 9024)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
@@ -1,91 +0,0 @@
|
||||
;; Function To Be Tested: LIST*
|
||||
;;
|
||||
;; Source: Guy L Steele's CLTL
|
||||
;; Section: 15.2 Lists
|
||||
;; Page: 267
|
||||
;;
|
||||
;; Created By: Kelly Roach
|
||||
;;
|
||||
;; Creation Date: June 27,1986
|
||||
;;
|
||||
;; Last Update: June 27,1986
|
||||
;; July 15, 1986 Sye/ create test cases
|
||||
;;
|
||||
;; Filed As: {ERIS}<LISPCORE>CML>TEST>15-2-LIST*.TEST
|
||||
;;
|
||||
;;
|
||||
;; Syntax: (LIST* ARG &REST OTHERS)
|
||||
;;
|
||||
;; Function Description:
|
||||
;; LIST* is like LIST except that the last CONS
|
||||
;; of the constructed list is ``dotted.'' The last argument to LIST*
|
||||
;; is used as the CDR of the last cons constructed;
|
||||
;; this need not be an atom. If it is not an atom,
|
||||
;; then the effect is to add several new elements to the front of a list.
|
||||
;; For example:
|
||||
;;
|
||||
;; (LIST* 'A 'B 'C 'D) => (A B C . D)
|
||||
;; This is like
|
||||
;; (CONS 'A (CONS 'B (CONS 'C 'D)))
|
||||
;; Also:
|
||||
;; (LIST* 'A 'B 'C '(D E F)) => (A B C D E F)
|
||||
;; (LIST* X) = X
|
||||
;;
|
||||
;;
|
||||
;; Argument(s): ARG - anything
|
||||
;; OTHERS - anything
|
||||
;;
|
||||
;; Returns: a dotted list
|
||||
;;
|
||||
(do-test "test list*0 - test case copied from page 267 of CLtL"
|
||||
(and (EQUAL (LIST* 'A 'B 'C 'D) '(A B C . D))
|
||||
(EQUAL (LIST* 'A 'B 'C '(D E F)) '(A B C D E F))
|
||||
(EQUAL (LIST* 'X) 'X)
|
||||
)
|
||||
)
|
||||
|
||||
(do-test "test list*1"
|
||||
(and (equal (list* 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999
|
||||
999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999)
|
||||
(append (make-list 48 :initial-element 999) '(999 . 999)))
|
||||
|
||||
(equal (list* "evening" 'sun 'reflected "in Lake" 'Shanti) '("evening" sun reflected "in Lake" . Shanti))
|
||||
)
|
||||
)
|
||||
|
||||
(do-test "test list*2"
|
||||
(equal (list* 1.009 'a (cons 3 4) (funcall #'list* 2.009 #\g "string") (every #'evenp '(2 4 6 8)) (not (or 1 100 1000 0))
|
||||
(apply #'list* 'm 'n 'b '(88)) (list* (+ 2 3) (caddr '(w x y z))) )
|
||||
'(1.009 a (3 . 4) (2.009 #\g . "string") t nil (m n b . 88) 5 . y)))
|
||||
|
||||
(do-test "test list*3"
|
||||
(progn
|
||||
(setq aa '(a b c d e f g h))
|
||||
(equal (list* (last aa) (nth 3 aa) (nthcdr 5 aa) (list* (car aa) (endp aa))
|
||||
(progn 1 2 3 (setq x 1 y 2 z 3))
|
||||
(prog2 (defun fun () "fun1") (fun))
|
||||
(prog1 (setq a 100) (setq a (1+ a)))
|
||||
(progn (defmacro mac () `(list* ,(* 2 2) ,(list-length ()))) (mac)))
|
||||
'( (h) d (f g h) (a . nil) 3 "fun1" 100 4 . 0)) ))
|
||||
|
||||
(do-test "test list*4 - nested list* functions"
|
||||
(and
|
||||
(equal (setq aa (list* (list* (list* (list* (list* (list* (list* (list* (list* (list* 'a 'b 'c 'd 'e 'f 'g 'h 'i 'j 'k)))))))))))
|
||||
'(a b c d e f g h i j . k) )
|
||||
(equal (list* aa aa aa aa aa)
|
||||
'((a b c d e f g h i j . k) (a b c d e f g h i j . k) (a b c d e f g h i j . k) (a b c d e f g h i j . k)
|
||||
a b c d e f g h i j . k) )
|
||||
)
|
||||
)
|
||||
|
||||
(do-test "test list*5 - (list* x) is equivalent to x [page 268]"
|
||||
(and (eq (list* ()) ())
|
||||
(eq (list* 10) 10)
|
||||
(equal (list* '(1)) '(1))
|
||||
(equal (list* (list* (list 2))) '(2))
|
||||
(prog2 (setq a (list* #'-)) (= (funcall a 4 3 2 1) -2))
|
||||
(equal (list* (list (list* 1 2 3) '(4) ) '(5 . "a")) '(((1 2 . 3) (4)) 5 . "a"))
|
||||
)
|
||||
)
|
||||
|
||||
STOP
|
||||
@@ -1,12 +1,17 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
|
||||
(FILECREATED " 4-May-92 13:10:53" |{PELE:MV:ENVOS}<LISPCORE>LIBRARY>MSCOMMON.;3| 23489
|
||||
|
||||
|changes| |to:| (TEMPLATES CL:DECF CL:INCF CL:PUSH)
|
||||
(FILECREATED "15-Jan-2022 20:17:21" |{DSK}<home>larry>medley>library>MSCOMMON.;4| 24053
|
||||
|
||||
|previous| |date:| "12-Jun-90 10:17:31" |{PELE:MV:ENVOS}<LISPCORE>LIBRARY>MSCOMMON.;2|)
|
||||
:CHANGES-TO (TEMPLATES ADD-EXEC CL:ASSOC CL:COMPILE-FILE EXEC CL:IN-PACKAGE CL:MAKE-STRING OPEN
|
||||
CL:PUSH CL:PUSHNEW CL:RASSOC CL:WRITE-LINE CL:WRITE-STRING CL:WHEN CL:UNLESS
|
||||
)
|
||||
(FNS FUNCTIONSMSGETDEF FUNCTIONSMSMC VARIABLESMSGETDEF)
|
||||
(VARS MSCOMMONCOMS)
|
||||
|
||||
:PREVIOUS-DATE " 4-May-92 13:10:53" |{DSK}<home>larry>medley>library>MSCOMMON.;3|)
|
||||
|
||||
|
||||
; Copyright (c) 1988, 1990, 1992 by Venue & Xerox Corporation. All rights reserved.
|
||||
; Copyright (c) 1988, 1990, 1992 by Venue & Xerox Corporation.
|
||||
|
||||
(PRETTYCOMPRINT MSCOMMONCOMS)
|
||||
|
||||
@@ -37,8 +42,8 @@
|
||||
CL:STRING-LESSP CL:STRING-NOT-EQUAL CL:STRING-NOT-GREATERP CL:STRING-NOT-LESSP
|
||||
CL:STRING-UPCASE CL:STRING/= CL:STRING< CL:STRING<= CL:STRING= CL:STRING> CL:STRING>=
|
||||
CL:SUBLIS CL:SUBSETP CL:SUBST CL:SUBST-IF CL:SUBST-IF-NOT CL:SUBSTITUTE
|
||||
CL:SUBSTITUTE-IF CL:SUBSTITUTE-IF-NOT CL:TREE-EQUAL CL:UNION CL:VECTOR-PUSH
|
||||
CL:VECTOR-PUSH-EXTEND WRITE CL:WRITE-LINE CL:WRITE-STRING CL:WRITE-TO-STRING)
|
||||
CL:SUBSTITUTE-IF CL:SUBSTITUTE-IF-NOT CL:TREE-EQUAL CL:UNION CL:UNLESS CL:VECTOR-PUSH
|
||||
CL:VECTOR-PUSH-EXTEND CL:WHEN WRITE CL:WRITE-LINE CL:WRITE-STRING CL:WRITE-TO-STRING)
|
||||
(P
|
||||
(* |;;| "First tell Masterscope how to find FUNCTIONS and VARIABLES")
|
||||
|
||||
@@ -46,7 +51,7 @@
|
||||
(MSADDANALYZE 'FUNCTIONS 'FUNCTION 'FUNCTIONS 'FUNCTIONSMSGETDEF 'FUNCTIONSMSMC)
|
||||
|
||||
(* |;;|
|
||||
"Then add KEYWORD support. Templates may now contain the following as their last element:")
|
||||
"Then add KEYWORD support. Templates may now contain the following as their last element:")
|
||||
|
||||
|
||||
(* |;;| "... KEYWORDS list of keywords accepted)")
|
||||
@@ -65,7 +70,7 @@
|
||||
(MSADDMODIFIER 'SPECIFY 'KEYWORDS 'KEYSPECIFY)
|
||||
|
||||
(* |;;|
|
||||
"Stuff for locally-defined things. We don't attempt to handle them (*sigh*), just record them.")
|
||||
"Stuff for locally-defined things. We don't attempt to handle them (*sigh*), just record them.")
|
||||
|
||||
(MSADDRELATION '(FLET FLETS FLETTING FLET))
|
||||
(MSADDRELATION '(LABEL LABELS LABELLING LABELLED))
|
||||
@@ -87,42 +92,48 @@
|
||||
(DEFINEQ
|
||||
|
||||
(FUNCTIONSMSGETDEF
|
||||
(LAMBDA (NAME TYPE SOURCE OPTIONS) (* \; "Edited 31-Mar-88 17:31 by jrb:")
|
||||
(LAMBDA (NAME TYPE SOURCE OPTIONS) (* \; "Edited 31-Mar-88 17:31 by jrb:")
|
||||
(LET ((BODY (REMOVE-COMMENTS (GETDEF NAME 'FUNCTIONS SOURCE OPTIONS))))
|
||||
(AND BODY (SELECTQ (CAR BODY)
|
||||
(DEFMACRO (OR (GETTEMPLATE NAME)
|
||||
(SETTEMPLATE NAME 'MACRO))
|
||||
NIL)
|
||||
(CL:DEFUN
|
||||
(* |;;| "Body is of the form:")
|
||||
(* |;;| "(DEFUN name (args...) bodies...)")
|
||||
(* |;;| "We want to hand Masterscope a massaged form it will understand.")
|
||||
(* |;;| "Which I believe is of this form:")
|
||||
(* |;;| "Body is of the form:")
|
||||
|
||||
`(CL:LAMBDA ,(CADDR BODY) ,@(CDDDR BODY)))
|
||||
(* |;;| "(DEFUN name (args...) bodies...)")
|
||||
|
||||
(* |;;|
|
||||
"We want to hand Masterscope a massaged form it will understand.")
|
||||
|
||||
(* |;;| "Which I believe is of this form:")
|
||||
|
||||
`(CL:LAMBDA ,(CADDR BODY)
|
||||
,@(CDDDR BODY)))
|
||||
NIL)))))
|
||||
|
||||
(FUNCTIONSMSMC
|
||||
(LAMBDA (NAME TYPE REASON) (* \; "Edited 1-Apr-88 13:47 by jrb:")
|
||||
(* |;;| "Trick here is we don't want to mark FUNCTIONS macros as changed because they really don't get analyzed, but we do want to call CHANGEMACRO for them")
|
||||
(LAMBDA (NAME TYPE REASON) (* \; "Edited 1-Apr-88 13:47 by jrb:")
|
||||
|
||||
(* |;;| "Trick here is we don't want to mark FUNCTIONS macros as changed because they really don't get analyzed, but we do want to call CHANGEMACRO for them")
|
||||
|
||||
(|if| (EQ (CAR (GETDEF NAME 'FUNCTIONS NIL '(NOERROR)))
|
||||
'DEFMACRO)
|
||||
'DEFMACRO)
|
||||
|then| (CHANGEMACRO NAME TYPE REASON)
|
||||
NIL
|
||||
|else| T)))
|
||||
|
||||
(VARIABLESMSGETDEF
|
||||
(LAMBDA (NAME TYPE SOURCE OPTIONS) (* \; "Edited 19-Feb-88 19:46 by jrb:")
|
||||
|
||||
(LAMBDA (NAME TYPE SOURCE OPTIONS) (* \; "Edited 19-Feb-88 19:46 by jrb:")
|
||||
(LET ((BODY (GETDEF NAME 'VARIABLES SOURCE OPTIONS))
|
||||
SPECVARP)
|
||||
(AND BODY
|
||||
|
||||
(* |;;| "We have to return something here so Masterscope can get hold of the init form, and so It'll stop looking for other things")
|
||||
|
||||
(* |;;| "We have to return something here so Masterscope can get hold of the init form, and so It'll stop looking for other things")
|
||||
|
||||
`(CL:LAMBDA NIL ,(IF (CADDR BODY)
|
||||
THEN `(SETQ ,(CADR BODY) ,(CADDR BODY))))))))
|
||||
THEN `(SETQ ,(CADR BODY)
|
||||
,(CADDR BODY))))))))
|
||||
)
|
||||
|
||||
|
||||
@@ -162,9 +173,9 @@
|
||||
:LOAD :FILE-MANAGER-FORMAT :PROCESS-ENTIRE-FILE))
|
||||
|
||||
(SETTEMPLATE 'CL:COMPILER-LET '(! NIL (BOTH (|..| (IF LISTP (NIL EVAL |..| EFFECT)
|
||||
NIL))
|
||||
NIL))
|
||||
(|..| (IF LISTP ((BOTH BIND COMPILER-LET))
|
||||
(BOTH BIND COMPILER-LET))))
|
||||
(BOTH BIND COMPILER-LET))))
|
||||
|..| EFFECT RETURN))
|
||||
|
||||
(SETTEMPLATE 'CL:COUNT '(EVAL EVAL KEYWORDS :FROM-END :TEST :TEST-NOT :START :END :KEY))
|
||||
@@ -179,10 +190,10 @@
|
||||
|
||||
(SETTEMPLATE 'DECLARE '(|..| (@ EXPR (CONS NIL (SELECTQ (CAR (LISTP EXPR))
|
||||
(LOCALVARS '(IF LISTP (|..| LOCALVARS)
|
||||
LOCALVARS))
|
||||
LOCALVARS))
|
||||
((SPECVARS CL:SPECIAL)
|
||||
'(IF LISTP (|..| SPECVARS)
|
||||
SPECVARS))
|
||||
SPECVARS))
|
||||
NIL)))))
|
||||
|
||||
(SETTEMPLATE 'CL:DELETE '(EVAL SMASH KEYWORDS :FROM-END :TEST :TEST-NOT :START :END :COUNT :KEY))
|
||||
@@ -391,7 +402,7 @@
|
||||
(SETTEMPLATE 'CL:REPLACE '(SMASH EVAL KEYWORDS :START1 :END1 :START2 :END2))
|
||||
|
||||
(SETTEMPLATE 'CL:ROTATEF '(|..| (IF (ATOM EXPR)
|
||||
SET SMASH)))
|
||||
SET SMASH)))
|
||||
|
||||
(SETTEMPLATE 'CL:SEARCH '(EVAL EVAL KEYWORDS :FROM-END :TEST :TEST-NOT :KEY :START1 :START2 :END1
|
||||
:END2))
|
||||
@@ -401,7 +412,7 @@
|
||||
(SETTEMPLATE 'CL:SET-EXCLUSIVE-OR '(EVAL EVAL KEYWORDS :TEST :TEST-NOT :KEY))
|
||||
|
||||
(SETTEMPLATE 'CL:SHIFTF '(|..| (IF (ATOM EXPR)
|
||||
SET SMASH)
|
||||
SET SMASH)
|
||||
EVAL))
|
||||
|
||||
(SETTEMPLATE 'CL:SORT '(EVAL FUNCTION KEYWORDS :KEY))
|
||||
@@ -459,10 +470,14 @@
|
||||
|
||||
(SETTEMPLATE 'CL:UNION '(EVAL EVAL KEYWORDS :TEST :TEST-NOT :KEY))
|
||||
|
||||
(SETTEMPLATE 'CL:UNLESS '(TEST |..| EFECT RETURN))
|
||||
|
||||
(SETTEMPLATE 'CL:VECTOR-PUSH '(EVAL SMASH))
|
||||
|
||||
(SETTEMPLATE 'CL:VECTOR-PUSH-EXTEND '(EVAL SMASH EVAL))
|
||||
|
||||
(SETTEMPLATE 'CL:WHEN '(TEST |..| EFECT RETURN))
|
||||
|
||||
(SETTEMPLATE 'WRITE '(EVAL KEYWORDS :STREAM :ESCAPE :RADIX :BASE :CIRCLE :PRETTY :LEVEL :LENGTH :CASE
|
||||
:GENSYM :ARRAY))
|
||||
|
||||
@@ -539,6 +554,6 @@
|
||||
(CLRHASH USERTEMPLATES)
|
||||
(PUTPROPS MSCOMMON COPYRIGHT ("Venue & Xerox Corporation" 1988 1990 1992))
|
||||
(DECLARE\: DONTCOPY
|
||||
(FILEMAP (NIL (5000 6811 (FUNCTIONSMSGETDEF 5010 . 5804) (FUNCTIONSMSMC 5806 . 6286) (
|
||||
VARIABLESMSGETDEF 6288 . 6809)))))
|
||||
(FILEMAP (NIL (5280 7291 (FUNCTIONSMSGETDEF 5290 . 6258) (FUNCTIONSMSMC 6260 . 6731) (
|
||||
VARIABLESMSGETDEF 6733 . 7289)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
414
library/SPY
414
library/SPY
@@ -1,22 +1,22 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
(FILECREATED "29-Apr-94 14:13:52" {DSK}<king>export>lispcore>library>SPY.;4 64372
|
||||
|
||||
changes to%: (FILES GRAPHER)
|
||||
(FNS SPY.GRAPH.EDITOR SPY.UPDATE.TITLE SPY.MERGEINFO SPY.MAKEGRAPHNODES SPY.MAX
|
||||
SPY.MERGE SPY.MERGE1 SPY.MERGETREE SPY.NEXT.TREE SPY.SUM SPY.MAKE.TREE
|
||||
SPY.DELETE SPY.DUMP.BUFFER SPY.ORIGINAL SPY.MERGE.CALLEES)
|
||||
(FILECREATED " 4-Jan-2022 14:09:48" {DSK}<Users>kaplan>Local>medley3.5>my-medley>library>SPY.;2 63314
|
||||
|
||||
previous date%: "28-Apr-94 15:56:32" {DSK}<king>export>lispcore>library>SPY.;3)
|
||||
:CHANGES-TO (VARS SPYCOMS)
|
||||
(FNS SPY.MAKE.TREE)
|
||||
|
||||
:PREVIOUS-DATE "29-Apr-94 14:13:52" {DSK}<Users>kaplan>Local>medley3.5>my-medley>library>SPY.;1
|
||||
)
|
||||
|
||||
|
||||
(* ; "
|
||||
Copyright (c) 1984, 1985, 1987, 1988, 1990, 1991, 1993, 1994 by Venue & Xerox Corporation. All rights reserved.
|
||||
Copyright (c) 1984-1985, 1987-1988, 1990-1991, 1993-1994 by Venue & Xerox Corporation.
|
||||
")
|
||||
|
||||
(PRETTYCOMPRINT SPYCOMS)
|
||||
|
||||
(RPAQQ SPYCOMS
|
||||
((VARS SPY.BORDERS SPY.BUFFER.SIZE SPY.FRAGMENTS SPY.NOMERGEFNS SPY.MERGEINFO (SPY.HASH)
|
||||
(RPAQQ SPYCOMS
|
||||
[(VARS SPY.BORDERS SPY.BUFFER.SIZE SPY.FRAGMENTS SPY.NOMERGEFNS SPY.MERGEINFO (SPY.HASH)
|
||||
(SPY.GRAPH.MENU)
|
||||
SPY.SHOW.PERCENTAGES SPY.SMALLGHOSTS SPY.ICON)
|
||||
(INITVARS (SPY.NEXT 0)
|
||||
@@ -42,38 +42,41 @@ Copyright (c) 1984, 1985, 1987, 1988, 1990, 1991, 1993, 1994 by Venue & Xerox Co
|
||||
(MACROS WITH-SPY WITH.SPY)
|
||||
(DECLARE%: DONTCOPY (RECORDS SPYRECORD SPYDATA))
|
||||
(INITRECORDS SPYRECORD)
|
||||
(DECLARE%: DOCOPY DOEVAL@COMPILE (FILES GRAPHER READNUMBER IMAGEOBJ))))
|
||||
(DECLARE%: DOCOPY DOEVAL@COMPILE (FILES GRAPHER READNUMBER IMAGEOBJ))
|
||||
(P (MOVD? 'NILL 'MODERNWINDOW])
|
||||
|
||||
(RPAQQ SPY.BORDERS ((NORMAL "Normal" 2 -1)
|
||||
(GHOST "Shown elsewhere" 2 8840)
|
||||
(RECURSIVEGHOST "End of recursive chain" 2 0 -1)
|
||||
(MERGED "Includes other branches" 4 42405)
|
||||
(SELFRECURSIVE "Includes self-recursive calls" 2 61375)
|
||||
(RECURSIVE "Head of recursive chain" 4 28086)
|
||||
(ENDOFLINE "exceeded depth limit" 6 64510)))
|
||||
(RPAQQ SPY.BORDERS
|
||||
((NORMAL "Normal" 2 -1)
|
||||
(GHOST "Shown elsewhere" 2 8840)
|
||||
(RECURSIVEGHOST "End of recursive chain" 2 0 -1)
|
||||
(MERGED "Includes other branches" 4 42405)
|
||||
(SELFRECURSIVE "Includes self-recursive calls" 2 61375)
|
||||
(RECURSIVE "Head of recursive chain" 4 28086)
|
||||
(ENDOFLINE "exceeded depth limit" 6 64510)))
|
||||
|
||||
(RPAQQ SPY.BUFFER.SIZE 5120)
|
||||
|
||||
(RPAQQ SPY.FRAGMENTS T)
|
||||
|
||||
(RPAQQ SPY.NOMERGEFNS (SI::*UNWIND-PROTECT* CL:EVAL \EVAL-PROGN \INTERPRET-ARGUMENTS \INTERPRETER
|
||||
\INTERPRETER1 ERRORSET \EVAL \EVALFORM APPLY \PROGV EVAL))
|
||||
(RPAQQ SPY.NOMERGEFNS (SI::*UNWIND-PROTECT* CL:EVAL \EVAL-PROGN \INTERPRET-ARGUMENTS \INTERPRETER
|
||||
\INTERPRETER1 ERRORSET \EVAL \EVALFORM APPLY \PROGV EVAL))
|
||||
|
||||
(RPAQQ SPY.MERGEINFO ((EXEC :EXEC)
|
||||
(EXEC-READ-LINE :EXEC)
|
||||
(EXEC-READ :EXEC)
|
||||
(XCL-USER::LEX-DO-EVENT :EXEC)
|
||||
(DO-EVENT :EXEC)
|
||||
(EVAL-INPUT :EXEC)
|
||||
(SI::*UNWIND-PROTECT* :ANY)
|
||||
(\MAKE.PROCESS0 T)
|
||||
(\PROC.REPEATEDLYEVALQT T)
|
||||
(\EVALFORM T :EVAL)
|
||||
(PROGN PROGN :EVAL T)
|
||||
(TTYIN1 TTYIN)
|
||||
(TTBIN TTYIN)
|
||||
(TTWAITFORINPUT TTYIN)
|
||||
(\PROGV :ANY)))
|
||||
(RPAQQ SPY.MERGEINFO
|
||||
((EXEC :EXEC)
|
||||
(EXEC-READ-LINE :EXEC)
|
||||
(EXEC-READ :EXEC)
|
||||
(XCL-USER::LEX-DO-EVENT :EXEC)
|
||||
(DO-EVENT :EXEC)
|
||||
(EVAL-INPUT :EXEC)
|
||||
(SI::*UNWIND-PROTECT* :ANY)
|
||||
(\MAKE.PROCESS0 T)
|
||||
(\PROC.REPEATEDLYEVALQT T)
|
||||
(\EVALFORM T :EVAL)
|
||||
(PROGN PROGN :EVAL T)
|
||||
(TTYIN1 TTYIN)
|
||||
(TTBIN TTYIN)
|
||||
(TTWAITFORINPUT TTYIN)
|
||||
(\PROGV :ANY)))
|
||||
|
||||
(RPAQQ SPY.HASH NIL)
|
||||
|
||||
@@ -102,19 +105,19 @@ Copyright (c) 1984, 1985, 1987, 1988, 1990, 1991, 1993, 1994 by Venue & Xerox Co
|
||||
|
||||
(RPAQ? SPY.TREE )
|
||||
|
||||
(RPAQQ SPYOBJCOMS ((FNS SPYOBJ SPYOBJ.BUTTON SPYOBJ.SAVE SPYOBJ.COPY SPYOBJ.GET SPYOBJ.IMAGEBOX
|
||||
SPYOBJ.DISPLAY SPYOBJ.LABEL SPYOBJ.HEIGHT SPYOBJ.COPYIN SPY.COPYBUTTON
|
||||
SPY.MERGEINFO)
|
||||
[VARS (SPYOBJ.IMAGEFNS (IMAGEFNSCREATE (FUNCTION SPYOBJ.DISPLAY)
|
||||
(FUNCTION SPYOBJ.IMAGEBOX)
|
||||
(FUNCTION SPYOBJ.SAVE)
|
||||
(FUNCTION SPYOBJ.GET)
|
||||
(FUNCTION SPYOBJ.COPY)
|
||||
(FUNCTION SPYOBJ.BUTTON)
|
||||
(FUNCTION SPYOBJ.COPYIN)
|
||||
NIL NIL NIL NIL NIL NIL 'SPYNODE]
|
||||
(DECLARE%: DONTCOPY DOEVAL@COMPILE (RECORDS FX SPYOBJDATA))
|
||||
(INITRECORDS SPYOBJDATA)))
|
||||
(RPAQQ SPYOBJCOMS
|
||||
((FNS SPYOBJ SPYOBJ.BUTTON SPYOBJ.SAVE SPYOBJ.COPY SPYOBJ.GET SPYOBJ.IMAGEBOX SPYOBJ.DISPLAY
|
||||
SPYOBJ.LABEL SPYOBJ.HEIGHT SPYOBJ.COPYIN SPY.COPYBUTTON SPY.MERGEINFO)
|
||||
[VARS (SPYOBJ.IMAGEFNS (IMAGEFNSCREATE (FUNCTION SPYOBJ.DISPLAY)
|
||||
(FUNCTION SPYOBJ.IMAGEBOX)
|
||||
(FUNCTION SPYOBJ.SAVE)
|
||||
(FUNCTION SPYOBJ.GET)
|
||||
(FUNCTION SPYOBJ.COPY)
|
||||
(FUNCTION SPYOBJ.BUTTON)
|
||||
(FUNCTION SPYOBJ.COPYIN)
|
||||
NIL NIL NIL NIL NIL NIL 'SPYNODE]
|
||||
(DECLARE%: DONTCOPY DOEVAL@COMPILE (RECORDS FX SPYOBJDATA))
|
||||
(INITRECORDS SPYOBJDATA)))
|
||||
(DEFINEQ
|
||||
|
||||
(SPYOBJ
|
||||
@@ -176,148 +179,145 @@ Copyright (c) 1984, 1985, 1987, 1988, 1990, 1991, 1993, 1994 by Venue & Xerox Co
|
||||
then '(:INTERPRETER CL:EVAL])
|
||||
)
|
||||
|
||||
(RPAQ SPYOBJ.IMAGEFNS (IMAGEFNSCREATE (FUNCTION SPYOBJ.DISPLAY)
|
||||
(FUNCTION SPYOBJ.IMAGEBOX)
|
||||
(FUNCTION SPYOBJ.SAVE)
|
||||
(FUNCTION SPYOBJ.GET)
|
||||
(FUNCTION SPYOBJ.COPY)
|
||||
(FUNCTION SPYOBJ.BUTTON)
|
||||
(FUNCTION SPYOBJ.COPYIN)
|
||||
NIL NIL NIL NIL NIL NIL 'SPYNODE))
|
||||
(RPAQ SPYOBJ.IMAGEFNS
|
||||
(IMAGEFNSCREATE (FUNCTION SPYOBJ.DISPLAY)
|
||||
(FUNCTION SPYOBJ.IMAGEBOX)
|
||||
(FUNCTION SPYOBJ.SAVE)
|
||||
(FUNCTION SPYOBJ.GET)
|
||||
(FUNCTION SPYOBJ.COPY)
|
||||
(FUNCTION SPYOBJ.BUTTON)
|
||||
(FUNCTION SPYOBJ.COPYIN)
|
||||
NIL NIL NIL NIL NIL NIL 'SPYNODE))
|
||||
(DECLARE%: DONTCOPY DOEVAL@COMPILE
|
||||
(DECLARE%: EVAL@COMPILE
|
||||
|
||||
(ACCESSFNS FX ((FXBLOCK (ADDSTACKBASE DATUM))) (* ; "frame extension index")
|
||||
(BLOCKRECORD FXBLOCK ((FLAGS BITS 3) (* ; "= \STK.FX")
|
||||
(FAST FLAG)
|
||||
(NIL FLAG)
|
||||
(INCALL FLAG) (* ;
|
||||
"set when fncall microcode has to punt")
|
||||
(VALIDNAMETABLE FLAG)(* ;
|
||||
"if on, NAMETABLE field is filled in. If off, is same as FNHEADER")
|
||||
(NOPUSH FLAG) (* ;
|
||||
"when returning to this frame, don't push a value. Set by interrupt code")
|
||||
(USECNT BITS 8)
|
||||
(%#ALINK WORD) (* ; "low bit is SLOWP")
|
||||
(FNHEADER FULLXPOINTER)
|
||||
(NEXTBLOCK WORD)
|
||||
(PC WORD)
|
||||
(NAMETABLE# FULLXPOINTER)
|
||||
(%#BLINK WORD)
|
||||
(%#CLINK WORD)))
|
||||
(BLOCKRECORD FXBLOCK ((FLAGBYTE BYTE)
|
||||
(NIL BYTE)
|
||||
(NIL BITS 15) (* ; "most of the bits of #ALINK")
|
||||
(SLOWP FLAG) (* ;
|
||||
"if on, then BLINK and CLINK fields are valid. If off, they are implicit")
|
||||
(NIL FULLXPOINTER 2)
|
||||
(NAMETABHI WORD)
|
||||
(NAMETABLO WORD)))
|
||||
(TYPE? (IEQ (fetch (FX FLAGS) of DATUM)
|
||||
\STK.FX))
|
||||
[ACCESSFNS FX ((NAMETABLE (COND
|
||||
((fetch (FX VALIDNAMETABLE) of DATUM)
|
||||
(fetch (FX NAMETABLE#) of DATUM))
|
||||
(T (fetch (FX FNHEADER) of DATUM)))
|
||||
(PROGN (replace (FX FAST) of DATUM with NIL)
|
||||
(replace (FX NAMETABLE#) of DATUM with
|
||||
NEWVALUE)
|
||||
(replace (FX VALIDNAMETABLE) of DATUM
|
||||
with T)))
|
||||
(FRAMENAME (fetch (FNHEADER FRAMENAME)
|
||||
of (fetch (FX NAMETABLE) of DATUM)))
|
||||
(INVALIDP (EQ DATUM 0)) (* ;
|
||||
"true when A/CLink points at nobody, i.e. FX is bottom of stack")
|
||||
[FASTP (NOT (fetch (FX SLOWP) of DATUM))
|
||||
(PROGN (CHECK (NULL NEWVALUE))
|
||||
(COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(replace (FX %#BLINK) of DATUM
|
||||
with (fetch (FX DUMMYBF) of DATUM))
|
||||
(replace (FX %#CLINK) of DATUM
|
||||
with (fetch (FX %#ALINK) of DATUM))
|
||||
(replace (FX SLOWP) of DATUM with
|
||||
T]
|
||||
[BLINK (COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(fetch (FX DUMMYBF) of DATUM))
|
||||
(T (fetch (FX %#BLINK) of DATUM)))
|
||||
(PROGN (replace (FX %#BLINK) of DATUM with
|
||||
NEWVALUE)
|
||||
(COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(replace (FX %#CLINK) of DATUM
|
||||
with (fetch (FX %#ALINK) of DATUM))
|
||||
(replace (FX SLOWP) of DATUM with
|
||||
T]
|
||||
[CLINK (IDIFFERENCE (COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(fetch (FX %#ALINK) of DATUM))
|
||||
(T (fetch (FX %#CLINK) of DATUM)))
|
||||
\#ALINK.OFFSET)
|
||||
(PROGN (replace (FX %#CLINK) of DATUM
|
||||
with (IPLUS NEWVALUE \#ALINK.OFFSET))
|
||||
(COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(replace (FX %#BLINK) of DATUM
|
||||
with (fetch (FX DUMMYBF) of DATUM))
|
||||
(replace (FX SLOWP) of DATUM with
|
||||
T]
|
||||
[ALINK (IDIFFERENCE (FLOOR (fetch (FX %#ALINK) of DATUM)
|
||||
WORDSPERCELL)
|
||||
\#ALINK.OFFSET)
|
||||
(PROGN [COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(replace (FX %#BLINK) of DATUM
|
||||
with (fetch (FX DUMMYBF) of DATUM))
|
||||
(replace (FX %#CLINK) of DATUM
|
||||
with (fetch (FX %#ALINK) of DATUM]
|
||||
(replace (FX %#ALINK) of DATUM
|
||||
with (IPLUS NEWVALUE \#ALINK.OFFSET
|
||||
(SUB1 WORDSPERCELL]
|
||||
[ACLINK (SHOULDNT)
|
||||
(PROGN [COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(replace (FX %#BLINK) of DATUM
|
||||
with (fetch (FX DUMMYBF) of DATUM]
|
||||
(ACCESSFNS FX ((FXBLOCK (ADDSTACKBASE DATUM))) (* ; "frame extension index")
|
||||
(BLOCKRECORD FXBLOCK ((FLAGS BITS 3) (* ; "= \STK.FX")
|
||||
(FAST FLAG)
|
||||
(NIL FLAG)
|
||||
(INCALL FLAG) (* ;
|
||||
"set when fncall microcode has to punt")
|
||||
(VALIDNAMETABLE FLAG) (* ;
|
||||
"if on, NAMETABLE field is filled in. If off, is same as FNHEADER")
|
||||
(NOPUSH FLAG) (* ;
|
||||
"when returning to this frame, don't push a value. Set by interrupt code")
|
||||
(USECNT BITS 8)
|
||||
(%#ALINK WORD) (* ; "low bit is SLOWP")
|
||||
(FNHEADER FULLXPOINTER)
|
||||
(NEXTBLOCK WORD)
|
||||
(PC WORD)
|
||||
(NAMETABLE# FULLXPOINTER)
|
||||
(%#BLINK WORD)
|
||||
(%#CLINK WORD)))
|
||||
(BLOCKRECORD FXBLOCK ((FLAGBYTE BYTE)
|
||||
(NIL BYTE)
|
||||
(NIL BITS 15) (* ; "most of the bits of #ALINK")
|
||||
(SLOWP FLAG) (* ;
|
||||
"if on, then BLINK and CLINK fields are valid. If off, they are implicit")
|
||||
(NIL FULLXPOINTER 2)
|
||||
(NAMETABHI WORD)
|
||||
(NAMETABLO WORD)))
|
||||
(TYPE? (IEQ (fetch (FX FLAGS) of DATUM)
|
||||
\STK.FX))
|
||||
[ACCESSFNS FX ((NAMETABLE (COND
|
||||
((fetch (FX VALIDNAMETABLE) of DATUM)
|
||||
(fetch (FX NAMETABLE#) of DATUM))
|
||||
(T (fetch (FX FNHEADER) of DATUM)))
|
||||
(PROGN (replace (FX FAST) of DATUM with NIL)
|
||||
(replace (FX NAMETABLE#) of DATUM with NEWVALUE)
|
||||
(replace (FX VALIDNAMETABLE) of DATUM with T)))
|
||||
(FRAMENAME (fetch (FNHEADER FRAMENAME) of (fetch (FX NAMETABLE)
|
||||
of DATUM)))
|
||||
(INVALIDP (EQ DATUM 0)) (* ;
|
||||
"true when A/CLink points at nobody, i.e. FX is bottom of stack")
|
||||
[FASTP (NOT (fetch (FX SLOWP) of DATUM))
|
||||
(PROGN (CHECK (NULL NEWVALUE))
|
||||
(COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(replace (FX %#BLINK) of DATUM
|
||||
with (fetch (FX DUMMYBF) of DATUM))
|
||||
(replace (FX %#CLINK) of DATUM
|
||||
with (IPLUS NEWVALUE \#ALINK.OFFSET))
|
||||
(replace (FX %#ALINK) of DATUM
|
||||
with (IPLUS NEWVALUE \#ALINK.OFFSET
|
||||
(SUB1 WORDSPERCELL]
|
||||
with (fetch (FX %#ALINK) of DATUM))
|
||||
(replace (FX SLOWP) of DATUM with T]
|
||||
[BLINK (COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(fetch (FX DUMMYBF) of DATUM))
|
||||
(T (fetch (FX %#BLINK) of DATUM)))
|
||||
(PROGN (replace (FX %#BLINK) of DATUM with NEWVALUE)
|
||||
(COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(replace (FX %#CLINK) of DATUM
|
||||
with (fetch (FX %#ALINK) of DATUM))
|
||||
(replace (FX SLOWP) of DATUM with T]
|
||||
[CLINK (IDIFFERENCE (COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(fetch (FX %#ALINK) of DATUM))
|
||||
(T (fetch (FX %#CLINK) of DATUM)))
|
||||
\#ALINK.OFFSET)
|
||||
(PROGN (replace (FX %#CLINK) of DATUM with (IPLUS NEWVALUE
|
||||
\#ALINK.OFFSET)
|
||||
)
|
||||
(COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(replace (FX %#BLINK) of DATUM
|
||||
with (fetch (FX DUMMYBF) of DATUM))
|
||||
(replace (FX SLOWP) of DATUM with T]
|
||||
[ALINK (IDIFFERENCE (FLOOR (fetch (FX %#ALINK) of DATUM)
|
||||
WORDSPERCELL)
|
||||
\#ALINK.OFFSET)
|
||||
(PROGN [COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(replace (FX %#BLINK) of DATUM
|
||||
with (fetch (FX DUMMYBF) of DATUM))
|
||||
(replace (FX %#CLINK) of DATUM
|
||||
with (fetch (FX %#ALINK) of DATUM]
|
||||
(replace (FX %#ALINK) of DATUM with (IPLUS NEWVALUE
|
||||
\#ALINK.OFFSET
|
||||
(SUB1
|
||||
WORDSPERCELL
|
||||
]
|
||||
[ACLINK (SHOULDNT)
|
||||
(PROGN [COND
|
||||
((fetch (FX FASTP) of DATUM)
|
||||
(replace (FX %#BLINK) of DATUM
|
||||
with (fetch (FX DUMMYBF) of DATUM]
|
||||
(replace (FX %#CLINK) of DATUM with (IPLUS NEWVALUE
|
||||
\#ALINK.OFFSET)
|
||||
)
|
||||
(replace (FX %#ALINK) of DATUM with (IPLUS NEWVALUE
|
||||
\#ALINK.OFFSET
|
||||
(SUB1
|
||||
WORDSPERCELL
|
||||
]
|
||||
(* ;
|
||||
"replaces A & C Links at once more efficiently than separately")
|
||||
(DUMMYBF (IDIFFERENCE DATUM WORDSPERCELL))
|
||||
"replaces A & C Links at once more efficiently than separately")
|
||||
(DUMMYBF (IDIFFERENCE DATUM WORDSPERCELL))
|
||||
|
||||
(* ;; "This is either an actual BF or %"residual%" BF that provides enough BF to find its IVAR slot. This means that when a FX is copied, the cell preceding the FX is copied too.")
|
||||
(* ;; "This is either an actual BF or %"residual%" BF that provides enough BF to find its IVAR slot. This means that when a FX is copied, the cell preceding the FX is copied too.")
|
||||
|
||||
(IVAR (fetch (BF IVAR) of (fetch (FX DUMMYBF)
|
||||
of DATUM)))
|
||||
[CHECKED (AND (type? FX DATUM)
|
||||
(OR (IEQ (fetch (FX DUMMYBF) of DATUM)
|
||||
(fetch (FX BLINK) of DATUM))
|
||||
(AND (fetch (BF RESIDUAL)
|
||||
of (fetch (FX DUMMYBF)
|
||||
of DATUM))
|
||||
(IEQ (fetch (BF IVAR)
|
||||
of (fetch (FX DUMMYBF)
|
||||
of DATUM))
|
||||
(fetch (BF IVAR)
|
||||
of (fetch (FX BLINK)
|
||||
of DATUM]
|
||||
(FIRSTPVAR (IPLUS DATUM (fetch (FX FXSIZE) of T)))
|
||||
(IVAR (fetch (BF IVAR) of (fetch (FX DUMMYBF) of DATUM)))
|
||||
[CHECKED (AND (type? FX DATUM)
|
||||
(OR (IEQ (fetch (FX DUMMYBF) of DATUM)
|
||||
(fetch (FX BLINK) of DATUM))
|
||||
(AND (fetch (BF RESIDUAL) of (fetch (FX DUMMYBF)
|
||||
of DATUM))
|
||||
(IEQ (fetch (BF IVAR) of (fetch (FX DUMMYBF)
|
||||
of DATUM))
|
||||
(fetch (BF IVAR) of (fetch (FX BLINK)
|
||||
of DATUM]
|
||||
(FIRSTPVAR (IPLUS DATUM (fetch (FX FXSIZE) of T)))
|
||||
(* ; "stack offset of PVAR0")
|
||||
(FXSIZE (PROGN 10)) (* ;
|
||||
"fixed overhead from flags thru clink")
|
||||
(PADDING (PROGN 4)) (* ;
|
||||
"doublecell of garbage for microcode use")
|
||||
(FIRSTTEMP (IPLUS (fetch (FX FIRSTPVAR) of DATUM)
|
||||
(fetch (FX NPVARWORDS) of DATUM)
|
||||
(fetch (FX PADDING) of DATUM)))
|
||||
(FXSIZE (PROGN 10)) (* ;
|
||||
"fixed overhead from flags thru clink")
|
||||
(PADDING (PROGN 4)) (* ;
|
||||
"doublecell of garbage for microcode use")
|
||||
(FIRSTTEMP (IPLUS (fetch (FX FIRSTPVAR) of DATUM)
|
||||
(fetch (FX NPVARWORDS) of DATUM)
|
||||
(fetch (FX PADDING) of DATUM)))
|
||||
(* ;
|
||||
"note that NPVARWORDS is obtained from the FNHEADER")
|
||||
(SIZE (IDIFFERENCE (fetch (FX NEXTBLOCK) of DATUM)
|
||||
DATUM])
|
||||
"note that NPVARWORDS is obtained from the FNHEADER")
|
||||
(SIZE (IDIFFERENCE (fetch (FX NEXTBLOCK) of DATUM)
|
||||
DATUM])
|
||||
|
||||
(RECORD SPYOBJDATA (CACHEDLABEL PERCENT LABEL))
|
||||
)
|
||||
@@ -745,7 +745,9 @@ Copyright (c) 1984, 1985, 1987, 1988, 1990, 1991, 1993, 1994 by Venue & Xerox Co
|
||||
", " TOPCOUNT " samples"])
|
||||
|
||||
(SPY.MAKE.TREE
|
||||
[LAMBDA (TREES SPYDATA WINDOW) (* ; "Edited 28-Apr-94 13:59 by sybalsky")
|
||||
[LAMBDA (TREES SPYDATA WINDOW) (* ; "Edited 4-Jan-2022 14:08 by rmk")
|
||||
(* ;
|
||||
"Edited 28-Apr-94 13:59 by sybalsky")
|
||||
(PROG (GRAPH IDS W H THRSH TOPCOUNT (*PACKAGE* (fetch (SPYDATA PACKAGE) of SPYDATA))
|
||||
(*READTABLE* (fetch (SPYDATA READTABLE) of SPYDATA))
|
||||
(*PRINT-CASE* (fetch (SPYDATA PRINT-CASE) of SPYDATA)))
|
||||
@@ -755,8 +757,7 @@ Copyright (c) 1984, 1985, 1987, 1988, 1990, 1991, 1993, 1994 by Venue & Xerox Co
|
||||
(SETQ THRSH (QUOTIENT (TIMES TOPCOUNT (fetch (SPYDATA THRESHOLD) of SPYDATA))
|
||||
100))
|
||||
(SETQ SPY.NODES)
|
||||
(SETQ SPY.TOPNODES (for X in TREES collect (SPY.MAKEGRAPHNODES X THRSH
|
||||
SPYDATA)))
|
||||
(SETQ SPY.TOPNODES (for X in TREES collect (SPY.MAKEGRAPHNODES X THRSH SPYDATA)))
|
||||
(SETQ TITLE (SPY.TITLE (CAR SPY.TOPNODES)
|
||||
TOPCOUNT SPYDATA))
|
||||
(SETQ SPY.WINDOW (SHOWGRAPH (LAYOUTGRAPH (REVERSE SPY.NODES)
|
||||
@@ -773,7 +774,8 @@ Copyright (c) 1984, 1985, 1987, 1988, 1990, 1991, 1993, 1994 by Venue & Xerox Co
|
||||
(WINDOWPROP SPY.WINDOW 'SPYDATA SPYDATA)
|
||||
(WINDOWPROP SPY.WINDOW 'TREES TREES)
|
||||
(WINDOWPROP SPY.WINDOW 'SPYTITLE TITLE)
|
||||
(WINDOWPROP SPY.WINDOW 'TOPCOUNT TOPCOUNT])
|
||||
(WINDOWPROP SPY.WINDOW 'TOPCOUNT TOPCOUNT)
|
||||
(MODERNWINDOW SPY.WINDOW])
|
||||
|
||||
(SPY.UPDATE.TITLE
|
||||
[LAMBDA (W) (* ; "Edited 29-Apr-94 14:03 by sybalsky")
|
||||
@@ -965,23 +967,23 @@ Copyright (c) 1984, 1985, 1987, 1988, 1990, 1991, 1993, 1994 by Venue & Xerox Co
|
||||
)
|
||||
(DECLARE%: EVAL@COMPILE
|
||||
|
||||
[PUTPROPS WITH-SPY MACRO ((FORM)
|
||||
(PUTPROPS WITH-SPY MACRO [(FORM)
|
||||
(PROGN (SPY.START)
|
||||
(PROG1 FORM (SPY.END]
|
||||
(PROG1 FORM (SPY.END])
|
||||
|
||||
[PUTPROPS WITH.SPY MACRO ((FORM)
|
||||
(PUTPROPS WITH.SPY MACRO [(FORM)
|
||||
(PROGN (SPY.START)
|
||||
(PROG1 FORM (SPY.END]
|
||||
(PROG1 FORM (SPY.END])
|
||||
)
|
||||
(DECLARE%: DONTCOPY
|
||||
(DECLARE%: EVAL@COMPILE
|
||||
|
||||
(DATATYPE SPYRECORD (NAME COUNT SUM CALLEES STATUS TREEFROM)
|
||||
STATUS _ 'NORMAL (INIT (DEFPRINT 'SPYRECORD 'SPY.PRINT)))
|
||||
STATUS _ 'NORMAL (INIT (DEFPRINT 'SPYRECORD 'SPY.PRINT)))
|
||||
|
||||
(PROPRECORD SPYDATA (DELETED CUMULATIVE MERGETYPE THRESHOLD SPYMENU DEPTH NOGHOSTS PACKAGE
|
||||
READTABLE PRINT-CASE MERGEINFO PENDING)
|
||||
CUMULATIVE _ T)
|
||||
(PROPRECORD SPYDATA (DELETED CUMULATIVE MERGETYPE THRESHOLD SPYMENU DEPTH NOGHOSTS PACKAGE READTABLE
|
||||
PRINT-CASE MERGEINFO PENDING)
|
||||
CUMULATIVE _ T)
|
||||
)
|
||||
|
||||
(/DECLAREDATATYPE 'SPYRECORD '(POINTER POINTER POINTER POINTER POINTER POINTER)
|
||||
@@ -1010,19 +1012,21 @@ Copyright (c) 1984, 1985, 1987, 1988, 1990, 1991, 1993, 1994 by Venue & Xerox Co
|
||||
|
||||
(FILESLOAD GRAPHER READNUMBER IMAGEOBJ)
|
||||
)
|
||||
|
||||
(MOVD? 'NILL 'MODERNWINDOW)
|
||||
(PUTPROPS SPY COPYRIGHT ("Venue & Xerox Corporation" 1984 1985 1987 1988 1990 1991 1993 1994))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (5474 8081 (SPYOBJ 5484 . 5773) (SPYOBJ.BUTTON 5775 . 5885) (SPYOBJ.SAVE 5887 . 6006) (
|
||||
SPYOBJ.COPY 6008 . 6070) (SPYOBJ.GET 6072 . 6201) (SPYOBJ.IMAGEBOX 6203 . 6727) (SPYOBJ.DISPLAY 6729
|
||||
. 7028) (SPYOBJ.LABEL 7030 . 7166) (SPYOBJ.HEIGHT 7168 . 7381) (SPYOBJ.COPYIN 7383 . 7426) (
|
||||
SPY.COPYBUTTON 7428 . 7520) (SPY.MERGEINFO 7522 . 8079)) (19431 60601 (SPY.FIND.TREE 19441 . 19850) (
|
||||
SPY.TOGGLE 19852 . 20042) (SPY.TREE 20044 . 21156) (SPY.LEGEND 21158 . 21508) (SPY.GRAPH.EDITOR 21510
|
||||
. 31075) (SPY.END 31077 . 31319) (SPY.MAKEGRAPHNODES 31321 . 33421) (SPY.MAX 33423 . 34306) (
|
||||
SPY.MERGE 34308 . 35739) (SPY.MERGE1 35741 . 42224) (SPY.MERGETREE 42226 . 45156) (SPY.NEXT.TREE 45158
|
||||
. 45832) (SPY.SUM 45834 . 46523) (SPY.TITLE 46525 . 46742) (SPY.MAKE.TREE 46744 . 48632) (
|
||||
SPY.UPDATE.TITLE 48634 . 51210) (SPY.DELETE 51212 . 51747) (SPY.DRAWBOX 51749 . 52274) (
|
||||
SPY.BUFFER.ENTRY 52276 . 52514) (SPY.BUTTON 52516 . 53085) (SPY.END.ENTRY 53087 . 53167) (SPY.START
|
||||
53169 . 53453) (SPY.INIT 53455 . 53690) (\SPY.INTERRUPT 53692 . 54328) (SPY.DUMP.BUFFER 54330 . 55790)
|
||||
(SPY.START.ENTRY 55792 . 55920) (SPY.ADD.ENTRY 55922 . 56304) (SPY.ORIGINAL 56306 . 57133) (
|
||||
SPY.OVERFLOW 57135 . 57236) (SPY.MERGE.CALLEES 57238 . 60274) (SPY.PRINT 60276 . 60599)))))
|
||||
(FILEMAP (NIL (4753 7360 (SPYOBJ 4763 . 5052) (SPYOBJ.BUTTON 5054 . 5164) (SPYOBJ.SAVE 5166 . 5285) (
|
||||
SPYOBJ.COPY 5287 . 5349) (SPYOBJ.GET 5351 . 5480) (SPYOBJ.IMAGEBOX 5482 . 6006) (SPYOBJ.DISPLAY 6008
|
||||
. 6307) (SPYOBJ.LABEL 6309 . 6445) (SPYOBJ.HEIGHT 6447 . 6660) (SPYOBJ.COPYIN 6662 . 6705) (
|
||||
SPY.COPYBUTTON 6707 . 6799) (SPY.MERGEINFO 6801 . 7358)) (18202 59509 (SPY.FIND.TREE 18212 . 18621) (
|
||||
SPY.TOGGLE 18623 . 18813) (SPY.TREE 18815 . 19927) (SPY.LEGEND 19929 . 20279) (SPY.GRAPH.EDITOR 20281
|
||||
. 29846) (SPY.END 29848 . 30090) (SPY.MAKEGRAPHNODES 30092 . 32192) (SPY.MAX 32194 . 33077) (
|
||||
SPY.MERGE 33079 . 34510) (SPY.MERGE1 34512 . 40995) (SPY.MERGETREE 40997 . 43927) (SPY.NEXT.TREE 43929
|
||||
. 44603) (SPY.SUM 44605 . 45294) (SPY.TITLE 45296 . 45513) (SPY.MAKE.TREE 45515 . 47540) (
|
||||
SPY.UPDATE.TITLE 47542 . 50118) (SPY.DELETE 50120 . 50655) (SPY.DRAWBOX 50657 . 51182) (
|
||||
SPY.BUFFER.ENTRY 51184 . 51422) (SPY.BUTTON 51424 . 51993) (SPY.END.ENTRY 51995 . 52075) (SPY.START
|
||||
52077 . 52361) (SPY.INIT 52363 . 52598) (\SPY.INTERRUPT 52600 . 53236) (SPY.DUMP.BUFFER 53238 . 54698)
|
||||
(SPY.START.ENTRY 54700 . 54828) (SPY.ADD.ENTRY 54830 . 55212) (SPY.ORIGINAL 55214 . 56041) (
|
||||
SPY.OVERFLOW 56043 . 56144) (SPY.MERGE.CALLEES 56146 . 59182) (SPY.PRINT 59184 . 59507)))))
|
||||
STOP
|
||||
|
||||
BIN
library/SPY.LCOM
BIN
library/SPY.LCOM
Binary file not shown.
@@ -1,12 +1,11 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
(FILECREATED "21-Sep-2021 15:33:24"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>TEDITHCPY.;10 106458
|
||||
|
||||
changes to%: (FNS TEDIT.HARDCOPYFN)
|
||||
(VARS TEDITHCPYCOMS)
|
||||
(FILECREATED "26-Jan-2022 23:03:27" {DSK}<Users>kaplan>Local>medley3.5>my-medley>library>TEDITHCPY.;15 106802
|
||||
|
||||
previous date%: "21-Sep-2021 12:54:04"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>TEDITHCPY.;7)
|
||||
:CHANGES-TO (VARS TEDITHCPYCOMS)
|
||||
|
||||
:PREVIOUS-DATE "27-Sep-2021 23:28:48"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>library>TEDITHCPY.;14)
|
||||
|
||||
|
||||
(* ; "
|
||||
@@ -35,18 +34,18 @@ Copyright (c) 1983-1994, 2021 by Venue & Xerox Corporation.
|
||||
|
||||
(VARS (TEDIT.DEFAULTPAGEREGION (CREATEREGION 2794 1905 16256 23495)))
|
||||
(* ;
|
||||
"0.75 inches from bottom, 1 from top")
|
||||
)
|
||||
"0.75 inches from bottom, 1 from top"))
|
||||
[COMS
|
||||
(* ;; "Support for the window-menu's HARDCOPY button, LISTFILES, etc.")
|
||||
|
||||
(FNS TEDIT.HARDCOPYFN \TEDIT.HARDCOPY \TEDIT.PRESS.HARDCOPY)
|
||||
(P (LISTPUT (ASSOC 'CONVERSION (ASSOC 'INTERPRESS PRINTFILETYPES))
|
||||
'TEDIT
|
||||
(FUNCTION \TEDIT.HARDCOPY)))
|
||||
[P (LET [(IPVALUES (ASSOC 'CONVERSION (ASSOC 'INTERPRESS PRINTFILETYPES]
|
||||
(COND (IPVALUES (* ;
|
||||
"Only install INTERPRESS printing if INTERPRESS is loaded.")
|
||||
(LISTPUT IPVALUES 'TEDIT (FUNCTION \TEDIT.HARDCOPY]
|
||||
(P (LET [(PRESSVALUES (ASSOC 'CONVERSION (ASSOC 'PRESS PRINTFILETYPES]
|
||||
(COND (PRESSVALUES (* ;
|
||||
"Only install PRESS printing if PRESS is loaded.")
|
||||
"Only install PRESS printing if PRESS is loaded.")
|
||||
(LISTPUT PRESSVALUES 'TEDIT (FUNCTION \TEDIT.PRESS.HARDCOPY]
|
||||
[COMS
|
||||
(* ;; "vars for Japanese Line Break")
|
||||
@@ -1568,14 +1567,16 @@ Copyright (c) 1983-1994, 2021 by Venue & Xerox Corporation.
|
||||
PFILE)])
|
||||
)
|
||||
|
||||
(LISTPUT (ASSOC 'CONVERSION (ASSOC 'INTERPRESS PRINTFILETYPES))
|
||||
'TEDIT
|
||||
(FUNCTION \TEDIT.HARDCOPY))
|
||||
[LET [(IPVALUES (ASSOC 'CONVERSION (ASSOC 'INTERPRESS PRINTFILETYPES]
|
||||
(COND
|
||||
(IPVALUES (* ;
|
||||
"Only install INTERPRESS printing if INTERPRESS is loaded.")
|
||||
(LISTPUT IPVALUES 'TEDIT (FUNCTION \TEDIT.HARDCOPY]
|
||||
|
||||
[LET [(PRESSVALUES (ASSOC 'CONVERSION (ASSOC 'PRESS PRINTFILETYPES]
|
||||
(COND
|
||||
(PRESSVALUES (* ;
|
||||
"Only install PRESS printing if PRESS is loaded.")
|
||||
"Only install PRESS printing if PRESS is loaded.")
|
||||
(LISTPUT PRESSVALUES 'TEDIT (FUNCTION \TEDIT.PRESS.HARDCOPY]
|
||||
|
||||
|
||||
@@ -1616,11 +1617,11 @@ Copyright (c) 1983-1994, 2021 by Venue & Xerox Corporation.
|
||||
(PUTPROPS TEDITHCPY COPYRIGHT ("Venue & Xerox Corporation" 1983 1984 1985 1986 1987 1988 1989 1990
|
||||
1991 1992 1993 1994 2021))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (3655 100373 (TEDIT.HARDCOPY 3665 . 4916) (TEDIT.HCPYFILE 4918 . 6992) (
|
||||
\TEDIT.HARDCOPY.DISPLAYLINE 6994 . 21139) (\TEDIT.HARDCOPY.FORMATLINE 21141 . 68463) (
|
||||
\DOFORMATTING.HARDCOPY 68465 . 81758) (\TEDIT.HARDCOPY.MODIFYLOOKS 81760 . 84167) (
|
||||
\TEDIT.HCPYLOOKS.UPDATE 84169 . 94777) (\TEDIT.HCPYFMTSPEC 94779 . 99799) (\TEDIT.INTEGER.IMAGEBOX
|
||||
99801 . 100371)) (100462 101546 (\TEDIT.SCALE 100472 . 100766) (\TEDIT.SCALEREGION 100768 . 101544)) (
|
||||
101789 104340 (TEDIT.HARDCOPYFN 101799 . 102704) (\TEDIT.HARDCOPY 102706 . 103615) (
|
||||
\TEDIT.PRESS.HARDCOPY 103617 . 104338)) (105405 106308 (TEDIT-BOOK 105415 . 106306)))))
|
||||
(FILEMAP (NIL (3784 100502 (TEDIT.HARDCOPY 3794 . 5045) (TEDIT.HCPYFILE 5047 . 7121) (
|
||||
\TEDIT.HARDCOPY.DISPLAYLINE 7123 . 21268) (\TEDIT.HARDCOPY.FORMATLINE 21270 . 68592) (
|
||||
\DOFORMATTING.HARDCOPY 68594 . 81887) (\TEDIT.HARDCOPY.MODIFYLOOKS 81889 . 84296) (
|
||||
\TEDIT.HCPYLOOKS.UPDATE 84298 . 94906) (\TEDIT.HCPYFMTSPEC 94908 . 99928) (\TEDIT.INTEGER.IMAGEBOX
|
||||
99930 . 100500)) (100591 101675 (\TEDIT.SCALE 100601 . 100895) (\TEDIT.SCALEREGION 100897 . 101673)) (
|
||||
101918 104469 (TEDIT.HARDCOPYFN 101928 . 102833) (\TEDIT.HARDCOPY 102835 . 103744) (
|
||||
\TEDIT.PRESS.HARDCOPY 103746 . 104467)) (105749 106652 (TEDIT-BOOK 105759 . 106650)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
@@ -1,12 +1,12 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED "29-Sep-2021 22:03:57"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>TEDITSCREEN.;8 214517
|
||||
(FILECREATED "12-Jan-2022 18:56:46"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>library>TEDITSCREEN.;11 214540
|
||||
|
||||
changes to%: (FNS \DISPLAYLINE)
|
||||
:CHANGES-TO (FNS \SHOWTEXT)
|
||||
|
||||
previous date%: "21-Sep-2021 12:53:40"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>git-medley>library>TEDITSCREEN.;7)
|
||||
:PREVIOUS-DATE "12-Jan-2022 18:27:35"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>library>TEDITSCREEN.;10)
|
||||
|
||||
|
||||
(* ; "
|
||||
@@ -1409,14 +1409,13 @@ Copyright (c) 1983-1994, 2021 by Venue & Xerox Corporation.
|
||||
(DECLARE%: EVAL@COMPILE DONTCOPY
|
||||
(DECLARE%: EVAL@COMPILE
|
||||
|
||||
(PUTPROPS MI-TEDIT.BLTCHAR MACRO [(CHARCODE DISPLAYSTREAM CURX DISPLAYDATA DDPILOTBBT
|
||||
CLIPRIGHT)
|
||||
(COND
|
||||
((EQ 'MAIKO (MACHINETYPE))
|
||||
(SUBRCALL TEDIT.BLTCHAR CHARCODE DISPLAYSTREAM CURX
|
||||
DISPLAYDATA DDPILOTBBT CLIPRIGHT))
|
||||
(T (\TEDIT.BLTCHAR CHARCODE DISPLAYSTREAM CURX
|
||||
DISPLAYDATA DDPILOTBBT CLIPRIGHT])
|
||||
(PUTPROPS MI-TEDIT.BLTCHAR MACRO [(CHARCODE DISPLAYSTREAM CURX DISPLAYDATA DDPILOTBBT CLIPRIGHT)
|
||||
(COND
|
||||
((EQ 'MAIKO (MACHINETYPE))
|
||||
(SUBRCALL TEDIT.BLTCHAR CHARCODE DISPLAYSTREAM CURX DISPLAYDATA
|
||||
DDPILOTBBT CLIPRIGHT))
|
||||
(T (\TEDIT.BLTCHAR CHARCODE DISPLAYSTREAM CURX DISPLAYDATA
|
||||
DDPILOTBBT CLIPRIGHT])
|
||||
)
|
||||
)
|
||||
(DEFINEQ
|
||||
@@ -2212,53 +2211,58 @@ Copyright (c) 1983-1994, 2021 by Venue & Xerox Corporation.
|
||||
(\TEDIT.FIXINSSEL SEL TEXTOBJ CH#1 DCH])
|
||||
|
||||
(\SHOWTEXT
|
||||
[LAMBDA (TEXTOBJ LINES WINDOW) (* ; "Edited 12-Jun-90 19:22 by mitani")
|
||||
(* Fill the editor window with text,
|
||||
starting from the top of the file.)
|
||||
[LAMBDA (TEXTOBJ LINES WINDOW)
|
||||
|
||||
(* ;; "Edited 12-Jan-2022 18:56 by rmk: I took out the WAITINGCURSOR, the resetsave wasn't working for some reason, and it really isn't necessary for modern machines.")
|
||||
|
||||
(* ;; "Edited 12-Jun-90 19:22 by mitani")
|
||||
|
||||
(* ;; "Fill the editor window with text, starting from the top of the file.")
|
||||
|
||||
(COND
|
||||
((fetch (TEXTOBJ \WINDOW) of TEXTOBJ) (* If there is no edit window, just
|
||||
return.)
|
||||
(PROG (WREG)
|
||||
(SETQ WINDOW (OR WINDOW (\TEDIT.PRIMARYW TEXTOBJ)))
|
||||
(DSPFILL (PROG1 (DSPCLIPPINGREGION NIL WINDOW) (* For region within a window%:)
|
||||
(* (CREATEREGION (fetch
|
||||
(TEXTOBJ WLEFT) of TEXTOBJ)
|
||||
(fetch (TEXTOBJ WBOTTOM) of TEXTOBJ)
|
||||
(IDIFFERENCE (fetch
|
||||
(TEXTOBJ WRIGHT) of TEXTOBJ)
|
||||
(fetch (TEXTOBJ WLEFT) of TEXTOBJ))
|
||||
(IDIFFERENCE (fetch
|
||||
(TEXTOBJ WTOP) of TEXTOBJ)
|
||||
(fetch (TEXTOBJ WBOTTOM) of TEXTOBJ))))
|
||||
)
|
||||
WHITESHADE
|
||||
'REPLACE WINDOW) (* Clear the window.)
|
||||
(RETURN (RESETLST
|
||||
(RESETSAVE (CURSOR WAITINGCURSOR)) (* Display the hourglass cursor as
|
||||
we work)
|
||||
(SETQ LINES
|
||||
(create LINEDESCRIPTOR
|
||||
YBOT _ (WINDOWPROP WINDOW 'HEIGHT)
|
||||
CHAR1 _ 0
|
||||
CHARLIM _ 0
|
||||
SPACELEFT _ -1
|
||||
RIGHTMARGIN _ (SUB1 (fetch (TEXTOBJ WRIGHT) of TEXTOBJ))
|
||||
NEXTLINE _ NIL
|
||||
CHARTOP _ -1
|
||||
LHEIGHT _ 0
|
||||
LXLIM _ (fetch (TEXTOBJ WRIGHT) of TEXTOBJ)
|
||||
CR\END _ T
|
||||
ASCENT _ 0
|
||||
DESCENT _ 0
|
||||
LTRUEASCENT _ 0
|
||||
LFMTSPEC _ TEDIT.DEFAULT.FMTSPEC))
|
||||
(* Make sure we have the anchor
|
||||
pseudo-line)
|
||||
(WINDOWPROP WINDOW 'LINES LINES)
|
||||
(\FILLWINDOW (WINDOWPROP WINDOW 'HEIGHT)
|
||||
LINES TEXTOBJ NIL WINDOW) (* Fill the window as usual)
|
||||
(\TEDIT.SET.WINDOW.EXTENT TEXTOBJ WINDOW)
|
||||
LINES)])
|
||||
((fetch (TEXTOBJ \WINDOW) of TEXTOBJ) (* ;
|
||||
"If there is no edit window, just return.")
|
||||
(PROG1 (PROG (WREG)
|
||||
(SETQ WINDOW (OR WINDOW (\TEDIT.PRIMARYW TEXTOBJ)))
|
||||
(DSPFILL (PROG1 (DSPCLIPPINGREGION NIL WINDOW)
|
||||
(* ; "For region within a window:")
|
||||
|
||||
(* ;; "(CREATEREGION (fetch (TEXTOBJ WLEFT) of TEXTOBJ) (fetch (TEXTOBJ WBOTTOM) of TEXTOBJ) (IDIFFERENCE (fetch (TEXTOBJ WRIGHT) of TEXTOBJ) (fetch (TEXTOBJ WLEFT) of TEXTOBJ)) (IDIFFERENCE (fetch (TEXTOBJ WTOP) of TEXTOBJ) (fetch (TEXTOBJ WBOTTOM) of TEXTOBJ)))")
|
||||
|
||||
)
|
||||
WHITESHADE
|
||||
'REPLACE WINDOW) (* ; "Clear the window.")
|
||||
(RETURN (RESETLST
|
||||
|
||||
(* ;; "RMK: For reasons unknown, the original cursor is not restored when this exits. But there is presumably no need for this waiting indicator in modern times. This only fills lines visible within a window, and machines are really fast.")
|
||||
|
||||
(* ;; "Display the hourglass cursor as we work")
|
||||
|
||||
(AND NIL (RESETSAVE (CURSOR WAITINGCURSOR)))
|
||||
(SETQ LINES
|
||||
(create LINEDESCRIPTOR
|
||||
YBOT _ (WINDOWPROP WINDOW 'HEIGHT)
|
||||
CHAR1 _ 0
|
||||
CHARLIM _ 0
|
||||
SPACELEFT _ -1
|
||||
RIGHTMARGIN _ (SUB1 (fetch (TEXTOBJ WRIGHT) of TEXTOBJ))
|
||||
NEXTLINE _ NIL
|
||||
CHARTOP _ -1
|
||||
LHEIGHT _ 0
|
||||
LXLIM _ (fetch (TEXTOBJ WRIGHT) of TEXTOBJ)
|
||||
CR\END _ T
|
||||
ASCENT _ 0
|
||||
DESCENT _ 0
|
||||
LTRUEASCENT _ 0
|
||||
LFMTSPEC _ TEDIT.DEFAULT.FMTSPEC))
|
||||
(* ;
|
||||
"Make sure we have the anchor pseudo-line")
|
||||
(WINDOWPROP WINDOW 'LINES LINES)
|
||||
(\FILLWINDOW (WINDOWPROP WINDOW 'HEIGHT)
|
||||
LINES TEXTOBJ NIL WINDOW)
|
||||
(* ; "Fill the window as usual")
|
||||
(\TEDIT.SET.WINDOW.EXTENT TEXTOBJ WINDOW)
|
||||
LINES)])
|
||||
|
||||
(\TEDIT.ADJUST.LINES
|
||||
[LAMBDA (TEXTOBJ FIRSTLINE WINDOW LINETOP DY) (* ; "Edited 30-May-91 15:59 by jds")
|
||||
@@ -2979,25 +2983,25 @@ Copyright (c) 1983-1994, 2021 by Venue & Xerox Corporation.
|
||||
|
||||
|
||||
|
||||
(* (VARS (TEDIT.DONT.BREAK.CHARS (CHARCODE ("41,42" "41,43" "41,53" "41,54" "41,74" "41,115"
|
||||
"41,133" "41,131" "41,127" "Hira,41" "Hira,43" "Hira,45" "Hira,47" "Hira,51" "Hira,103" "Hira,143"
|
||||
"Hira,145" "Hira,147" "Hira,156" "Kata,41" "Kata,43" "Kata,45" "Kata,47" "Kata,51" "Kata,103"
|
||||
"Kata,143" "Kata,145" "Kata,147" "Kata,156"))) (TEDIT.DONT.LAST.CHARS (CHARCODE ("41,114" "41,132"
|
||||
"41,130" "41,126"))) (GLOBALVARS TEDIT.DONT.BREAK.CHARS TEDIT.DONT.LAST.CHARS)))
|
||||
(* (VARS (TEDIT.DONT.BREAK.CHARS (CHARCODE ("41,42" "41,43" "41,53" "41,54" "41,74" "41,115" "41,133"
|
||||
"41,131" "41,127" "Hira,41" "Hira,43" "Hira,45" "Hira,47" "Hira,51" "Hira,103" "Hira,143" "Hira,145"
|
||||
"Hira,147" "Hira,156" "Kata,41" "Kata,43" "Kata,45" "Kata,47" "Kata,51" "Kata,103" "Kata,143"
|
||||
"Kata,145" "Kata,147" "Kata,156"))) (TEDIT.DONT.LAST.CHARS (CHARCODE ("41,114" "41,132" "41,130"
|
||||
"41,126"))) (GLOBALVARS TEDIT.DONT.BREAK.CHARS TEDIT.DONT.LAST.CHARS)))
|
||||
|
||||
(PUTPROPS TEDITSCREEN COPYRIGHT ("Venue & Xerox Corporation" 1983 1984 1985 1986 1987 1988 1989 1990
|
||||
1991 1992 1993 1994 2021))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (2767 76759 (\FORMATLINE 2777 . 56505) (\TEDIT.NSCHAR.RUN 56507 . 63324) (
|
||||
\TEDIT.PURGE.SPACES 63326 . 63784) (\DOFORMATTING 63786 . 76757)) (76760 98628 (\DISPLAYLINE 76770 .
|
||||
94628) (\TEDIT.LINECACHE 94630 . 95381) (\TEDIT.CREATE.LINECACHE 95383 . 96127) (\TEDIT.BLTCHAR 96129
|
||||
. 98626)) (99342 213797 (TEDIT.CR.UPDATESCREEN 99352 . 100603) (TEDIT.DELETELINE 100605 . 101639) (
|
||||
TEDIT.INSERT.DISPLAYTEXT 101641 . 116880) (TEDIT.INSERT.UPDATESCREEN 116882 . 123634) (
|
||||
TEDIT.UPDATE.SCREEN 123636 . 124854) (\BACKFORMAT 124856 . 129167) (\FILLWINDOW 129169 . 144273) (
|
||||
\FIXDLINES 144275 . 151512) (\FIXILINES 151514 . 159489) (\SHOWTEXT 159491 . 162747) (
|
||||
\TEDIT.ADJUST.LINES 162749 . 170216) (\TEDIT.CLEAR.SCREEN.BELOW.LINE 170218 . 170948) (
|
||||
\TEDIT.CLOSEUPLINES 170950 . 179466) (\TEDIT.COPY.LINEDESCRIPTOR 179468 . 185034) (
|
||||
\TEDIT.FIXCHANGEDLINE 185036 . 196215) (\TEDIT.FIXCHANGEDPART 196217 . 208644) (\TEDIT.INSERTLINE
|
||||
208646 . 209466) (\TEDIT.LINE.LIST 209468 . 209794) (\TEDIT.MARK.LINES.DIRTY 209796 . 211482) (
|
||||
\TEDIT.NEXT.LINE.BOTTOM 211484 . 213795)))))
|
||||
(FILEMAP (NIL (2761 76753 (\FORMATLINE 2771 . 56499) (\TEDIT.NSCHAR.RUN 56501 . 63318) (
|
||||
\TEDIT.PURGE.SPACES 63320 . 63778) (\DOFORMATTING 63780 . 76751)) (76754 98622 (\DISPLAYLINE 76764 .
|
||||
94622) (\TEDIT.LINECACHE 94624 . 95375) (\TEDIT.CREATE.LINECACHE 95377 . 96121) (\TEDIT.BLTCHAR 96123
|
||||
. 98620)) (99237 213820 (TEDIT.CR.UPDATESCREEN 99247 . 100498) (TEDIT.DELETELINE 100500 . 101534) (
|
||||
TEDIT.INSERT.DISPLAYTEXT 101536 . 116775) (TEDIT.INSERT.UPDATESCREEN 116777 . 123529) (
|
||||
TEDIT.UPDATE.SCREEN 123531 . 124749) (\BACKFORMAT 124751 . 129062) (\FILLWINDOW 129064 . 144168) (
|
||||
\FIXDLINES 144170 . 151407) (\FIXILINES 151409 . 159384) (\SHOWTEXT 159386 . 162770) (
|
||||
\TEDIT.ADJUST.LINES 162772 . 170239) (\TEDIT.CLEAR.SCREEN.BELOW.LINE 170241 . 170971) (
|
||||
\TEDIT.CLOSEUPLINES 170973 . 179489) (\TEDIT.COPY.LINEDESCRIPTOR 179491 . 185057) (
|
||||
\TEDIT.FIXCHANGEDLINE 185059 . 196238) (\TEDIT.FIXCHANGEDPART 196240 . 208667) (\TEDIT.INSERTLINE
|
||||
208669 . 209489) (\TEDIT.LINE.LIST 209491 . 209817) (\TEDIT.MARK.LINES.DIRTY 209819 . 211505) (
|
||||
\TEDIT.NEXT.LINE.BOTTOM 211507 . 213818)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
@@ -1,12 +1,12 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED " 1-Jan-2022 23:55:46"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>library>TEDITWINDOW.;31 189222
|
||||
(FILECREATED "21-Jan-2022 23:14:36"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>library>TEDITWINDOW.;32 189300
|
||||
|
||||
:CHANGES-TO (FNS TEDIT.CREATEW)
|
||||
:CHANGES-TO (FNS TEDIT.GETINPUT)
|
||||
|
||||
:PREVIOUS-DATE " 1-Jan-2022 17:37:20"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>library>TEDITWINDOW.;30)
|
||||
:PREVIOUS-DATE " 1-Jan-2022 23:55:46"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>library>TEDITWINDOW.;31)
|
||||
|
||||
|
||||
(* ; "
|
||||
@@ -1471,7 +1471,7 @@ Copyright (c) 1983-1991, 1993-1994, 1999, 2021 by John Sybalsky & Xerox Corporat
|
||||
(DEFINEQ
|
||||
|
||||
(TEDIT.GETINPUT
|
||||
[LAMBDA (STREAM PROMPTSTRING DEFAULTSTRING DELIMITER.LIST)
|
||||
[LAMBDA (STREAM PROMPTSTRING DEFAULTSTRING DELIMITER.LIST) (* ; "Edited 21-Jan-2022 23:14 by rmk")
|
||||
(* ; "Edited 30-May-91 23:34 by jds")
|
||||
|
||||
(* ;; "Ask for input (file names, &c) for TEdit, perhaps with a default.")
|
||||
@@ -1487,20 +1487,20 @@ Copyright (c) 1983-1991, 1993-1994, 1999, 2021 by John Sybalsky & Xerox Corporat
|
||||
TPROMPT))
|
||||
(COND
|
||||
(TPROMPT (* ;
|
||||
"If it's our own promptwindow, just clear it.")
|
||||
"If it's our own promptwindow, just clear it.")
|
||||
(CLEARW TPROMPT))
|
||||
(T (* ;
|
||||
"If it's the system's window, just move to a new line.")
|
||||
"If it's the system's window, just move to a new line.")
|
||||
(FRESHLINE PROMPTWINDOW)))
|
||||
(RETURN (PROG1 (PROMPTFORWORD PROMPTSTRING DEFAULTSTRING NIL (OR TPROMPT PROMPTWINDOW)
|
||||
(RETURN (PROG1 (TTYINPROMPTFORWORD PROMPTSTRING DEFAULTSTRING NIL (OR TPROMPT PROMPTWINDOW
|
||||
)
|
||||
NIL
|
||||
'TTY
|
||||
(OR DELIMITER.LIST (CHARCODE (EOL LF TAB ESCAPE)))
|
||||
NIL) (* ;
|
||||
"Get what the guy wants to tell us")
|
||||
NIL) (* ; "Get what the guy wants to tell us")
|
||||
(WINDOWPROP (OR TPROMPT PROMPTWINDOW)
|
||||
'PROCESS NIL) (* ;
|
||||
"Now detach the prompt window from its process, to avoid a circularity.")
|
||||
"Now detach the prompt window from its process, to avoid a circularity.")
|
||||
)])
|
||||
|
||||
(\TEDIT.MAKEFILENAME
|
||||
@@ -2874,25 +2874,25 @@ Copyright (c) 1983-1991, 1993-1994, 1999, 2021 by John Sybalsky & Xerox Corporat
|
||||
(PUTPROPS TEDITWINDOW COPYRIGHT ("John Sybalsky & Xerox Corporation" 1983 1984 1985 1986 1987 1988
|
||||
1989 1990 1991 1993 1994 1999 2021))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (7220 95654 (TEDIT.CREATEW 7230 . 9984) (\TEDIT.CREATEW.FROM.REGION 9986 . 10970) (
|
||||
TEDIT.CURSORMOVEDFN 10972 . 22358) (TEDIT.CURSOROUTFN 22360 . 22895) (TEDIT.WINDOW.SETUP 22897 . 24706
|
||||
) (TEDIT.MINIMAL.WINDOW.SETUP 24708 . 32497) (\TEDIT.ACTIVE.WINDOWP 32499 . 33480) (
|
||||
\TEDIT.BUTTONEVENTFN 33482 . 58472) (\TEDIT.WINDOW.OPS 58474 . 62435) (\TEDIT.EXPANDFN 62437 . 62840)
|
||||
(\TEDIT.MAINW 62842 . 64131) (\TEDIT.PRIMARYW 64133 . 65345) (\TEDIT.COPYINSERTFN 65347 . 66318) (
|
||||
\TEDIT.NEWREGIONFN 66320 . 68787) (\TEDIT.SET.WINDOW.EXTENT 68789 . 74891) (\TEDIT.SHRINK.ICONCREATE
|
||||
74893 . 77165) (\TEDIT.SHRINKFN 77167 . 77742) (\TEDIT.SPLITW 77744 . 83845) (\TEDIT.UNSPLITW 83847 .
|
||||
89541) (\TEDIT.WINDOW.SETUP 89543 . 95263) (\SAFE.FIRST 95265 . 95652)) (96984 97891 (TEDITWINDOWP
|
||||
96994 . 97889)) (97928 100424 (TEDIT.GETINPUT 97938 . 99921) (\TEDIT.MAKEFILENAME 99923 . 100422)) (
|
||||
100473 106924 (TEDIT.PROMPTPRINT 100483 . 103387) (TEDIT.PROMPTFLASH 103389 . 105344) (
|
||||
\TEDIT.PROMPT.PAGEFULLFN 105346 . 106922)) (107159 111152 (TEXTSTREAM.TITLE 107169 . 107790) (
|
||||
\TEDIT.ORIGINAL.WINDOW.TITLE 107792 . 109768) (\TEDIT.WINDOW.TITLE 109770 . 110440) (
|
||||
\TEXTSTREAM.FILENAME 110442 . 111150)) (111195 156094 (TEDIT.DEACTIVATE.WINDOW 111205 . 118512) (
|
||||
\TEDIT.REPAINTFN 118514 . 121371) (\TEDIT.RESHAPEFN 121373 . 126993) (\TEDIT.SCROLLFN 126995 . 156092)
|
||||
) (156136 158185 (\TEDIT.PROCIDLEFN 156146 . 157495) (\TEDIT.PROCENTRYFN 157497 . 157790) (
|
||||
\TEDIT.PROCEXITFN 157792 . 158183)) (158264 169264 (\EDIT.DOWNCARET 158274 . 158955) (\EDIT.FLIPCARET
|
||||
158957 . 160492) (TEDIT.FLASHCARET 160494 . 161608) (\EDIT.UPCARET 161610 . 162063) (
|
||||
TEDIT.NORMALIZECARET 162065 . 168016) (\SETCARET 168018 . 168938) (\TEDIT.CARET 168940 . 169262)) (
|
||||
169298 183053 (TEDIT.ADD.MENUITEM 169308 . 171223) (TEDIT.DEFAULT.MENUFN 171225 . 180492) (
|
||||
TEDIT.REMOVE.MENUITEM 180494 . 181495) (\TEDIT.CREATEMENU 181497 . 181950) (\TEDIT.MENU.WHENHELDFN
|
||||
181952 . 182722) (\TEDIT.MENU.WHENSELECTEDFN 182724 . 183051)))))
|
||||
(FILEMAP (NIL (7221 95655 (TEDIT.CREATEW 7231 . 9985) (\TEDIT.CREATEW.FROM.REGION 9987 . 10971) (
|
||||
TEDIT.CURSORMOVEDFN 10973 . 22359) (TEDIT.CURSOROUTFN 22361 . 22896) (TEDIT.WINDOW.SETUP 22898 . 24707
|
||||
) (TEDIT.MINIMAL.WINDOW.SETUP 24709 . 32498) (\TEDIT.ACTIVE.WINDOWP 32500 . 33481) (
|
||||
\TEDIT.BUTTONEVENTFN 33483 . 58473) (\TEDIT.WINDOW.OPS 58475 . 62436) (\TEDIT.EXPANDFN 62438 . 62841)
|
||||
(\TEDIT.MAINW 62843 . 64132) (\TEDIT.PRIMARYW 64134 . 65346) (\TEDIT.COPYINSERTFN 65348 . 66319) (
|
||||
\TEDIT.NEWREGIONFN 66321 . 68788) (\TEDIT.SET.WINDOW.EXTENT 68790 . 74892) (\TEDIT.SHRINK.ICONCREATE
|
||||
74894 . 77166) (\TEDIT.SHRINKFN 77168 . 77743) (\TEDIT.SPLITW 77745 . 83846) (\TEDIT.UNSPLITW 83848 .
|
||||
89542) (\TEDIT.WINDOW.SETUP 89544 . 95264) (\SAFE.FIRST 95266 . 95653)) (96985 97892 (TEDITWINDOWP
|
||||
96995 . 97890)) (97929 100502 (TEDIT.GETINPUT 97939 . 99999) (\TEDIT.MAKEFILENAME 100001 . 100500)) (
|
||||
100551 107002 (TEDIT.PROMPTPRINT 100561 . 103465) (TEDIT.PROMPTFLASH 103467 . 105422) (
|
||||
\TEDIT.PROMPT.PAGEFULLFN 105424 . 107000)) (107237 111230 (TEXTSTREAM.TITLE 107247 . 107868) (
|
||||
\TEDIT.ORIGINAL.WINDOW.TITLE 107870 . 109846) (\TEDIT.WINDOW.TITLE 109848 . 110518) (
|
||||
\TEXTSTREAM.FILENAME 110520 . 111228)) (111273 156172 (TEDIT.DEACTIVATE.WINDOW 111283 . 118590) (
|
||||
\TEDIT.REPAINTFN 118592 . 121449) (\TEDIT.RESHAPEFN 121451 . 127071) (\TEDIT.SCROLLFN 127073 . 156170)
|
||||
) (156214 158263 (\TEDIT.PROCIDLEFN 156224 . 157573) (\TEDIT.PROCENTRYFN 157575 . 157868) (
|
||||
\TEDIT.PROCEXITFN 157870 . 158261)) (158342 169342 (\EDIT.DOWNCARET 158352 . 159033) (\EDIT.FLIPCARET
|
||||
159035 . 160570) (TEDIT.FLASHCARET 160572 . 161686) (\EDIT.UPCARET 161688 . 162141) (
|
||||
TEDIT.NORMALIZECARET 162143 . 168094) (\SETCARET 168096 . 169016) (\TEDIT.CARET 169018 . 169340)) (
|
||||
169376 183131 (TEDIT.ADD.MENUITEM 169386 . 171301) (TEDIT.DEFAULT.MENUFN 171303 . 180570) (
|
||||
TEDIT.REMOVE.MENUITEM 180572 . 181573) (\TEDIT.CREATEMENU 181575 . 182028) (\TEDIT.MENU.WHENHELDFN
|
||||
182030 . 182800) (\TEDIT.MENU.WHENSELECTEDFN 182802 . 183129)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
@@ -1,12 +1,13 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED "30-Dec-2021 18:22:13"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>COMPAREDIRECTORIES.;116 100755
|
||||
(FILECREATED "29-Jan-2022 00:03:59"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>COMPAREDIRECTORIES.;169 111694
|
||||
|
||||
:CHANGES-TO (FNS CD-MENUFN)
|
||||
(VARS CDTABLEBROWSER.MENUITEMS)
|
||||
|
||||
:PREVIOUS-DATE "25-Dec-2021 12:59:47"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>COMPAREDIRECTORIES.;114)
|
||||
:PREVIOUS-DATE "28-Jan-2022 17:12:22"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>COMPAREDIRECTORIES.;162)
|
||||
|
||||
|
||||
(* ; "
|
||||
@@ -19,11 +20,12 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
(
|
||||
(* ;; "Compare the contents of two directories.")
|
||||
|
||||
(FNS COMPAREDIRECTORIES COMPAREDIRECTORIES.INFOS COMPAREDIRECTORIES.INFOS.TYPE MATCHNAME
|
||||
CD.INSURECDVALUE CD.UPDATEWIDTHS)
|
||||
(FNS COMPAREDIRECTORIES COMPAREDIRECTORIES.INFOS CDENTRIES.SELECT
|
||||
COMPAREDIRECTORIES.INFOS.TYPE MATCHNAME CD.INSURECDVALUE CD.UPDATEWIDTHS)
|
||||
(FNS CDFILES CDFILES.MATCH CDFILES.PATS)
|
||||
(FNS CDPRINT CDPRINT.LINE CDPRINT.MAXWIDTHS CDPRINT.COLHEADERS CDPRINT.COLUMNS CDTEDIT)
|
||||
(FNS CDMAP CDENTRY CDSUBSET)
|
||||
(FNS CDPRINT CDPRINT.HEADER CDPRINT.LINE CDPRINT.MAXWIDTHS CDPRINT.COLHEADERS CDPRINT.COLUMNS
|
||||
CDTEDIT)
|
||||
(FNS CDMAP CDENTRY CDSUBSET CDMERGE CDMERGE.COMMON)
|
||||
(FNS BINCOMP EOLTYPE EOLTYPE.SHOW)
|
||||
(RECORDS CDVALUE CDENTRY CDINFO CDMAXNCHARS)
|
||||
|
||||
@@ -63,13 +65,10 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
|
||||
(COMPAREDIRECTORIES
|
||||
[LAMBDA (DIR1 DIR2 SELECT INCLUDEDFILES EXCLUDEDFILES USEDIRECTORYDATE OUTPUTFILE ALLVERSIONS
|
||||
FIXDIRECTORYDATES) (* ; "Edited 23-Dec-2021 18:59 by rmk")
|
||||
(* ; "Edited 19-Dec-2021 20:07 by rmk")
|
||||
(* ; "Edited 30-Nov-2021 13:51 by rmk:")
|
||||
(* ; "Edited 23-Nov-2021 12:57 by rmk:")
|
||||
(* ; "Edited 6-Nov-2021 12:08 by rmk:")
|
||||
(* ; "Edited 31-Oct-2021 11:01 by rmk:")
|
||||
(* ; "Edited 7-Jan-2021 23:21 by rmk:")
|
||||
FIXDIRECTORYDATES) (* ; "Edited 26-Jan-2022 13:33 by rmk")
|
||||
(* ; "Edited 4-Jan-2022 12:09 by rmk")
|
||||
(* ; "Edited 31-Oct-2021 11:01 by rmk:")
|
||||
(* ; "Edited 7-Jan-2021 23:21 by rmk:")
|
||||
|
||||
(* ;; "Compare the contents of two directories, e.g., for change-control purposes. Compares files matching FILEPATTERN (or *.*;) on DIR1 and DIR2, listing which is newer, or when one is not found on the other. If SELECT is or contains SAME/=, BEFORE/<, AFTER/>, then files where DIR1 is the same as, earlier than, or later than DIR2 are selected. SELECT= NIL is the same as (< >), T is the same as (< > =). Also allows selection based on file-length criteria.")
|
||||
|
||||
@@ -96,8 +95,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
(*- '*-)
|
||||
(~= '~=)
|
||||
(ERROR "UNRECOGNIZED SELECT PARAMETER" S]
|
||||
(PROG (INFOS1 INFOS2 CANDIDATES CDENTRIES COMPAREDATE DEPTH1 DEPTH2 CDVALUE)
|
||||
[SETQ COMPAREDATE (INTERSECTION SELECT '(< > =]
|
||||
(PROG (INFOS1 INFOS2 CANDIDATES CDENTRIES DEPTH1 DEPTH2 CDVALUE (DATE (DATE)))
|
||||
|
||||
(* ;; "DIRECTORYNAME here to get unrelativized specifications for header.")
|
||||
|
||||
@@ -117,8 +115,8 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
(PRINTOUT T "Fixing directory dates" T)
|
||||
(FIX-DIRECTORY-DATES DIR1)
|
||||
(FIX-DIRECTORY-DATES DIR2))
|
||||
(PRINTOUT T "Comparing " DIR1 6 "vs. " DIR2 T "as of " (DATE)
|
||||
" selecting " SELECT " ... ")
|
||||
(CDPRINT.HEADER DIR1 DIR2 SELECT DATE T)
|
||||
(PRINTOUT T " ... ")
|
||||
(SETQ INFOS1 (COMPAREDIRECTORIES.INFOS (CDFILES DIR1 INCLUDEDFILES EXCLUDEDFILES
|
||||
ALLVERSIONS DEPTH1)
|
||||
USEDIRECTORYDATE DIR1))
|
||||
@@ -128,7 +126,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
(SETQ CDVALUE (CREATE CDVALUE
|
||||
CDDIR1 _ DIR1
|
||||
CDDIR2 _ DIR2
|
||||
CDCOMPAREDATE _ (DATE)
|
||||
CDCOMPAREDATE _ DATE
|
||||
CDSELECT _ SELECT))
|
||||
(CL:UNLESS (OR INFOS2 INFOS1)
|
||||
(RETURN CDVALUE))
|
||||
@@ -166,58 +164,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
|
||||
(* ;; "Do the SELECT filtering and insert the date relation.")
|
||||
|
||||
[SETQ CDENTRIES
|
||||
(for C MATCHNAME INFO1 INFO2 IDATE1 IDATE2 DATEREL BINCOMP in CANDIDATES
|
||||
eachtime (SETQ MATCHNAME (pop C))
|
||||
(SETQ INFO1 (pop C))
|
||||
(SETQ INFO2 (pop C))
|
||||
(if (AND INFO1 INFO2)
|
||||
then (SETQ IDATE1 (IDATE (fetch DATE of INFO1)))
|
||||
(SETQ IDATE2 (IDATE (fetch DATE of INFO2)))
|
||||
(SETQ DATEREL (if (IGREATERP IDATE1 IDATE2)
|
||||
then '>
|
||||
elseif (ILESSP IDATE1 IDATE2)
|
||||
then '<
|
||||
else '=))
|
||||
else
|
||||
(* ;; "Just for printing--no comparison")
|
||||
|
||||
(SETQ DATEREL '*))
|
||||
when (if (AND INFO1 INFO2)
|
||||
then (CL:WHEN (OR (NULL COMPAREDATE)
|
||||
(SELECTQ DATEREL
|
||||
(> (MEMB '> SELECT))
|
||||
(< (MEMB '< SELECT))
|
||||
(= (MEMB '= SELECT))
|
||||
(SHOULDNT)))
|
||||
(SETQ BINCOMP (BINCOMP (fetch (CDINFO FULLNAME) OF INFO1)
|
||||
(fetch (CDINFO FULLNAME) OF INFO2)
|
||||
T
|
||||
(fetch (CDINFO EOL) OF INFO1)
|
||||
(fetch (CDINFO EOL) OF INFO2)))
|
||||
|
||||
(* ;; "We want the ~= test to reflect exact byte equivalence, including the same EOL. We use the BINCOMP value below to indicate EOL differences, so we check it here.")
|
||||
|
||||
[NOT (AND (MEMB '~= SELECT)
|
||||
BINCOMP
|
||||
(EQ (fetch (CDINFO EOL) OF INFO1)
|
||||
(fetch (CDINFO EOL) OF INFO2])
|
||||
elseif INFO1
|
||||
then
|
||||
(* ;; "OK if INFO2 is missing?")
|
||||
|
||||
(MEMB '*- SELECT)
|
||||
else
|
||||
(* ;; "OK if INFO1 is missing?")
|
||||
|
||||
(MEMB '-* SELECT))
|
||||
collect (create CDENTRY
|
||||
MATCHNAME _ MATCHNAME
|
||||
INFO1 _ INFO1
|
||||
DATEREL _ DATEREL
|
||||
INFO2 _ INFO2
|
||||
EQUIV _ (CL:UNLESS (EQ DATEREL '*)
|
||||
BINCOMP]
|
||||
(SETQ CDENTRIES (CDENTRIES.SELECT CANDIDATES SELECT))
|
||||
(PRINTOUT T (LENGTH CDENTRIES)
|
||||
" entries" T)
|
||||
(REPLACE CDENTRIES OF CDVALUE WITH CDENTRIES)
|
||||
@@ -227,37 +174,118 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
(RETURN (CDPRINT CDVALUE OUTPUTFILE NIL (MEMB 'AUTHOR SELECT])
|
||||
|
||||
(COMPAREDIRECTORIES.INFOS
|
||||
[LAMBDA (FILES USEDIRECTORYDATE DIR) (* ; "Edited 23-Dec-2021 18:59 by rmk")
|
||||
[LAMBDA (FILES USEDIRECTORYDATE DIR) (* ; "Edited 4-Jan-2022 15:23 by rmk")
|
||||
(* ; "Edited 23-Dec-2021 18:59 by rmk")
|
||||
(* ; "Edited 12-Dec-2021 22:50 by rmk")
|
||||
(* ; "Edited 23-Nov-2021 12:27 by rmk:")
|
||||
(* ; "Edited 13-Oct-2020 08:42 by rmk:")
|
||||
|
||||
(* ;; "Value is a list of CDINFOS with the match-name consed on to the front")
|
||||
|
||||
(FOR FULLNAME TYPE LDATE (STARTPOS _ (ADD1 (NCHARS DIR))) IN FILES
|
||||
(FOR FULLNAME TYPE LDATE STREAM (STARTPOS _ (ADD1 (NCHARS DIR))) IN FILES
|
||||
COLLECT
|
||||
|
||||
(* ;; "GDATE/IDATE in case Y2K")
|
||||
|
||||
(SETQ LDATE (OR (FILEDATE FULLNAME T)
|
||||
(FILEDATE FULLNAME))) (* ;
|
||||
(* ;
|
||||
"Is it a Lisp file? Get it's internal filecreated date. ")
|
||||
(CONS (MATCHNAME FULLNAME STARTPOS)
|
||||
(CREATE CDINFO
|
||||
FULLNAME _ FULLNAME
|
||||
DATE _ [GDATE (IDATE (IF USEDIRECTORYDATE
|
||||
THEN (GETFILEINFO FULLNAME 'CREATIONDATE)
|
||||
ELSEIF (OR LDATE (GETFILEINFO FULLNAME
|
||||
'CREATIONDATE]
|
||||
LENGTH _ (GETFILEINFO FULLNAME 'LENGTH)
|
||||
AUTHOR _ (GETFILEINFO FULLNAME 'AUTHOR)
|
||||
TYPE _ (COMPAREDIRECTORIES.INFOS.TYPE FULLNAME LDATE)
|
||||
EOL _ (EOLTYPE FULLNAME])
|
||||
(SETQ STREAM (OPENSTREAM FULLNAME 'INPUT)) (* ;
|
||||
"So all the GETFILEINFO's, FILEDATES, etc. don't have to do the directory searching.")
|
||||
(SETQ LDATE (OR (FILEDATE STREAM T)
|
||||
(FILEDATE STREAM)))
|
||||
(PROG1 (CONS (MATCHNAME FULLNAME STARTPOS)
|
||||
(CREATE CDINFO
|
||||
FULLNAME _ FULLNAME
|
||||
DATE _ (GDATE (IDATE (IF (OR USEDIRECTORYDATE (NULL LDATE))
|
||||
THEN (GETFILEINFO STREAM 'CREATIONDATE)
|
||||
ELSE (SETFILEINFO STREAM 'CREATIONDATE LDATE)
|
||||
LDATE)))
|
||||
LENGTH _ (GETFILEINFO STREAM 'LENGTH)
|
||||
AUTHOR _ (GETFILEINFO STREAM 'AUTHOR)
|
||||
TYPE _ (COMPAREDIRECTORIES.INFOS.TYPE STREAM LDATE)
|
||||
EOL _ (EOLTYPE STREAM)))
|
||||
(CLOSEF? STREAM])
|
||||
|
||||
(CDENTRIES.SELECT
|
||||
[LAMBDA (CANDIDATES SELECT) (* ; "Edited 4-Jan-2022 21:31 by rmk")
|
||||
|
||||
(* ;; "Does the pairwise select filter and inserts the date relation")
|
||||
|
||||
(for C MATCHNAME INFO1 INFO2 IDATE1 IDATE2 DATEREL BINCOMP [COMPAREDATE
|
||||
_
|
||||
(INTERSECTION SELECT
|
||||
'(< > =] in CANDIDATES
|
||||
eachtime (SETQ MATCHNAME (pop C))
|
||||
(SETQ INFO1 (pop C))
|
||||
(SETQ INFO2 (pop C))
|
||||
(if (AND INFO1 INFO2)
|
||||
then (SETQ IDATE1 (IDATE (fetch DATE of INFO1)))
|
||||
(SETQ IDATE2 (IDATE (fetch DATE of INFO2)))
|
||||
(SETQ DATEREL (if (IGREATERP IDATE1 IDATE2)
|
||||
then '>
|
||||
elseif (ILESSP IDATE1 IDATE2)
|
||||
then '<
|
||||
else '=))
|
||||
else
|
||||
(* ;; "Just for printing--no comparison")
|
||||
|
||||
(SETQ DATEREL '*))
|
||||
when (if (AND INFO1 INFO2)
|
||||
then (CL:WHEN (OR (NULL COMPAREDATE)
|
||||
(SELECTQ DATEREL
|
||||
(> (MEMB '> COMPAREDATE))
|
||||
(< (MEMB '< COMPAREDATE))
|
||||
(= (MEMB '= COMPAREDATE))
|
||||
(SHOULDNT)))
|
||||
(SETQ BINCOMP (BINCOMP (fetch (CDINFO FULLNAME) OF INFO1)
|
||||
(fetch (CDINFO FULLNAME) OF INFO2)
|
||||
T
|
||||
(fetch (CDINFO EOL) OF INFO1)
|
||||
(fetch (CDINFO EOL) OF INFO2)))
|
||||
(CL:WHEN (EQ T BINCOMP)
|
||||
|
||||
(* ;; "Byte-equivalent files with different dates. Presumably the earlier date is more accurate, move back the date of the later file and make DATEREL be =. Perhaps we should do this even if there is only an EOL difference (BINCOMP non-NIL).;; Byte-equivalent files with different dates. Presumably the earlier date is more accurate, move back the date of the earlier file and make DATEREL be =. Perhaps we should do this even if there is only an EOL difference (BINCOMP non-NIL). ")
|
||||
|
||||
(* ;; "We do this even if FIXDIRECTORYDATES is false, that addresses a property of individual Lisp source files.")
|
||||
|
||||
(SELECTQ DATEREL
|
||||
(> (SETFILEINFO (FETCH (CDINFO FULLNAME) OF INFO1)
|
||||
'CREATIONDATE
|
||||
(REPLACE (CDINFO DATE) OF INFO1 WITH (FETCH (CDINFO DATE)
|
||||
OF INFO2))))
|
||||
(< (SETFILEINFO (FETCH (CDINFO FULLNAME) OF INFO2)
|
||||
'CREATIONDATE
|
||||
(REPLACE (CDINFO DATE) OF INFO2 WITH (FETCH (CDINFO DATE)
|
||||
OF INFO1))))
|
||||
NIL)
|
||||
(SETQ DATEREL '=))
|
||||
|
||||
(* ;; "We want the ~= test to reflect exact byte equivalence, including the same EOL. We use the BINCOMP value below to indicate EOL differences, so we check it here.")
|
||||
|
||||
[NOT (AND (MEMB '~= SELECT)
|
||||
BINCOMP
|
||||
(EQ (fetch (CDINFO EOL) OF INFO1)
|
||||
(fetch (CDINFO EOL) OF INFO2])
|
||||
elseif INFO1
|
||||
then
|
||||
(* ;; "OK if INFO2 is missing?")
|
||||
|
||||
(MEMB '*- SELECT)
|
||||
else
|
||||
(* ;; "OK if INFO1 is missing?")
|
||||
|
||||
(MEMB '-* SELECT))
|
||||
collect (create CDENTRY
|
||||
MATCHNAME _ MATCHNAME
|
||||
INFO1 _ INFO1
|
||||
DATEREL _ DATEREL
|
||||
INFO2 _ INFO2
|
||||
EQUIV _ (CL:UNLESS (EQ DATEREL '*)
|
||||
BINCOMP])
|
||||
|
||||
(COMPAREDIRECTORIES.INFOS.TYPE
|
||||
[LAMBDA (FULLNAME LDATE) (* ; "Edited 12-Dec-2021 22:50 by rmk")
|
||||
(IF (OR LDATE (FILEDATE FULLNAME T)
|
||||
(FILEDATE FULLNAME))
|
||||
[LAMBDA (FULLNAME LDATE) (* ; "Edited 4-Jan-2022 13:10 by rmk")
|
||||
(* ; "Edited 12-Dec-2021 22:50 by rmk")
|
||||
(IF LDATE
|
||||
THEN (CL:IF (MEMB (FILENAMEFIELD FULLNAME 'EXTENSION)
|
||||
*COMPILED-EXTENSIONS*)
|
||||
'COMPILED
|
||||
@@ -318,9 +346,12 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
(DEFINEQ
|
||||
|
||||
(CDFILES
|
||||
[LAMBDA (DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH)(* ; "Edited 23-Dec-2021 22:49 by rmk")
|
||||
(* ; "Edited 6-Nov-2021 12:08 by rmk:")
|
||||
(* ; "Edited 16-Oct-2020 13:42 by rmk:")
|
||||
[LAMBDA (DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH)(* ; "Edited 26-Jan-2022 15:25 by rmk")
|
||||
(* ; "Edited 21-Jan-2022 22:40 by rmk")
|
||||
(* ; "Edited 5-Jan-2022 15:07 by rmk")
|
||||
(* ; "Edited 23-Dec-2021 22:49 by rmk")
|
||||
(* ; "Edited 6-Nov-2021 12:08 by rmk:")
|
||||
(* ; "Edited 16-Oct-2020 13:42 by rmk:")
|
||||
|
||||
(* ;; "Returns a list of fullnames for files that satisfy the criteria. We generate all candidates that match INCLUDEDFILES but not EXCLUDEDFILES in DIR.")
|
||||
|
||||
@@ -338,7 +369,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
|
||||
(* ;; "EXCLUDEDFILES is a filepattern with * meaning everything, COM means *.LCOM and *.DFASL")
|
||||
|
||||
[SETQ EXCLUDEDFILES `(.DS_Store
|
||||
[SETQ EXCLUDEDFILES `(*>.DS_Store
|
||||
,@(MKLIST EXCLUDEDFILES]
|
||||
(CL:UNLESS (EQMEMB '.* INCLUDEDFILES) (* ;
|
||||
"Excluded dot files unless specifically asked for")
|
||||
@@ -372,9 +403,14 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
(CL:UNLESS (OR (EQ SD '*)
|
||||
(EQ SD (CAR P)))
|
||||
(SETQ SD NIL)) FINALLY (CL:WHEN (EQ SD '*)
|
||||
(SETQ SD ""))
|
||||
(SETQ SD ""))
|
||||
|
||||
(* ;;
|
||||
"If We don't prefix TOPDIR with <, then if TOPDIR contains a colon it is interpreted as a device.")
|
||||
|
||||
(SETQ ENUMPAT (PACKFILENAME 'HOST HOST 'DIRECTORY
|
||||
(CONCAT TOPDIR ">" (OR SD ""))
|
||||
(CONCAT "<" TOPDIR ">"
|
||||
(OR SD ""))
|
||||
'NAME N 'EXTENSION E 'VERSION
|
||||
(CL:IF ALLVERSIONS
|
||||
'*
|
||||
@@ -387,48 +423,52 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
(* ;; "We enumerate all the files, checking to see that")
|
||||
|
||||
(FOR FULLNAME NAME EXT SUBDIR UNPACK THISDEPTH (STARTPOS _ (ADD1 (NCHARS TOPDIR)))
|
||||
IN (DIRECTORY ENUMPAT) EACHTIME (CL:WHEN (DIRECTORYNAMEP FULLNAME)
|
||||
(* ; "Skip directories")
|
||||
(GO $$ITERATE))
|
||||
(SETQ UNPACK (UNPACKFILENAME FULLNAME))
|
||||
(SETQ NAME (LISTGET UNPACK 'NAME))
|
||||
(SETQ EXT (LISTGET UNPACK 'EXTENSION))
|
||||
(SETQ SUBDIR (SUBATOM (LISTGET UNPACK 'DIRECTORY)
|
||||
STARTPOS))
|
||||
(CL:UNLESS NAME
|
||||
(CL:WHEN EXT (* ; ".XY")
|
||||
(SETQ NAME (PACK* "." EXT))
|
||||
(SETQ EXT NIL)))
|
||||
(SETQ THISDEPTH (FOR I (CNT _ 1) FROM 1
|
||||
DO (SELCHARQ (NTHCHARCODE SUBDIR I)
|
||||
((> /)
|
||||
(ADD CNT 1))
|
||||
(NIL (RETURN CNT))
|
||||
NIL)))
|
||||
IN (DIRECTORY ENUMPAT NIL NIL (CL:IF ALLVERSIONS
|
||||
"*"
|
||||
""))
|
||||
EACHTIME (SETQ UNPACK (UNPACKFILENAME FULLNAME))
|
||||
(SETQ NAME (LISTGET UNPACK 'NAME))
|
||||
(SETQ EXT (LISTGET UNPACK 'EXTENSION))
|
||||
(CL:UNLESS NAME
|
||||
(CL:WHEN EXT (* ; ".XY")
|
||||
(SETQ NAME (PACK* "." EXT))
|
||||
(SETQ EXT NIL)))
|
||||
(CL:UNLESS (OR NAME EXT) (* ; "Must have been a directory")
|
||||
(GO $$ITERATE))
|
||||
(SETQ SUBDIR (SUBATOM (LISTGET UNPACK 'DIRECTORY)
|
||||
STARTPOS))
|
||||
(SETQ THISDEPTH (FOR I (CNT _ 1) FROM 1 DO (SELCHARQ (NTHCHARCODE SUBDIR I)
|
||||
((> /)
|
||||
(ADD CNT 1))
|
||||
(NIL (RETURN CNT))
|
||||
NIL)))
|
||||
WHEN (OR (NULL INCLUDES)
|
||||
(CDFILES.MATCH SUBDIR NAME EXT THISDEPTH INCLUDES))
|
||||
UNLESS (CDFILES.MATCH SUBDIR NAME EXT THISDEPTH EXCLUDES) COLLECT FULLNAME])
|
||||
|
||||
(CDFILES.MATCH
|
||||
[LAMBDA (SUBDIR NAME EXT THISDEPTH PATTERNS) (* ; "Edited 23-Dec-2021 21:47 by rmk")
|
||||
[LAMBDA (SUBDIR NAME EXT THISDEPTH PATTERNS) (* ; "Edited 26-Jan-2022 15:33 by rmk")
|
||||
(* ; "Edited 23-Dec-2021 21:47 by rmk")
|
||||
|
||||
(* ;; "True if the components of the fullname match at least one of the patterns")
|
||||
|
||||
(THEREIS P IN PATTERNS SUCHTHAT (AND [OR (STRING.EQUAL NAME (CAR P))
|
||||
(THEREIS P IN PATTERNS SUCHTHAT (AND [OR (STRING.EQUAL NAME (CAR P)
|
||||
FILEDIRCASEARRAY)
|
||||
(EQ '* (CAR P))
|
||||
(AND (EQ (CHARCODE %.)
|
||||
(CHCON1 (CAR P)))
|
||||
(EQ (EQ (CHARCODE %.)
|
||||
(CHCON1 NAME)))
|
||||
(EQ (CHARCODE %.)
|
||||
(CHCON1 NAME))
|
||||
(OR (STRING.EQUAL NAME (SUBATOM (CAR P)
|
||||
2))
|
||||
(EQ (CHARCODE *1)
|
||||
(EQ (CHARCODE *)
|
||||
(NTHCHARCODE (CAR P)
|
||||
2]
|
||||
(OR (STRING.EQUAL EXT (CADR P))
|
||||
(EQ '* (CADR P)))
|
||||
(OR (STRING.EQUAL SUBDIR (CADDR P))
|
||||
(NULL (CADDR P)))
|
||||
(NULL (CADDR P))
|
||||
(EQ '* (CADDR P)))
|
||||
(ILEQ THISDEPTH (CADDDR P])
|
||||
|
||||
(CDFILES.PATS
|
||||
@@ -479,9 +519,10 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
(DEFINEQ
|
||||
|
||||
(CDPRINT
|
||||
[LAMBDA (CDVALUE FILE COLHEADINGS PRINTAUTHOR) (* ; "Edited 19-Dec-2021 20:10 by rmk")
|
||||
(* ; "Edited 30-Nov-2021 20:59 by rmk:")
|
||||
(* ; "Edited 13-Oct-2020 08:38 by rmk:")
|
||||
[LAMBDA (CDVALUE FILE COLHEADINGS PRINTAUTHOR) (* ; "Edited 26-Jan-2022 13:43 by rmk")
|
||||
(* ; "Edited 19-Dec-2021 20:10 by rmk")
|
||||
(* ; "Edited 30-Nov-2021 20:59 by rmk:")
|
||||
(* ; "Edited 13-Oct-2020 08:38 by rmk:")
|
||||
|
||||
(* ;; "Typically CDVALUE will have a provdenance header. If not, we fake one up, at least for the directories and today's date.")
|
||||
|
||||
@@ -502,11 +543,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
'(PROGN (CLOSEF? OLDVALUE])
|
||||
(LINELENGTH 1000 STREAM) (* ; "Don't wrap")
|
||||
(CL:WHEN (FETCH (CDVALUE CDDIR1) OF CDVALUE)
|
||||
(PRINTOUT STREAM "Comparing " (FETCH (CDVALUE CDDIR1) OF CDVALUE)
|
||||
6 "vs. " (FETCH (CDVALUE CDDIR2) OF CDVALUE)
|
||||
T "as of " (FETCH (CDVALUE CDCOMPAREDATE) OF CDVALUE))
|
||||
(CL:WHEN (FETCH (CDVALUE CDSELECT) OF CDVALUE)
|
||||
(PRINTOUT STREAM " selecting " (FETCH (CDVALUE CDSELECT) OF CDVALUE)))
|
||||
(CDPRINT.HEADER CDVALUE STREAM)
|
||||
(PRINTOUT STREAM -2 (LENGTH (fetch CDENTRIES of CDVALUE))
|
||||
" entries" T T))
|
||||
(if (fetch CDENTRIES of CDVALUE)
|
||||
@@ -517,6 +554,27 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
else (PRINTOUT T "CDVALUE is empty" T))
|
||||
(AND STREAM (CLOSEF? STREAM))))])
|
||||
|
||||
(CDPRINT.HEADER
|
||||
[LAMBDA (DIR1 DIR2 SELECT DATE STREAM) (* ; "Edited 26-Jan-2022 13:36 by rmk")
|
||||
(CL:WHEN (LISTP DIR1)
|
||||
|
||||
(* ;; "A CDVALUE")
|
||||
|
||||
(CL:UNLESS STREAM (SETQ STREAM DIR2))
|
||||
(SETQ DIR2 (FETCH CDDIR2 OF DIR1))
|
||||
(SETQ SELECT (FETCH CDSELECT OF DIR1))
|
||||
(SETQ DATE (FETCH CDCOMPAREDATE OF DIR1))
|
||||
(SETQ DIR1 (FETCH CDDIR1 OF DIR1)))
|
||||
(CL:WHEN DIR1
|
||||
(PRINTOUT STREAM "Comparing ")
|
||||
(PRINTOUT STREAM DIR1 %# (CL:WHEN (IGREATERP (IPLUS (NCHARS DIR1)
|
||||
(NCHARS DIR2))
|
||||
70)
|
||||
(TAB 5))
|
||||
" vs. " DIR2)
|
||||
(PRINTOUT STREAM T 3 "as of " DATE)
|
||||
(CL:WHEN SELECT (PRINTOUT STREAM " selecting " SELECT)))])
|
||||
|
||||
(CDPRINT.LINE
|
||||
[LAMBDA (STREAM ENTRY PRINTAUTHOR DATE1POS ENDDATE1 NCHARSDIR1 NCHARSDIR2)
|
||||
(* ; "Edited 22-Nov-2021 22:38 by rmk:")
|
||||
@@ -752,6 +810,89 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
(SETQ INFO2 (FETCH INFO2 OF CDE))
|
||||
(SETQ EQUIV (FETCH EQUIV OF CDE))
|
||||
WHEN (APPLY* FN CDE) COLLECT CDE])
|
||||
|
||||
(CDMERGE
|
||||
[LAMBDA (CDVALUES) (* ; "Edited 24-Jan-2022 17:01 by rmk")
|
||||
|
||||
(* ;; "This merges a collection of CDVALUES on different directories into a single CDVALUE with the union of the CDENTRIES, provided that they have the same selection criteria. The merged directories will be the minimal common prefix of all of the entries on each side, and the residual of the directory will be packed onto all the names.")
|
||||
|
||||
(IF (CDR CDVALUES)
|
||||
THEN
|
||||
[LET
|
||||
(CDSELECTS)
|
||||
|
||||
(* ;; "Group by selects")
|
||||
|
||||
(FOR CDV TMP IN CDVALUES
|
||||
DO (PUSH [CDR (OR (SASSOC (FETCH CDSELECT OF CDV)
|
||||
CDSELECTS)
|
||||
(CAR (PUSH CDSELECTS (CONS (FETCH CDSELECT OF CDV]
|
||||
CDV))
|
||||
|
||||
(* ;; "For each group, find the longest common directory prefixes")
|
||||
|
||||
(FOR CDS IDATE DIR1 DIR2 MERGEDENTRIES IN CDSELECTS
|
||||
COLLECT (SETQ DIR1 (FETCH CDDIR1 OF (CADR CDS)))
|
||||
(SETQ DIR2 (FETCH CDDIR2 OF (CADR CDS)))
|
||||
[SETQ IDATE (IDATE (FETCH CDCOMPAREDATE OF (CADR CDS]
|
||||
|
||||
(* ;; "Calculate the common directory prefixes and latest date")
|
||||
|
||||
[FOR CDV IN (CDDR CDS) DO (SETQ DIR1 (CDMERGE.COMMON DIR1 (FETCH CDDIR1
|
||||
OF CDV)))
|
||||
(SETQ DIR2 (CDMERGE.COMMON DIR2 (FETCH CDDIR2
|
||||
OF CDV)))
|
||||
(CL:WHEN (IGREATERP IDATE (IDATE (FETCH CDCOMPAREDATE
|
||||
OF CDV)))
|
||||
(SETQ IDATE (IDATE (FETCH CDCOMPAREDATE OF CDV))))]
|
||||
|
||||
(* ;;
|
||||
"Merge the CDENTRIES with matchnames pulled back so that subdirectories show up")
|
||||
|
||||
(SETQ MERGEDENTRIES
|
||||
(SORT [FOR CDV NC1 _ (ADD1 (NCHARS DIR1))
|
||||
NC2 _ (ADD1 (NCHARS DIR2)) IN (CDR CDS)
|
||||
JOIN (FOR CDE IN (FETCH CDENTRIES OF CDV)
|
||||
COLLECT (CREATE CDENTRY
|
||||
USING CDE MATCHNAME _
|
||||
(IF (FETCH INFO1 OF CDE)
|
||||
THEN (MATCHNAME (FETCH (CDINFO FULLNAME)
|
||||
OF (FETCH INFO1
|
||||
OF CDE))
|
||||
NC1)
|
||||
ELSE (MATCHNAME (FETCH (CDINFO FULLNAME)
|
||||
OF (FETCH INFO2
|
||||
OF CDE))
|
||||
NC2]
|
||||
T))
|
||||
(CD.UPDATEWIDTHS (CREATE CDVALUE
|
||||
CDDIR1 _ DIR1
|
||||
CDDIR2 _ DIR2
|
||||
CDCOMPAREDATE _ (GDATE IDATE)
|
||||
CDSELECT _ (CAR CDS)
|
||||
CDENTRIES _ MERGEDENTRIES]
|
||||
ELSE CDVALUES])
|
||||
|
||||
(CDMERGE.COMMON
|
||||
[LAMBDA (DIRX DIRY) (* ; "Edited 24-Jan-2022 16:40 by rmk")
|
||||
|
||||
(* ;;
|
||||
"Returns the longest common prefix of DIRX and DIRY, collapsing brackets, slashes, and case")
|
||||
|
||||
(FOR I CX CY (LASTDIRPOS _ 1) FROM 1 EACHTIME (SETQ CX (NTHCHARCODE DIRX I))
|
||||
(SETQ CY (NTHCHARCODE DIRY I))
|
||||
(CL:WHEN (MEMB CX (CHARCODE (< > /)))
|
||||
(SETQ CX (CHARCODE /)))
|
||||
(CL:WHEN (MEMB CY (CHARCODE (< > /)))
|
||||
(SETQ CY (CHARCODE /)))
|
||||
(CL:WHEN (AND (EQ CX (CHARCODE /))
|
||||
(EQ CY (CHARCODE /)))
|
||||
(SETQ LASTDIRPOS I))
|
||||
UNLESS [AND CX CY (OR (EQ CX CY)
|
||||
(EQ (L-CASECODE CX)
|
||||
(L-CASECODE CY] DO (RETURN (CL:IF (EQ I 1)
|
||||
""
|
||||
(SUBSTRING DIRX 1 LASTDIRPOS))])
|
||||
)
|
||||
(DEFINEQ
|
||||
|
||||
@@ -827,40 +968,51 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
FINALLY (RETURN (OR EOLDIFF T]))])
|
||||
|
||||
(EOLTYPE
|
||||
[LAMBDA (FILE SHOWCONTEXT) (* ; "Edited 21-Feb-2021 20:34 by rmk:")
|
||||
[LAMBDA (FILE SHOWCONTEXT)
|
||||
|
||||
(* ;; "Returns the EOLCONVENTION of FILE if it only sees one kind, NIL if it can't decide.")
|
||||
(* ;; "Edited 4-Jan-2022 15:10 by rmk: Allow FILE to be an already open stream")
|
||||
|
||||
(* ;; "If SHOWCONTEXT, it is the number of bytes before and after an EOL inconsistency (e.g. seeing CR after having seen LF) that will be displayed on the TTY. The position of the inconsistency will be marked with ##.")
|
||||
(* ;; "Edited 21-Feb-2021 20:34 by rmk:")
|
||||
|
||||
(* ;; "Returns the EOLCONVENTION of FILE if it only sees one kind, NIL if it can't decide.")
|
||||
|
||||
(* ;; "If SHOWCONTEXT, it is the number of bytes before and after an EOL inconsistency (e.g. seeing CR after having seen LF) that will be displayed on the TTY. The position of the inconsistency will be marked with ##.")
|
||||
|
||||
(SELECTQ SHOWCONTEXT
|
||||
(NIL)
|
||||
(T (SETQ SHOWCONTEXT 100))
|
||||
(CL:UNLESS (FIXP SHOWCONTEXT)
|
||||
(ERROR "SHOWCONTEXT must be an integer" SHOWCONTEXT)))
|
||||
(CL:WITH-OPEN-FILE
|
||||
(STREAM FILE :DIRECTION :INPUT)
|
||||
(SETFILEINFO STREAM 'ENDOFSTREAMOP (FUNCTION NILL))
|
||||
(BIND EOLTYPE
|
||||
DO (SELCHARQ (OR (\BIN STREAM)
|
||||
(RETURN EOLTYPE))
|
||||
(CR (IF (EQ (CHARCODE LF)
|
||||
(RESETLST
|
||||
(LET (STREAM)
|
||||
[IF (GETSTREAM FILE 'INPUT T)
|
||||
THEN (SETQ STREAM FILE)
|
||||
[RESETSAVE NIL `(PROGN (SETFILEPTR ,STREAM ,(GETFILEPTR STREAM))
|
||||
(STREAMPROP ,STREAM 'ENDOFSTREAMOP
|
||||
',(STREAMPROP STREAM 'ENDOFSTREAMOP]
|
||||
(SETFILEPTR STREAM 0)
|
||||
ELSE (RESETSAVE NIL `(CLOSEF? ,(SETQ STREAM (OPENSTREAM FILE 'INPUT]
|
||||
(SETFILEINFO STREAM 'ENDOFSTREAMOP (FUNCTION NILL))
|
||||
(BIND EOLTYPE
|
||||
DO (SELCHARQ (OR (\BIN STREAM)
|
||||
(RETURN EOLTYPE))
|
||||
(CR (IF (EQ (CHARCODE LF)
|
||||
(\PEEKBIN STREAM T))
|
||||
THEN (\BIN STREAM)
|
||||
(IF (MEMB EOLTYPE '(LF CR))
|
||||
THEN (CL:UNLESS (EOLTYPE.SHOW SHOWCONTEXT EOLTYPE
|
||||
'LF STREAM)
|
||||
(RETURN NIL))
|
||||
ELSE (SETQ EOLTYPE 'CRLF))
|
||||
ELSEIF (MEMB EOLTYPE '(LF CRLF))
|
||||
THEN (CL:UNLESS (EOLTYPE.SHOW SHOWCONTEXT EOLTYPE 'CR STREAM)
|
||||
THEN (\BIN STREAM)
|
||||
(IF (MEMB EOLTYPE '(LF CR))
|
||||
THEN (CL:UNLESS (EOLTYPE.SHOW SHOWCONTEXT EOLTYPE
|
||||
'LF STREAM)
|
||||
(RETURN NIL))
|
||||
ELSE (SETQ EOLTYPE 'CRLF))
|
||||
ELSEIF (MEMB EOLTYPE '(LF CRLF))
|
||||
THEN (CL:UNLESS (EOLTYPE.SHOW SHOWCONTEXT EOLTYPE 'CR STREAM)
|
||||
(RETURN NIL))
|
||||
ELSE (SETQ EOLTYPE 'CR)))
|
||||
(LF (IF (MEMB EOLTYPE '(CR CRLF))
|
||||
THEN (CL:UNLESS (EOLTYPE.SHOW SHOWCONTEXT EOLTYPE 'LF STREAM)
|
||||
ELSE (SETQ EOLTYPE 'CR)))
|
||||
(LF (IF (MEMB EOLTYPE '(CR CRLF))
|
||||
THEN (CL:UNLESS (EOLTYPE.SHOW SHOWCONTEXT EOLTYPE 'LF STREAM)
|
||||
(RETURN NIL))
|
||||
ELSE (SETQ EOLTYPE 'LF)))
|
||||
NIL])
|
||||
ELSE (SETQ EOLTYPE 'LF)))
|
||||
NIL))))])
|
||||
|
||||
(EOLTYPE.SHOW
|
||||
[LAMBDA (SHOWCONTEXT OLDTYPE NEWTYPE STREAM) (* ; "Edited 21-Feb-2021 20:20 by rmk:")
|
||||
@@ -1435,18 +1587,16 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
|
||||
(CDBROWSER
|
||||
[LAMBDA (CDVALUE TITLE COLHEADINGS BROWSERPROPS SEPARATEDIRECTIONS MENUITEMS)
|
||||
(* ; "Edited 25-Dec-2021 12:50 by rmk")
|
||||
(* ; "Edited 16-Dec-2021 11:51 by rmk")
|
||||
(* ; "Edited 14-Dec-2021 21:41 by rmk")
|
||||
(* ; "Edited 10-Dec-2021 21:38 by rmk")
|
||||
(* ; "Edited 30-Nov-2021 15:03 by rmk:")
|
||||
(* ; "Edited 29-Nov-2021 14:18 by rmk:")
|
||||
|
||||
(* ;; "Edited 28-Jan-2022 17:01 by rmk: a table browser for the differences in CDVALUE.")
|
||||
|
||||
(* ;; "Creates a table browser for the differences in CDVALUE.")
|
||||
|
||||
(SETQ MENUITEMS (IF MENUITEMS
|
||||
THEN (FOR I IN MENUITEMS COLLECT (OR (LISTP I)
|
||||
(SASSOC I CDTABLEBROWSER.MENUITEMS)
|
||||
(AND (STREQUAL I "")
|
||||
"")
|
||||
(ERROR "UNKNOWN CDBROWSER MENU ITEM" I))
|
||||
)
|
||||
ELSE CDTABLEBROWSER.MENUITEMS))
|
||||
@@ -1464,19 +1614,17 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
FINALLY (RETURN (WIDTHIFWINDOW (IMAX $$EXTREME (STRINGWIDTH
|
||||
" CD commands "
|
||||
DEFAULTFONT]
|
||||
|
||||
(* ;; "2 allows for the prompt window")
|
||||
|
||||
[SETQ REGION (GETREGION (PLUS TB.LEFT.MARGIN ITEMWIDTH (TIMES 2 WBorder)
|
||||
MENUWIDTH)
|
||||
(TIMES [IMIN 15 (IMAX (IPLUS 4 (LENGTH STRINGS))
|
||||
(ADD1 (LENGTH MENUITEMS]
|
||||
(TIMES (IPLUS 2 (IMAX (IMIN 15 (LENGTH STRINGS))
|
||||
(LENGTH MENUITEMS)))
|
||||
(FONTPROP DEFAULTFONT 'HEIGHT]
|
||||
|
||||
(* ;; "Promptwindow seems to do its own thing, even if under construction. So we preshrink the main window.")
|
||||
|
||||
[SETQ REGION (CREATE REGION USING REGION HEIGHT _ (DIFFERENCE (FETCH (REGION HEIGHT)
|
||||
OF REGION)
|
||||
(FONTPROP DEFAULTFONT
|
||||
'HEIGHT]
|
||||
(SETQ WINDOW (CREATEW REGION (OR TITLE "Compare directories")
|
||||
(SETQ WINDOW (CREATEW REGION (OR TITLE (CONCAT "Compare directories " (LENGTH
|
||||
STRINGS)
|
||||
" files"))
|
||||
NIL T))
|
||||
(WINDOWPROP WINDOW 'UNDERCONSTRUCTION T)
|
||||
|
||||
@@ -1610,105 +1758,153 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
'DON'T])
|
||||
|
||||
(CD.COMMANDSELECTEDFN
|
||||
[LAMBDA (MENUITEM MENU KEY) (* ; "Edited 25-Dec-2021 11:20 by rmk")
|
||||
(* ; "Edited 16-Dec-2021 13:45 by rmk")
|
||||
(* ; "Edited 13-Dec-2021 17:13 by rmk")
|
||||
(* ; "Edited 9-Dec-2021 21:36 by rmk")
|
||||
(* ; "Edited 8-Dec-2021 11:27 by rmk")
|
||||
(* ; "Edited 5-Dec-2021 13:28 by rmk")
|
||||
(* ; "Edited 3-Dec-2021 00:21 by rmk:")
|
||||
(* ; "Edited 29-Nov-2021 23:08 by rmk:")
|
||||
[LAMBDA (MENUITEM MENU KEY) (* ; "Edited 27-Jan-2022 17:46 by rmk")
|
||||
(* ; "Edited 10-Jan-2022 22:51 by rmk")
|
||||
(* ; "Edited 25-Dec-2021 11:20 by rmk")
|
||||
(* ; "Edited 12-Jan-87 12:57 by bvm:")
|
||||
|
||||
(* ;; "Cobbled from FB.COMMANDSELECTEDFN. But here we assume that the menu item is of the form (display-string FN . EXTRAS), we peel out the FN to apply, leave the rest alone.")
|
||||
|
||||
(DECLARE (SPECVARS MENUITEM MENU KEY))
|
||||
(RESETLST
|
||||
[LET* [(WINDOW (WINDOWPROP (WFROMMENU MENU)
|
||||
'MAINWINDOW))
|
||||
(PROMPTWINDOW (GETPROMPTWINDOW WINDOW))
|
||||
(CDBROWSER (WINDOWPROP WINDOW 'TABLEBROWSER))
|
||||
(USERDATA (TB.USERDATA CDBROWSER))
|
||||
(CDVALUE (LISTGET USERDATA 'CDVALUE))
|
||||
(FN (CADR (LISTP MENUITEM]
|
||||
(DECLARE (SPECVARS WINDOW PROMPTWINDOW CDVALUE USERDATA))
|
||||
(GIVE.TTY.PROCESS PROMPTWINDOW)
|
||||
(TTYDISPLAYSTREAM PROMPTWINDOW) (* ; "Pwindow")
|
||||
(IF (EQ 0 (TB.NUMBER.OF.ITEMS CDBROWSER 'SELECTED))
|
||||
THEN (FLASHWINDOW PROMPTWINDOW)
|
||||
(PRIN3 "Please make a selection" T)
|
||||
ELSE (TB.MAP.SELECTED.ITEMS CDBROWSER
|
||||
[FUNCTION (LAMBDA (CDBROWSER TBITEM)
|
||||
(LET* ((CDENTRY (CADR (FETCH TIDATA OF TBITEM)))
|
||||
(FILE1 (FETCH (CDINFO FULLNAME)
|
||||
(FETCH (CDENTRY INFO1) OF CDENTRY)))
|
||||
(FILE2 (FETCH (CDINFO FULLNAME)
|
||||
(FETCH (CDENTRY INFO2) OF CDENTRY)))
|
||||
(TYPE (FETCH (CDINFO TYPE) OF (FETCH (CDENTRY INFO1)
|
||||
OF CDENTRY)))
|
||||
(LABELS (APPLY* (OR (LISTGET USERDATA 'LABELFN)
|
||||
(FUNCTION NILL))
|
||||
FILE1 FILE2 USERDATA))
|
||||
(LABEL1 (OR (CAR LABELS)
|
||||
FILE1))
|
||||
(LABEL2 (OR (CADR LABELS)
|
||||
FILE2)))
|
||||
(DECLARE (SPECVARS . T))
|
||||
(CL:UNLESS (STREQUAL MENUITEM "") (* ; "For blank lines")
|
||||
(RESETLST
|
||||
[LET* [(WINDOW (WINDOWPROP (WFROMMENU MENU)
|
||||
'MAINWINDOW))
|
||||
(PWINDOW (GETPROMPTWINDOW WINDOW))
|
||||
(CDBROWSER (WINDOWPROP WINDOW 'TABLEBROWSER))
|
||||
(USERDATA (TB.USERDATA CDBROWSER))
|
||||
(CDVALUE (LISTGET USERDATA 'CDVALUE))
|
||||
(FN (CADR (LISTP MENUITEM]
|
||||
(DECLARE (SPECVARS WINDOW PWINDOW CDVALUE USERDATA))
|
||||
(GIVE.TTY.PROCESS PWINDOW)
|
||||
(TTYDISPLAYSTREAM PWINDOW) (* ; "Pwindow")
|
||||
(COND
|
||||
((EQ 0 (TB.NUMBER.OF.ITEMS CDBROWSER 'SELECTED))
|
||||
(FLASHWINDOW PWINDOW)
|
||||
(PRIN3 "Please make a selection" T))
|
||||
(T (TB.MAP.SELECTED.ITEMS
|
||||
CDBROWSER
|
||||
[FUNCTION (LAMBDA (CDBROWSER TBITEM)
|
||||
(LET* ((CDENTRY (CADR (FETCH TIDATA OF TBITEM)))
|
||||
(FILE1 (FETCH (CDINFO FULLNAME)
|
||||
(FETCH (CDENTRY INFO1) OF CDENTRY)))
|
||||
(FILE2 (FETCH (CDINFO FULLNAME)
|
||||
(FETCH (CDENTRY INFO2) OF CDENTRY)))
|
||||
(TYPE (FETCH (CDINFO TYPE) OF (FETCH (CDENTRY INFO1)
|
||||
OF CDENTRY)))
|
||||
(LABELS (APPLY* (OR (LISTGET USERDATA 'LABELFN)
|
||||
(FUNCTION NILL))
|
||||
FILE1 FILE2 USERDATA))
|
||||
(LABEL1 (OR (CAR LABELS)
|
||||
FILE1))
|
||||
(LABEL2 (OR (CADR LABELS)
|
||||
FILE2)))
|
||||
(DECLARE (SPECVARS . T))
|
||||
|
||||
(* ;; "If USERDATA contains a LABELFN, then it is applied to the files and the rest of the USERDATA to produce abbreviated labels for titles and headers.")
|
||||
|
||||
(CLEARW T)
|
||||
(CL:FUNCALL FN TBITEM MENUITEM CDBROWSER KEY]
|
||||
(FUNCTION NILL])])
|
||||
(CLEARW T)
|
||||
(CL:FUNCALL FN TBITEM MENUITEM CDBROWSER KEY]
|
||||
(FUNCTION NILL]))])
|
||||
|
||||
(CD-MENUFN
|
||||
[LAMBDA (TBITEM MENUITEM CDBROWSER KEY) (* ; "Edited 30-Dec-2021 18:21 by rmk")
|
||||
(* ; "Edited 20-Dec-2021 09:56 by rmk")
|
||||
(* ; "Edited 16-Dec-2021 13:30 by rmk")
|
||||
(* ; "Edited 13-Dec-2021 22:11 by rmk")
|
||||
(* ; "Edited 10-Dec-2021 21:42 by rmk")
|
||||
(* ; "Edited 9-Dec-2021 21:24 by rmk")
|
||||
[LAMBDA (TBITEM MENUITEM CDBROWSER KEY)
|
||||
|
||||
(* ;; "Edited 29-Jan-2022 00:03 by rmk: FILELABELFN, if provided, can be used to calculate abbreviated labels for the file, for example, to strip off any long common prefixes.")
|
||||
|
||||
(* ;; "The FILELABELFN, if provided, can be used to calculate abbreviated labels for the file, for example, to strip off any long common prefixes.")
|
||||
|
||||
(* ;; "MENUITEM is of the form (display-atom <this function> . extrainfo). The selector for the selectq is either the CAR of the extrainfo or the display atom.")
|
||||
|
||||
(SELECTQ (OR (CADDR MENUITEM)
|
||||
(CAR MENUITEM))
|
||||
(Compare (IF (AND FILE1 FILE2)
|
||||
THEN (SELECTQ TYPE
|
||||
(SOURCE (CSBROWSER FILE1 FILE2 NIL LABEL1 LABEL2))
|
||||
(COMPILED (PRIN3 "Cannot compare compiled files" T))
|
||||
((TEXT TEDIT)
|
||||
(* ;;
|
||||
(CL:WHEN (MEMB (OR (CADDR MENUITEM)
|
||||
(CAR MENUITEM))
|
||||
'(Compare See See% right See% both See% left))
|
||||
(* ; "Close the previous ones")
|
||||
(CLOSEWITH.DOIT WINDOW))
|
||||
(LET
|
||||
(CHILDREN)
|
||||
(SETQ CHILDREN
|
||||
(SELECTQ (OR (CADDR MENUITEM)
|
||||
(CAR MENUITEM))
|
||||
(Compare (IF (AND FILE1 FILE2)
|
||||
THEN (SELECTQ TYPE
|
||||
(SOURCE (CSBROWSER FILE1 FILE2 NIL LABEL1 LABEL2
|
||||
(RELCREATEREGION
|
||||
[FIXR (TIMES 0.75 (FETCH (REGION WIDTH)
|
||||
OF (WINDOWPROP WINDOW
|
||||
'REGION]
|
||||
200
|
||||
'LEFT
|
||||
'TOP
|
||||
`(,WINDOW 0.125)
|
||||
(IPLUS (FETCH (REGION BOTTOM)
|
||||
OF (WINDOWPROP WINDOW 'REGION))
|
||||
20)
|
||||
T)))
|
||||
(COMPILED (FLASHWINDOW T)
|
||||
(PRIN3 "Cannot compare compiled files" T))
|
||||
((TEXT TEDIT)
|
||||
(* ;;
|
||||
"Works for TEDIT, but doesn't detect image object differences")
|
||||
|
||||
(COMPARETEXT FILE1 FILE2 'LINE NIL (LIST LABEL1 LABEL2)))
|
||||
(PROGN (PRIN3 "Unable to compare, showing both" T)
|
||||
(TEDIT-SEE-VERSIONS FILE1 FILE2 LABEL1 LABEL2)))
|
||||
ELSE (PRIN3 "Only one file" T)))
|
||||
(See% left (IF FILE1
|
||||
THEN (TEDIT-SEE FILE1 NIL NIL (CONCAT "SEE window for " LABEL1))
|
||||
(COMPARETEXT FILE1 FILE2 'LINE
|
||||
(RELCREATEPOSITION `(,WINDOW 0.5)
|
||||
(IPLUS (FETCH (REGION BOTTOM)
|
||||
OF (WINDOWPROP WINDOW 'REGION))
|
||||
20))
|
||||
(LIST LABEL1 LABEL2)))
|
||||
(PROGN (FLASHWINDOW T)
|
||||
(PRIN3 "Unable to compare, showing both" T)
|
||||
(TEDIT-SEE-VERSIONS FILE1 FILE2 LABEL1 LABEL2)))
|
||||
ELSE (FLASHWINDOW T)
|
||||
(PRIN3 "No file to print" T)))
|
||||
(See% right (IF FILE2
|
||||
THEN (TEDIT-SEE FILE2 NIL NIL (CONCAT "SEE window for " LABEL2))
|
||||
ELSE (FLASHWINDOW T)
|
||||
(PRIN3 "No file to print" T)))
|
||||
(See% both (IF (AND FILE1 FILE2)
|
||||
THEN (EXAMINEFILES FILE1 FILE2 LABEL1 LABEL2)
|
||||
ELSE (PRIN3 "Only one file" T)))
|
||||
(Copy% -> (LET [(DEST (COPYFILE FILE1 (PACKFILENAME 'VERSION NIL FILE2]
|
||||
(PRIN3 (CL:IF DEST
|
||||
(CONCAT "Copied to " DEST)
|
||||
(CONCAT FILE2 " could not be copied"))
|
||||
T)))
|
||||
(Copy% <- (LET [(DEST (COPYFILE FILE2 (PACKFILENAME 'VERSION NIL FILE1]
|
||||
(PRIN3 (CL:IF DEST
|
||||
(CONCAT "Copied to " DEST)
|
||||
(CONCAT FILE1 " could not be copied"))
|
||||
T)))
|
||||
(SHOULDNT])
|
||||
(PRIN3 "Only one file" T)))
|
||||
(See% left (IF FILE1
|
||||
THEN (TEDIT-SEE FILE1 (RELCREATEREGION 700 700 'RIGHT 'TOP
|
||||
`(,WINDOW 0.5)
|
||||
(IPLUS (FETCH (REGION BOTTOM)
|
||||
OF (WINDOWPROP WINDOW 'REGION))
|
||||
-1)
|
||||
T)
|
||||
NIL
|
||||
(CONCAT "SEE window for " LABEL1))
|
||||
ELSE (FLASHWINDOW T)
|
||||
(PRIN3 "No file to print" T)))
|
||||
(See% right (IF FILE2
|
||||
THEN (TEDIT-SEE FILE2 (RELCREATEREGION 700 700 'LEFT 'TOP
|
||||
`(,WINDOW 0.5)
|
||||
(IPLUS (FETCH (REGION BOTTOM)
|
||||
OF (WINDOWPROP WINDOW 'REGION))
|
||||
-1)
|
||||
T)
|
||||
NIL
|
||||
(CONCAT "SEE window for " LABEL2))
|
||||
ELSE (FLASHWINDOW T)
|
||||
(PRIN3 "No file to print" T)))
|
||||
((See See% both)
|
||||
(IF (AND FILE1 FILE2)
|
||||
THEN (EXAMINEFILES FILE1 FILE2 LABEL1 LABEL2
|
||||
(RELCREATEREGION 1400 700 'LEFT 'TOP `(,WINDOW 0.5 -701)
|
||||
(IPLUS (FETCH (REGION BOTTOM) OF (WINDOWPROP WINDOW
|
||||
'REGION))
|
||||
-1)
|
||||
T))
|
||||
ELSE (FLASHWINDOW T)
|
||||
(PRIN3 "Only one file" T)))
|
||||
(Copy% -> (LET [(DEST (COPYFILE FILE1 (PACKFILENAME 'VERSION NIL FILE2]
|
||||
(PRIN3 (CL:IF DEST
|
||||
(CONCAT "Copied to " DEST)
|
||||
(PROGN (FLASHWINDOW T)
|
||||
(CONCAT FILE2 " could not be copied")))
|
||||
T)))
|
||||
(Copy% <- (LET [(DEST (COPYFILE FILE2 (PACKFILENAME 'VERSION NIL FILE1]
|
||||
(PRIN3 (CL:IF DEST
|
||||
(CONCAT "Copied to " DEST)
|
||||
(PROGN (FLASHWINDOW T)
|
||||
(CONCAT FILE1 " could not be copied")))
|
||||
T)))
|
||||
(SHOULDNT)))
|
||||
(CLOSEWITH CHILDREN WINDOW)
|
||||
(MOVEWITH CHILDREN WINDOW])
|
||||
)
|
||||
|
||||
(RPAQQ CDTABLEBROWSER.MENUITEMS ((Compare CD-MENUFN)
|
||||
@@ -1716,28 +1912,31 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
|
||||
(Copy% <- CD-MENUFN)
|
||||
(See% left CD-MENUFN)
|
||||
(See% right CD-MENUFN)
|
||||
(See% both CD-MENUFN)))
|
||||
(See% both CD-MENUFN)
|
||||
(See CD-MENUFN)))
|
||||
|
||||
(FILESLOAD (SYSLOAD)
|
||||
COMPARESOURCES COMPARETEXT)
|
||||
(PUTPROPS COMPAREDIRECTORIES COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1987 1988 1990 1994 1998
|
||||
2018 2020 2021))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (2418 17067 (COMPAREDIRECTORIES 2428 . 12186) (COMPAREDIRECTORIES.INFOS 12188 . 13867) (
|
||||
COMPAREDIRECTORIES.INFOS.TYPE 13869 . 14451) (MATCHNAME 14453 . 14983) (CD.INSURECDVALUE 14985 . 16599
|
||||
) (CD.UPDATEWIDTHS 16601 . 17065)) (17068 26728 (CDFILES 17078 . 23061) (CDFILES.MATCH 23063 . 24449)
|
||||
(CDFILES.PATS 24451 . 26726)) (26729 41174 (CDPRINT 26739 . 29343) (CDPRINT.LINE 29345 . 31901) (
|
||||
CDPRINT.MAXWIDTHS 31903 . 36018) (CDPRINT.COLHEADERS 36020 . 36658) (CDPRINT.COLUMNS 36660 . 40539) (
|
||||
CDTEDIT 40541 . 41172)) (41175 44371 (CDMAP 41185 . 42617) (CDENTRY 42619 . 42928) (CDSUBSET 42930 .
|
||||
44369)) (44372 51313 (BINCOMP 44382 . 48671) (EOLTYPE 48673 . 50638) (EOLTYPE.SHOW 50640 . 51311)) (
|
||||
51841 65048 (FIND-UNCOMPILED-FILES 51851 . 55494) (FIND-UNSOURCED-FILES 55496 . 58305) (
|
||||
FIND-SOURCE-FILES 58307 . 60011) (FIND-COMPILED-FILES 60013 . 62091) (FIND-UNLOADED-FILES 62093 .
|
||||
62837) (FIND-LOADED-FILES 62839 . 63393) (FIND-MULTICOMPILED-FILES 63395 . 65046)) (65049 73251 (
|
||||
CREATED-AS 65059 . 69856) (SOURCE-FOR-COMPILED-P 69858 . 72556) (COMPILE-SOURCE-DATE-DIFF 72558 .
|
||||
73249)) (73252 83558 (FIX-DIRECTORY-DATES 73262 . 76255) (FIX-EQUIV-DATES 76257 . 77782) (
|
||||
COPY-COMPARED-FILES 77784 . 79605) (COPY-MISSING-FILES 79607 . 81764) (COMPILED-ON-SAME-SOURCE 81766
|
||||
. 83556)) (83752 91440 (CDBROWSER 83762 . 88335) (CDBROWSER.STRINGS 88337 . 91438)) (91602 92874 (
|
||||
CD.TABLEITEM 91612 . 91832) (CD.TABLEITEM.PRINTFN 91834 . 92033) (CD.TABLEITEM.COPYFN 92035 . 92629) (
|
||||
CDTABLEBROWSER.HEADING.REPAINTFN 92631 . 92872)) (92875 100220 (CDTABLEBROWSER.WHENSELECTEDFN 92885 .
|
||||
93353) (CD.COMMANDSELECTEDFN 93355 . 97161) (CD-MENUFN 97163 . 100218)))))
|
||||
(FILEMAP (NIL (2536 19051 (COMPAREDIRECTORIES 2546 . 8995) (COMPAREDIRECTORIES.INFOS 8997 . 11117) (
|
||||
CDENTRIES.SELECT 11119 . 15805) (COMPAREDIRECTORIES.INFOS.TYPE 15807 . 16435) (MATCHNAME 16437 . 16967
|
||||
) (CD.INSURECDVALUE 16969 . 18583) (CD.UPDATEWIDTHS 18585 . 19049)) (19052 29324 (CDFILES 19062 .
|
||||
25418) (CDFILES.MATCH 25420 . 27045) (CDFILES.PATS 27047 . 29322)) (29325 44410 (CDPRINT 29335 . 31680
|
||||
) (CDPRINT.HEADER 31682 . 32579) (CDPRINT.LINE 32581 . 35137) (CDPRINT.MAXWIDTHS 35139 . 39254) (
|
||||
CDPRINT.COLHEADERS 39256 . 39894) (CDPRINT.COLUMNS 39896 . 43775) (CDTEDIT 43777 . 44408)) (44411
|
||||
52780 (CDMAP 44421 . 45853) (CDENTRY 45855 . 46164) (CDSUBSET 46166 . 47605) (CDMERGE 47607 . 51461) (
|
||||
CDMERGE.COMMON 51463 . 52778)) (52781 60319 (BINCOMP 52791 . 57080) (EOLTYPE 57082 . 59644) (
|
||||
EOLTYPE.SHOW 59646 . 60317)) (60847 74054 (FIND-UNCOMPILED-FILES 60857 . 64500) (FIND-UNSOURCED-FILES
|
||||
64502 . 67311) (FIND-SOURCE-FILES 67313 . 69017) (FIND-COMPILED-FILES 69019 . 71097) (
|
||||
FIND-UNLOADED-FILES 71099 . 71843) (FIND-LOADED-FILES 71845 . 72399) (FIND-MULTICOMPILED-FILES 72401
|
||||
. 74052)) (74055 82257 (CREATED-AS 74065 . 78862) (SOURCE-FOR-COMPILED-P 78864 . 81562) (
|
||||
COMPILE-SOURCE-DATE-DIFF 81564 . 82255)) (82258 92564 (FIX-DIRECTORY-DATES 82268 . 85261) (
|
||||
FIX-EQUIV-DATES 85263 . 86788) (COPY-COMPARED-FILES 86790 . 88611) (COPY-MISSING-FILES 88613 . 90770)
|
||||
(COMPILED-ON-SAME-SOURCE 90772 . 92562)) (92758 99800 (CDBROWSER 92768 . 96695) (CDBROWSER.STRINGS
|
||||
96697 . 99798)) (99962 101234 (CD.TABLEITEM 99972 . 100192) (CD.TABLEITEM.PRINTFN 100194 . 100393) (
|
||||
CD.TABLEITEM.COPYFN 100395 . 100989) (CDTABLEBROWSER.HEADING.REPAINTFN 100991 . 101232)) (101235
|
||||
111110 (CDTABLEBROWSER.WHENSELECTEDFN 101245 . 101713) (CD.COMMANDSELECTEDFN 101715 . 105106) (
|
||||
CD-MENUFN 105108 . 111108)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -1,13 +1,12 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED " 3-Jan-2022 08:40:38"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>COMPARESOURCES.;106 42666
|
||||
(FILECREATED "28-Jan-2022 18:22:40"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>COMPARESOURCES.;118 41270
|
||||
|
||||
:CHANGES-TO (FNS CSOBJ.BUTTONEVENTINFN CSOBJ.COPYBUTTONEVENTINFN)
|
||||
(VARS COMPARESOURCESCOMS)
|
||||
:CHANGES-TO (FNS CSOBJ.BUTTONEVENTINFN)
|
||||
|
||||
:PREVIOUS-DATE "27-Dec-2021 11:56:48"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>COMPARESOURCES.;105)
|
||||
:PREVIOUS-DATE "28-Jan-2022 17:12:39"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>COMPARESOURCES.;116)
|
||||
|
||||
|
||||
(* ; "
|
||||
@@ -38,13 +37,9 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
|
||||
(DEFINEQ
|
||||
|
||||
(COMPARESOURCES
|
||||
[LAMBDA (FILEX FILEY EXAMINE DW? LISTSTREAM) (* ; "Edited 26-Dec-2021 21:32 by rmk")
|
||||
(* ; "Edited 20-Dec-2021 09:51 by rmk")
|
||||
(* ; "Edited 9-Dec-2021 23:13 by rmk")
|
||||
(* ; "Edited 4-Dec-2021 19:54 by rmk")
|
||||
(* ; "Edited 23-Nov-2021 19:46 by rmk:")
|
||||
(* ; "Edited 30-Oct-2021 20:13 by rmk:")
|
||||
(* ; "Edited 19-Apr-2018 10:49 by rmk:")
|
||||
[LAMBDA (FILEX FILEY EXAMINE DW? LISTSTREAM) (* ; "Edited 28-Jan-2022 17:10 by rmk")
|
||||
(* ; "Edited 26-Dec-2021 21:32 by rmk")
|
||||
(* ; "Edited 19-Apr-2018 10:49 by rmk:")
|
||||
|
||||
(* ;;; "Compare two lisp source files, reporting differences. LISTSTREAM if given is an open stream")
|
||||
|
||||
@@ -95,7 +90,7 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
|
||||
'DECLARE%:]
|
||||
(SETQ BODYY (CL:SET-DIFFERENCE BODYY DECLAREY))
|
||||
(WITH-READER-ENVIRONMENT (OR ENVX ENVY (MAKE-READER-ENVIRONMENT))
|
||||
(\CS.COMPARE.MASTERS BODYX BODYY DW? CONTEXTSTREAM COMPARESTREAM)
|
||||
(\CS.COMPARE.MASTERS BODYX BODYY DW?)
|
||||
|
||||
(* ;; "Done with the non-DECLARE: expressions. Nw sort what's left according to when it is eval'ed so that we can hopefully further reduce the amount of stuff to compare")
|
||||
|
||||
@@ -128,7 +123,7 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
|
||||
"REVERSE because \CS.SORT.DECLARES delivered expressions in reverse order")
|
||||
(\CS.COMPARE.MASTERS (REVERSE X)
|
||||
(REVERSE Y)
|
||||
DW? CONTEXTSTREAM COMPARESTREAM]
|
||||
DW?]
|
||||
(TERPRI CONTEXTSTREAM))
|
||||
(SELECTQ INSERTOBJECTS
|
||||
(OBJECTWINDOW (CL:UNLESS (EQ 0 (GETFILEPTR CONTEXTSTREAM))
|
||||
@@ -143,15 +138,17 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
|
||||
'SAME])
|
||||
|
||||
(\CS.COMPARE.MASTERS
|
||||
[LAMBDA (BODYX BODYY DW?) (* ; "Edited 19-Dec-2021 21:05 by rmk")
|
||||
(* ; "Edited 9-Dec-2021 23:26 by rmk")
|
||||
(* ; "Edited 4-Dec-2021 10:00 by rmk")
|
||||
(* ; "Edited 2-Dec-2021 14:25 by rmk:")
|
||||
(* ; "Edited 27-Nov-2021 12:31 by rmk:")
|
||||
[LAMBDA (BODYX BODYY DW?) (* ; "Edited 18-Jan-2022 22:00 by rmk")
|
||||
(* ; "Edited 19-Dec-2021 21:05 by rmk")
|
||||
(* ; "Edited 5-Sep-2020 19:01 by rmk:")
|
||||
(* ; "Edited 15-Apr-88 14:41 by bvm")
|
||||
(DECLARE (USEDFREE DIFFERENCES COMPARESTREAM))
|
||||
(LET (YTHING XTHING PRED DIFS TMP)
|
||||
(SETQ BODYX (CL:REMOVE-IF (FUNCTION EDITDATE?)
|
||||
BODYX)) (* ;
|
||||
"We don't care about editdate comments")
|
||||
(SETQ BODYY (CL:REMOVE-IF (FUNCTION EDITDATE?)
|
||||
BODYY))
|
||||
(SETQ BODYX (\CS.FIXFNS BODYX))
|
||||
(SETQ BODYY (\CS.FIXFNS BODYY))
|
||||
(CL:WHEN (AND (SETQ XTHING (ASSOC 'DEFINE-FILE-INFO BODYX))
|
||||
@@ -555,50 +552,50 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
|
||||
ELSE (ADD LINELENGTH (CHARWIDTH C FONT])
|
||||
|
||||
(CSOBJ.BUTTONEVENTINFN
|
||||
[LAMBDA (OBJ WINDOW) (* ; "Edited 26-Dec-2021 16:28 by rmk")
|
||||
(* ; "Edited 24-Dec-2021 14:09 by rmk")
|
||||
(* ; "Edited 20-Dec-2021 11:01 by rmk")
|
||||
(* ; "Edited 12-Dec-2021 21:30 by rmk")
|
||||
(* ; "Edited 10-Dec-2021 10:21 by rmk")
|
||||
(* ; "Edited 7-Dec-2021 17:49 by rmk")
|
||||
(* ; "Edited 4-Dec-2021 20:05 by rmk")
|
||||
[LAMBDA (OBJ WINDOW) (* ; "Edited 28-Jan-2022 18:22 by rmk")
|
||||
(* ; "Edited 25-Jan-2022 16:04 by rmk")
|
||||
(* ; "Edited 23-Jan-2022 18:11 by rmk")
|
||||
(LET
|
||||
[(COMPAREDATA (IMAGEOBJPROP OBJ 'COMPAREDATA]
|
||||
(CL:WHEN (AND COMPAREDATA (MOUSESTATE LEFT)
|
||||
(UNTILMOUSESTATE (NOT LEFT)))
|
||||
[LET ((NAME (POP COMPAREDATA))
|
||||
(TYPE (POP COMPAREDATA))
|
||||
(DEF1 (POP COMPAREDATA))
|
||||
(DEF2 (POP COMPAREDATA))
|
||||
(TITLE1 (POP COMPAREDATA))
|
||||
(TITLE2 (CAR COMPAREDATA)))
|
||||
(LET
|
||||
((NAME (POP COMPAREDATA))
|
||||
(TYPE (POP COMPAREDATA))
|
||||
(DEF1 (POP COMPAREDATA))
|
||||
(DEF2 (POP COMPAREDATA))
|
||||
(TITLE1 (POP COMPAREDATA))
|
||||
(TITLE2 (CAR COMPAREDATA)))
|
||||
|
||||
(* ;; "Move the cursor to just slightly below the current object, so that the edit windows are well aligned. We have to figure out the bottom of the current object, in screen coordinates.")
|
||||
(* ;; "Move the cursor to just slightly below the current object, so that the edit windows are well aligned. We have to figure out the bottom of the current object, in screen coordinates.")
|
||||
|
||||
[LET ((OBJREGION (OBJ.FIND.REGION WINDOW OBJ)))
|
||||
(\CURSORPOSITION (IPLUS 20 LASTMOUSEX)
|
||||
(IPLUS (IDIFFERENCE (FETCH (REGION BOTTOM) OF (OBJ.FIND.REGION WINDOW OBJ))
|
||||
(FETCH (REGION HEIGHT)
|
||||
OBJREGION))
|
||||
(FETCH (REGION TOP) OF (WINDOWREGION WINDOW]
|
||||
(IF (IMAGEOBJPROP OBJ 'ONLYONE)
|
||||
THEN [SEDIT:SEDIT
|
||||
(OR DEF1 DEF2)
|
||||
`(:REGION ,(RELGETREGION 600 (CL:IF (ILESSP (COUNT (OR DEF1 DEF2))
|
||||
100)
|
||||
150
|
||||
400)
|
||||
'LEFT
|
||||
'TOP NIL NIL T]
|
||||
ELSE (* ; "Spread the arguments")
|
||||
(EXAMINEDEFS NAME TYPE DEF1 DEF2 TITLE1 TITLE2
|
||||
(RELGETREGION 800 (CL:IF (ILESSP (IMAX (COUNT DEF1)
|
||||
(COUNT DEF2))
|
||||
100)
|
||||
150
|
||||
400)
|
||||
'LEFT
|
||||
'TOP NIL NIL T])])
|
||||
[LET ((OBJREGION (OBJ.FIND.REGION WINDOW OBJ)))
|
||||
(\CURSORPOSITION (IPLUS 20 LASTMOUSEX)
|
||||
(IPLUS (IDIFFERENCE (FETCH (REGION BOTTOM) OF OBJREGION)
|
||||
(FETCH (REGION HEIGHT) OF OBJREGION))
|
||||
(FETCH (REGION TOP) OF (WINDOWREGION WINDOW]
|
||||
(LET
|
||||
[EWINDOW (RELPOS (RELCREATEPOSITION `(,WINDOW 0.5)
|
||||
`(,WINDOW 0 -2]
|
||||
(CLOSEWITH.DOIT WINDOW)
|
||||
(SETQ EWINDOW
|
||||
(IF (IMAGEOBJPROP OBJ 'ONLYONE)
|
||||
THEN
|
||||
[SEDIT:GET-WINDOW
|
||||
(SEDIT:SEDIT (OR DEF1 DEF2)
|
||||
`(:REGION ,(RELCREATEREGION 600 (CL:IF (ILESSP (COUNT (OR DEF1 DEF2))
|
||||
100)
|
||||
150
|
||||
400)
|
||||
(CL:IF DEF1
|
||||
'RIGHT
|
||||
'LEFT)
|
||||
'TOP RELPOS NIL T]
|
||||
ELSE (* ; "Spread the arguments")
|
||||
(EXAMINEDEFS NAME TYPE DEF1 DEF2 TITLE1 TITLE2 RELPOS)))
|
||||
(CLOSEWITH EWINDOW WINDOW)
|
||||
(MOVEWITH EWINDOW WINDOW)
|
||||
EWINDOW)))])
|
||||
|
||||
(CSOBJ.COPYBUTTONEVENTINFN
|
||||
[LAMBDA (OBJ WINDOW REGION) (* ; "Edited 3-Jan-2022 08:36 by rmk")
|
||||
@@ -625,14 +622,14 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
|
||||
(DEFINEQ
|
||||
|
||||
(CSBROWSER
|
||||
[LAMBDA (FILEX FILEY DW? LABEL1 LABEL2 REGION) (* ; "Edited 26-Dec-2021 21:06 by rmk")
|
||||
(* ; "Edited 24-Dec-2021 22:48 by rmk")
|
||||
(* ; "Edited 20-Dec-2021 09:55 by rmk")
|
||||
(* ; "Edited 16-Dec-2021 12:38 by rmk")
|
||||
(* ; "Edited 10-Dec-2021 12:03 by rmk")
|
||||
[LAMBDA (FILEX FILEY DW? LABEL1 LABEL2 REGION)
|
||||
|
||||
(* ;; "Edited 24-Jan-2022 23:11 by rmk: EXAMINE is non-NIL, we run the compare twice. Once to get the TEDIT up as a kind of table of contents, and the second time to run through all of the SEDIT windows.")
|
||||
|
||||
(* ;; "If EXAMINE is non-NIL, we run the compare twice. Once to get the TEDIT up as a kind of table of contents, and the second time to run through all of the SEDIT windows.")
|
||||
|
||||
(* ;; "Returns browser window")
|
||||
|
||||
(* ;; "Don't use the INFILEP value, because that might screw with capitalization that the caller prefers. If the file can be found that way, then lower functions will find it.")
|
||||
|
||||
(DECLARE (SPECVARS LABEL1 LABEL2))
|
||||
@@ -651,24 +648,24 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
|
||||
" and "
|
||||
(OR LABEL2 (PACKFILENAME 'HOST NIL 'DIRECTORY NIL 'BODY FILEY]
|
||||
(SELECTQ COMPARESOURCES-BROWSER-TYPE
|
||||
(OBJECTWINDOW (LET [(WINDOW (OBJ.CREATEW 'VERTICAL NIL TITLE NIL T (FONTPROP
|
||||
DEFAULTFONT
|
||||
'HEIGHT]
|
||||
(OBJECTWINDOW (LET [(WINDOW (OBJ.CREATEW 'VERTICAL REGION TITLE NIL T
|
||||
(FONTPROP DEFAULTFONT 'HEIGHT]
|
||||
(WINDOWPROP WINDOW 'UNDERSCONTRUCTION T)
|
||||
(GETPROMPTWINDOW WINDOW T)
|
||||
(WINDOWPROP WINDOW 'UNDERSCONTRUCTION NIL)
|
||||
(PROG1 (COMPARESOURCES FILEX FILEY '(T 2WINDOWS)
|
||||
DW? WINDOW)
|
||||
(OPENW WINDOW))))
|
||||
(TEDIT [LET ((TSTREAM (OPENTEXTSTREAM)))
|
||||
(COMPARESOURCES FILEX FILEY '(T 2WINDOWS)
|
||||
DW? WINDOW)
|
||||
(OPENW WINDOW)
|
||||
WINDOW))
|
||||
(TEDIT (LET ((TSTREAM (OPENTEXTSTREAM)))
|
||||
(DSPFONT DEFAULTFONT TSTREAM)
|
||||
(PROG1 (COMPARESOURCES FILEX FILEY EXAMINE DW? TSTREAM)
|
||||
[TEDIT TSTREAM NIL NIL `(READONLY T WINDOWTYPE COMPARESOURCES-TEDIT
|
||||
TITLE ,TITLE]
|
||||
(CL:WHEN NIL
|
||||
EXAMINE
|
||||
(COMPARESOURCES FILEX FILEY EXAMINE DW? (OPENSTREAM '{NULL}
|
||||
'OUTPUT))))])
|
||||
(COMPARESOURCES FILEX FILEY EXAMINE DW? TSTREAM)
|
||||
[TEDIT TSTREAM REGION NIL `(READONLY T WINDOWTYPE COMPARESOURCES-TEDIT TITLE
|
||||
,TITLE]
|
||||
(CL:WHEN NIL
|
||||
EXAMINE
|
||||
(COMPARESOURCES FILEX FILEY EXAMINE DW? (OPENSTREAM '{NULL} 'OUTPUT)))
|
||||
(WFROMDS TSTREAM)))
|
||||
(HELP])
|
||||
)
|
||||
|
||||
@@ -689,16 +686,16 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
|
||||
)
|
||||
(PUTPROPS COMPARESOURCES COPYRIGHT ("Xerox Corporation" 1985 1986 1987 1988 2018 2020 2021))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (1920 27703 (COMPARESOURCES 1930 . 8443) (\CS.COMPARE.MASTERS 8445 . 16581) (
|
||||
\CS.COMPARE.TYPES 16583 . 19721) (\CS.EXAMINE 19723 . 23950) (\CS.FIXFNS 23952 . 25454) (
|
||||
\CS.SORT.DECLARES 25456 . 25799) (\CS.SORT.DECLARE1 25801 . 27221) (\CS.FILTER.GARBAGE 27223 . 27701))
|
||||
(27704 31684 (\CS.ISFNFORM 27714 . 27982) (\CS.COMPARE.FNS 27984 . 28226) (\CS.FNSID 28228 . 28372) (
|
||||
\CS.ISVARFORM 28374 . 28479) (\CS.COMPARE.VARS 28481 . 29143) (\CS.ISMACROFORM 29145 . 29283) (
|
||||
\CS.ISRECFORM 29285 . 29378) (\CS.ISCOURIERFORM 29380 . 29480) (\CS.ISTEMPLATEFORM 29482 . 29580) (
|
||||
\CS.COMPARE.TEMPLATES 29582 . 29947) (\CS.ISPROPFORM 29949 . 30104) (\CS.PROP.NAME 30106 . 30251) (
|
||||
\CS.COMPARE.PROPS 30253 . 30410) (\CS.ISADDVARFORM 30412 . 30505) (\CS.COMPARE.ADDVARS 30507 . 30672)
|
||||
(\CS.ISFPKGCOMFORM 30674 . 30881) (\CS.COMPARE.FPKGCOMS 30883 . 31090) (\CS.COMPARE.DEFINE-FILE-INFO
|
||||
31092 . 31682)) (31685 38243 (CSOBJ.CREATE 31695 . 32108) (CSOBJ.DISPLAYFN 32110 . 32863) (
|
||||
CSOBJ.IMAGEBOXFN 32865 . 35026) (CSOBJ.BUTTONEVENTINFN 35028 . 37993) (CSOBJ.COPYBUTTONEVENTINFN 37995
|
||||
. 38241)) (39107 42184 (CSBROWSER 39117 . 42182)))))
|
||||
(FILEMAP (NIL (1850 27174 (COMPARESOURCES 1860 . 7906) (\CS.COMPARE.MASTERS 7908 . 16052) (
|
||||
\CS.COMPARE.TYPES 16054 . 19192) (\CS.EXAMINE 19194 . 23421) (\CS.FIXFNS 23423 . 24925) (
|
||||
\CS.SORT.DECLARES 24927 . 25270) (\CS.SORT.DECLARE1 25272 . 26692) (\CS.FILTER.GARBAGE 26694 . 27172))
|
||||
(27175 31155 (\CS.ISFNFORM 27185 . 27453) (\CS.COMPARE.FNS 27455 . 27697) (\CS.FNSID 27699 . 27843) (
|
||||
\CS.ISVARFORM 27845 . 27950) (\CS.COMPARE.VARS 27952 . 28614) (\CS.ISMACROFORM 28616 . 28754) (
|
||||
\CS.ISRECFORM 28756 . 28849) (\CS.ISCOURIERFORM 28851 . 28951) (\CS.ISTEMPLATEFORM 28953 . 29051) (
|
||||
\CS.COMPARE.TEMPLATES 29053 . 29418) (\CS.ISPROPFORM 29420 . 29575) (\CS.PROP.NAME 29577 . 29722) (
|
||||
\CS.COMPARE.PROPS 29724 . 29881) (\CS.ISADDVARFORM 29883 . 29976) (\CS.COMPARE.ADDVARS 29978 . 30143)
|
||||
(\CS.ISFPKGCOMFORM 30145 . 30352) (\CS.COMPARE.FPKGCOMS 30354 . 30561) (\CS.COMPARE.DEFINE-FILE-INFO
|
||||
30563 . 31153)) (31156 37220 (CSOBJ.CREATE 31166 . 31579) (CSOBJ.DISPLAYFN 31581 . 32334) (
|
||||
CSOBJ.IMAGEBOXFN 32336 . 34497) (CSOBJ.BUTTONEVENTINFN 34499 . 36970) (CSOBJ.COPYBUTTONEVENTINFN 36972
|
||||
. 37218)) (38084 40788 (CSBROWSER 38094 . 40786)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,22 +1,28 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED " 2-Jan-2022 23:15:58"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>EXAMINEDEFS.;19 6871
|
||||
(FILECREATED "28-Jan-2022 23:36:31"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>EXAMINEDEFS.;32 11715
|
||||
|
||||
:CHANGES-TO (FNS EXAMINEFILES)
|
||||
:CHANGES-TO (FNS TEDITDEF)
|
||||
|
||||
:PREVIOUS-DATE "30-Dec-2021 21:49:58"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>EXAMINEDEFS.;18)
|
||||
:PREVIOUS-DATE "25-Jan-2022 10:20:31"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>EXAMINEDEFS.;31)
|
||||
|
||||
|
||||
(PRETTYCOMPRINT EXAMINEDEFSCOMS)
|
||||
|
||||
(RPAQQ EXAMINEDEFSCOMS ((FNS EXAMINEDEFS EXAMINEFILES)
|
||||
(INITVARS (EXAMINEDEFS-PROCESS-LIST))))
|
||||
(RPAQQ EXAMINEDEFSCOMS ((FNS EXAMINEDEFS EXAMINEFILES TEDITDEF)
|
||||
(INITVARS (EXAMINEDEFS-PROCESS-LIST)
|
||||
(EXAMINEWITH 'COMPARETEXT))
|
||||
(FILES (SYSLOAD)
|
||||
COMPARETEXT)))
|
||||
(DEFINEQ
|
||||
|
||||
(EXAMINEDEFS
|
||||
[LAMBDA (NAME TYPE SOURCE1 SOURCE2 TITLE1 TITLE2 REGION) (* ; "Edited 24-Dec-2021 22:39 by rmk")
|
||||
[LAMBDA (NAME TYPE SOURCE1 SOURCE2 TITLE1 TITLE2 REGION) (* ; "Edited 23-Jan-2022 17:40 by rmk")
|
||||
(* ; "Edited 18-Jan-2022 22:40 by rmk")
|
||||
(* ; "Edited 12-Jan-2022 17:29 by rmk")
|
||||
(* ; "Edited 24-Dec-2021 22:39 by rmk")
|
||||
(* ; "Edited 20-Dec-2021 11:06 by rmk")
|
||||
|
||||
(* ;; "This provides for side-by-side examination of separate but presumably related expressions. The (LISTP) expressions can be provided directly as SOURCE1 and SOURCE2 or, if NAME is given the copies of the definitions of NAME as TYPE on the two sources are examined.")
|
||||
@@ -30,6 +36,8 @@
|
||||
(ERROR SOURCE1 " cannot be examined"))
|
||||
(CL:UNLESS (LISTP SOURCE2)
|
||||
(ERROR SOURCE2 " cannot be examined")))
|
||||
(CL:UNLESS TYPE
|
||||
(SETQ TYPE 'FNS))
|
||||
|
||||
(* ;; "TITLE1 and TITLE2 are optional strings that will be used to construct the titles of the SEDIT windows. We would like to know where GETDEF got the definition so we can use that, but there isn't an interface that provides that information (extended WHEREIS?)")
|
||||
|
||||
@@ -68,65 +76,129 @@
|
||||
(* ;;
|
||||
"Crude suggestions for height, width, position. Suggest shorter window for smaller structures")
|
||||
|
||||
(CL:UNLESS (REGIONP REGION)
|
||||
(SETQ REGION (GETREGION)))
|
||||
(LET (W1 W2 HALFWIDTH)
|
||||
(SETQ HALFWIDTH (IQUOTIENT (FETCH (REGION WIDTH) OF REGION)
|
||||
2))
|
||||
[SETQ W1
|
||||
(SEDIT:GET-WINDOW (SEDIT:SEDIT DEF1
|
||||
`(:NAME ,(CONCAT NAME " from " TITLE1)
|
||||
:REGION
|
||||
,(CREATE REGION
|
||||
USING REGION WIDTH _ HALFWIDTH)
|
||||
:DONT-KEEP-WINDOW-REGION T]
|
||||
[SETQ W2
|
||||
(SEDIT:GET-WINDOW
|
||||
(SEDIT:SEDIT DEF2
|
||||
`(:NAME ,(CONCAT NAME " from " TITLE2)
|
||||
:REGION
|
||||
,(CREATE REGION USING REGION LEFT _
|
||||
(IPLUS (FETCH (REGION LEFT)
|
||||
OF REGION)
|
||||
HALFWIDTH)
|
||||
WIDTH _ HALFWIDTH)
|
||||
:DONT-KEEP-WINDOW-REGION T]
|
||||
(SELECTQ EXAMINEWITH
|
||||
(SEDIT (CL:UNLESS (REGIONP REGION)
|
||||
(SETQ REGION (GETREGION)))
|
||||
[LET (R1 R2 HALFWIDTH W1 W2)
|
||||
(SETQ HALFWIDTH (IQUOTIENT (FETCH (REGION WIDTH)
|
||||
OF REGION)
|
||||
2))
|
||||
(SETQ R1 (CREATE REGION USING REGION WIDTH _ HALFWIDTH))
|
||||
(SETQ R2 (CREATE REGION USING REGION LEFT _
|
||||
(IPLUS (FETCH (REGION LEFT)
|
||||
OF REGION)
|
||||
HALFWIDTH)
|
||||
WIDTH _ HALFWIDTH))
|
||||
[SETQ W1
|
||||
(SEDIT:GET-WINDOW (SEDIT:SEDIT
|
||||
DEF1
|
||||
`(:NAME ,(CONCAT NAME " from " TITLE1)
|
||||
:REGION
|
||||
,(CREATE REGION
|
||||
USING REGION WIDTH _
|
||||
HALFWIDTH)
|
||||
R1 :DONT-KEEP-WINDOW-REGION T]
|
||||
[SETQ W2
|
||||
(SEDIT:GET-WINDOW (SEDIT:SEDIT
|
||||
DEF2
|
||||
`(:NAME ,(CONCAT NAME " from " TITLE2)
|
||||
:REGION
|
||||
,R2 :DONT-KEEP-WINDOW-REGION T]
|
||||
(ATTACHWINDOW W2 W1 'RIGHT 'JUSTIFY)
|
||||
(MODERNWINDOW W2)
|
||||
|
||||
(* ;;
|
||||
(* ;;
|
||||
"So we can kill the processes on the next call, if they still exist after the windows are closed.")
|
||||
|
||||
[PUSH EXAMINEDEFS-PROCESS-LIST (CONS W1 (WINDOWPROP W1 'PROCESS))
|
||||
(CONS W2 (WINDOWPROP W2 'PROCESS]
|
||||
(ATTACHWINDOW W2 W1 'RIGHT 'JUSTIFY)
|
||||
(MODERNWINDOW W2)))
|
||||
(PUSH EXAMINEDEFS-PROCESS-LIST (CONS W1 (WINDOWPROP
|
||||
W1
|
||||
'PROCESS))
|
||||
(CONS W2 (WINDOWPROP W2 'PROCESS])
|
||||
(COMPARETEXT [LET (COMPARETEXT.ALLCHUNKS CTWINDOW
|
||||
(KEY (LIST NAME TYPE SOURCE1 SOURCE2 TITLE1
|
||||
TITLE2)))
|
||||
(DECLARE (SPECVARS COMPARETEXT.ALLCHUNKS))
|
||||
(* ; "Reuse an existing CT graph window")
|
||||
(OR [FIND W IN (OPENWINDOWS)
|
||||
SUCHTHAT (EQUAL KEY (WINDOWPROP W
|
||||
'EXAMINEDEFS]
|
||||
(PROG1 (SETQ CTWINDOW
|
||||
(COMPARETEXT (TEDITDEF NAME DEF1 TYPE)
|
||||
(TEDITDEF NAME DEF2 TYPE)
|
||||
'LINE REGION (LIST TITLE1 TITLE2)
|
||||
(CONCAT "Compare sources of " NAME
|
||||
" as " TYPE)))
|
||||
(WINDOWPROP CTWINDOW 'EXAMINEDEFS
|
||||
(LIST NAME TYPE SOURCE1 SOURCE2 TITLE1
|
||||
TITLE2)))])
|
||||
(SHOULDNT)))
|
||||
(PROGN (EDITE DEF1)
|
||||
(EDITE DEF2])
|
||||
|
||||
(EXAMINEFILES
|
||||
[LAMBDA (FILE1 FILE2 TITLE1 TITLE2 REGION) (* ; "Edited 2-Jan-2022 23:15 by rmk")
|
||||
[LAMBDA (FILE1 FILE2 TITLE1 TITLE2 REGION) (* ; "Edited 25-Jan-2022 10:08 by rmk")
|
||||
(* ; "Edited 2-Jan-2022 23:15 by rmk")
|
||||
(* ; "Edited 30-Dec-2021 21:49 by rmk")
|
||||
|
||||
(* ;; "We get a region, then split it in half. Should we attach or at least co-move and co-close the 2 windows?")
|
||||
|
||||
(CL:UNLESS REGION
|
||||
(SETQ REGION (GETREGION)))
|
||||
(TEDIT-SEE FILE1 (RELCREATEREGION `(,REGION 0.5 -1)
|
||||
REGION
|
||||
'RIGHT
|
||||
'TOP
|
||||
`(,REGION 0.5)
|
||||
(FETCH (REGION TOP) OF REGION))
|
||||
NIL TITLE1)
|
||||
(TEDIT-SEE FILE2 (RELCREATEREGION `(,REGION 0.5 1)
|
||||
REGION
|
||||
'LEFT
|
||||
'TOP
|
||||
`(,REGION 0.5)
|
||||
(FETCH (REGION TOP) OF REGION))
|
||||
NIL TITLE2])
|
||||
(LIST (TEDIT-SEE FILE1 (RELCREATEREGION `(,REGION 0.5 -1)
|
||||
REGION
|
||||
'RIGHT
|
||||
'TOP
|
||||
`(,REGION 0.5)
|
||||
(FETCH (REGION TOP) OF REGION))
|
||||
NIL TITLE1)
|
||||
(TEDIT-SEE FILE2 (RELCREATEREGION `(,REGION 0.5 1)
|
||||
REGION
|
||||
'LEFT
|
||||
'TOP
|
||||
`(,REGION 0.5)
|
||||
(FETCH (REGION TOP) OF REGION))
|
||||
NIL TITLE2])
|
||||
|
||||
(TEDITDEF
|
||||
[LAMBDA (NAME DEF TYPE READERENVIRONMENT) (* ; "Edited 28-Jan-2022 23:36 by rmk")
|
||||
(* ; "Edited 12-Jan-2022 17:27 by rmk")
|
||||
(LET ((TSTREAM (OPENTEXTSTREAM)))
|
||||
(DSPFONT DEFAULTFONT TSTREAM)
|
||||
(SELECTQ (CAR DEF)
|
||||
(DEFINEQ (SETQ DEF (CADR DEF))
|
||||
(PRINTOUT TSTREAM .FONT BOLDFONT .P2 NAME T .FONT DEFAULTFONT 2)
|
||||
(PRINTDEF (CADR DEF)
|
||||
2 T NIL NIL TSTREAM))
|
||||
((DEFMACRO DEFUN) (* ; "Has args after name")
|
||||
(PRINTOUT TSTREAM "(" .P2 (CAR DEF)
|
||||
" " .FONT BOLDFONT .P2 (CADR DEF)
|
||||
.FONT DEFAULTFONT " " .P2 (CADDR DEF)
|
||||
T)
|
||||
(PRINTDEF (CDDDR DEF)
|
||||
3 T T NIL TSTREAM)
|
||||
(PRIN3 ")" TSTREAM))
|
||||
(IF (EQ NAME (CADR DEF))
|
||||
THEN
|
||||
(* ;; "Like RPAQQ, bold the name")
|
||||
|
||||
[PRINTOUT TSTREAM "(" .P2 (CAR DEF)
|
||||
" " .FONT BOLDFONT .P2 (CADR DEF)
|
||||
.FONT DEFAULTFONT T .TAB (IPLUS 2 (NCHARS (CAR DEF]
|
||||
(PRINTDEF (CDDR DEF)
|
||||
(IPLUS 2 (NCHARS (CAR DEF)))
|
||||
T T NIL TSTREAM)
|
||||
(PRIN3 ")" TSTREAM)
|
||||
ELSE (PRINTDEF DEF 3 NIL NIL NIL TSTREAM)))
|
||||
TSTREAM])
|
||||
)
|
||||
|
||||
(RPAQ? EXAMINEDEFS-PROCESS-LIST )
|
||||
|
||||
(RPAQ? EXAMINEWITH 'COMPARETEXT)
|
||||
|
||||
(FILESLOAD (SYSLOAD)
|
||||
COMPARETEXT)
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (510 6809 (EXAMINEDEFS 520 . 5811) (EXAMINEFILES 5813 . 6807)))))
|
||||
(FILEMAP (NIL (658 11573 (EXAMINEDEFS 668 . 8787) (EXAMINEFILES 8789 . 9984) (TEDITDEF 9986 . 11571)))
|
||||
))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
Binary file not shown.
1137
lispusers/GITFNS
Normal file
1137
lispusers/GITFNS
Normal file
File diff suppressed because it is too large
Load Diff
BIN
lispusers/GITFNS.LCOM
Normal file
BIN
lispusers/GITFNS.LCOM
Normal file
Binary file not shown.
BIN
lispusers/GITFNS.TEDIT
Normal file
BIN
lispusers/GITFNS.TEDIT
Normal file
Binary file not shown.
@@ -1,21 +1,21 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
(FILECREATED "26-Sep-91 14:35:23" |{PELE:MV:ENVOS}<LISPUSERS>MEDLEY>IDLEHAX.;2| 22593
|
||||
|
||||
changes to%: (FNS CONNECTPOLYS RANDOMPT KAL.ORAND)
|
||||
(VARS IDLEHAXCOMS)
|
||||
(RECORDS KALFIXP)
|
||||
(FILECREATED "15-Jan-2022 15:31:21" {DSK}<home>larry>medley>lispusers>IDLEHAX.;2 22517
|
||||
|
||||
previous date%: "10-Jun-88 17:50:01" |{PELE:MV:ENVOS}<LISPUSERS>MEDLEY>IDLEHAX.;1|)
|
||||
:CHANGES-TO (FNS CONNECTPOLYS)
|
||||
(VARS IDLEHAXCOMS)
|
||||
|
||||
:PREVIOUS-DATE "26-Sep-91 14:35:23" {DSK}<home>larry>medley>lispusers>IDLEHAX.;1)
|
||||
|
||||
|
||||
(* ; "
|
||||
Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights reserved.
|
||||
Copyright (c) 1985-1988, 1991 by Xerox Corporation.
|
||||
")
|
||||
|
||||
(PRETTYCOMPRINT IDLEHAXCOMS)
|
||||
|
||||
(RPAQQ IDLEHAXCOMS
|
||||
([COMS [ADDVARS (IDLE.FUNCTIONS (Lines 'LINES)
|
||||
((COMS [ADDVARS (IDLE.FUNCTIONS (Lines 'LINES)
|
||||
(Warp-Out 'WARP)
|
||||
(Radar 'WALKINGSPOKE)
|
||||
[Triangles (FUNCTION (LAMBDA (W)
|
||||
@@ -28,7 +28,8 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
|
||||
(Bubbles 'BUBBLES)
|
||||
(Kaleidoscope 'KALDEMO)
|
||||
(Windows 'IDLE-WINDOWS]
|
||||
(VARS (IDLE.DEFAULTFN 'LINES]
|
||||
(VARS (IDLE.DEFAULTFN 'LINES)
|
||||
(POLYGONWAIT3 250)))
|
||||
(COMS (* ; "for drawing polygons")
|
||||
(FNS POLYGONSDEMO POLYGONS CONNECTPOLYS DRAWPOLY1 RANDOMPT)
|
||||
(INITVARS (POLYGONSWINDOW))
|
||||
@@ -74,6 +75,8 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
|
||||
|
||||
(RPAQQ IDLE.DEFAULTFN LINES)
|
||||
|
||||
(RPAQQ POLYGONWAIT3 250)
|
||||
|
||||
|
||||
|
||||
(* ; "for drawing polygons")
|
||||
@@ -89,39 +92,39 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
|
||||
)
|
||||
|
||||
(CONNECTPOLYS
|
||||
[LAMBDA (FROMS TOS NSTEPS W OPERATION) (* lmm "30-Jul-85 17:19")
|
||||
[LAMBDA (FROMS TOS NSTEPS W OPERATION) (* ; "Edited 12-Jan-2022 15:22 by larry")
|
||||
(* lmm "30-Jul-85 17:19")
|
||||
(PROG (DIFFS)
|
||||
(CLEARW W)
|
||||
(LINES2 FROMS 3 W OPERATION)
|
||||
(SETQ DIFFS (for FPT in FROMS as TPT in TOS bind DX DY
|
||||
collect (SETQ DX (IQUOTIENT (IDIFFERENCE (fetch XC of TPT)
|
||||
(fetch XC of FPT))
|
||||
POLYGONSTEPS))
|
||||
(fetch XC of FPT))
|
||||
POLYGONSTEPS))
|
||||
(SETQ DY (IQUOTIENT (IDIFFERENCE (fetch YC of TPT)
|
||||
(fetch YC of FPT))
|
||||
POLYGONSTEPS))
|
||||
(replace XC of TPT with (IPLUS (fetch XC of FPT)
|
||||
(ITIMES POLYGONSTEPS DX)))
|
||||
(ITIMES POLYGONSTEPS DX)))
|
||||
(replace YC of TPT with (IPLUS (fetch YC of FPT)
|
||||
(ITIMES POLYGONSTEPS DY)))
|
||||
(ITIMES POLYGONSTEPS DY)))
|
||||
(CONS DX DY)))
|
||||
(LINES2 TOS 3 W OPERATION)
|
||||
(for FPT in FROMS as TPT in TOS do (DRAWLINE (fetch XC of
|
||||
FPT)
|
||||
(fetch YC of FPT)
|
||||
(fetch XC of TPT)
|
||||
(fetch YC of TPT)
|
||||
1 OPERATION W))
|
||||
(for FPT in FROMS as TPT in TOS do (DRAWLINE (fetch XC of FPT)
|
||||
(fetch YC of FPT)
|
||||
(fetch XC of TPT)
|
||||
(fetch YC of TPT)
|
||||
1 OPERATION W))
|
||||
(DISMISS POLYGONWAIT2)
|
||||
(CLEARW W)
|
||||
(for I from 1 to POLYGONSTEPS
|
||||
do (BLOCK)
|
||||
(LINES2 FROMS 1 W OPERATION)
|
||||
(for PT in FROMS as DIF in DIFFS
|
||||
do (add (fetch XC of PT)
|
||||
(CAR DIF))
|
||||
(add (fetch YC of PT)
|
||||
(CDR DIF))) finally (LINES2 FROMS 1 W OPERATION])
|
||||
(for I from 1 to POLYGONSTEPS do (DISMISS POLYGONWAIT3)
|
||||
(LINES2 FROMS 1 W OPERATION)
|
||||
(for PT in FROMS as DIF in DIFFS
|
||||
do (add (fetch XC of PT)
|
||||
(CAR DIF))
|
||||
(add (fetch YC of PT)
|
||||
(CDR DIF)))
|
||||
finally (LINES2 FROMS 1 W OPERATION])
|
||||
|
||||
(DRAWPOLY1
|
||||
(LAMBDA (PTLIST WIDTH OPERATION W NOBLOCK) (* edited%: "19-AUG-83 04:14") (* draws a closed polygon of the points given If OPERATION is not given, use the one from the default DS.) (COND (PTLIST (OR OPERATION (SETQ OPERATION (DSPOPERATION NIL W))) (PROG ((PTS PTLIST)) (while (CDR PTS) do (DRAWLINE (fetch XC of (CAR PTS)) (fetch YC of (CAR PTS)) (fetch XC of (CADR PTS)) (fetch YC of (CADR PTS)) WIDTH OPERATION W) (pop PTS) finally (DRAWLINE (fetch XC of (CAR PTS)) (fetch YC of (CAR PTS)) (fetch XC of (CAR PTLIST)) (fetch YC of (CAR PTLIST)) WIDTH OPERATION W))))) (COND (NOBLOCK (ALLOW.BUTTON.EVENTS)) (T (BLOCK))))
|
||||
@@ -151,7 +154,7 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
|
||||
(DECLARE%: EVAL@COMPILE
|
||||
|
||||
(DATATYPE NPOINT ((XC XPOINTER)
|
||||
(YC XPOINTER)))
|
||||
(YC XPOINTER)))
|
||||
)
|
||||
|
||||
(/DECLAREDATATYPE 'NPOINT '(XPOINTER XPOINTER)
|
||||
@@ -363,7 +366,7 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
|
||||
(RPAQQ MELT-BLOCK-SIZE 32)
|
||||
|
||||
(ADDTOVAR IDLE.FUNCTIONS ("Melt screen" 'IDLE-MELT)
|
||||
("Slide screen" 'IDLE-SLIDE))
|
||||
("Slide screen" 'IDLE-SLIDE))
|
||||
|
||||
|
||||
|
||||
@@ -382,18 +385,17 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
|
||||
(DECLARE%: EVAL@COMPILE
|
||||
|
||||
(PUTPROPS PERIODIC.BLOCK MACRO [(TIMER)
|
||||
(if (TIMEREXPIRED? TIMER 'TICKS)
|
||||
then (BLOCK)
|
||||
(SETQ TIMER (SETUPTIMER 100 TIMER 'TICKS
|
||||
'MILLISECONDS])
|
||||
(if (TIMEREXPIRED? TIMER 'TICKS)
|
||||
then (BLOCK)
|
||||
(SETQ TIMER (SETUPTIMER 100 TIMER 'TICKS 'MILLISECONDS])
|
||||
)
|
||||
(PUTPROPS IDLEHAX COPYRIGHT ("Xerox Corporation" 1985 1986 1987 1988 1991))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (3587 7576 (POLYGONSDEMO 3597 . 3767) (POLYGONS 3769 . 4133) (CONNECTPOLYS 4135 . 6482)
|
||||
(DRAWPOLY1 6484 . 7121) (RANDOMPT 7123 . 7574)) (8217 11199 (KALDEMO 8227 . 9638) (KAL.ADVANCE 9640 .
|
||||
10041) (KAL.SPOTS 10043 . 10384) (KAL.BMS 10386 . 10873) (KAL.ORAND 10875 . 11197)) (11236 12722 (
|
||||
BUBBLES 11246 . 12352) (BUBBLE.CREATE 12354 . 12720)) (12749 13734 (IDLE-WINDOWS 12759 . 13732)) (
|
||||
13769 16040 (LINES 13779 . 14838) (LINES1 14840 . 15250) (LINES2 15252 . 15563) (LINES3 15565 . 16038)
|
||||
) (16100 17313 (WALKINGSPOKE 16110 . 16891) (WARP 16893 . 17311)) (17338 21621 (IDLE-MELT 17348 .
|
||||
19864) (IDLE-SLIDE 19866 . 21619)) (21796 22042 (DEMOWINDOW 21806 . 22040)))))
|
||||
(FILEMAP (NIL (3562 7602 (POLYGONSDEMO 3572 . 3742) (POLYGONS 3744 . 4108) (CONNECTPOLYS 4110 . 6508)
|
||||
(DRAWPOLY1 6510 . 7147) (RANDOMPT 7149 . 7600)) (8239 11221 (KALDEMO 8249 . 9660) (KAL.ADVANCE 9662 .
|
||||
10063) (KAL.SPOTS 10065 . 10406) (KAL.BMS 10408 . 10895) (KAL.ORAND 10897 . 11219)) (11258 12744 (
|
||||
BUBBLES 11268 . 12374) (BUBBLE.CREATE 12376 . 12742)) (12771 13756 (IDLE-WINDOWS 12781 . 13754)) (
|
||||
13791 16062 (LINES 13801 . 14860) (LINES1 14862 . 15272) (LINES2 15274 . 15585) (LINES3 15587 . 16060)
|
||||
) (16122 17335 (WALKINGSPOKE 16132 . 16913) (WARP 16915 . 17333)) (17360 21643 (IDLE-MELT 17370 .
|
||||
19886) (IDLE-SLIDE 19888 . 21641)) (21814 22060 (DEMOWINDOW 21824 . 22058)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
482
lispusers/PSEUDOHOSTS
Normal file
482
lispusers/PSEUDOHOSTS
Normal file
@@ -0,0 +1,482 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED "30-Jan-2022 08:58:48"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>PSEUDOHOSTS.;135 25556
|
||||
|
||||
:CHANGES-TO (FNS PSEUDOHOST CONTRACT.PH EXPAND.PH PSEUDOFILENAME)
|
||||
(RECORDS PHDEVICE TARGETDEVICE)
|
||||
(VARS PSEUDOHOSTSCOMS)
|
||||
|
||||
:PREVIOUS-DATE "28-Jan-2022 09:06:55"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>PSEUDOHOSTS.;123)
|
||||
|
||||
|
||||
(PRETTYCOMPRINT PSEUDOHOSTSCOMS)
|
||||
|
||||
(RPAQQ PSEUDOHOSTSCOMS
|
||||
[
|
||||
(* ;; "Public entries")
|
||||
|
||||
(FNS PSEUDOHOST PSEUDOHOSTP PSEUDOHOSTS TARGETHOST TRUEFILENAME PSEUDOFILENAME)
|
||||
|
||||
(* ;; "Internals")
|
||||
|
||||
(FNS EXPAND.PH CONTRACT.PH SLASHIT UNSLASHIT)
|
||||
(FNS OPENFILE.PH GETFILENAME.PH DIRECTORYNAMEP.PH CLOSEFILE.PH REOPENFILE.PH DELETEFILE.PH
|
||||
OPENP.PH UNREGISTERFILE.PH REGISTERFILE.PH GENERATEFILES.PH GETFILEINFO.PH
|
||||
SETFILEINFO.PH NEXTFILEFN.PH FILEINFOFN.PH RENAMEFILE.PH)
|
||||
(P (PSEUDOHOST 'LI LOGINHOST/DIR))
|
||||
(DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS PHDEVICE PHGENFILESTATE TARGETDEVICE)
|
||||
(MACROS PSEUDOHOST.NAME PSEUDOHOST.TARGETVAL)
|
||||
(P (CL:UNLESS (GETP 'EXPORTS.ALL 'FILE)
|
||||
(LOAD 'EXPORTS.ALL))])
|
||||
|
||||
|
||||
|
||||
(* ;; "Public entries")
|
||||
|
||||
(DEFINEQ
|
||||
|
||||
(PSEUDOHOST
|
||||
[LAMBDA (HOST PREFIX)
|
||||
|
||||
(* ;; "Edited 30-Jan-2022 08:58 by rmk: Expand prefix so that it is rooted in a real host and not a previously defined pseudohost.")
|
||||
|
||||
(CL:WHEN (AND (LISTP HOST)
|
||||
(NULL PREFIX))
|
||||
(SETQ PREFIX (CADR HOST))
|
||||
(SETQ HOST (CAR HOST)))
|
||||
(SETQ HOST (U-CASE (MKATOM HOST)))
|
||||
[IF PREFIX
|
||||
THEN (CL:WHEN (PSEUDOHOSTP HOST) (* ;
|
||||
"Redefining: first clear out the previous one")
|
||||
(PSEUDOHOST HOST NIL))
|
||||
[LET (TARGETHOST TARGETDEVICE PREFIXHOST)
|
||||
(CL:UNLESS [SETQ PREFIXHOST (U-CASE (FILENAMEFIELD PREFIX 'HOST]
|
||||
(SETQ PREFIX (UNSLASHIT (PACKFILENAME 'HOST (SETQ PREFIXHOST 'DSK)
|
||||
'BODY PREFIX))))
|
||||
|
||||
(* ;; "We want the maximal prefix. If {LI} is a pseudohost with prefix {DSK}<abc> and we are defining {FOO} with prefix {LI}<xyz>, we want FOO's prefix to be {DSK}<abc>xyz>. , And if FUM is then defined as {FOO}<mno>, we want its prefix to be {DSK}<abc>xyz>mno>. This gives the true filenames.")
|
||||
|
||||
(SETQ PREFIX (EXPAND.PH PREFIX PREFIXHOST))
|
||||
(CL:UNLESS (MEMB (NTHCHARCODE PREFIX -1)
|
||||
(CHARCODE (> / <)))
|
||||
(SETQ PREFIX (CONCAT PREFIX (IF (STRPOS "/" PREFIX)
|
||||
THEN "/"
|
||||
ELSE ">"))))
|
||||
[SETQ TARGETHOST (U-CASE (FILENAMEFIELD PREFIX 'HOST]
|
||||
|
||||
(* ;; "We know about the directory separators for these particular devices. Maybe there should be separate list of slash-hosts somewhere that we can use.")
|
||||
|
||||
(SELECTQ TARGETHOST
|
||||
((DSK CORE)
|
||||
(SETQ PREFIX (UNSLASHIT PREFIX)))
|
||||
(UNIX (SETQ PREFIX (SLASHIT PREFIX)))
|
||||
NIL)
|
||||
(SETQ TARGETDEVICE (OR (\GETDEVICEFROMHOSTNAME TARGETHOST)
|
||||
(ERROR "UNKNOWN TARGET HOST" TARGETHOST)))
|
||||
|
||||
(* ;; "Save the last directory marker to pack on if needed.")
|
||||
|
||||
(\DEFINEDEVICE HOST
|
||||
(CREATE FDEV
|
||||
USING TARGETDEVICE DEVICENAME _ HOST FDEV1 _ TARGETDEVICE FDEV2 _ PREFIX
|
||||
OPENFILE _ (FUNCTION OPENFILE.PH)
|
||||
GETFILENAME _ (FUNCTION GETFILENAME.PH)
|
||||
DIRECTORYNAMEP _ (FUNCTION DIRECTORYNAMEP.PH)
|
||||
CLOSEFILE _ (FUNCTION CLOSEFILE.PH)
|
||||
REOPENFILE _ (FUNCTION REOPENFILE.PH)
|
||||
DELETEFILE _ (FUNCTION DELETEFILE.PH)
|
||||
OPENP _ (FUNCTION OPENP.PH)
|
||||
UNREGISTERFILE _ (FUNCTION UNREGISTERFILE.PH)
|
||||
REGISTERFILE _ (FUNCTION REGISTERFILE.PH)
|
||||
GENERATEFILES _ (FUNCTION GENERATEFILES.PH)
|
||||
GETFILEINFO _ (FUNCTION GETFILEINFO.PH)
|
||||
SETFILEINFO _ (FUNCTION SETFILEINFO.PH)
|
||||
RENAMEFILE _ (FUNCTION RENAMEFILE.PH)))
|
||||
|
||||
(* ;; "The ultimate target device keeps a map of prefixes and the hostnames they map to. The longest matching prefix is chosen when a name that expands to the target device is contracted.")
|
||||
|
||||
(CHANGE (FETCH (TARGETDEVICE PREFIXMAP) OF TARGETDEVICE)
|
||||
(SORT (CONS (LIST PREFIX HOST (CL:IF (EQ (CHARCODE /)
|
||||
(NTHCHARCODE PREFIX -1))
|
||||
'/
|
||||
'<))
|
||||
DATUM)
|
||||
(FUNCTION (LAMBDA (P1 P2)
|
||||
(IGREATERP (NCHARS (CAR P1))
|
||||
(NCHARS (CAR P2]
|
||||
ELSEIF (SETQ PREFIX (CADR (PSEUDOHOSTP HOST)))
|
||||
THEN
|
||||
(* ;; "\DEFINEDEVICE removes the name-mapping but doesn't remove the device. Maybe that's on purpose for other devices, but not here.")
|
||||
|
||||
(LET* ((PHHOST (\GETDEVICEFROMNAME HOST \FILEDEVICES))
|
||||
(TARGETDEV (FETCH (PHDEVICE TARGETDEV) OF PHHOST)))
|
||||
(UNINTERRUPTABLY
|
||||
(CL:WHEN TARGETDEV (* ;
|
||||
"Don't want to fail uninterruptably")
|
||||
(CHANGE (FETCH (TARGETDEVICE PREFIXMAP) OF TARGETDEV)
|
||||
(DREMOVE (ASSOC PREFIX DATUM)
|
||||
DATUM)))
|
||||
(SETQ \FILEDEVICES (DREMOVE PHHOST \FILEDEVICES))
|
||||
(\DEFINEDEVICE HOST NIL))]
|
||||
HOST])
|
||||
|
||||
(PSEUDOHOSTP
|
||||
[LAMBDA (HOST) (* ; "Edited 18-Jan-2022 11:29 by rmk")
|
||||
(LET ((DEV (\GETDEVICEFROMNAME HOST T T)))
|
||||
(CL:WHEN (AND DEV (TYPE? FDEV (FETCH (PHDEVICE TARGETDEV) OF DEV)))
|
||||
(LIST HOST (FETCH (PHDEVICE PREFIX)
|
||||
DEV)))])
|
||||
|
||||
(PSEUDOHOSTS
|
||||
[LAMBDA NIL (* ; "Edited 17-Jan-2022 18:15 by rmk")
|
||||
(FOR DEV IN \FILEDEVICES WHEN (TYPE? FDEV (FETCH (PHDEVICE TARGETDEV) OF DEV))
|
||||
COLLECT (LIST (FETCH (FDEV DEVICENAME) OF DEV)
|
||||
(FETCH (PHDEVICE PREFIX) OF DEV])
|
||||
|
||||
(TARGETHOST
|
||||
[LAMBDA (HOST) (* ; "Edited 22-Jan-2022 09:00 by rmk")
|
||||
(CL:WHEN (PSEUDOHOSTP HOST)
|
||||
(FETCH (FDEV DEVICENAME) OF (FETCH (PHDEVICE TARGETDEV) OF (\GETDEVICEFROMNAME HOST))))])
|
||||
|
||||
(TRUEFILENAME
|
||||
[LAMBDA (FILE) (* ; "Edited 26-Jan-2022 23:33 by rmk")
|
||||
(* ; "Edited 25-Jan-2022 08:47 by rmk")
|
||||
(LET (FILENAME DEVICE)
|
||||
(IF (STREAMP FILE)
|
||||
THEN (SETQ FILENAME (FETCH (STREAM FULLFILENAME) OF FILE))
|
||||
(SETQ DEVICE (FETCH (STREAM DEVICE) OF FILE))
|
||||
ELSE (SETQ FILENAME (\ADD.CONNECTED.DIR FILE))
|
||||
(SETQ DEVICE (\GETDEVICEFROMNAME FILENAME)))
|
||||
(CL:IF (TYPE? PHDEVICE DEVICE)
|
||||
(EXPAND.PH FILENAME DEVICE)
|
||||
FILENAME)])
|
||||
|
||||
(PSEUDOFILENAME
|
||||
[LAMBDA (FILE) (* ; "Edited 29-Jan-2022 23:08 by rmk")
|
||||
(* ; "Edited 28-Jan-2022 09:06 by rmk")
|
||||
(FOR D PN (FILENAME _ (IF (STREAMP FILE)
|
||||
THEN (FETCH (STREAM FULLFILENAME) OF FILE)
|
||||
ELSE (\ADD.CONNECTED.DIR FILE))) IN \FILEDEVICES
|
||||
WHEN (TYPE? PHDEVICE D) UNLESS (EQ FILENAME (SETQ PN (CONTRACT.PH FILENAME D)))
|
||||
DO (RETURN PN) FINALLY (RETURN FILENAME])
|
||||
)
|
||||
|
||||
|
||||
|
||||
(* ;; "Internals")
|
||||
|
||||
(DEFINEQ
|
||||
|
||||
(EXPAND.PH
|
||||
[LAMBDA (FILENAME PHDEV)
|
||||
|
||||
(* ;; "Edited 30-Jan-2022 00:15 by rmk: that FILENAME contains }, because HOST was identified in it. If FILENAME is a stream, expand its full name")
|
||||
|
||||
(* ;; "Assumes that FILENAME contains }, because HOST was identified in it. If FILENAME is a stream, expand its full name")
|
||||
|
||||
[IF (TYPE? STREAM FILENAME)
|
||||
THEN (CL:UNLESS PHDEV
|
||||
(SETQ PHDEV (FETCH (STREAM DEVICE) OF FILENAME)))
|
||||
(SETQ FILENAME (FETCH (STREAM FULLNAME) OF FILENAME))
|
||||
ELSEIF (NOT (TYPE? FDEV PHDEV))
|
||||
THEN (SETQ PHDEV (\GETDEVICEFROMNAME (OR PHDEV (FILENAMEFIELD FILENAME 'HOST]
|
||||
(IF (TYPE? PHDEVICE PHDEV)
|
||||
THEN (LET (SUFFIX SUFFIXPOS)
|
||||
(CL:WHEN (SETQ SUFFIXPOS (STRPOS "}" FILENAME))
|
||||
(SETQ SUFFIX (SUBSTRING FILENAME (ADD1 SUFFIXPOS)))
|
||||
(CL:WHEN (FMEMB (CHCON1 SUFFIX)
|
||||
(CHARCODE (< > /)))
|
||||
(SETQ SUFFIX (SUBSTRING SUFFIX 2)))
|
||||
(CONCAT (FETCH (PHDEVICE PREFIX) OF PHDEV)
|
||||
SUFFIX)))
|
||||
ELSE FILENAME])
|
||||
|
||||
(CONTRACT.PH
|
||||
[LAMBDA (NAME PHDEV)
|
||||
|
||||
(* ;; "Edited 30-Jan-2022 00:20 by rmk: the smallest pseudoname for NAME. If the NAME was constructed by expanding, then")
|
||||
|
||||
(* ;; "Finds the smallest pseudoname for NAME. The PHDEV is used only to find its targetdev, that's where we scan for matching prefixes. This is so we can find the lowest matching pseudohost in the target's prefix map. If the hosts are defined as {DSK}...{H1}...{H2}, DSK knows the prefixes that lead to H1 and H2, picks the longest matching prefix and replaces it by the corresponding host.")
|
||||
|
||||
(* ;; "If pseudohosts are defined in terms of other pseudohosts (e.g. FUM is defined in terms of FOO which is defined in terms of LI which is rooted in DSK, then the pseudodevices presumably were created in that order, so the first name we encounter will be the one with the longest prefix. So {DSK}... might collapse to {FUM}. But {FOO}... will not. ")
|
||||
|
||||
(CL:UNLESS (TYPE? FDEV PHDEV)
|
||||
(SETQ PHDEV (\GETDEVICEFROMNAME PHDEV)))
|
||||
(CL:WHEN NAME
|
||||
(FOR PM PREFIX SUFFIX CONNECTOR IN (FETCH (TARGETDEVICE PREFIXMAP) OF (FETCH (PHDEVICE
|
||||
TARGETDEV
|
||||
)
|
||||
OF PHDEV))
|
||||
WHEN (STRPOS (SETQ PREFIX (CAR PM))
|
||||
NAME 1 NIL T NIL FILEDIRCASEARRAY)
|
||||
DO
|
||||
(* ;; "This is the lowest host. ")
|
||||
|
||||
[SETQ SUFFIX (SUBSTRING NAME (ADD1 (NCHARS PREFIX]
|
||||
(CL:WHEN (STRPOS ">" SUFFIX 1 NIL NIL NIL FILEDIRCASEARRAY)
|
||||
|
||||
(* ;; "CONNECTOR tells us whether to use / or > depending on what the prefix has")
|
||||
|
||||
(SETQ CONNECTOR (CADDR PM))
|
||||
[SETQ SUFFIX (CONCAT CONNECTOR (IF (EQ CONNECTOR '/)
|
||||
THEN (SLASHIT SUFFIX)
|
||||
ELSE (UNSLASHIT SUFFIX])
|
||||
(RETURN (PACK* '{ (CADR PM)
|
||||
"}"
|
||||
(OR SUFFIX ""))) FINALLY
|
||||
|
||||
(* ;; "If we didn't match a prefix, then this was not related to any pseudhost descending from the target, it is a pure target name, presumably because something like a relative .. reference took it off all paths. We return the original name.")
|
||||
|
||||
(RETURN NAME)))])
|
||||
|
||||
(SLASHIT
|
||||
[LAMBDA (X LCASEDIRS) (* ; "Edited 26-Jan-2022 15:08 by rmk")
|
||||
(* ; "Edited 3-Jan-2022 11:44 by rmk")
|
||||
(* ; "Edited 22-Dec-2021 20:18 by rmk")
|
||||
(* ; "Edited 2-Nov-2021 22:54 by rmk:")
|
||||
(LET [LASTDIRPOS SLASHED (DIRPOS (ADD1 (OR (STRPOS "}" X)
|
||||
0]
|
||||
[SETQ SLASHED (CONCATCODES (FOR I C FROM DIRPOS WHILE (SETQ C (NTHCHARCODE X I))
|
||||
COLLECT (SELCHARQ C
|
||||
((< >)
|
||||
(SETQ LASTDIRPOS I)
|
||||
(CHARCODE /))
|
||||
(/ (SETQ LASTDIRPOS I)
|
||||
C)
|
||||
C]
|
||||
(CL:WHEN (AND LCASEDIRS LASTDIRPOS)
|
||||
(SETQ LASTDIRPOS (ADD1 (IDIFFERENCE LASTDIRPOS DIRPOS)))
|
||||
(SETQ SLASHED (CONCAT (L-CASE (SUBSTRING SLASHED 1 LASTDIRPOS))
|
||||
(OR (SUBSTRING SLASHED (ADD1 LASTDIRPOS))
|
||||
""))))
|
||||
(CL:IF (EQ DIRPOS 1)
|
||||
SLASHED
|
||||
(CONCAT (SUBSTRING X 1 (SUB1 DIRPOS))
|
||||
SLASHED))])
|
||||
|
||||
(UNSLASHIT
|
||||
[LAMBDA (X LCASEDIRS) (* ; "Edited 26-Jan-2022 15:09 by rmk")
|
||||
(* ; "Edited 22-Dec-2021 20:18 by rmk")
|
||||
(* ; "Edited 21-Nov-2021 23:00 by rmk:")
|
||||
|
||||
(* ;; "Tricky to get the first one right.")
|
||||
|
||||
(LET [LASTDIRPOS UNSLASHED (DIRPOS (ADD1 (OR (STRPOS "}" X)
|
||||
0]
|
||||
[SETQ UNSLASHED
|
||||
(CONCATCODES (FOR I C LASTC FROM DIRPOS WHILE (SETQ C (NTHCHARCODE X I))
|
||||
COLLECT (PROG1 (SELCHARQ C
|
||||
(/ (SETQ LASTDIRPOS I)
|
||||
(IF (AND LASTC (NEQ LASTC (CHARCODE })))
|
||||
THEN (CHARCODE >)
|
||||
ELSE (CHARCODE <)))
|
||||
((< >)
|
||||
(SETQ LASTDIRPOS I)
|
||||
C)
|
||||
C)
|
||||
(SETQ LASTC C]
|
||||
(CL:WHEN (AND LCASEDIRS LASTDIRPOS)
|
||||
(SETQ LASTDIRPOS (ADD1 (IDIFFERENCE LASTDIRPOS DIRPOS)))
|
||||
(SETQ UNSLASHED (CONCAT (L-CASE (SUBSTRING UNSLASHED 1 LASTDIRPOS))
|
||||
(OR (SUBSTRING UNSLASHED (ADD1 LASTDIRPOS))
|
||||
""))))
|
||||
(CL:IF (EQ DIRPOS 1)
|
||||
UNSLASHED
|
||||
(CONCAT (SUBSTRING X 1 (SUB1 DIRPOS))
|
||||
UNSLASHED))])
|
||||
)
|
||||
(DEFINEQ
|
||||
|
||||
(OPENFILE.PH
|
||||
[LAMBDA (FILE ACCESS RECOG OTHERINFO FDEV OLDSTRING) (* ; "Edited 25-Jan-2022 08:45 by rmk")
|
||||
(* ; "Edited 18-Jan-2022 10:29 by rmk")
|
||||
(LET ((STREAM (PSEUDOHOST.TARGETVAL OPENFILE (FILE ACCESS RECOG OTHERINFO FDEV OLDSTRING)
|
||||
FDEV)))
|
||||
(CHANGE (FETCH (STREAM FULLFILENAME) OF STREAM)
|
||||
(CONTRACT.PH DATUM FDEV))
|
||||
(REPLACE (STREAM DEVICE) OF STREAM WITH FDEV)
|
||||
STREAM])
|
||||
|
||||
(GETFILENAME.PH
|
||||
[LAMBDA (NAME RECOG FDEV) (* ; "Edited 25-Jan-2022 22:56 by rmk")
|
||||
(* ; "Edited 16-Jan-2022 20:27 by rmk")
|
||||
(PSEUDOHOST.NAME GETFILENAME (NAME RECOG FDEV])
|
||||
|
||||
(DIRECTORYNAMEP.PH
|
||||
[LAMBDA (DIRSPEC DEV CREATE?) (* ; "Edited 25-Jan-2022 22:56 by rmk")
|
||||
(* ; "Edited 18-Jan-2022 11:32 by rmk")
|
||||
|
||||
(* ;; "{FOO} by itself is always a legitimate directory--you should be able to connect to it when you are starting up")
|
||||
(* ; "Edited 16-Jan-2022 20:35 by rmk")
|
||||
(OR (EQ (CHARCODE })
|
||||
(NTHCHARCODE DIRSPEC -1))
|
||||
(PSEUDOHOST.NAME DIRECTORYNAMEP (DIRSPEC DEV CREATE?)
|
||||
DEV])
|
||||
|
||||
(CLOSEFILE.PH
|
||||
[LAMBDA (STREAM ABORTFLG) (* ; "Edited 16-Jan-2022 15:38 by rmk")
|
||||
(APPLY* (FETCH (FDEV CLOSEFILE) OF (FETCH (PHDEVICE TARGETDEV) OF (FETCH (STREAM DEVICE)
|
||||
OF STREAM)))
|
||||
STREAM ABORTFLG])
|
||||
|
||||
(REOPENFILE.PH
|
||||
[LAMBDA (FILE ACCESS RECOG OTHERINFO FDEV OLDSTREAM) (* ; "Edited 25-Jan-2022 12:50 by rmk")
|
||||
(* ; "Edited 18-Jan-2022 11:41 by rmk")
|
||||
(LET ((STREAM (PSEUDOHOST.TARGETVAL REOPENFILE (FILE ACCESS RECOG OTHERINFO FDEV OLDSTREAM)
|
||||
FDEV)))
|
||||
(CHANGE (FETCH (STREAM FULLFILENAME) OF STREAM)
|
||||
(CONTRACT.PH DATUM FDEV))
|
||||
(REPLACE (STREAM DEVICE) OF STREAM WITH FDEV)
|
||||
STREAM])
|
||||
|
||||
(DELETEFILE.PH
|
||||
[LAMBDA (FILENAME DEV) (* ; "Edited 25-Jan-2022 22:56 by rmk")
|
||||
(* ; "Edited 18-Jan-2022 10:23 by rmk")
|
||||
(PSEUDOHOST.NAME DELETEFILE (FILENAME DEV])
|
||||
|
||||
(OPENP.PH
|
||||
[LAMBDA (FILENAME ACCESS DEVICE) (* ; "Edited 18-Jan-2022 10:29 by rmk")
|
||||
(PSEUDOHOST.TARGETVAL OPENP (FILENAME ACCESS DEVICE])
|
||||
|
||||
(UNREGISTERFILE.PH
|
||||
[LAMBDA (DEVICE STREAM) (* ; "Edited 16-Jan-2022 16:47 by rmk")
|
||||
(APPLY* (FETCH (FDEV UNREGISTERFILE) OF (FETCH (PHDEVICE TARGETDEV) OF DEVICE))
|
||||
(FETCH (PHDEVICE TARGETDEV) OF DEVICE)
|
||||
STREAM])
|
||||
|
||||
(REGISTERFILE.PH
|
||||
[LAMBDA (DEVICE STREAM) (* ; "Edited 16-Jan-2022 16:46 by rmk")
|
||||
(APPLY* (FETCH (FDEV REGISTERFILE) OF (FETCH (PHDEVICE TARGETDEV) OF DEVICE))
|
||||
(FETCH (PHDEVICE TARGETDEV) OF DEVICE)
|
||||
STREAM])
|
||||
|
||||
(GENERATEFILES.PH
|
||||
[LAMBDA (FDEV PATTERN DESIREDPROPS OPTIONS) (* ; "Edited 17-Jan-2022 20:46 by rmk")
|
||||
|
||||
(* ;; "FDEV is the pseudohost. We will generate from the target directory using its GENFILESTATE, but fiddle the output so that it looks like it is coming from the pseudo host.")
|
||||
|
||||
(LET ((TARGETGENOBJ (APPLY* (FETCH (FDEV GENERATEFILES) OF (FETCH (PHDEVICE TARGETDEV)
|
||||
OF FDEV))
|
||||
(FETCH (PHDEVICE TARGETDEV) OF FDEV)
|
||||
(EXPAND.PH PATTERN FDEV)
|
||||
DESIREDPROPS OPTIONS)))
|
||||
|
||||
(* ;; "The TARGETGENOBJ contains the targets functions as well as its GENFILESTATE. We need the ph FDEV to contract the generated names")
|
||||
|
||||
(CREATE FILEGENOBJ
|
||||
NEXTFILEFN _ (FUNCTION NEXTFILEFN.PH)
|
||||
FILEINFOFN _ (FUNCTION FILEINFOFN.PH)
|
||||
GENFILESTATE _ (LIST FDEV TARGETGENOBJ])
|
||||
|
||||
(GETFILEINFO.PH
|
||||
[LAMBDA (STREAM ATTRIBUTE DEVICE) (* ; "Edited 25-Jan-2022 12:43 by rmk")
|
||||
(* ; "Edited 17-Jan-2022 18:21 by rmk")
|
||||
(PSEUDOHOST.TARGETVAL GETFILEINFO (STREAM ATTRIBUTE DEVICE])
|
||||
|
||||
(SETFILEINFO.PH
|
||||
[LAMBDA (STREAM ATTRIBUTE VALUE DEVICE) (* ; "Edited 25-Jan-2022 12:37 by rmk")
|
||||
(PSEUDOHOST.TARGETVAL SETFILEINFO (STREAM ATTRIBUTE VALUE DEVICE])
|
||||
|
||||
(NEXTFILEFN.PH
|
||||
[LAMBDA (GENFILESTATE NAMEONLY) (* ; "Edited 17-Jan-2022 21:27 by rmk")
|
||||
(LET* ((TARGETGENOBJ (CADR GENFILESTATE))
|
||||
(TARGETGENFILESTATE (FETCH GENFILESTATE OF TARGETGENOBJ))
|
||||
(FILENAME (APPLY* (FETCH NEXTFILEFN OF TARGETGENOBJ)
|
||||
TARGETGENFILESTATE NAMEONLY)))
|
||||
(CL:WHEN FILENAME
|
||||
(CL:UNLESS NAMEONLY
|
||||
(SETQ FILENAME (CONTRACT.PH FILENAME (CAR GENFILESTATE)))))
|
||||
FILENAME])
|
||||
|
||||
(FILEINFOFN.PH
|
||||
[LAMBDA (GENFILESTATE ATTRIBUTE) (* ; "Edited 17-Jan-2022 20:52 by rmk")
|
||||
(APPLY* (FETCH FILEINFOFN OF (CADR GENFILESTATE))
|
||||
(FETCH GENFILESTATE OF (CADR GENFILESTATE))
|
||||
ATTRIBUTE])
|
||||
|
||||
(RENAMEFILE.PH
|
||||
[LAMBDA (OLD-DEVICE OLD-NAME NEW-DEVICE NEW-NAME) (* ; "Edited 18-Jan-2022 09:52 by rmk")
|
||||
(LET ((OLDTARGETDEV (FETCH (PHDEVICE TARGETDEV) OF OLD-DEVICE))
|
||||
(NEWTARGETDEV (FETCH (PHDEVICE TARGETDEV) OF NEW-DEVICE))
|
||||
(NEWTARGETNAME NEW-NAME)
|
||||
RESULT)
|
||||
(CL:WHEN (TYPE? FDEV NEWTARGETDEV) (* ; "NEW-DEVICE is a pseudo host")
|
||||
(SETQ NEWTARGETNAME (EXPAND.PH NEW-NAME NEW-DEVICE)))
|
||||
(SETQ RESULT (APPLY* (FETCH (FDEV RENAMEFILE) OF OLDTARGETDEV)
|
||||
OLDTARGETDEV
|
||||
(EXPAND.PH OLD-NAME OLD-DEVICE)
|
||||
(OR NEWTARGETDEV NEW-DEVICE)
|
||||
NEWTARGETNAME))
|
||||
(CL:WHEN (AND RESULT (NEQ NEWTARGETDEV NEW-DEVICE))
|
||||
(SETQ RESULT (CONTRACT.PH RESULT NEW-DEVICE)))
|
||||
RESULT])
|
||||
)
|
||||
|
||||
(PSEUDOHOST 'LI LOGINHOST/DIR)
|
||||
(DECLARE%: EVAL@COMPILE DONTCOPY
|
||||
(DECLARE%: EVAL@COMPILE
|
||||
|
||||
(ACCESSFNS PHDEVICE ((PREFIX (FETCH (FDEV FDEV2) OF DATUM))
|
||||
(TARGETDEV (FETCH (FDEV FDEV1) OF DATUM)
|
||||
(REPLACE (FDEV FDEV1) OF DATUM WITH NEWVALUE)))
|
||||
(TYPE? (FETCH (PHDEVICE PREFIX) OF DATUM)))
|
||||
|
||||
(RECORD PHGENFILESTATE (PHDEVICE . TARGETGENFILESTATE))
|
||||
|
||||
(ACCESSFNS TARGETDEVICE ((PREFIXMAP (FETCH (FDEV FDEV3) OF DATUM)
|
||||
(REPLACE (FDEV FDEV3) OF DATUM WITH NEWVALUE))))
|
||||
)
|
||||
|
||||
(DECLARE%: EVAL@COMPILE
|
||||
|
||||
(PUTPROPS PSEUDOHOST.NAME MACRO
|
||||
[TAIL (LET [(OPNAME (CAR TAIL))
|
||||
(ARGS (CADR TAIL))
|
||||
(DEV (OR (CADDR TAIL)
|
||||
(CAR (LAST (CADR TAIL]
|
||||
|
||||
(* ;;
|
||||
"Assumes that the name is (CAR ARGS), the device is the last or args if not specified separately")
|
||||
|
||||
`(CONTRACT.PH [APPLY* (FETCH (FDEV ,OPNAME) OF (FETCH (PHDEVICE TARGETDEV)
|
||||
OF ,DEV))
|
||||
(EXPAND.PH ,(CAR ARGS)
|
||||
,DEV)
|
||||
,@(SUBST `(FETCH (PHDEVICE TARGETDEV) OF ,DEV)
|
||||
DEV
|
||||
(CDR ARGS]
|
||||
,DEV])
|
||||
|
||||
(PUTPROPS PSEUDOHOST.TARGETVAL MACRO
|
||||
[TAIL (LET [(OPNAME (CAR TAIL))
|
||||
(ARGS (CADR TAIL))
|
||||
(DEV (OR (CADDR TAIL)
|
||||
(CAR (LAST (CADR TAIL]
|
||||
|
||||
(* ;; "Assumes that the name is (CAR ARGS), the device is the last or args if not specified separately. Unlike PSEUDOHOST.OP, this returns the target value, doesn't assume it is a name to be contracted.")
|
||||
|
||||
`(APPLY* (FETCH (FDEV ,OPNAME) OF (FETCH (PHDEVICE TARGETDEV)
|
||||
OF ,DEV))
|
||||
(EXPAND.PH ,(CAR ARGS)
|
||||
,DEV)
|
||||
,@(SUBST `(FETCH (PHDEVICE TARGETDEV) OF ,DEV)
|
||||
DEV
|
||||
(CDR ARGS])
|
||||
)
|
||||
|
||||
|
||||
(CL:UNLESS (GETP 'EXPORTS.ALL 'FILE)
|
||||
(LOAD 'EXPORTS.ALL))
|
||||
)
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (1355 8925 (PSEUDOHOST 1365 . 6625) (PSEUDOHOSTP 6627 . 6977) (PSEUDOHOSTS 6979 . 7336)
|
||||
(TARGETHOST 7338 . 7612) (TRUEFILENAME 7614 . 8301) (PSEUDOFILENAME 8303 . 8923)) (8953 16177 (
|
||||
EXPAND.PH 8963 . 10190) (CONTRACT.PH 10192 . 12857) (SLASHIT 12859 . 14427) (UNSLASHIT 14429 . 16175))
|
||||
(16178 22968 (OPENFILE.PH 16188 . 16749) (GETFILENAME.PH 16751 . 17040) (DIRECTORYNAMEP.PH 17042 .
|
||||
17666) (CLOSEFILE.PH 17668 . 18022) (REOPENFILE.PH 18024 . 18589) (DELETEFILE.PH 18591 . 18875) (
|
||||
OPENP.PH 18877 . 19053) (UNREGISTERFILE.PH 19055 . 19360) (REGISTERFILE.PH 19362 . 19663) (
|
||||
GENERATEFILES.PH 19665 . 20705) (GETFILEINFO.PH 20707 . 21009) (SETFILEINFO.PH 21011 . 21210) (
|
||||
NEXTFILEFN.PH 21212 . 21754) (FILEINFOFN.PH 21756 . 22027) (RENAMEFILE.PH 22029 . 22966)))))
|
||||
STOP
|
||||
BIN
lispusers/PSEUDOHOSTS.LCOM
Normal file
BIN
lispusers/PSEUDOHOSTS.LCOM
Normal file
Binary file not shown.
BIN
lispusers/PSEUDOHOSTS.TEDIT
Normal file
BIN
lispusers/PSEUDOHOSTS.TEDIT
Normal file
Binary file not shown.
@@ -1,12 +1,12 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED " 2-Jan-2022 16:01:26"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>REGIONMANAGER.;99 31663
|
||||
(FILECREATED "28-Jan-2022 23:52:21"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>REGIONMANAGER.;113 36064
|
||||
|
||||
:CHANGES-TO (FNS SET-TYPED-REGIONS \RELCREATEREGION.REF \RELCREATEREGION.SIZE)
|
||||
:CHANGES-TO (FNS CLOSEWITH MOVEWITH MOVEWITH.DOIT CLOSEWITH.DOIT)
|
||||
|
||||
:PREVIOUS-DATE " 1-Jan-2022 23:14:42"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>REGIONMANAGER.;95)
|
||||
:PREVIOUS-DATE "28-Jan-2022 16:55:38"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>REGIONMANAGER.;108)
|
||||
|
||||
|
||||
(PRETTYCOMPRINT REGIONMANAGERCOMS)
|
||||
@@ -30,12 +30,13 @@
|
||||
|
||||
(* ;; "Relative regions")
|
||||
|
||||
(COMS (FNS RELCREATEREGION RELGETREGION)
|
||||
(COMS (FNS RELCREATEREGION RELGETREGION RELCREATEPOSITION)
|
||||
(FNS \RELCREATEREGION.REF \RELCREATEREGION.SIZE))
|
||||
|
||||
(* ;; "Composite application construction")
|
||||
|
||||
(COMS (FNS RM-ATTACHWINDOW)
|
||||
(FNS CLOSEWITH CLOSEWITH.DOIT MOVEWITH MOVEWITH.DOIT)
|
||||
(P (MOVD? 'ATTACHWINDOW 'ATTACHWINDOW.ORIG)
|
||||
(MOVD 'RM-ATTACHWINDOW 'ATTACHWINDOW))
|
||||
(DECLARE%: EVAL@COMPILE DONTCOPY (MACROS RFIELDDIFF])
|
||||
@@ -250,7 +251,11 @@
|
||||
(DEFINEQ
|
||||
|
||||
(RELCREATEREGION
|
||||
[LAMBDA (WIDTH HEIGHT CORNERX CORNERY REFX REFY ONSCREEN) (* ; "Edited 30-Dec-2021 20:54 by rmk")
|
||||
[LAMBDA (WIDTH HEIGHT CORNERX CORNERY REFX REFY ONSCREEN) (* ; "Edited 27-Jan-2022 13:23 by rmk")
|
||||
(* ; "Edited 25-Jan-2022 15:29 by rmk")
|
||||
(* ; "Edited 23-Jan-2022 21:18 by rmk")
|
||||
(* ; "Edited 12-Jan-2022 17:50 by rmk")
|
||||
(* ; "Edited 30-Dec-2021 20:54 by rmk")
|
||||
(* ; "Edited 27-Dec-2021 15:54 by rmk")
|
||||
|
||||
(* ;; "The region is oriented so that he REFX and REFY are at the corner named by CORNERX/Y. ")
|
||||
@@ -274,99 +279,129 @@
|
||||
|
||||
(* ;; "")
|
||||
|
||||
(* ;; "Resolve the width and height, if based on a region or window ")
|
||||
(* ;; "The arguments can be given as a list to be spread out, so that region relative region specifications can be passed through intermediate functions. The test here is not very tight, if it is incorrect the recursive call will fail.")
|
||||
|
||||
(SETQ WIDTH (\RELCREATEREGION.SIZE WIDTH 'X))
|
||||
(SETQ HEIGHT (\RELCREATEREGION.SIZE HEIGHT 'Y))
|
||||
(IF (AND (LISTP WIDTH)
|
||||
(NOT (REGIONP WIDTH))
|
||||
(NULL HEIGHT)
|
||||
(IGREATERP (LENGTH WIDTH)
|
||||
3))
|
||||
THEN
|
||||
(* ;; "If less than 3, presumably a relative width")
|
||||
|
||||
(* ;; "Resolve the corner")
|
||||
(APPLY (FUNCTION RELCREATEREGION)
|
||||
WIDTH)
|
||||
ELSE
|
||||
(* ;; "Resolve the width and height, if based on a region or window ")
|
||||
|
||||
(CL:UNLESS CORNERX
|
||||
(SETQ CORNERX 'LEFT))
|
||||
(CL:UNLESS CORNERY
|
||||
(SETQ CORNERY 'BOTTOM))
|
||||
(CL:WHEN (AND (LISTP CORNERX)
|
||||
(NULL CORNERY))
|
||||
(SETQ CORNERY (CADR CORNERX))
|
||||
(SETQ CORNERX (CAR CORNERX)))
|
||||
(SETQ WIDTH (\RELCREATEREGION.SIZE WIDTH 'X))
|
||||
(SETQ HEIGHT (\RELCREATEREGION.SIZE HEIGHT 'Y))
|
||||
|
||||
(* ;; "Resolve the reference point")
|
||||
(* ;; "Resolve the corner")
|
||||
|
||||
[IF (AND (POSITIONP REFX)
|
||||
(NULL REFY))
|
||||
THEN (SETQ REFY (FETCH (POSITION YCOORD) OF REFX))
|
||||
(SETQ REFX (FETCH (POSITION XCOORD) OF REFX))
|
||||
ELSE (GETMOUSESTATE)
|
||||
(SETQ REFX (\RELCREATEREGION.REF REFX 'X))
|
||||
(SETQ REFY (\RELCREATEREGION.REF REFY 'Y]
|
||||
(CL:UNLESS CORNERX
|
||||
(SETQ CORNERX 'LEFT))
|
||||
(CL:UNLESS CORNERY
|
||||
(SETQ CORNERY 'BOTTOM))
|
||||
(CL:WHEN (AND (LISTP CORNERX)
|
||||
(NULL CORNERY))
|
||||
(SETQ CORNERY (CADR CORNERX))
|
||||
(SETQ CORNERX (CAR CORNERX)))
|
||||
|
||||
(* ;; "Align the new-region corner with the reference point")
|
||||
(* ;; "Resolve the reference point")
|
||||
|
||||
(LET* ((LEFT REFX)
|
||||
(BOTTOM REFY)
|
||||
(RIGHT (IPLUS LEFT WIDTH))
|
||||
(TOP (IPLUS BOTTOM HEIGHT)))
|
||||
(CL:WHEN (EQ 'RIGHT CORNERX)
|
||||
(SETQ RIGHT LEFT)
|
||||
(SETQ LEFT (IDIFFERENCE LEFT WIDTH)))
|
||||
(CL:WHEN (EQ 'TOP CORNERY)
|
||||
(SETQ TOP BOTTOM)
|
||||
(SETQ BOTTOM (IDIFFERENCE BOTTOM HEIGHT)))
|
||||
(CL:WHEN ONSCREEN (* ; "Keep the region on the screen. ")
|
||||
(CL:WHEN (ILESSP LEFT 0)
|
||||
(ADD WIDTH LEFT)
|
||||
(SETQ LEFT 0))
|
||||
(CL:WHEN (ILESSP BOTTOM 0)
|
||||
(ADD HEIGHT BOTTOM)
|
||||
(SETQ BOTTOM 0))
|
||||
(CL:WHEN (IGREATERP RIGHT SCREENWIDTH)
|
||||
(ADD WIDTH (IDIFFERENCE SCREENWIDTH RIGHT)))
|
||||
(CL:WHEN (IGREATERP TOP SCREENHEIGHT)
|
||||
(ADD HEIGHT (IDIFFERENCE SCREENHEIGHT TOP))))
|
||||
(CREATEREGION LEFT BOTTOM WIDTH HEIGHT])
|
||||
[IF (AND (POSITIONP REFX)
|
||||
(NULL REFY))
|
||||
THEN (SETQ REFY (FETCH (POSITION YCOORD) OF REFX))
|
||||
(SETQ REFX (FETCH (POSITION XCOORD) OF REFX))
|
||||
ELSE (GETMOUSESTATE)
|
||||
(SETQ REFX (\RELCREATEREGION.REF REFX 'X))
|
||||
(SETQ REFY (\RELCREATEREGION.REF REFY 'Y]
|
||||
|
||||
(* ;; "Align the new-region corner with the reference point")
|
||||
|
||||
(LET* ((LEFT REFX)
|
||||
(BOTTOM REFY)
|
||||
(RIGHT (IPLUS LEFT WIDTH))
|
||||
(TOP (IPLUS BOTTOM HEIGHT)))
|
||||
(CL:WHEN (EQ 'RIGHT CORNERX)
|
||||
(SETQ RIGHT LEFT)
|
||||
(SETQ LEFT (IDIFFERENCE LEFT WIDTH)))
|
||||
(CL:WHEN (EQ 'TOP CORNERY)
|
||||
(SETQ TOP BOTTOM)
|
||||
(SETQ BOTTOM (IDIFFERENCE BOTTOM HEIGHT)))
|
||||
(CL:WHEN ONSCREEN (* ; "Keep the region on the screen. Not clear whether we should keep the width and height and just move the left and bottom. Here we allow some shrinkage")
|
||||
(CL:WHEN (ILESSP LEFT 0)
|
||||
(ADD WIDTH (IMIN 100 LEFT))
|
||||
(SETQ LEFT 0))
|
||||
(CL:WHEN (ILESSP BOTTOM 0)
|
||||
(ADD HEIGHT (IMIN 100 BOTTOM))
|
||||
(SETQ BOTTOM 0))
|
||||
(CL:WHEN (IGREATERP RIGHT SCREENWIDTH)
|
||||
(ADD WIDTH (IDIFFERENCE SCREENWIDTH RIGHT)))
|
||||
(CL:WHEN (IGREATERP TOP SCREENHEIGHT)
|
||||
(ADD HEIGHT (IDIFFERENCE SCREENHEIGHT TOP))))
|
||||
(CREATEREGION LEFT BOTTOM WIDTH HEIGHT])
|
||||
|
||||
(RELGETREGION
|
||||
[LAMBDA (WIDTH HEIGHT CORNERX CORNERY REFX REFY MINSIZE) (* ; "Edited 28-Dec-2021 23:13 by rmk")
|
||||
[LAMBDA (WIDTH HEIGHT CORNERX CORNERY REFX REFY MINSIZE) (* ; "Edited 27-Jan-2022 13:24 by rmk")
|
||||
(* ; "Edited 25-Jan-2022 15:30 by rmk")
|
||||
(* ; "Edited 23-Jan-2022 21:20 by rmk")
|
||||
(* ; "Edited 28-Dec-2021 23:13 by rmk")
|
||||
(* ; "Edited 10-Dec-2021 10:15 by rmk")
|
||||
|
||||
(* ;; "Prompts for a relative region as created by RELCREATEREGION. Initially the anchored corner is fixed and the cursor is moved to the diagonally opposite corner. If MINSIZE, the WIDTH and HEIGHT are taken to be the minimums that are acceptable, modulo the fact that the opposite corner is guaranteed to be visibleand, the size of the ghost region can only grow. If not MINSIZE, we also allow the user to shrink the ghost region.")
|
||||
|
||||
(CL:WHEN (AND (LISTP CORNERX)
|
||||
(NULL CORNERY))
|
||||
(SETQ CORNERY (CADR CORNERX))
|
||||
(SETQ CORNERX (CAR CORNERX)))
|
||||
(CL:UNLESS CORNERX
|
||||
(SETQ CORNERX 'LEFT))
|
||||
(CL:UNLESS CORNERY
|
||||
(SETQ CORNERY 'BOTTOM))
|
||||
(LET* ((REGION (OR (REGIONP WIDTH)
|
||||
(RELCREATEREGION WIDTH HEIGHT CORNERX CORNERY REFX REFY T)))
|
||||
(BASEX (FETCH (REGION LEFT) OF REGION))
|
||||
(BASEY (FETCH (REGION BOTTOM) OF REGION))
|
||||
(RWIDTH (FETCH (REGION WIDTH) OF REGION))
|
||||
(RHEIGHT (FETCH (REGION HEIGHT) OF REGION))
|
||||
(OPPX (IPLUS BASEX RWIDTH))
|
||||
(OPPY (IPLUS BASEY RHEIGHT)))
|
||||
(COND
|
||||
((AND (LISTP WIDTH)
|
||||
(NOT (REGIONP WIDTH))
|
||||
(NULL HEIGHT)
|
||||
(IGREATERP (LENGTH WIDTH)
|
||||
3))
|
||||
(APPLY (FUNCTION RELGETREGION)
|
||||
WIDTH))
|
||||
(T (CL:WHEN (AND (LISTP CORNERX)
|
||||
(NULL CORNERY))
|
||||
(SETQ CORNERY (CADR CORNERX))
|
||||
(SETQ CORNERX (CAR CORNERX)))
|
||||
(CL:UNLESS CORNERX
|
||||
(SETQ CORNERX 'LEFT))
|
||||
(CL:UNLESS CORNERY
|
||||
(SETQ CORNERY 'BOTTOM))
|
||||
(LET* ((REGION (OR (REGIONP WIDTH)
|
||||
(RELCREATEREGION WIDTH HEIGHT CORNERX CORNERY REFX REFY T)))
|
||||
(BASEX (FETCH (REGION LEFT) OF REGION))
|
||||
(BASEY (FETCH (REGION BOTTOM) OF REGION))
|
||||
(RWIDTH (FETCH (REGION WIDTH) OF REGION))
|
||||
(RHEIGHT (FETCH (REGION HEIGHT) OF REGION))
|
||||
(OPPX (IPLUS BASEX RWIDTH))
|
||||
(OPPY (IPLUS BASEY RHEIGHT)))
|
||||
|
||||
(* ;; "Default parameters assume the anchor is (LEFT BOTTOM)")
|
||||
(* ;; "Default parameters assume the anchor is (LEFT BOTTOM)")
|
||||
|
||||
(CL:WHEN (EQ 'RIGHT CORNERX)
|
||||
(SWAP BASEX OPPX))
|
||||
(CL:WHEN (EQ 'TOP CORNERY)
|
||||
(SWAP BASEY OPPY))
|
||||
(\CURSORPOSITION OPPX OPPY)
|
||||
(CL:UNLESS MINSIZE (* ; "No minimum size constraint")
|
||||
(SETQ RWIDTH NIL)
|
||||
(SETQ RHEIGHT NIL))
|
||||
(GETREGION RWIDTH RHEIGHT REGION NIL NIL (LIST BASEX BASEY OPPX OPPY])
|
||||
(CL:WHEN (EQ 'RIGHT CORNERX)
|
||||
(SWAP BASEX OPPX))
|
||||
(CL:WHEN (EQ 'TOP CORNERY)
|
||||
(SWAP BASEY OPPY))
|
||||
(\CURSORPOSITION OPPX OPPY)
|
||||
(CL:UNLESS MINSIZE (* ; "No minimum size constraint")
|
||||
(SETQ RWIDTH NIL)
|
||||
(SETQ RHEIGHT NIL))
|
||||
(GETREGION RWIDTH RHEIGHT REGION NIL NIL (LIST BASEX BASEY OPPX OPPY])
|
||||
|
||||
(RELCREATEPOSITION
|
||||
[LAMBDA (REFX REFY) (* ; "Edited 23-Jan-2022 17:08 by rmk")
|
||||
(CREATEPOSITION (\RELCREATEREGION.REF REFX 'X)
|
||||
(\RELCREATEREGION.REF REFY 'Y])
|
||||
)
|
||||
(DEFINEQ
|
||||
|
||||
(\RELCREATEREGION.REF
|
||||
[LAMBDA (REF WHICH) (* ; "Edited 2-Jan-2022 11:01 by rmk")
|
||||
[LAMBDA (REF WHICH) (* ; "Edited 23-Jan-2022 20:20 by rmk")
|
||||
(* ; "Edited 2-Jan-2022 11:01 by rmk")
|
||||
|
||||
(* ;; "REF can be NIL, an absolute screen position, the atom SCREEN, or a list of (anchor fraction adjustment) where anchor can be a region, window, or the atom SCREEN, fraction can be a number or atoms LEFT/RIGHT/BOTTOM/TOP as apropriate.")
|
||||
(* ; "Edited 30-Dec-2021 17:49 by rmk")
|
||||
(* ; "Edited 30-Dec-2021 17:49 by rmk")
|
||||
(LET (ANCHOR VAL SIZE FRACTION SPEC (BASE 0))
|
||||
|
||||
(* ;; "Would be nice if the screen had a region")
|
||||
@@ -386,7 +421,8 @@
|
||||
ELSEIF [AND (LISTP REF)
|
||||
(SETQ ANCHOR (OR (REGIONP (CAR REF))
|
||||
(AND (WINDOWP (CAR REF))
|
||||
(WINDOWREGION (CAR REF)))
|
||||
(WINDOWPROP (CAR REF)
|
||||
'REGION))
|
||||
(AND (EQ (CAR REF)
|
||||
'SCREEN)
|
||||
'SCREEN]
|
||||
@@ -417,7 +453,7 @@
|
||||
ELSE (\ILLEGAL.ARG REF])
|
||||
|
||||
(\RELCREATEREGION.SIZE
|
||||
[LAMBDA (PARAM WHICH) (* ; "Edited 2-Jan-2022 11:00 by rmk")
|
||||
[LAMBDA (PARAM WHICH) (* ; "Edited 2-Jan-2022 11:00 by rmk")
|
||||
(* ; "Edited 30-Dec-2021 17:51 by rmk")
|
||||
|
||||
(* ;;
|
||||
@@ -578,6 +614,39 @@
|
||||
(WINDOWPROP WINDOWTOATTACH 'PASSTOMAINCOMS WINDOWCOMACTION))))
|
||||
VAL])
|
||||
)
|
||||
(DEFINEQ
|
||||
|
||||
(CLOSEWITH
|
||||
[LAMBDA (CHILDREN PARENT) (* ; "Edited 28-Jan-2022 23:51 by rmk")
|
||||
[FOR C ONE INSIDE CHILDREN WHEN (AND C (SETQ C (WFROMDS C))) DO (SETQ ONE T)
|
||||
(WINDOWADDPROP PARENT
|
||||
'CLOSECHILDREN C)
|
||||
FINALLY (CL:WHEN ONE
|
||||
(WINDOWADDPROP PARENT 'CLOSEFN (FUNCTION CLOSEWITH.DOIT)))]
|
||||
PARENT])
|
||||
|
||||
(CLOSEWITH.DOIT
|
||||
[LAMBDA (PARENT) (* ; "Edited 28-Jan-2022 17:54 by rmk")
|
||||
(FOR C IN (WINDOWPROP PARENT 'CLOSECHILDREN) WHEN (OPENWP C) DO (CLOSEW C))
|
||||
(WINDOWPROP PARENT 'CLOSECHILDREN NIL)
|
||||
PARENT])
|
||||
|
||||
(MOVEWITH
|
||||
[LAMBDA (CHILDREN PARENT) (* ; "Edited 28-Jan-2022 23:43 by rmk")
|
||||
[FOR C ONE INSIDE CHILDREN WHEN (AND C (SETQ C (WFROMDS C))) DO (SETQ ONE T)
|
||||
(WINDOWADDPROP PARENT
|
||||
'MOVECHILDREN C)
|
||||
FINALLY (CL:WHEN ONE
|
||||
(WINDOWADDPROP PARENT 'MOVEFN (FUNCTION MOVEWITH.DOIT)))]
|
||||
PARENT])
|
||||
|
||||
(MOVEWITH.DOIT
|
||||
[LAMBDA (PARENT NEWPOS) (* ; "Edited 28-Jan-2022 22:34 by rmk")
|
||||
[FOR C (DELTA _ (PTDIFFERENCE NEWPOS (WINDOWPOSITION PARENT))) IN (WINDOWPROP PARENT
|
||||
'MOVECHILDREN)
|
||||
DO (MOVEW C (PTPLUS DELTA (WINDOWPOSITION C]
|
||||
PARENT])
|
||||
)
|
||||
|
||||
(MOVD? 'ATTACHWINDOW 'ATTACHWINDOW.ORIG)
|
||||
|
||||
@@ -591,8 +660,10 @@
|
||||
)
|
||||
)
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (1602 3789 (SET-TYPED-REGIONS 1612 . 3787)) (3790 10791 (RM-CREATEW 3800 . 6307) (
|
||||
RM-CLOSEW 6309 . 7710) (RM-GETREGION 7712 . 10298) (CLOSE-TYPED-W 10300 . 10789)) (11707 16778 (
|
||||
RELCREATEREGION 11717 . 14876) (RELGETREGION 14878 . 16776)) (16779 21898 (\RELCREATEREGION.REF 16789
|
||||
. 19646) (\RELCREATEREGION.SIZE 19648 . 21896)) (21951 31293 (RM-ATTACHWINDOW 21961 . 31291)))))
|
||||
(FILEMAP (NIL (1677 3864 (SET-TYPED-REGIONS 1687 . 3862)) (3865 10866 (RM-CREATEW 3875 . 6382) (
|
||||
RM-CLOSEW 6384 . 7785) (RM-GETREGION 7787 . 10373) (CLOSE-TYPED-W 10375 . 10864)) (11782 19261 (
|
||||
RELCREATEREGION 11792 . 16415) (RELGETREGION 16417 . 19024) (RELCREATEPOSITION 19026 . 19259)) (19262
|
||||
24564 (\RELCREATEREGION.REF 19272 . 22304) (\RELCREATEREGION.SIZE 22306 . 24562)) (24617 33959 (
|
||||
RM-ATTACHWINDOW 24627 . 33957)) (33960 35694 (CLOSEWITH 33970 . 34497) (CLOSEWITH.DOIT 34499 . 34779)
|
||||
(MOVEWITH 34781 . 35304) (MOVEWITH.DOIT 35306 . 35692)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
@@ -37,23 +37,72 @@ NIL: LASTMOUSEX/LASTMOUSEY
|
||||
(RELCREATEREGION WIDTH HEIGHT CORNERX CORNERY REFX REFY ONSCREEN) [Function]
|
||||
RELCREATEREGION creates a region of dimensions WIDTH and HEIGHT. One of its corners is identified by CORNERX and CORNERY and that corner will be aligned with a reference screen-point determined by REFX and REFY. If ONSCREEN, the WIDTH or HEIGHT will be adjusted with respect to that alignment so that the resulting region is entirely within the screen.
|
||||
WIDTH and HEIGHT can be given as absolute (natural) numbers) or specified relative to the WIDTH and HEIGHT of another region or of the screen. The possibilities are interpreted as follows:
|
||||
natural number: the number of screen points
|
||||
list of the form (anchor fraction adjustment), where anchor is a region, window, or the atom SCREEN. The corres-ponding dimension of the anchor is mutiplied by fraction and adjustment is added to the result. For example, specifying (<window> .5 -1) results in a WIDTH that is one point smaller than half the width of window's region. Fraction and adjustment default to 1 and 0 respectively.
|
||||
region/window/SCREEN: equivalent to (region/window/SCREEN 1 0).
|
||||
CORNERX can be LEFT, RIGHT, or NIL=LEFT, CORNERY can be BOTTOM, TOP, or NIL=BOTTOM. If LEFT/TOP are specified, for example, the region will be splayed down and to the right of the reference point. If RIGHT/BOTTOM, then up and to the left.
|
||||
CORNERX can be LEFT, RIGHT, or NIL=LEFT, CORNERY can be BOTTOM, TOP, or NIL=BOTTOM. If LEFT/TOP are specified, for example, the region will be splayed down and to the right of the reference point. If RIGHT/BOTTOM, then up and to the left.
|
||||
The reference-point arguments REFX and REFY are interpreted as follows:
|
||||
NIL: LASTMOUSEX/LASTMOUSEY
|
||||
natural number: an absolute screen coordinate
|
||||
(anchor fraction adjustment) or just region/window/SCREEN: the quantity determined relative to the size of anchor (as above) is added to the anchors left/bottom produce the REFX/REFY coordinate. In this case, fractions specified as LEFT/BOTTOM/NIL are interpreted as 0 and RIGHT/TOP are interpreted as 1. For example, a specification (<window> .4 -2) for REFY will produce a coordinate 2 points below the level that is 40% of the distance between the bottom and top of the window's region.
|
||||
For convenience, if REFX is a position and REFY is NIL, then the XCOORD and YCOORD of REFX are taken as absolute values for REFX and REFY.
|
||||
Also for convenience, if WIDTH is a potentially a list of RELCREATEREGION arguments, then the elements of that list are spread out in a recursive call.
|
||||
|
||||
(RELGETREGION WIDTH HEIGHT CORNERX CORNERY REFX REFY MINSIZE) [Function]
|
||||
(RELGETREGION WIDTH HEIGHT CORNERX CORNERY REFX REFY MINSIZE) [Function]
|
||||
Calls GETREGION with an initial ghost region as created by RELCREATEREGION. CORNERX and CORNERY determine the ghost region's fixed corner, and the cursor starts at the region's diagonally opposite corner. If MINSIZE is true, then WIDTH and HEIGHT are taken as the minimum sizes of the region, except for adjustments that may be needed to ensure that all corners of the ghost region are initially visible on the screen.
|
||||
(RELCREATEPOSITION REFX REFY) [Function]
|
||||
Creates a position with X and Y coordinates specified by REFX and REFY references as above.
|
||||
Constellation regions
|
||||
Applications are often set up as a constellation of windows, a central or primary window surrounded by some number of satellites for menus, headers, prompts, and secondary outputs. The main panel of a file browser, for example, displays the list of files, but above it are carefully arranged windows for the column headers, summary information, and prompts, and off to the side is the menu of file browser commands. FILEBROWSER interprets the screen region that the user sweeps out for a new browser as the region for the whole constellation,the smallest region that will enclose the central window and all of its satellites. Similarly, the screen region given to TEDIT and SEDIT is divided between the prompt window and the central editing window, again so that the whole constellation (a pair in these cases) fit within the provided region.
|
||||
Each of these applications is constructed by anticipating the subregions that the satellite windows will occupy after they are attached, decreasing the constellation region by their estimated (using WIDTHIFWINDOW HEIGHTIFWINDOW) or actual sizes, and then using remainder as the region for the central window.
|
||||
An alternative approach is to construct the central window first, giving it the entire constellation region, and then to have ATTACHWINDOW reshape that window to accomodate the satellite windows as they are attached in sequence. This leads to the same final configuration, but there is no need for separate calculations to pre-adjust the region of the central window.
|
||||
REGIONMANAGER provides an overlay veneer for ATTACHWINDOW that implements this strategy. If the new argument TAKEFROMCENTRAL is true, then the region of the WINDOWTOATTACH will be substracted from the region of the existing central window according to the EDGE parameter of the attachment.
|
||||
(ATTACHWINDOW WINDOWTOATTACH MAINWINDOW EDGE POSITIONONEDGE WINDOWCOMACTION TAKEFROMCENTRAL) [Function]
|
||||
This behavior is also triggered if the UNDERCONSTRUCTION property of the central window is true. Thus, a constellation can be set up by creating all of the satellites and the central window, marking the central window as under construction, and then doing the sequence of attachments. The property can be reset to NIL when the construction is complete, so the central window does not shrink if other other attachments (e.g. expanded menus) by later user actions.
|
||||
|
||||
A somewhat weaker form of a constellation is a collection of windows that are not attached around a central window but stand in a parent-child relationship at least with respect to closing and moving. A parent windows spawns children that respond independently to ordinary window commands (move, shape, close). But the children close when the parent closes, and the children move when the parent moves so that they continue to appear in the same relative positions. These primitives allow the construction of a tree of windows that are dependent in this way.
|
||||
(CLOSEWITH CHILDREN PARENT) [Function]
|
||||
Establishes a link between the PARENT window and any number of CHILDREN windows such that all CHILDREN will close when PARENT closes. The closing is accomplished by CLOSEWITH.DOIT:
|
||||
(CLOSEWITH.DOIT PARENT) [Function]
|
||||
|
||||
Constellation regions
|
||||
Applications are often set up as a constellation of windows, a central or primary window surrounded by some number of satellites for menus, headers, prompts, and secondary outputs. The main panel of a file browser, for example, displays the list of files, but above it are carefully arranged windows for the column headers, summary information, and prompts, and off to the side is the menu of file browser commands. FILEBROWSER interprets the screen region that the user sweeps out for a new browser as the region for the whole constellation,the smallest region that will enclose the central window and all of its satellites. Similarly, the screen region given to TEDIT and SEDIT is divided between the prompt window and the central editing window, again so that the whole constellation (a pair in these cases) fit within the provided region.
|
||||
Closes the close-with children of PARENT.
|
||||
(MOVEWITH CHILDREN PARENT) [Function]
|
||||
Establishes a link between the PARENT window and any number of CHILDREN windows such that all CHILDREN will move when PARENT closes. The closing is accomplished by MOVEWITH.DOIT:
|
||||
(MOVEWITH.DOIT PARENT NEWPOS) [Function]
|
||||
If NEWPOS is the new position of PARENT, moves each of the move-children so that they stand in the same relation to PARENT after it moves as before.
|
||||
|
||||
|
||||
| ||||