* A revision to the font, Unicode, Tedit, and other modules to implement the MCCS character coding as the standard for internal text strings. MCCS is a variant of XCCS with arrows switched with circumflex/underscore and $ switched with currency, and allows for additional code assignments over time. :MCCS replaces :XCCS as the default external format, especially for source files. The file XCCS is removed in favor of the file MCCS, which includes the XCCS external format for backward compatibility.
* This includes a single Medley-font formatted font file for each of the family/size/face display fonts. The glyph assignments correspond to the MCCS character encoding (except for fonts with idiosyncratic encodings--Hippo, Symbol). All charsets from legacy font files are included in each file, and the character sets and glyphs in each file have also been extended by offline coercion from related families (e.g. Glyphs not in legacy Terminal are taken from legacy Modern). There should be fewer black boxes, and character-display shouldn't change when you switch fonts.
* The Unicode mapping tables have been redefined to set up correspondences between Unicode and MCCS, not XCCS. Separate XCCS to/from MCCS mapping functions are provided in the file MCCS; they are no longer included in INTERPRESS.
* TEDIT converts characters in legacy fonts to their new MCCS codes as it reads formatted files, marks the file as MCCS compatible and preserves the new codes on writing.
* Default keyboard assignments produce the MCCS uparrow and leftarrow for shift-6 and shift-hyphen, use Function-6 for circumflex and Function-10 for underscore.
See documentation in FONTCODECHANGES.TEDIT MCCS.TEDIT MEDLEYFONTFORMAT.TEDIT in docs/internal, and library/UNICODE.TEDIT.
This PR contains a large number of changes in support of the implementation of the Medley Dsplay Fon file format.
The changes are documented in the docs/internal/FONTCHANGES.TEDIT file.
* Fixed#2185 and #2173.
* TEDIT-MENU TEDIT-PAGE Fix a few more bugs
* TEDIT-STRESS--cleanup and harden a bit for future use
* TEDIT-FILE: Allow putting of an APPEND file. There is still a guard against putting a readonly file--use COPYFILE instead. Provide message if won't put
* Get proper insert caret looks before EOL
* Tedit window splitting is more robust, interface through menu items instead of split-region on the right of the window. See TEDIT-RELEASENOTES.TEDIT
* Tedit recognizes color as specfied by DSPCOLOR, passes it to hardcopy
* N-way buttons default to unsorted--new items go at the end. Otherwise keyboard shortcut meta-3 for the 3rd font might pick a different one depending on what went before.
* USER.CM can be specified as an opening property for Bravo conversion.
* Adresses/fixes Tedit issues #2173#2172#2171#2142#2105#2062#2059#1972 (maybe some others).
* Changes to rationalize internal interfaces and simplify code, and particularly to eliminate internal dependencies on the STREAMHINT Xpointer backlink. STREAMHINT is only accessed if a client has grabbed the TEXTOBJ and passes it back in. The stream and window are the safe/reliable way of referencing the Tedit state (and the window and stream know about each other, and know about the TEXTOBJ only through the stream).
* Many changes to TEDIT-STRESS, including new defaults CHECKARRAYS NIL, NSYSOUTS 0, ARRAYBLOCKCHECKING T
* lispusers/EQUATIONS: image object no longer saves state on the stream, not the window (which may not be there).
* Rename CHARNAME to be CHARCODE.ENCODE, parallel to CHARCODE.DECODE
* Distinguish public TEDIT.NTHCHARCODE... from private \TEDIT.NTHCHARCODE...
* Fix screen-update bug: deleting the character before the first character in a window
* glitch in region code
* Implement new key binding architecture for Tedit actions, to make mappings more user-accessible. Includes new Buttons item on Tedit menu. See TEDIT-RELEASENOTES
* Prompts for Tedit initial-window region based on document properties
* More flexible Tedit abbreviations
* Size + or - in Tedit character looks go to next available
* Other bug fixes and code adjustments.
* Fix up Move command
* change paralooks record, recompile, other updates
* Fix right arrow and EOF
* Caret position after NEXT, add FILESTREAM textprop, CH#/LEN args to TEDIT.SEL.AS.STRING
* Added LLK
* Arrows-movement in menus is confined to fields
* Slightly better menu test
* TEXTPROP glitch, create window after getting file
* remove a debug call
* forward/backward forgets original x position
* Opentext stream preps for window-region prompt width
* typing resets the leftarrow X position
* Removing cached X position for up and down arrows
I tied this to the DIRTY flag and recompiled its users. Also separately fixed the setsel and find functions to clobber the cache
* Fencepost glitrch
* add OPENWIDTH property
* Selection past the middle goes to the right
* bug fix
* Set up for paralooks name changes to avoid future confusions
* Update tedit-exports.all
* One more systematic name change for char/para looks parallelism
* TEDITSTRING applies initial props
* TEDIT.CARETLOOKS returns oldlooks, TEDIT.PUT has a QUIET flag
QUITEFLAG suppresses prompt printing
* Shakedown of field menu items
* Suppress shift-select in menus
* Typo, plus inserting EOL-containing strings
* Fix selection display glitch revealed by DOCUMENT
* Fix arg order, eliminate U-CASE
* U-CASE only if coercing IDENTIFIER from LABEL
* Allow SMALLP for identifiers, INITSTATE for SELECTION
Also a fence-post glitch in paragraph selection
* Fix MB.GET
* TEDIT-MENU: Right button doesn't invert Marginbar, copying suppressed
* TEDIT-STREAM: Error if copying an image object that doesn't allow copying
* Missed another LITATOM/SMALLP test on IDENTIFIERS
* Clicking in a menu removes stale promptwindow text
---------
Co-authored-by: Frank Halasz <frank@halasz.org>
* TMAX updates for compatibility with Tedit changes
* DOC-OBJECTS changes for compatibility with Tedit changes
* MODERNIZE update for Tedit split windows
* Core Tedit files
* IMAGEOBJ: Remove dependency on Tedit internals
* WINDOW: Remove dependency on Tedit internal declaration
Still strange that WFROMDS should have to branch on Tedit
* WINDOWOBJ gets window of TTY process before the window of the stream of the TTY process
So insert into Tedit works
* TEDIT-CHAT: try to use TEXTSTREAM vs TEXTOBJ
* Fix tab-initialization problem in SLIDES.TEDIT
as reported by @nbriggs
* TEDIT-CHAT: use TSTREAM rather than TEXTOBJ
* Updates after lots more testing, particularly scrolling
Some other files dragged along to avoid dependence on Tedit internals
* Remove unwanted SAVE.SYSOUT
* Addresses more end-of-file and empty-file display issues
Try it again
* TEDIT-DEBUG tracking other changes
* Odds and ends
* Adjust EOF selection and caret-scrolling on copy
* More cleanup, plus fixing a few more ancient (Venue) glitches
As usual, the problems have to do with the funky behavior of EOL's in the middle and end of the document. More abstraction and refactoring to get better control of this (I hope).
* TEDIT-WINDOW: Scroll down of big objects
Trying to fix what happens at the transition when scrolling down brings a big-object's top down in the window. Approach is to bring down the line above, which may make for a little jump. I hope that solves it.
Scrolling up still needs some adjustment.
* Eliminate junk at top of window after up/down scrolling of big objects
BLTSHADE is OK there for scrolling, but not for redisplay after editing. In the edit case, the top of the pane above the last valid line is preserved.
Scrolling still has the problem that the window can go blank at the first scroll that brings a tall object into the pane--still working on that.
* Scrolling with tall lines should be more continuous
* Another tweak for scrolling
plus interface extension to TEDIT.MOVE and TEDIT.COPY, a little more on field menus
* More robust strategy for field menu buttons
Surround the field with prefix and suffix pieces with image objects that print the pre and post labels and shift the selection forward or backward into the field. Doesn't depend on inherited quirky logic in the selection line-scanner.
* Field selection ignores right and middle clicks
* A little more menu/selection tweaking
You can't extend through fields and buttons
* Added CUSTOMBUTTONEVENTFN to menu field buttons
Also, menu buttons in general can't be deleted
* A few more glitches, plus a little selection refactoring for buttons
* Reduce flicker in pargraph menu margin bar
* screen update glitch
* DOC-OBJECTS, TEDIT-SCREEN: Fixes the HCFILES DOC-OBJECTS failure
* TEDIT-BUTTONS: Field values should always be shown in the specified FIELDFONT
* Abstracting the structure of the history lists
cleanup, but mostly as a precursor to maybe doing a ring buffer of a specified length
* TEDIT-FILE, a little font-reading cleanup
* Include the files from rmk-39 that deal with the text/binary renamefile problem
* TEDIT-PAGE addresses #1905
* Fix BUTTONSTART to STARTPC in Put/Get menu buttons
* Use width of M as width of EOL--easy to select
Also put in function call for potential kerning--needs eventual FONT support
* Rename a few internal functions from TEDIT.-- to \TEDIT.--
* Doesn't make sense for a charlooks to not have a font
* TEDIT-BUTTONS - Fix comment
* Take out Tedit internals from \CARET.FLASH?
Should have included this in fifth round long ago
* TEDIT-FILE: use DEFAULTFONT for .sh files
Easier to follow the layout
* TEDIT-LOOKS: fix loadup order
* tedit-exports.all Remove line-has-protection field
Useless
* Make sure that charlooks change as expected
* External format for .sh files is UTF-8
* Better display of history information for debugging
* Button changes: show document font families, better fields
* TEDIT-WINDOW, remove extra truncated line with down-scroll
* TEDIT-SELECTION: suppress line/paragraph selection for built-in menus
Line/para selection would be reasonable for multi-line fields, but most menu lines have protected text that would behave inconsistently. So just suppress
* Better support for potential kerning
* Fix empty field value
* Simplify ASCII translation code
* Make sure headings have a default tab
* Word boundary at character 1
* Remember that you specified a font class instead of a font
For the charlooks menu, but also so that it is saved on a put
* More items on the Family NWAY-button line
* glitch
* TEDIT-LOOKS: Better algorithm for Ascii translation
* Charmenu remembers previous "Other" fonts, even if not installed
* Fix initial piece index
* Fix fontclass changes (again)
This includes some files in lispusers that are not in the Tedit core but had references to Tedit internal functions (TMAX, DOC-OBJECTS and some others) that have been renamed. (I hope to clean out those internal references, at some point.)
A few additional changes are here to track the changes that were recently made in the unrenamed master branch. Going forward, I want to make future changes in this branch.
Eventual plan is to introduce a Tedit package and do another systematic renaming of all \TEDIT.xxx functions to TEDIT::xxx, this is a first step.
This does not yet include a backward-compatibility mapping of oldnames to newnames, as was discussed in the technical meeting.
* INSPECT: Sort datatype fields alphabetically, fixed a small bug
* INSPECT: Sort only DATATYPE records
* VIRTUALKEYBOARD: fix loadup
* Reorganizing VIRTUALKEYBOARDS as described in #1267
* KEYBOARDEDITOR: fixed one bug, still is out of step
* MEDLEYDIR: Pack DSK as the default HOST on the value of (UNIX-GETENV "MEDLEYDIR")
* Move KEYBOARDCONFIGS KEYBOARDEDIT to library/virtualkeyboards
This collects all files relevant to VIRTUALKEYBOARDS into the same subdirectory
* NEARESTCORNER must be onscreen (addresses #1294
Mouse jumps to the nearest onscreen corner of the ghost region
* EQUALALL tests equivalence of bitmaps and big bitmaps
* Oops, off by one
* INSPECT: had wrong test in deciding whether to sort or not
* Improve check for closed stream in \UFSCloseFile.
Check if the (STREAM ACCESS) bits are NIL, indicating a closed stream, and
if so do not attempt to close the file again
* COMPAREDIRECTORIES, COMPARESOURCES, COMPARETEXT, EXAMINEDEFS
Relatively minor cleanups, little or no functionality improvements
* Remove calls to OPENFILE
OPENFILE is a residual Interlisp function that returns a litatom instead of a stream. In almost all cases, this immediate causes an error that litatom files are no longer supported. I have found (FINDCALLERS) all the examples in lispusers/sources/library/ and replaced OPENFILE with OPENSTREAM (except for the calls from \PEEKPUP and \PEEKNS, that I didn't track down). There was a trivai call in COMPILE.FILECHECK in COMPILE, but that function is not called anywhere. So I removed it.
* ADIR: remove OPENFILE calls, also another stab at \COPYSYS
With respect to \COPYSYS, this replaces the draft PR #1263. This applies TRUEFILENAME at the start, but remembers whether it was in fact a pseudohost and restores that for the return value. So if you start in a pseudo world you end up there.
* Next version of TEDIT core files
* Update
* Update
* UPDATE
* UPDATE
* UPDATE: FORCE-END fix
* FILEIO: OPENSTREAM parameters default to STREAMPROP
also add LINELENGTH
* Expose useful subfunctions
* TEDITDORADOKEYS - compatibility with new declarations
* Update tedit-exports.all
* * removed from title when all changes are undone
* Delete old tedit fiels
* Add TEDIT.FILEDATE
* REGISTER-TYPED-REGION creates a new TYPED-REGIONS entry
If a window is closed whose region is of an as-yet-unknown type, a new entry will be added implicitly to TYPED-REGIONS to that that region and future regions of that type can be recycled.
* COMPAREDIRECTORIES: Get AUTHOR only if selected
This may provide a little speed up. But of more importance, almost all the array crashes I am seeing are underneath (GETFILEINFO xxx 'AUTHOR). The UFS implementation may be smashing array space, or maybe it is just detecting the corruption. For now, I'm eliminating this potential source of bad behavior.
* Hilighting and caret flashing in split windows
* A little more on window splitting caret/hilights
* Rename caret functions
* REGIONMANAGER: Compatibility with REGIONMANAGER PR
* EXAMINEDEFS: Better interpretation of TYPE NIL = (FNS FUNCTIONS) with better formatting
* Refining caret behavior, importing separate changes also in other PRs for compatibility
* Mostly dealing with highlighting and caret flashing in split windows
* FONTPROFILE: specvars declaration for cleanliness
* Prep for UTF8, a little performance tuning
* Meta EOL = non-paragraph linebreak
* Back-scrolling based on linebreak characters, not paragraph breaks, also eliminate obsolete code
* FIddling around with window titles (getting *'s when changed), dealing with titles not computed by Tedit
* Recompile DOC-OBJECTS because \DIRTY bit has changed
* COMPARETEXT: fixed to avoid EOF error if EOL gets confused
* CLIPBOARD (bug fix also a separate PR)
* \TEXTBOUT of EOL doesn't create a paragraph, though typing does
Otherwise, every line in a plaintext or lisp sourcefile is a separate paragraph, which adds unnecessary overhead.
* TEDIT-PCTREE: Move some straggling piece and btree functions to their proper home
* Change \TEDIT2 to \TEDIT1 as a way of recognizing a Tedit process
* Prepping for more speed up in SEEing of large source files
* Miscellaneous stability/maintenance/performance changes
Fixes the TEDIT.TITLEMENUFN problem, adds TEDIT.COLLECT.OBJECTS
* TEDIT-FILE : fix readers for obsolete Tedit file formats
* Cleanout misplaced pane/ files
* Fix for most of the lispusers/ hardcopy failures
They all had to do with the diacritic overbar in Env-os.
* Another diacritic glitch
* MODERNIZE: Fixed off by one bug in NEARESTCORNER
* Update tedit-exports.all
* The "HELP PURGE" problem, plus a little cleanup
* hide initial caret in menus
* TEDIT-LOOKS, TEDIT-PCTREE: prep for reducing FIXP's
* LLSYMBOL's FILEMAP was also incomplete
This update hopefully won't reveal any other problems
* Introduce NOTSPLITTABLE TEXTPROPERTY
If T, window-splitting cannot happen for this text stream. Hopefully removes need for Notecards advice on \TEDIT.SPLITW.
* PSEUDHOSTS and .TEDIT: Apply TRUEFILENAME on PREFIX, update documentation
Documentation addresses #1303 . Using TRUEFILENAME makes sure it always goes to a ground instance in e.g. (PSEUDOHOST 'MEDLEY '{MEDLEY}).
* Don't allow Put of readonly file
* Inverted selection (black) hilights in readonly texts
More visible than a little underline when there is no blinking cursor
* Remove redundant type-tests
The I.S.OPRs test the I.V. type for lines and pieces, so that field accesses can safely be fast inside the loops
* MULTIPLE-HARDCOPY: at least fix obvious issues with new Tedit
Also avoided FILELST as a bound variable. This needs work and maybe a little support from Tedit--it shouldn't be advising and unadvising a Tedit function.
* TEDIT-SELECTION: Fix hilighting glitch with READONLY texts
(Shift select should have its usual highlighting)
* TEDIT menus are not splittable
* TEDIT-FILE fixes imageobj bug in old Tedit formats
Revealed by running HCFILES
* Improve conversion of unformatted to formatted
Also cache HINTPC inside \CHTOPC
* Fix to pageregion problem in old versions
Also adds TEDIT.NCHARS
* Code cleanup after testing faster scrolling
* EXTERNALFORMAT: \CHECKECOLC macro confusedf ANY vs CR EOL convention
* Recompile callers of \CHECKEOLC macro
* EXTERNALFORMAT: \CHECKECOLC macro confusedf ANY vs CR EOL convention
* Recompile callers of \CHECKEOLC macro
* Mostly work on scrolling and HCFILE issues
* Trying to fix PSEUDHOSTS conficts
* PDFSTREAM
Backing up to fix merge problems
* update EXTERNALFORMAT to avoid conflicdt
* Mostly diacritic display and hardcopy
* Change DIRTY field to LDIRTY
* Added new user function TEDIT.FINDLOOKS
* WINDOWOBJ: READIMAGEOBJ doesn't ask for permission
If the image object is on a hyphenated file and it can find a nonhyphenated sister, it loads that. If that doesn't provide the getfn, it tries the original file.
* If ANY and no CR after LF, return EOL instead of CR
* Move charset management to externalformat (addresses #1454)
Removed IMCHARSET from IMAGEOPS declaration, added FORMATCHARSETFN to EXTERNALFORMAT, put XCCS charset handling in the XCCS externalformat.
* XCCS, fixed a glitch
* Fix EXTERNALFORMAT clash
* Mostly CHARENCODING
* TEDIT-PF-SEE: Use TEDIT.ATOMBOUND.READTABLE
Tedit word-selection → atom selection in source files
* For merging with new charset arrangement
* Mostly work on hardcopy-display
Also asks before it saves a plaintext file as a formatted file
* Changing to hardcopy display doesn't mark "dirty"
* Mostly Put and Get, reorganizing for UTF8, plus odds and ends
* Straggler: TMAX-XREF.LCOM
* Meta-EOL
* Fix and extend page-format updates
Original TEDIT.PAGEFORMAT was unsafe and less useful. Also did not update history for undoing.
* Use window's screen's height/width to test offscreen
* Write and read unbreakable character property
* Don't suggest put-name if TEMPLATE
* 2 point hilight if readonly
* Mostly proper treatment of invisible pieces and forward char-delete
* Forward word delete, better paragraph selection, cleanup, lisp source atom selection
* fix conflicts for merge
* fix incompatible merge
* Updates including UTF-8 plaintext files
Other continuing cleanups
* Continue edit after writing out UTF-8 plaintext
* TEDIT-FILE EOL stays EOL after putting to a different EOL convention
for continued editing.
* Update EXTERNALFORMAT from master
* Get rid of needless file change
* EOL processing
* Fix Lafite glitches
Including relaxing constraints on the order of pieces in Tedit files.
* Unsplit any existing panes before main window is reused
* TEDIT-FILE glitch
* Better TEDIT.FORMATTEDFILEP, more TEDIT.CONCAT
* Headings with concatenated Tedit files
* Adjust page headers and numbers
* Reshaping reestablishes the YBOT of PLINES
* Tighten up on binable, better error when binning on empty textstream
* TEDIT.PUT.STREAM, left click gives point selection
* TEDIT.PUT.STREAM
* Unhighlighting of menu buttons
related to point vs. single-character selection
* Better behavior when moving to foreign target
also some cleanup of the file-putting code
* More improvements to cursor tracking
* Single-char shift-selection (lost an edit)
* Try it again
* Suppress EOF error
* BIN instead of GETBASEBYTE, more cleanup of buttonevent and TEDIT.PUT
* Mostly work on process and menu configuration
* A little more careful in choosing the current selection (as opposed to prior search target) for find and substitutes
Use the selection if it is greater than a single character, otherwise the prior target. meta,G is available for clearly just repeating the prior target.
* Make the names of the Tedit menu process more distinctive
E.g. TEDIT-Charlooks instead of TEDIT#2. TEDIT and TEDIT#n stand out as the document processes.
* Logically correct undo of Move between different documents
The destination document keeps the delete event in the source, if it is still the most recent source event when the move is undone, the deletion is undone in the source. Otherwise, the deletion is ignored.
* Line spacing reflects offsets
* TEXTPROP returns length
* TEDIT-HISTORY: Redo of a move just does a new-location insert
* remove unwanted cpv from PR
* Removed the unecessary SPTEXTOBJ field in SELPIECES, move work on move-undo
* Fix hardcopy bug
* More work on the hardcopy interface
* TEDIT-FILE addresses put of empty stream (issue #1577)
---------
Co-authored-by: Nick Briggs <nicholas.h.briggs@gmail.com>
Co-authored-by: Larry Masinter <lmm@acm.org>
* TEDIT files: deleted from library/, renamed to library>tedit.TEDIT-xxx
* PSEUDOHOSTS: Error if file won't open
* LOADUP-*, MEDLEYDIR, UNICODE
Adjustment for TEDIT-xxx, plus moving UNICODE to the beginning of LOADUP-LISP, with UNICODEDIRECTORIES creating in MEDLEYDIR