1
0
mirror of synced 2026-05-01 14:06:47 +00:00

Rmk64: mainly separate panels for GITFNS display, FILEPOS speed up (#862)

* HRULE:  Add a PREPRINTFN for horizontal rules

Looks better in plaintext files

* GITFNS, COMPAREDIRECTORIES:  Group earler/later in separate segments

GIT-CDBROWSER-SEPARATE-DIRECTIONS defaults to T

* FILEIO: INITVARS rather than VARS for FILING.TYPES

To avoid contamination with values from other files (like LAFITE)

* FILEPKG: SEPRCASE in EDITCALLERS includes comma and quote even if no DWIMIFYCOMPLFG

Also seprate the caseinsensitive UPPERCASEARRAY from the SEPRCASE array

* IOCHAR: Open code the call to \INCCODE.EOLC

About a 30% speed up in the slow (casearray/skip) case.  Eventually macros should be defined for the externalformat interface functions, for now it is nice to be able to trace/break them.

* EXTERNALFORMAT: a little bit of cleanup

particularly around EOLC
This commit is contained in:
rmkaplan
2022-07-25 19:12:52 -07:00
committed by GitHub
parent 6376579b1c
commit 92f85c5957
15 changed files with 364 additions and 305 deletions

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "10-Jul-2022 16:52:14" 
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>IOCHAR.;39 99224
(FILECREATED "24-Jul-2022 14:56:20" 
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>IOCHAR.;43 100109
:CHANGES-TO (FNS FILEPOS \SLOWFILEPOS FFILEPOS)
:CHANGES-TO (FNS \SLOWFILEPOS)
:PREVIOUS-DATE " 1-Jul-2022 11:55:50"
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>IOCHAR.;36)
:PREVIOUS-DATE "10-Jul-2022 16:52:14"
{DSK}<users>kaplan>local>medley3.5>working-medley>sources>IOCHAR.;39)
(* ; "
@@ -633,6 +633,8 @@ DONTCOPY
(\SLOWFILEPOS
[LAMBDA (PATTERN STREAM STARTBYTEPOS ENDBYTEPOS SKIP TAIL CASEARRAY)
(* ;; "Edited 24-Jul-2022 14:56 by rmk")
(* ;; "Edited 10-Jul-2022 16:50 by rmk")
(* ;; "Edited 1-Jul-2022 10:51 by rmk")
@@ -685,8 +687,11 @@ DONTCOPY
(* ;;
 "EOFGUARD saves a little testing, assumes no character in any encoding takes more than 10 bytes.")
(BIND STREAMCODE NBYTESHI NBYTESLO SECONDCHARSET (NBYTES _ (IDIFFERENCE ENDBYTEPOS
STARTBYTEPOS))
(BIND STREAMCODE NBYTESHI NBYTESLO SECONDCHARSET *BYTECOUNTER* (NBYTES _ (IDIFFERENCE
ENDBYTEPOS
STARTBYTEPOS))
(EOLC _ (FFETCH (STREAM EOLCONVENTION) OF STREAM))
(INCCODEFN _ (FFETCH (STREAM INCCODEFN) OF STREAM)) DECLARE (SPECVARS *BYTECOUNTER*)
FIRST (SETQ NBYTESHI (FOLDLO NBYTES FILEPOS.SEGMENT.SIZE))
(SETQ NBYTESLO (IMOD NBYTES FILEPOS.SEGMENT.SIZE))
DO (DO
@@ -705,9 +710,19 @@ DONTCOPY
(NULL (\PEEKCCODE STREAM T)))
(GO FAILED))
(SETQ STARTCHARSET (ffetch (STREAM CHARSET) of STREAM))
(SETQ STREAMCODE (\INCCODE.EOLC STREAM NIL 'NFIRSTCODEBYTES 0))
(ADD NBYTESLO NFIRSTCODEBYTES) (* ;
(PROGN
(* ;;
 "Open coding of \INCCODE.EOLC (with *BYTECOUNTER* and EOLC bindings above.")
(SETQ STREAMCODE (\CHECKEOLC (CL:FUNCALL INCCODEFN STREAM T)
EOLC STREAM NIL T))
(* ;; "Make negative because that's the \INCCODE convention")
(SETQ NFIRSTCODEBYTES (IMINUS *BYTECOUNTER*)))
(* ;
 "Decrement the character's byte count")
(ADD NBYTESLO NFIRSTCODEBYTES)
(CL:WHEN (EQ PATFIRSTCODE SKIPCODE) (* ; "Pattern starts with skip")
(RETURN))
(CL:WHEN CABASE
@@ -745,16 +760,16 @@ DONTCOPY
FOUNDIT
(* ;; "The CHARSET should be accurate in the tail case. We have to adjust for the start case.")
(* ;; "The CHARSET should be accurate in the tail case. We have to adjust for the start case. NPBYTES is positive, given that we opencoded the \INCCODE.EOLC in the first-char loop.")
(RETURN (SELECTQ TAIL
(NIL (* ;
 "Fileptr wants to be where the match started")
(freplace (STREAM CHARSET) of STREAM with STARTCHARSET)
(\INCFILEPTR STREAM (IPLUS NPBYTES NFIRSTCODEBYTES))
(\INCFILEPTR STREAM (IPLUS NFIRSTCODEBYTES NPBYTES))
(\GETFILEPTR STREAM))
(BOTH (CONS (IPLUS (\GETFILEPTR STREAM)
NPBYTES NFIRSTCODEBYTES)
NFIRSTCODEBYTES NPBYTES)
(\GETFILEPTR STREAM)))
(\GETFILEPTR STREAM)))
FAILED
@@ -1554,15 +1569,15 @@ DONTCOPY
(PUTPROPS IOCHAR COPYRIGHT ("Venue & Xerox Corporation" 1981 1982 1983 1984 1985 1986 1987 1988 1990
1991 2018 2020))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3524 7318 (CHCON 3534 . 4384) (UNPACK 4386 . 5280) (DCHCON 5282 . 6549) (DUNPACK 6551
. 7316)) (7319 18834 (UALPHORDER 7329 . 7425) (ALPHORDER 7427 . 9230) (CONCAT 9232 . 9877) (
CONCATCODES 9879 . 10065) (PACKC 10067 . 12670) (PACK 12672 . 13251) (PACK* 13253 . 14975) (\PACK.ITEM
14977 . 15432) (STRPOS 15434 . 18832)) (18836 19125 (XCL:PACK 18836 . 19125)) (19127 19377 (XCL:PACK*
19127 . 19377)) (20015 22406 (STRPOSL 20025 . 21651) (MAKEBITTABLE 21653 . 22404)) (22568 23045 (
CASEARRAY 22578 . 22768) (UPPERCASEARRAY 22770 . 23043)) (23367 55842 (FILEPOS 23377 . 32618) (
FFILEPOS 32620 . 44841) (\SETUP.FFILEPOS 44843 . 48626) (\SLOWFILEPOS 48628 . 55840)) (56630 97877 (
DATE 56640 . 56726) (DATEFORMAT 56728 . 56820) (GDATE 56822 . 56933) (IDATE 56935 . 68606) (
\IDATESCANTOKEN 68608 . 69887) (\IDATE-PARSE-MONTH 69889 . 73585) (\OUTDATE 73587 . 86335) (
\OUTDATE-STRING 86337 . 86952) (\RPLRIGHT 86954 . 87192) (\UNPACKDATE 87194 . 92985) (\PACKDATE 92987
. 96307) (\DTSCAN 96309 . 96451) (\ISDST? 96453 . 96960) (\CHECKDSTCHANGE 96962 . 97875)))))
(FILEMAP (NIL (3507 7301 (CHCON 3517 . 4367) (UNPACK 4369 . 5263) (DCHCON 5265 . 6532) (DUNPACK 6534
. 7299)) (7302 18817 (UALPHORDER 7312 . 7408) (ALPHORDER 7410 . 9213) (CONCAT 9215 . 9860) (
CONCATCODES 9862 . 10048) (PACKC 10050 . 12653) (PACK 12655 . 13234) (PACK* 13236 . 14958) (\PACK.ITEM
14960 . 15415) (STRPOS 15417 . 18815)) (18819 19108 (XCL:PACK 18819 . 19108)) (19110 19360 (XCL:PACK*
19110 . 19360)) (19998 22389 (STRPOSL 20008 . 21634) (MAKEBITTABLE 21636 . 22387)) (22551 23028 (
CASEARRAY 22561 . 22751) (UPPERCASEARRAY 22753 . 23026)) (23350 56727 (FILEPOS 23360 . 32601) (
FFILEPOS 32603 . 44824) (\SETUP.FFILEPOS 44826 . 48609) (\SLOWFILEPOS 48611 . 56725)) (57515 98762 (
DATE 57525 . 57611) (DATEFORMAT 57613 . 57705) (GDATE 57707 . 57818) (IDATE 57820 . 69491) (
\IDATESCANTOKEN 69493 . 70772) (\IDATE-PARSE-MONTH 70774 . 74470) (\OUTDATE 74472 . 87220) (
\OUTDATE-STRING 87222 . 87837) (\RPLRIGHT 87839 . 88077) (\UNPACKDATE 88079 . 93870) (\PACKDATE 93872
. 97192) (\DTSCAN 97194 . 97336) (\ISDST? 97338 . 97845) (\CHECKDSTCHANGE 97847 . 98760)))))
STOP