-
-
Notifications
You must be signed in to change notification settings - Fork 27
Rmk88 split screen updates and color, eliminate reliance on STREAMHINT xpointer #2119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Parallel to CHARCODE.DECODE. Definition will later be moved to CMLCHARACTER
I changed the filel loadup order to avoid the "undefined" messages in fuller.database Also, another internal change worth mentioning is to the THISLINE vector: Instead of in effect runcoding the character-looks changes across a line, there is now a separate field for the character looks of each character. So THISLINE now supports random access, making it easier to do backward adjustments (eventually for kerning). In a next version, I think the running X position should be stored as a separte field so that the displayer doesn't compute it on the fly from the width. |
@@ -88,13 +90,13 @@ | |||
(* ;; "") | |||
|
|||
(if (LISTP CODE) | |||
then (CONS (CHARNAME (CAR CODE) | |||
then (CONS (CHARCODE.ENCODE (CAR CODE) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're not passing the NONCHARIDENTITY
to the recursive calls.
library/tedit/TEDIT-FNKEYS
Outdated
@@ -108,21 +110,23 @@ | |||
else (LET ((CHARSET (LRSH CODE 8)) | |||
(CHAR (LOGAND CODE 255)) | |||
(ASCIICODE (LOGAND CODE 127)) | |||
CSETNAME CHARNAME ASCIINAME) | |||
CSETNAME CHARCODE.ENCODE ASCIINAME) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Renaming the variable here seems like a chance for confusion.
Updated CHARCODE.ENCODE to pass NONCHARIDENTITY in recursive calls, also reverted internal variable name to CHARNAME (previous replace was over-eager) |
On Linux Mint 22.1 Cinnamon I tested these changes up to a8f2fcc. Window splitting works well but I still notice the mouse pointer turns to a square when hovering close to the right edge of the window. I don't mind this and it causes no issues, it's just an observation. I get the error |
It's \TEDIT.OP.WIDTH (backslash), sorry for the mistake. I set it to 0 to turn it off by default, I think now I have to set it to -1 to avoid it still popping up. |
After experimenting a bit with window splitting as mentioned earlier I executed the |
I confirm A clarification on my latest post: to quit TEdit I used the |
I don't see that behavior. I tried
TEDIT(TEDIT-RELEASENOTES)
select a character halfway down
click split
click unsplit (caret was still blinking in the lower window)
click quit
The screen is clear.
I also tried the same sequence, but using the window-command menu to click Close (not the Tedit menu to Quit).
The screen is still clear.
Is there anything else going on?
… On Apr 24, 2025, at 8:48 AM, Paolo Amoroso ***@***.***> wrote:
pamoroso
left a comment
(Interlisp/medley#2119)
<#2119 (comment)>
I confirm \TEDIT.OP.WIDTH works.
A clarification on my latest post: to quit TEdit I used the Quit command, not Exit.
—
Reply to this email directly, view it on GitHub <#2119 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AQSTUJIUUPGKADGS3NJIAXT23EBUDAVCNFSM6AAAAAB3W6HAVOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDQMRYGEYDIOJQHE>.
You are receiving this because you authored the thread.
|
I did something similar in the test session and unsplit the lower pane prior to By the way, other than the missing title bar the leftover window was an ordinary TEdit window with the document still intact and scrollable. |
I updated to 1ceb1a4 and tested again by opening TEDIT-RELEASENOTES.TEDIT in TEdit. I split and unsplit the window several times into up to 4 panes. At some point, when unsplitting the panes one by one to return to one pane, I got a break window with this error:
The TEdit window disappeared leaving this corrupted screen: The context of the error:
Medley head is mk88--Split-screen-updates-and-color:
Maiko head is master:
|
I forgot to mention that I run Medley under VNC. |
Maybe that will really turn off the splitting region.
I've been testing the past few commits up to a43a80c and in all of them experienced issues and errors when Sometimes the text is highlighted in reverse but nothing happens when releasing
Then I
The context:
Aside from that I no longer get crashes when splitting and unsplitting. In addition the mouse pointer no longer turns into a square when hovering close to the right edge of the window. |
I pushed some a few changes having to do with the menu bar behavior for tabs. I also fixed up some mentions of XCCS on the way to MCCS. Note that there is currently a pdf hardcopy problem with this PR: The default color is BLACK, and that is one of the ways of specifying colors according to the documentation (man color). But postscript (\DSPCOLOR.PSC) only accepts a number between 0 and 1, which is not a legitimate way of specifying colors. So it fails. Immediate fix is to MOVD(NILL \DSPCOLOR.PSC). But probably the argument checking should be installed in the generic DSPCOLOR, bringing in some of the predicates from LLCOLOR. And postscript eventually should be changed to approximate more of what can be specified. |
@pamoroso I have not been able to replicate the faillure with your one-two... example. The closest I have come is to type a single line "one" with no EOL into an empty window, then ctrl-middle-select. The screen doesn't get updated (the letters o n e are still there), and they disappear with redisplay or with typing in. So I think I missed a case where the line should be updated, but it doesn't cause an error. Is there any more specific recipe to get the break? |
…b.com/Interlisp/medley into rmk88--Split-screen-updates-and-color
@pamoroso I believe I have fixed the screen update for an edit (delete) to the top line. I still don't get a break. |
STRESS-INSERTWINDOW has the previous code
I tried running with the current maiko master lde/ldex - started a fresh full.sysout, I have very little in my init, just loaded background-yield. In the XCL exec, If I open an Interlisp Exec window and do it from there -- no problem. If I interrupt it and go back to the XCL exec and try it again, it fails in the same way. Something is sensitive to where it's started from that probably shouldn't be! |
Probably the DOCOBJ image object doesn't manage its readtable or package, unrelated to the array problem.
… On Jun 3, 2025, at 8:27 PM, Nick Briggs ***@***.***> wrote:
nbriggs
left a comment
(Interlisp/medley#2119)
<#2119 (comment)>
I tried running with the current maiko master lde/ldex - started a fresh full.sysout, I have very little in my init, just loaded background-yield. In the XCL exec, (IL:LOAD "TEDIT-STRESS.LCOM") then CONN, then CONN projects/medley/lispusers, then (IL:STRESSDISPLAY). It loaded DOC-OBJECTS.LCOM then DATEFORMAT-EDITOR.LCOM, and broke under IL:GDATE. Processing BITMAP-GALLERY.TEDIT.
If I open an Interlisp Exec window and do it from there -- no problem. If I interrupt it and go back to the XCL exec and try it again, it fails in the same way. Something is sensitive to where it's started from that probably shouldn't be!
image.png (view on web) <https://github.com/user-attachments/assets/ae598aa2-6c72-4dde-8d3d-49ca95f010a1>
—
Reply to this email directly, view it on GitHub <#2119 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AQSTUJJL6JZAJZGQEXABGNT3BZRTDAVCNFSM6AAAAAB3W6HAVOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSMZYGI3TANZVG4>.
You are receiving this because you were mentioned.
|
I tried it without my init and STRESSINSERT didn't fail after 28 reps. With my initial it failed in the 4th rep.
I'll try to dissect my init.
… On Jun 3, 2025, at 8:27 PM, Nick Briggs ***@***.***> wrote:
nbriggs
left a comment
(Interlisp/medley#2119)
<#2119 (comment)>
I tried running with the current maiko master lde/ldex - started a fresh full.sysout, I have very little in my init, just loaded background-yield. In the XCL exec, (IL:LOAD "TEDIT-STRESS.LCOM") then CONN, then CONN projects/medley/lispusers, then (IL:STRESSDISPLAY). It loaded DOC-OBJECTS.LCOM then DATEFORMAT-EDITOR.LCOM, and broke under IL:GDATE. Processing BITMAP-GALLERY.TEDIT.
If I open an Interlisp Exec window and do it from there -- no problem. If I interrupt it and go back to the XCL exec and try it again, it fails in the same way. Something is sensitive to where it's started from that probably shouldn't be!
image.png (view on web) <https://github.com/user-attachments/assets/ae598aa2-6c72-4dde-8d3d-49ca95f010a1>
—
Reply to this email directly, view it on GitHub <#2119 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AQSTUJJL6JZAJZGQEXABGNT3BZRTDAVCNFSM6AAAAAB3W6HAVOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSMZYGI3TANZVG4>.
You are receiving this because you were mentioned.
|
I think it's PSEUDOHOST.
Try loading PSEUDOHOST.LCOM before you start the stress.
… On Jun 3, 2025, at 11:26 PM, Ron Kaplan ***@***.***> wrote:
I tried it without my init and STRESSINSERT didn't fail after 28 reps. With my initial it failed in the 4th rep.
I'll try to dissect my init.
> On Jun 3, 2025, at 8:27 PM, Nick Briggs ***@***.***> wrote:
>
>
> nbriggs
> left a comment
> (Interlisp/medley#2119)
> <#2119 (comment)>
> I tried running with the current maiko master lde/ldex - started a fresh full.sysout, I have very little in my init, just loaded background-yield. In the XCL exec, (IL:LOAD "TEDIT-STRESS.LCOM") then CONN, then CONN projects/medley/lispusers, then (IL:STRESSDISPLAY). It loaded DOC-OBJECTS.LCOM then DATEFORMAT-EDITOR.LCOM, and broke under IL:GDATE. Processing BITMAP-GALLERY.TEDIT.
>
> If I open an Interlisp Exec window and do it from there -- no problem. If I interrupt it and go back to the XCL exec and try it again, it fails in the same way. Something is sensitive to where it's started from that probably shouldn't be!
>
> image.png (view on web) <https://github.com/user-attachments/assets/ae598aa2-6c72-4dde-8d3d-49ca95f010a1>
> —
> Reply to this email directly, view it on GitHub <#2119 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AQSTUJJL6JZAJZGQEXABGNT3BZRTDAVCNFSM6AAAAAB3W6HAVOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSMZYGI3TANZVG4>.
> You are receiving this because you were mentioned.
>
|
I loaded PSEUDOHOSTS, set up MEDLEY to point to |
STRESSINSERT/STRESSDELETE don't' bring up blank window, added STRESSDELETEWINDOW
One other thing: I'm also running with ARRAYBLOCKCHECKING set to T, in addition to all the explicit calls to \PARSEARRAYSPACE. |
OK - ARRAYBLOCKCHECKING set to T and it fails for me - but in the Lisp implementation of \PARSEARRAYSPACE, not the Maiko array space checking in gcfinal.c -- I wonder if the code matches. |
It was suggested in the meeting today that I try it with PSEUDOHOSTS loaded but without the default setting up of the LI pseudohost. That didn't make a difference. It was also suggested that I put out the code if anyone wants to test on other platforms. So: Checkout rmk88 #2119 and build a full loadup. Start it up (with or without greeting), and define/load the following function: (DEFINEQ (CRASH? (LAMBDA (ARRAYBLOCK PSEUDOHOST) Then execute CRASH? with or without the argument parameters. Defaults to setting ARRAYBLOCKCHECKING to NIL and not loading PSEUDOHOSTS. ARRAYBLOCK T may now be the bad case (fails for Nick too). |
Do you think, then, that these failures are a false alarm, that the data is good but the checking is bad? Or too soon to know?
… On Jun 4, 2025, at 1:27 PM, Nick Briggs ***@***.***> wrote:
nbriggs
left a comment
(Interlisp/medley#2119)
<#2119 (comment)>
OK - ARRAYBLOCKCHECKING set to T and it fails for me - but in the Lisp implementation of \PARSEARRAYSPACE, not the Maiko array space checking in gcfinal.c -- I wonder if the code matches.
—
Reply to this email directly, view it on GitHub <#2119 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AQSTUJL4NFDEGFIPUGOICU33B5JBRAVCNFSM6AAAAAB3W6HAVOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSNBRGM3DIOJUGE>.
You are receiving this because you were mentioned.
|
I think the code is the same. I don't think that anything that happens during the Lisp array space check could cause the Maiko code to [de]allocate and modify the array space the Lisp code is looking at. |
So, when it SAYS that something is wrong, you think that something actually IS wrong?
… On Jun 5, 2025, at 10:20 AM, Nick Briggs ***@***.***> wrote:
nbriggs
left a comment
(Interlisp/medley#2119)
<#2119 (comment)>
I think the code is the same. I don't think that anything that happens during the Lisp array space check could cause the Maiko code to [de]allocate and modify the array space the Lisp code is looking at.
—
Reply to this email directly, view it on GitHub <#2119 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AQSTUJIZOIIJ33IKP4TY6K33CB37FAVCNFSM6AAAAAB3W6HAVOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSNBVGM2TOOJRGE>.
You are receiving this because you were mentioned.
|
I don't know if something is really wrong. I've got one here with mismatched header/trailer lengths, it's a block on the free-list. It looks wrong -- the header says the length is 98, the trailer says 228.
Near the beginning of this free block is what looks like the trailer of a another block that appears to be of length 228, and then the header of a block of length 90. I guess that's possible if blocks were merged. It might be easier to reproduce if what it did wasn't totally random. Perhaps print the result of (RANDSET T) I think I need to rewrite the C code that dumps array blocks so that I can direcly read the forward/backward pointers (right now it labels the locations with the native address, but the forward/backward pointers in the data are Lisp pointers (relative to the Lisp world memory base). |
I'll save RANDSTATE on a file before each random run.
On Jun 5, 2025, at 7:22 PM, Nick Briggs ***@***.***> wrote:
nbriggs
left a comment
(Interlisp/medley#2119)
<#2119 (comment)>
I don't know if something is really wrong. I've got one here with mismatched header/trailer lengths, it's a block on the free-list. It looks wrong -- the header says the length is 98, the trailer says 228.
(arrayblock) (arlen = 98, inuse = 0, gctype = 0, password = 5461, fwd = 4682046, bkwd = 4681358)
Near the beginning of this free block is what looks like the trailer of a another block that appears to be of length 228, and then the header of a block of length 90. I guess that's possible if blocks were merged.
If it doesn't clear blocks when they are collected and merged, that seems likely.
… It might be easier to reproduce if what it did wasn't totally random. Perhaps print the result of (RANDSET T)
once before it starts calling (RAND ...) so that we can go back and reset the random state the next time and in theory get exactly the same sequence of numbers for the inserts.
I think I need to rewrite the C code that dumps array blocks so that I can direcly read the forward/backward pointers (right now it labels the locations with the native address, but the forward/backward pointers in the data are Lisp pointers (relative to the Lisp world memory base).
—
Reply to this email directly, view it on GitHub <#2119 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AQSTUJOO5VJBDDL2E6QQRNL3CD3MRAVCNFSM6AAAAAB3W6HAVOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSNBXHA2DANRQGU>.
You are receiving this because you were mentioned.
|
On each run the RAND state is saved (by SAVERANDSTATE) in a file RANDSTATE on the connected directory. To do another run with the previous randstate, set USELASTRANDSTATE to T. |
With some more helpful output in the maiko "printarrayblock()" code -- what I'm seeing looks like this
so there's a free block at the end of another free block such that they share a trailer whose length matches the outer free block, and I'm not sure which block has a pointer to the interior free block - but someone did because it got checked and the missing/mismatched trailer caused the failure. This says to me that there's a bug somewhere in the array block splitting/merging code in maiko. Sigh. |
So the check on the internal block must be from the call to \CHECKARRAYBLOCK that comes because ARRAYBLOCKCHECKING is T and not from the calls under \PARSEARRAYSPACE. Because we don't get the failure from just the \PARSEARRAYSPACE.
Both the outer and inner blocks are free, but does the freelist link through the inner one?
… On Jun 6, 2025, at 2:14 PM, Nick Briggs ***@***.***> wrote:
nbriggs
left a comment
(Interlisp/medley#2119)
<#2119 (comment)>
With some more helpful output in the maiko "printarrayblock()" code -- what I'm seeing looks like this
free ***@***.*** header length 447 cells =>next ***@***.***, ***@***.*** says length 447 cells
free ***@***.*** header length 120 cells =>next ***@***.***, prev ***@***.***
***@***.*** says length 447 cells
used ***@***.*** header length 4052 cell =>next ***@***.***, prev ***@***.***
so there's a free block at the end of another free block such that they share a trailer whose length matches the outer free block, and I'm not sure which block has a pointer to the interior free block - but someone did because it got checked and the missing/mismatched trailer caused the failure.
This says to me that there's a bug somewhere in the array block splitting/merging code in maiko. Sigh.
—
Reply to this email directly, view it on GitHub <#2119 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AQSTUJODXC4R44UEZAVNDVT3CIADFAVCNFSM6AAAAAB3W6HAVOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSNJQHAYTCNBUGM>.
You are receiving this because you were mentioned.
|
The stack looked like this, this last time:
|
|
I'm looking at it, and writing code (in C) to help me look at the structure of array space. It's not done yet, but I'm using it on an original Venue lisp.sysout. |
Tried with CHECKARRAY set NIL and ARRAYBLOCKCHECKING set T -- it took a lot longer (39 rounds of STRESSDISPLAY, then 222 rounds of STRESSINSERT) - to get a header/trailer length mismatch, and it's (again) coming from the Lisp side
A URaid "B" block dump shows (around the header)
and around the trailer
Clearly this item tagged as array trailer is not actually an array trailer - it's missing the 0xaaa8 bits (top 13 bits: I'm suspicious about the two cells both with array block passwords at the beginning of the block that faulted, and the second word - |
Some progress -- fixed up "makefreearrayblock()" in Maiko to set the freed memory to 0xBAADF00D, and then ran the STRESSDISPLAY code, with all the checking on. Died in CHECKARRAYS with tag BEFOREDISPLAY, where the block it was checking on looked like:
so somebody had a pointer to block 0x4703aa, but this was smashed by being merged into another block. The history looks like (cblock: check array block; other self-explanatory. reclaim ptr is the data address, so 2 lisp words after the actual block)
|
If you think that Tedit is still the culprit, can you get it to fail with useful information from STRESSINSERT, even if it takes a lot longer? That takes away the XPOINTERS that backlink the panes of a split window and the lines of each pane, and maybe some others that only appear for the display.
… On Jun 11, 2025, at 6:50 PM, Nick Briggs ***@***.***> wrote:
nbriggs
left a comment
(Interlisp/medley#2119)
<#2119 (comment)>
Some progress -- fixed up "makefreearrayblock()" in Maiko to set the freed memory to 0xBAADF00D, and then ran the STRESSDISPLAY code, with all the checking on. Died in CHECKARRAYS with tag BEFOREDISPLAY, where the block it was checking on looked like:
< B 0x4703aa
This array block: 0x4703aa. Previous: 0x452390. Next: 0x48e3c4.
password: 0x1755 gctype: 0x2 in use: 1
Header Length: 61453 cells.
Trailer Length: 0 cells.
0x109733704 (0x 470382) baadf00d
0x109733708 (0x 470384) baadf00d
0x10973370c (0x 470386) baadf00d
0x109733710 (0x 470388) baadf00d
0x109733714 (0x 47038a) baadf00d
0x109733718 (0x 47038c) baadf00d
0x10973371c (0x 47038e) baadf00d
0x109733720 (0x 470390) baadf00d
0x109733724 (0x 470392) baadf00d
0x109733728 (0x 470394) baadf00d
0x10973372c (0x 470396) baadf00d
0x109733730 (0x 470398) baadf00d
0x109733734 (0x 47039a) baadf00d
0x109733738 (0x 47039c) baadf00d
0x10973373c (0x 47039e) baadf00d
0x109733740 (0x 4703a0) baadf00d
0x109733744 (0x 4703a2) baadf00d
0x109733748 (0x 4703a4) baadf00d
0x10973374c (0x 4703a6) baadf00d
0x109733750 (0x 4703a8) baadf00d
0x109733754 (0x 4703aa) baadf00d <- array header
0x109733758 (0x 4703ac) baadf00d
0x10973375c (0x 4703ae) baadf00d
0x109733760 (0x 4703b0) baadf00d
0x109733764 (0x 4703b2) baadf00d
0x109733768 (0x 4703b4) baadf00d
0x10973376c (0x 4703b6) baadf00d
0x109733770 (0x 4703b8) baadf00d
0x109733774 (0x 4703ba) baadf00d
0x109733778 (0x 4703bc) baadf00d
0x10973377c (0x 4703be) baadf00d
0x109733780 (0x 4703c0) baadf00d
0x109733784 (0x 4703c2) baadf00d
0x109733788 (0x 4703c4) baadf00d
0x10973378c (0x 4703c6) baadf00d
0x109733790 (0x 4703c8) baadf00d
0x109733794 (0x 4703ca) baadf00d
0x109733798 (0x 4703cc) baadf00d
0x10973379c (0x 4703ce) baadf00d
0x1097337a0 (0x 4703d0) baadf00d
. . .
0x10976f734 (0x 48e39a) 0
0x10976f738 (0x 48e39c) 0
0x10976f73c (0x 48e39e) 0
0x10976f740 (0x 48e3a0) 0
0x10976f744 (0x 48e3a2) 0
0x10976f748 (0x 48e3a4) 0
0x10976f74c (0x 48e3a6) 0
0x10976f750 (0x 48e3a8) 0
0x10976f754 (0x 48e3aa) 0
0x10976f758 (0x 48e3ac) 0
0x10976f75c (0x 48e3ae) 0
0x10976f760 (0x 48e3b0) 0
0x10976f764 (0x 48e3b2) 0
0x10976f768 (0x 48e3b4) 0
0x10976f76c (0x 48e3b6) 0
0x10976f770 (0x 48e3b8) 0
0x10976f774 (0x 48e3ba) 0
0x10976f778 (0x 48e3bc) 0
0x10976f77c (0x 48e3be) 0
0x10976f780 (0x 48e3c0) 0
0x10976f784 (0x 48e3c2) 0 <- array trailer
0x10976f788 (0x 48e3c4) 0
0x10976f78c (0x 48e3c6) 0
0x10976f790 (0x 48e3c8) 0
so somebody had a pointer to block 0x4703aa, but this was smashed by being merged into another block.
The history looks like (cblock: check array block; other self-explanatory. reclaim ptr is the data address, so 2 lisp words after the actual block)
***@***.***
reclaim: ptr 0x46fc28
***@***.***
***@***.***
***@***.***
***@***.***
arrayblockmerger 0x46fc26 (962 cells) with following 0x4703aa (497 cells) -- there's our block getting smashed.
***@***.***
***@***.***
***@***.***
reclaim: ptr 0x47207a
***@***.***
***@***.***
arrayblockmerger 0x471fe0 (76 cells) with following 0x472078 (516 cells)
***@***.***
***@***.***
***@***.***
***@***.***
***@***.***
reclaim: ptr 0x472a78
***@***.***
***@***.***
arrayblockmerger 0x47299a (110 cells) with following 0x472a76 (529 cells)
***@***.***
***@***.***
***@***.***
***@***.***
—
Reply to this email directly, view it on GitHub <#2119 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AQSTUJNSHJWYTKCD46626DD3DDMHJAVCNFSM6AAAAAB3W6HAVOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSNRUG4ZTGMJVHA>.
You are receiving this because you were mentioned.
|
I'll be trying it with STRESSINSERT. Got a lot on my schedule today so it may be late or tomorrow. |
As usual, a lot of files changed. Internal cleanup was mostly aimed at eliminating all internal dependencies on the STREAMHINT xpointer from the TEXTOBJ to the TEXTSTREAM. The xpointer is still there, against the possibility of client code still getting the TEXTOBJ object. But that code must separately hold on to the stream, else it will get collected.
This presents a menu-based interface for splitting and unsplitting windows, without reserving the right-edge slice of the window for that purpose (and the mouse tracking and cursor switching to a little square box). The old behavior is still there, controlled by the variable TEDIT.OP.WIDTH (was 12, near 0).
This supports color (although untested) as a character-looks property COLOR, BLACK by default.
See TEDIT-RELEASENOTES.