Rmk19: Updates and remaining components for managing comparisons and interactions between git and Medley (#658)
* PSEUDOHOSTS: Overlay a file system at the end of a path in another file system New package, please look through it. * REGIONMANAGER: added RELCREATEPOSITION, allow for arguments to be spread If the WIDTH argument looks like a list of arguments, the arguments are spread out. Means that a relative region can be passed through intermediate functions. * EXAMINEDEFS: More control over regions and windows Examination windows are returned so that callers can manipulate them * TEDIT-PF-SEE: tf respects reader environment and bold faces of DEFUN and DEFMACRO names * COMPAREDIRECTORIES: refactored for more flexibility and easier maintenance Also, based on SPY, made more internal operations work on streams that are located and created once, rather than on file Added CDMERGE to merge CDVALUES for different subdirectories, to permit scrolling of all differences in a single browser window * COMPARESOURCES: Region for CS browser is passed through, window is returned Also tried to eliminate mismatching of simple edit timestamps * COMPARETEXT: Files can be input streams, region is passed in, window is returned * COMPAREDIRECTORIES again: Fixed a promptwindow bug * GITFNS: New package for comparing and copying back and forth from My Medley to the git clone
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED "30-Dec-2021 21:22:01"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>comparetext.;100 48929
|
||||
(FILECREATED "27-Jan-2022 13:20:38"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>comparetext.;109 49971
|
||||
|
||||
:CHANGES-TO (FNS COMPARETEXT.TEXTOBJ)
|
||||
|
||||
:PREVIOUS-DATE "27-Dec-2021 15:56:54"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>comparetext.;98)
|
||||
:PREVIOUS-DATE "23-Jan-2022 20:22:06"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>comparetext.;108)
|
||||
|
||||
|
||||
(* ; "
|
||||
@@ -33,11 +33,9 @@ Copyright (c) 1984-1985, 1993, 1998 by Xerox Corporation.
|
||||
(DEFINEQ
|
||||
|
||||
(COMPARETEXT
|
||||
[LAMBDA (FILE1 FILE2 HASH.TYPE REGION FILELABELS) (* ; "Edited 22-Dec-2021 23:49 by rmk")
|
||||
(* ; "Edited 15-Dec-2021 16:23 by rmk")
|
||||
(* ; "Edited 13-Dec-2021 12:21 by rmk")
|
||||
(* ; "Edited 8-Nov-2021 08:44 by rmk:")
|
||||
(* mjs " 8-Jan-84 21:06")
|
||||
[LAMBDA (FILE1 FILE2 HASH.TYPE REGION FILELABELS TITLE) (* ; "Edited 12-Jan-2022 16:32 by rmk")
|
||||
(* ; "Edited 8-Nov-2021 08:44 by rmk")
|
||||
(* ; "Edited 8-Jan-84 21:06 by mjs")
|
||||
|
||||
(* ;; "Compares the two files, and produces a graph showing their corresponding chunks. The courseness of the 'chunking' is determined by HASH.TYPE, which may be PARA, LINE, or WORD. HASH.TYPE = NIL defaults to PARA. The file difference graph is displayed at REGION. If REGION = NIL, the user is asked to specify a region. If REGION = T, a standard region is used.")
|
||||
|
||||
@@ -45,8 +43,10 @@ Copyright (c) 1984-1985, 1993, 1998 by Xerox Corporation.
|
||||
((PARA LINE WORD))
|
||||
(NIL (SETQ HASH.TYPE 'PARA))
|
||||
(ERROR (CONCAT "Unrecognize HASHTYPE " HASH.TYPE)))
|
||||
(LET ((FULLFILE1 (FINDFILE FILE1 T))
|
||||
(FULLFILE2 (FINDFILE FILE2 T)))
|
||||
(LET [(FULLFILE1 (OR (GETSTREAM FILE1 'INPUT T)
|
||||
(FINDFILE FILE1 T)))
|
||||
(FULLFILE2 (OR (GETSTREAM FILE2 'INPUT T)
|
||||
(FINDFILE FILE2 T]
|
||||
(CL:UNLESS (AND FULLFILE1 FULLFILE2)
|
||||
(ERROR "Can't find both files" (LIST FILE1 FILE2)))
|
||||
(IMCOMPARE.CHUNKS (create IMCOMPARE.CHUNK
|
||||
@@ -55,17 +55,22 @@ Copyright (c) 1984-1985, 1993, 1998 by Xerox Corporation.
|
||||
(create IMCOMPARE.CHUNK
|
||||
FILENAME _ FULLFILE2
|
||||
FILEPTR _ 0)
|
||||
HASH.TYPE NIL FILELABELS])
|
||||
HASH.TYPE REGION FILELABELS TITLE])
|
||||
|
||||
(COMPARETEXT.WINDOW
|
||||
[LAMBDA (GRAPH REGION) (* ; "Edited 27-Dec-2021 13:47 by rmk")
|
||||
(* ; "Edited 25-Dec-2021 11:40 by rmk")
|
||||
[LAMBDA (GRAPH REGION TITLE) (* ; "Edited 23-Jan-2022 18:18 by rmk")
|
||||
(* ; "Edited 12-Jan-2022 10:06 by rmk")
|
||||
(* ; "Edited 22-Dec-2021 15:51 by rmk")
|
||||
|
||||
(* ;; "Set up the graph WINDOW. If REGION isn't provided we prompt with a region that is wide enough for the graph and high enough for at least an initial segment.")
|
||||
|
||||
(LET [WINDOW GRAPHREGION GWIDTH (FILEPREFIX (CAR (GRAPHERPROP GRAPH 'FILELABELS]
|
||||
[SETQ REGION
|
||||
(LET [WINDOW GRAPHREGION WIDTH HEIGHT (FILEPREFIX (CAR (GRAPHERPROP GRAPH 'FILELABELS]
|
||||
(SETQ GRAPHREGION (GRAPHREGION GRAPH))
|
||||
(SETQ WIDTH (IPLUS (TIMES 2 WBorder)
|
||||
(FETCH (REGION WIDTH) OF GRAPHREGION)))
|
||||
[SETQ HEIGHT (IMIN 200 (IPLUS (FETCH (REGION HEIGHT) OF GRAPHREGION)
|
||||
(ITIMES 2 (FONTHEIGHT DEFAULTFONT]
|
||||
(SETQ REGION
|
||||
(if (EQ REGION T)
|
||||
then (create REGION
|
||||
LEFT _ 25
|
||||
@@ -73,35 +78,38 @@ Copyright (c) 1984-1985, 1993, 1998 by Xerox Corporation.
|
||||
WIDTH _ 500
|
||||
HEIGHT _ 150)
|
||||
elseif (REGIONP REGION)
|
||||
else (CLRPROMPT)
|
||||
(printout PROMPTWINDOW "Please specify a region for the comparison graph" T)
|
||||
(SETQ GRAPHREGION (GRAPHREGION GRAPH))
|
||||
(SETQ GWIDTH (FETCH (REGION WIDTH) OF GRAPHREGION))
|
||||
elseif (POSITIONP REGION)
|
||||
THEN
|
||||
(* ;;
|
||||
"This is a reference position providing the horizontal midpoint of the graph region and the top")
|
||||
|
||||
(RELCREATEREGION WIDTH HEIGHT 'LEFT 'TOP (IDIFFERENCE (FETCH (POSITION XCOORD)
|
||||
OF REGION)
|
||||
(IQUOTIENT WIDTH 2))
|
||||
(FETCH (POSITION YCOORD) OF REGION))
|
||||
ELSE (CLEARW (GETPROMPTWINDOW WINDOW))
|
||||
(printout (GETPROMPTWINDOW WINDOW)
|
||||
"Please specify a region for the comparison graph" T)
|
||||
|
||||
(* ;; "I don't know why the graphregion doesn't include the last line")
|
||||
|
||||
(SETQ REGION (RELGETREGION (IPLUS (TIMES 2 WBorder)
|
||||
GWIDTH)
|
||||
[IMIN 200 (IPLUS (FETCH (REGION HEIGHT) OF GRAPHREGION)
|
||||
(ITIMES 2 (FONTHEIGHT DEFAULTFONT]
|
||||
'RIGHT
|
||||
'TOP]
|
||||
[SETQ WINDOW (CREATEW REGION (CONCAT "Compare text" (CL:IF FILEPREFIX
|
||||
(CONCAT " of " FILEPREFIX)
|
||||
"")
|
||||
" showing "
|
||||
(CL:IF (GRAPHERPROP GRAPH 'ALLCHUNKS)
|
||||
"all"
|
||||
"only different")
|
||||
" chunks, hashed by "
|
||||
(SELECTQ (GRAPHERPROP GRAPH 'HASH.TYPE)
|
||||
(PARA "paragraph")
|
||||
(LINE "line")
|
||||
(WORD "word")
|
||||
(SHOULDNT]
|
||||
(RELCREATEREGION WIDTH HEIGHT 'RIGHT 'TOP REGION)))
|
||||
[SETQ WINDOW (CREATEW REGION (OR TITLE (CONCAT "Compare text" (CL:IF FILEPREFIX
|
||||
(CONCAT " of " FILEPREFIX)
|
||||
"")
|
||||
" showing "
|
||||
(CL:IF (GRAPHERPROP GRAPH 'ALLCHUNKS)
|
||||
"all"
|
||||
"only different")
|
||||
" chunks, hashed by "
|
||||
(SELECTQ (GRAPHERPROP GRAPH 'HASH.TYPE)
|
||||
(PARA "paragraph")
|
||||
(LINE "line")
|
||||
(WORD "word")
|
||||
(SHOULDNT]
|
||||
(GETPROMPTWINDOW WINDOW)
|
||||
(CL:WHEN (EQ GWIDTH (FETCH (REGION WIDTH) OF (WINDOWREGION WINDOW)))
|
||||
(WINDOWPROP WINDOW 'MAXSIZE (CONS GWIDTH MAX.SMALLP)))
|
||||
(CL:WHEN (EQ WIDTH (FETCH (REGION WIDTH) OF (WINDOWREGION WINDOW)))
|
||||
(WINDOWPROP WINDOW 'MAXSIZE (CONS WIDTH MAX.SMALLP)))
|
||||
(GETPROMPTWINDOW WINDOW)
|
||||
[WINDOWADDPROP WINDOW 'CLOSEFN (FUNCTION (LAMBDA (W)
|
||||
(LET (TOBJ TWINDOW)
|
||||
@@ -122,41 +130,37 @@ Copyright (c) 1984-1985, 1993, 1998 by Xerox Corporation.
|
||||
WINDOW])
|
||||
|
||||
(COMPARETEXT.TEXTOBJ
|
||||
[LAMBDA (NODE WINDOW INCOL1) (* ; "Edited 30-Dec-2021 21:21 by rmk")
|
||||
[LAMBDA (NODE WINDOW INCOL1) (* ; "Edited 27-Jan-2022 13:14 by rmk")
|
||||
(* ; "Edited 23-Jan-2022 16:51 by rmk")
|
||||
(* ; "Edited 20-Jan-2022 22:29 by rmk")
|
||||
(* ; "Edited 19-Jan-2022 08:52 by rmk")
|
||||
(* ; "Edited 30-Dec-2021 21:21 by rmk")
|
||||
(* ; "Edited 27-Dec-2021 15:56 by rmk")
|
||||
|
||||
(* ;; "Returns the text object for the chunk column in the graphwindow WINDOW, on the left if INCOL1. If the windows are automatic, they are lined up under the middle of WINDOW.")
|
||||
|
||||
(DECLARE (USEDFREE COMPARETEXT.AUTOTEDIT))
|
||||
(LET (TEXTOBJ TSTREAM TWINDOW REGION (NODEID (FETCH (GRAPHNODE NODEID) OF NODE)))
|
||||
(LET (TEXTOBJ TSTREAM TWINDOW REGION REGIONARGS (NODEID (FETCH (GRAPHNODE NODEID) OF NODE)))
|
||||
(CL:UNLESS [AND [SETQ TEXTOBJ (WINDOWPROP WINDOW (CL:IF INCOL1
|
||||
'COL1TEXTOBJ
|
||||
'COL2TEXTOBJ)]
|
||||
(OPENWP (WFROMDS (TEXTSTREAM TEXTOBJ]
|
||||
(SETQ REGION (RELCREATEREGION 475 600 (CL:IF INCOL1
|
||||
'RIGHT
|
||||
'LEFT)
|
||||
'TOP
|
||||
(CL:IF INCOL1
|
||||
`(,WINDOW 0.5 -1)
|
||||
`(,WINDOW 0.5 1))
|
||||
`(,WINDOW BOTTOM -2)
|
||||
T))
|
||||
(SETQ REGIONARGS (LIST 700 600 (CL:IF INCOL1
|
||||
'RIGHT
|
||||
'LEFT)
|
||||
'TOP
|
||||
`(,WINDOW 0.5 ,(CL:IF INCOL1
|
||||
-1
|
||||
1))
|
||||
`(,WINDOW BOTTOM -2)
|
||||
T))
|
||||
(SETQ REGION (CL:IF COMPARETEXT.AUTOTEDIT
|
||||
(RELCREATEREGION REGIONARGS)
|
||||
(RELGETREGION REGIONARGS)))
|
||||
[SETQ TSTREAM (TEXTSTREAM (TEDIT (CL:IF (FIXP (CAR NODEID))
|
||||
(FETCH (IMCOMPARE.CHUNK FILENAME) of NODEID)
|
||||
NODEID)
|
||||
(IF COMPARETEXT.AUTOTEDIT
|
||||
THEN
|
||||
(* ;;
|
||||
"Just use it as created, don't prompt for adjustments")
|
||||
|
||||
REGION
|
||||
ELSE (RELGETREGION REGION NIL (CL:IF INCOL1
|
||||
'RIGHT
|
||||
'LEFT)
|
||||
'TOP))
|
||||
NIL
|
||||
`(READONLY T LEAVETTY T]
|
||||
REGION NIL `(READONLY T LEAVETTY T]
|
||||
(SETQ TWINDOW (WFROMDS TSTREAM))
|
||||
(SETQ TEXTOBJ (TEXTOBJ TSTREAM))
|
||||
(WINDOWPROP WINDOW (CL:IF INCOL1
|
||||
@@ -173,20 +177,24 @@ Copyright (c) 1984-1985, 1993, 1998 by Xerox Corporation.
|
||||
WINDOWPOSITION
|
||||
W)))
|
||||
TOBJ TW)
|
||||
(CL:WHEN (SETQ TOBJ (WINDOWPROP
|
||||
W
|
||||
'COL1TEXTOBJ))
|
||||
(MOVEW (SETQ TW (WFROMDS (TEXTSTREAM
|
||||
TOBJ)))
|
||||
(PTPLUS DELTA (WINDOWPOSITION
|
||||
TW))))
|
||||
(CL:WHEN (SETQ TOBJ (WINDOWPROP
|
||||
W
|
||||
'COL2TEXTOBJ))
|
||||
(MOVEW (SETQ TW (WFROMDS (TEXTSTREAM
|
||||
TOBJ)))
|
||||
(PTPLUS DELTA (WINDOWPOSITION
|
||||
TW))))
|
||||
(CL:WHEN [AND (SETQ TOBJ
|
||||
(WINDOWPROP W
|
||||
'COL1TEXTOBJ))
|
||||
(SETQ TW
|
||||
(WFROMDS (TEXTSTREAM
|
||||
TOBJ]
|
||||
(MOVEW TW (PTPLUS DELTA (
|
||||
WINDOWPOSITION
|
||||
TW))))
|
||||
(CL:WHEN [AND (SETQ TOBJ
|
||||
(WINDOWPROP W
|
||||
'COL2TEXTOBJ))
|
||||
(SETQ TW
|
||||
(WFROMDS (TEXTSTREAM
|
||||
TOBJ]
|
||||
(MOVEW TW (PTPLUS DELTA (
|
||||
WINDOWPOSITION
|
||||
TW))))
|
||||
NIL])
|
||||
TEXTOBJ])
|
||||
|
||||
@@ -246,7 +254,7 @@ Copyright (c) 1984-1985, 1993, 1998 by Xerox Corporation.
|
||||
(WINDOWPROP WINDOW 'LASTNODES (LIST NODE1 NODE2])
|
||||
|
||||
(IMCOMPARE.CHUNKS
|
||||
[LAMBDA (CHUNK1 CHUNK2 HASH.TYPE REGION FILELABELS) (* ; "Edited 25-Dec-2021 13:02 by rmk")
|
||||
[LAMBDA (CHUNK1 CHUNK2 HASH.TYPE REGION FILELABELS TITLE) (* ; "Edited 12-Jan-2022 10:06 by rmk")
|
||||
(* ; "Edited 23-Dec-2021 00:02 by rmk")
|
||||
(* ; "Edited 8-Sep-1984 00:06 by rmk")
|
||||
|
||||
@@ -302,11 +310,13 @@ Copyright (c) 1984-1985, 1993, 1998 by Xerox Corporation.
|
||||
|
||||
(* ;; "The file comparison is complete. Format and display the file difference graph")
|
||||
|
||||
(IMCOMPARE.DISPLAYGRAPH CHUNK1 CHUNK2 HASH.TYPE REGION CHUNKLIST1 CHUNKLIST2 FILELABELS])
|
||||
(IMCOMPARE.DISPLAYGRAPH CHUNK1 CHUNK2 HASH.TYPE REGION CHUNKLIST1 CHUNKLIST2 FILELABELS
|
||||
TITLE])
|
||||
|
||||
(IMCOMPARE.COLLECT.HASH.CHUNKS
|
||||
[LAMBDA (CHUNK HASH.TYPE) (* ; "Edited 24-Dec-2021 22:30 by rmk")
|
||||
(* ; "Edited 13-Dec-2021 16:32 by rmk")
|
||||
[LAMBDA (CHUNK HASH.TYPE) (* ; "Edited 20-Jan-2022 23:09 by rmk")
|
||||
(* ; "Edited 24-Dec-2021 22:30 by rmk")
|
||||
(* ; "Edited 13-Dec-2021 16:32 by rmk")
|
||||
(* ; "Edited 23-Dec-98 16:54 by rmk:")
|
||||
(* mjs " 8-Jan-84 20:57")
|
||||
|
||||
@@ -338,11 +348,12 @@ Copyright (c) 1984-1985, 1993, 1998 by Xerox Corporation.
|
||||
(fetch (IMCOMPARE.CHUNK CHUNKLENGTH)
|
||||
of CHUNK)))
|
||||
WHILE (SETQ CHUNK (IMCOMPARE.HASH STREAM HASH.TYPE ENDPOS))
|
||||
COLLECT (REPLACE FILENAME OF CHUNK WITH FILENAME)
|
||||
COLLECT (REPLACE (IMCOMPARE.CHUNK FILENAME) OF CHUNK WITH FILENAME)
|
||||
CHUNK))])
|
||||
|
||||
(IMCOMPARE.DISPLAYGRAPH
|
||||
[LAMBDA (CHUNK1 CHUNK2 HASH.TYPE REGION CHUNKLIST1 CHUNKLIST2 FILELABELS)
|
||||
[LAMBDA (CHUNK1 CHUNK2 HASH.TYPE REGION CHUNKLIST1 CHUNKLIST2 FILELABELS TITLE)
|
||||
(* ; "Edited 12-Jan-2022 09:58 by rmk")
|
||||
(* ; "Edited 27-Dec-2021 11:58 by rmk")
|
||||
(* ; "Edited 23-Dec-2021 00:14 by rmk")
|
||||
(* mjs "11-Jul-85 09:10")
|
||||
@@ -459,7 +470,7 @@ Copyright (c) 1984-1985, 1993, 1998 by Xerox Corporation.
|
||||
COL1X
|
||||
,COL1X COL2X ,COL2X ALLCHUNKS
|
||||
,COMPARETEXT.ALLCHUNKS]
|
||||
(SHOWGRAPH GRAPH (COMPARETEXT.WINDOW GRAPH REGION)
|
||||
(SHOWGRAPH GRAPH (COMPARETEXT.WINDOW GRAPH REGION TITLE)
|
||||
(FUNCTION IMCOMPARE.LEFTBUTTONFN)
|
||||
(FUNCTION IMCOMPARE.MIDDLEBUTTONFN)
|
||||
T NIL])
|
||||
@@ -770,12 +781,12 @@ Copyright (c) 1984-1985, 1993, 1998 by Xerox Corporation.
|
||||
)
|
||||
(PUTPROPS COMPARETEXT COPYRIGHT ("Xerox Corporation" 1984 1985 1993 1998))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (1344 41549 (COMPARETEXT 1354 . 2933) (COMPARETEXT.WINDOW 2935 . 7132) (
|
||||
COMPARETEXT.TEXTOBJ 7134 . 12023) (COMPARETEXT.SETSEL 12025 . 12815) (CHUNKNODELABEL 12817 . 13938) (
|
||||
IMCOMPARE.BOXNODE 13940 . 14707) (IMCOMPARE.CHUNKS 14709 . 19062) (IMCOMPARE.COLLECT.HASH.CHUNKS 19064
|
||||
. 21842) (IMCOMPARE.DISPLAYGRAPH 21844 . 29570) (IMCOMPARE.HASH 29572 . 33759) (
|
||||
IMCOMPARE.MERGE.CONNECTED.CHUNKS 33761 . 37257) (IMCOMPARE.MERGE.UNCONNECTED.CHUNKS 37259 . 39214) (
|
||||
IMCOMPARE.SHOW.DIST 39216 . 39662) (IMCOMPARE.UPDATE.SYMBOL.TABLE 39664 . 41547)) (41550 47707 (
|
||||
IMCOMPARE.LEFTBUTTONFN 41560 . 44137) (IMCOMPARE.MIDDLEBUTTONFN 44139 . 47255) (IMCOMPARE.COPYBUTTONFN
|
||||
47257 . 47705)) (47760 48451 (TAIL1 47770 . 48124) (TAIL2 48126 . 48449)))))
|
||||
(FILEMAP (NIL (1345 42591 (COMPARETEXT 1355 . 2855) (COMPARETEXT.WINDOW 2857 . 7675) (
|
||||
COMPARETEXT.TEXTOBJ 7677 . 12786) (COMPARETEXT.SETSEL 12788 . 13578) (CHUNKNODELABEL 13580 . 14701) (
|
||||
IMCOMPARE.BOXNODE 14703 . 15470) (IMCOMPARE.CHUNKS 15472 . 19848) (IMCOMPARE.COLLECT.HASH.CHUNKS 19850
|
||||
. 22767) (IMCOMPARE.DISPLAYGRAPH 22769 . 30612) (IMCOMPARE.HASH 30614 . 34801) (
|
||||
IMCOMPARE.MERGE.CONNECTED.CHUNKS 34803 . 38299) (IMCOMPARE.MERGE.UNCONNECTED.CHUNKS 38301 . 40256) (
|
||||
IMCOMPARE.SHOW.DIST 40258 . 40704) (IMCOMPARE.UPDATE.SYMBOL.TABLE 40706 . 42589)) (42592 48749 (
|
||||
IMCOMPARE.LEFTBUTTONFN 42602 . 45179) (IMCOMPARE.MIDDLEBUTTONFN 45181 . 48297) (IMCOMPARE.COPYBUTTONFN
|
||||
48299 . 48747)) (48802 49493 (TAIL1 48812 . 49166) (TAIL2 49168 . 49491)))))
|
||||
STOP
|
||||
|
||||
Reference in New Issue
Block a user