From 293c973f1d96dfad6edec019573aefec66a68f39 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Mon, 24 Jan 2022 21:10:45 -0800 Subject: [PATCH] EDITINTERFACE: bug fix in date-comment recognition, improvements to dated change-note behavior --- sources/EDITINTERFACE | 113 +++++++++++++++++++------------------ sources/EDITINTERFACE.LCOM | Bin 16204 -> 16579 bytes 2 files changed, 57 insertions(+), 56 deletions(-) diff --git a/sources/EDITINTERFACE b/sources/EDITINTERFACE index d9f2a03f..fa5cd573 100644 --- a/sources/EDITINTERFACE +++ b/sources/EDITINTERFACE @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 8-Dec-2021 18:25:33"  -{DSK}kaplan>Local>medley3.5>my-medley>sources>EDITINTERFACE.;29 47473 +(FILECREATED "19-Jan-2022 23:09:02"  +{DSK}kaplan>Local>medley3.5>my-medley>sources>EDITINTERFACE.;34 47559 - :CHANGES-TO (FNS EDITDATE? EDITDATE) + :CHANGES-TO (FNS FIXEDITDATE EDITDATE?) - :PREVIOUS-DATE " 8-Dec-2021 16:11:23" -{DSK}kaplan>Local>medley3.5>my-medley>sources>EDITINTERFACE.;27) + :PREVIOUS-DATE "19-Jan-2022 10:22:03" +{DSK}kaplan>Local>medley3.5>my-medley>sources>EDITINTERFACE.;31) (* ; " @@ -109,7 +109,7 @@ Copyright (c) 1986-1988, 1990-1991 by Venue & Xerox Corporation. (DEFGLOBALVAR XCL::ED-LAST-INFO NIL "used in ED to stash last call info so (ED NIL) will restart last edit") -(CL:DEFUN ED (CL::NAME CL::OPTIONS) (* ; "Edited 5-Jul-88 16:03 by woz") +(CL:DEFUN ED (CL::NAME CL::OPTIONS) (* ; "Edited 5-Jul-88 16:03 by woz") (* ;;; "Standard Common Lisp editor entry. CLtL say's ED does something reasonable when passed a pathname. We coerce name into something that might be the name of something with an IL:FILES definition, & try to edit that. Then save call info in ED-LAST-INFO, so (ED) will start last edit over again.") @@ -627,13 +627,11 @@ Copyright (c) 1986-1988, 1990-1991 by Venue & Xerox Corporation. OLDATE INITLS]) (FIXEDITDATE - [LAMBDA (EXPR) + [LAMBDA (EXPR) (* ; "Edited 19-Jan-2022 23:08 by rmk") (* ;; "Edited 8-Dec-2021 16:11 by rmk: Updated to add dates to the initial undated comments that begins with current-editor initials, to provide a kind of dated change-log capability.") - (* ; "Edited 3-Dec-2021 15:03 by rmk") - (* ; "Edited 22-Oct-2021 16:58 by rmk:") - (* ; "Edited 27-Sep-2018 22:04 by rmk:") - (* ; "Edited 31-Mar-2000 17:13 by rmk:") + (* ; "Edited 27-Sep-2018 22:04 by rmk:") + (* ; "Edited 31-Mar-2000 17:13 by rmk:") (* ; "Edited 17-Jul-89 11:13 by jtm:") (* ; "18-JUL-78 21:11") @@ -722,56 +720,57 @@ Copyright (c) 1986-1988, 1990-1991 by Venue & Xerox Corporation. ELSEIF (SETQ PARSE (EDITDATE? (CAR E) T)) THEN - (* ;; "Attach the new timestamp at the beginning of E, provided the new date is either more than a day later than the previous one or by a different editor.") + (* ;; "If edited by the same editor within a day, then update the previous timestamp rather than cluttering with a new one. Presumably this is the next event in the same longer editing session, and it avoids stacking up uninformative dates from in-and-out editing during a session. ") - (* ;; "If edited by the same editor within a day, then update the previous timestamp rather than just leaving the original time. Presumably this is the next event in the same longer editing session, and it avoids stacking up uninformative dates from in-and-out editing during a session. ") - - (IF (STRING.EQUAL INITLS (CADR PARSE)) + (IF [AND (STRING.EQUAL INITLS (CADR PARSE)) + (ILEQ (IDIFFERENCE (IDATE) + (IDATE (CAR PARSE))) + (CONSTANT (TIMES 24 3600] THEN - (* ;; "Another edit by the same author. If not dated but contains a rest, then upgrade the rest comment with a date Otherwise,If more than a day later, add a new date. If less than a day, assume we are in essentially the same session, and update (CAR E) to the current time.") + (* ;; "Same edit session with the same author: update the last previous timestamp. If the (CAR PARSE) is NIL, we are looking at an initialed comment that becomes a timestamp, and we convert it. If just after this we see another timestamp for the same session, we take that out.") - [IF (NULL (CAR PARSE)) - THEN - (* ;; "If no date but %"INITIALS: xxx%", we definitely want to upgraded to the Edited... initials: xxx format") - - (/RPLACA E (EDITDATE (CAR E) - INITLS - (CADDR PARSE))) - ELSEIF (IGREATERP (IDIFFERENCE (IDATE) + (/RPLACA E (EDITDATE (CAR E) + INITLS + (CADDR PARSE))) + (CL:WHEN [AND (SETQ PARSE (EDITDATE? (CADR E) + T)) + (NULL (CADDR PARSE)) + (STRING.EQUAL INITLS (CADR PARSE)) + (ILEQ (IDIFFERENCE (IDATE) (IDATE (CAR PARSE))) - (TIMES 24 3600)) - THEN - (* ;; - "If we aren't upgrading, then we don't want to propagate the previous REST.") - - (/ATTACH (EDITDATE NIL INITLS) - E) - ELSE - (* ;; - "Same author, within a day. Just change the date, keep the REST.") - - (/RPLACA E (EDITDATE (CAR E) - INITLS - (CADDR PARSE] + (CONSTANT (TIMES 24 3600] + (/RPLACD E (CDDR E))) ELSE + (* ;; + "Different edit sequence, attach a new timestamp in front of any old ones.") - (* ;; "Not a previous date, or not one with this author. Add a new one. If rmk is editing and sees an lmm: rest, we don't want to attribute that rest to rmk in the new one.") + (/ATTACH (EDITDATE NIL INITLS (CADDR PARSE)) + E)) - (/ATTACH (EDITDATE NIL INITLS) - E)) + (* ;; "If the new date has an upgraded comment-level, update all of the previous dates so that they align on the left instead of the right.") + + (CL:UNLESS (EQ (CADR (CAR E)) + ';) + (FOR PREV (NEWTYPE _ (CADR (CAR E))) IN (CDR E) + WHILE (EDITDATE? PREV T) UNTIL (EQ (CADR PREV) + NEWTYPE) + DO (/RPLACA (CDR PREV) + NEWTYPE))) ELSE - (* ;; "Need a new date, didn't even see %" by %", and returns a parsed pair (DATE INITIALS).") @@ -818,12 +817,14 @@ Copyright (c) 1986-1988, 1990-1991 by Venue & Xerox Corporation. (CL:WHEN (SETQ REST (SUBSTRING STRING (ADD1 IENDPOS))) (SETQ REST (CL:STRING-TRIM `(#\Space) REST))) - (IF (IGREATERP (NCHARS REST) - 0) - THEN - (* ;; "Could be %": abc%" to be upgraded with a date") + (IF (AND REST (IGREATERP (NCHARS REST) + 0)) + THEN (CL:WHEN RESTOK - (CL:WHEN RESTOK (LIST DATE I REST)) + (* ;; "Could be %": abc%" , we fill in the date") + + (LIST (DATE (DATEFORMAT NO.SECONDS)) + I REST)) ELSEIF DATE THEN (* ;; "If we saw just initials") @@ -928,11 +929,11 @@ Copyright (c) 1986-1988, 1990-1991 by Venue & Xerox Corporation. ) (PUTPROPS EDITINTERFACE COPYRIGHT ("Venue & Xerox Corporation" 1986 1987 1988 1990 1991)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4086 10381 (ED 4086 . 10381)) (10383 14359 (INSTALL-PROTOTYPE-DEFN 10383 . 14359)) ( -14360 31143 (EDITDEF.FNS 14370 . 15706) (EDITF 15708 . 16588) (EDITFB 16590 . 17438) (EDITFNS 17440 . -18760) (EDITLOADFNS? 18762 . 22562) (EDITMODE 22564 . 24574) (EDITP 24576 . 25087) (EDITV 25089 . -25728) (DC 25730 . 26411) (DF 26413 . 27455) (DP 27457 . 28541) (DV 28543 . 29115) (EDITPROP 29117 . -29336) (EF 29338 . 29667) (EP 29669 . 29852) (EV 29854 . 30033) (EDITE 30035 . 30913) (EDITL 30915 . -31141)) (31493 46618 (NEW/EDITDATE 31503 . 31725) (FIXEDITDATE 31727 . 39874) (EDITDATE? 39876 . 43363 -) (EDITDATE 43365 . 44621) (SETINITIALS 44623 . 46616))))) + (FILEMAP (NIL (4089 10388 (ED 4089 . 10388)) (10390 14366 (INSTALL-PROTOTYPE-DEFN 10390 . 14366)) ( +14367 31150 (EDITDEF.FNS 14377 . 15713) (EDITF 15715 . 16595) (EDITFB 16597 . 17445) (EDITFNS 17447 . +18767) (EDITLOADFNS? 18769 . 22569) (EDITMODE 22571 . 24581) (EDITP 24583 . 25094) (EDITV 25096 . +25735) (DC 25737 . 26418) (DF 26420 . 27462) (DP 27464 . 28548) (DV 28550 . 29122) (EDITPROP 29124 . +29343) (EF 29345 . 29674) (EP 29676 . 29859) (EV 29861 . 30040) (EDITE 30042 . 30920) (EDITL 30922 . +31148)) (31500 46704 (NEW/EDITDATE 31510 . 31732) (FIXEDITDATE 31734 . 39753) (EDITDATE? 39755 . 43449 +) (EDITDATE 43451 . 44707) (SETINITIALS 44709 . 46702))))) STOP diff --git a/sources/EDITINTERFACE.LCOM b/sources/EDITINTERFACE.LCOM index fa7db4824c165b09bc1789a4d12bfbd3a1736ecd..8fb4fe31ea663d3709cd185ed13561e97968595e 100644 GIT binary patch delta 2229 zcmZuyO>7%Q6!xqG4M|DXP5KiP=)+L3)jHjo{dYj|#$IQ)vDc1wlWn1hq;*R|e-9Pn zM`{$r4V9lRQV{|n#DQySr{{pm0V*yW3kL+Zo=Bx~rOeLSj#FVvJ8#~b_vV{<-+S}R z)!S?66Mq!z*<(u=vqT^Sh?o=foIpN3=Z}d}22#C7OhO~kKmC1tu2(-XF_D7C(v>rf z|64E0smwsSWS7lC-84M2xN}i=$MG-KwP{`VlR<)C z8kTh_f@YRLR`pJ``d7ygJn2khAsK=E%*5dCrNjRJhmH@5a)S zPT*+0RyGO-t;&!Yt5N+;fh1Cs;dw^E0*NRQ>%+>Fu-Nt~f~d=2v#Jy|n(VfO!S(94 zGc#e%%^PJ96|w6*MQPP>H$arMt_4K8iCtU`w-B-32}bK@XD}fuw{WW|AiB^6Nwjup zh7pLWZbv2x=}xGR+&OcRwnDkrf-$VR^V89WfOQod&!TOrUZ@sL(8NxCfTVOp+V&(` zIFo>>xo8&3M&0o2s^cEY0aghVs+EfAc%||TUNJS+X6o?t-d7u06@pegeVAyOJ+Rcw0$pjA8^y zz@RA-y*-g8mPx^W^{PRu4*F4y%b!b}+Oc3I0+S(Q;7Gj-bilvi9ui*UZD`na^qd)N-`OdWU{A0;v?x zBc{y83VXAG-f7o=fEG?Llv|>YVr;E17JQJaYAp9#tx+~M;>`n_(W5bbBX6@*^2`!P sw<4O@Val+e2M=;D+L*pey-cUDdZ(0iJyWgsjG)oW-L8?=QvM(RH3RMaX_3K6{{S#Mj#HQlddGF1<_kQo~ zo%hk*D<3tV0*iL6Ozqmauvt5%7JA>mid5E@5am3kmw+(k}5*6Y#UzH3JZ}Bxr!G;#xkAAq}E5E zC*`4753J*k-v|rI$pdcbTXB(yS1(sNqIRaZpN8UJhW0#`2k!JP)Hyi(96}SZHF64l z9e*(r2`6|LEnQ5}pIdr@ZERgFt-WTi?Vd}J$CKr@{mERi$9wtt5kk95Dpi&DRpX^Md*ORhkVp-b%EI*XUbICHfo+)wMiS(_3B_5^M!uTzzFmu3099q4@ zEH*md*$6eqHf|%uJRJZ-o76dAty!eHWj7P0F5c5eK_F#qel&z6p|Q=6?N z{t2UbWzgSt<3BxMT~rA_`|qCNNq zOt$$-O5Sy#>50^3leR^KwpRs(jnMu;Bz2R0b)Y4!S+$vb#&g_E4u~j2ZvUz9&G|En zc}fJCeiE{@!lVz?6$&l9OBYJoEL{c2TCL^ow@cRgG>H;R)APG&h3OOe22N^a0L3?^ p{e98KS5Yf{^Y&~sdA;PY67f+Q-AYGJQVv~?vxg6Mt{uh${{tY3#V7y(