* Coerce MCCS filename strings to UTF8 filename strings in file-name system calls, coerce system filenames back to MCCS codes
* Add UNICODE-TABLES so MTOUTF8STRING gets defined in right place in the loadup sequence
* ADIR: Bug fix: UNPACKFILENAME sets FATSTRINGP
* fix virtualkeyboard bug in code assignment
* Unicode canonicalizes non-SMALLP unicodes
* 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.
* Add back character sets that had characters outside 16 bit plane
* Update XCCS-353=SYMBOLS3.TXT
Update title line
* Update UNICODE.TEDIT
* Fix charset names
* Reorganized the tables, added requested interfaces
* Use a single hash
* Top-level array branch beats a single hash
* cleanup UNICODE.TRANSLATE macro
* Fix slug in outcharfn
* Remove a stray line
* Another try, would work for raw
* Remove duplicates, redo hashing
* Getting complete maps in both directions
* Initializing
* Only the latest file versions
* Add back gothic mappings
* 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>
READ-UNICODE-MAPPING-FILENAMES returned a bare string if FILESPEC matched 1 file (first clause of the (OR...) in join), this caused READ-UNICODE-MAPPING to fail.
SHOWCHARS referenced variable CODE that should have been C
Added FILETYPE property to UNICODE to specify TCOMPL compiler.
(Other changes are formatting by pretty printer, not mine.)
* UNICODE: a few additional Tedit helpers, revised documentation
* New JIS files (courtesy of Peter)
* Updated mapping files (courtesy of Peter Craven)
* UNICODE: changed SHOULDNT to ERROR
* EXTERNALFORMAT,UNICODE,XCCS: Consistent naming of \PEEKCCODE(.EOL), \BACKCCODE returns the code
It was confusing that the naming of the peek functions was inconsistent with the inccode and backccode functions with respect to the EOLC qualifier. Now uniformaly, the unqualified names (\PEEKCCODE, \BACKCCODE, \INCCODE) do not do any EOL interpretation. The qualified-name functions (\PEEKCCODE.EOLC, \INCCODE.EOLC, \BACKCCODE.EOLC) do EOL interpretation.
Also, the \BACKCCODE interface is changed so that it returns the code corresponding to the bytes that it passed over. This simplifies some of the callers.
* Clients of \PEEKCCODE \BACKCCODE and .EOL
Small changes either to fix inconsistencies (backing, reading, peeking with inconsistent EOL interpretation), updating the names in a few other cases, a few simplifications.
* glitches in ATERM, HARDCOPY updates
* 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
* Compile device-creation functions for new default interface
* UNICODE: minor bug
* LLINTERP: MOVD? APPLY* to SPREADAPPLY*
* External format interface: a few more adjustments
* CLSTREAMS: Recompile, no source change
* PRETTYFILEINDEX: suppress when printing gitmaps to a non-display stream
* UNIXCOMM: Default format comes from device
Also, I seemed to have reverted back to LCOM with FAKE-COMPILE-FILE
* TTYIN: Meta chars defined by Meta charset, not specific value 1
Also, changed \TTYIN.RPEOF to use \FORMATBYTESTREAM generic function so that it does not make assumptions about the stream's external format
* LLKEY: Respecify 535 as "Function,^W" in \ORIGKEYACTIONS
First step in anticipating moving meta and signaling characters to unoccupied parts of the Unicode code space
* Have to commit the build artifacts in order to unstash changes
* CMLSTRING: No change, just upgrade filemap for CL Functions
* LLREAD: A little tighter on CHARCODE.DECODE
Allow hex and unicode in comma-separated specs, but must have 0X or U+ indicator. Don't allow junk characters
* LLKEY: Revert attempt at Meta,x and Function,x
For unknown reason, CHARTABLE isn't declared when LLREAD appears in loadup sequence.
* Unicode: Unicode character-constants weren't properly prefixed
Needed U+ or x0
* THINFILES (again): Add version number for mis-ordered HELP
* ATBL: Change 1,0...1,377 to Meta,0...Meta,377
In anticipation of a future migration of the meta charset.
* TEDITFNKEYS: Convert 1,x 2,x to Meta,x Function,x
In anticipation of eventual deconfliction with Unicode
* FILEBROWSER: remove reference to reader-environment field, add fix-directory-dates
Added a new submenu item under Recompute to make directory dates match the filecreated dates for Medley source/compiled files.
* SEDIT-COMMANDS: 1/2 to Meta/Function in Sedit commands
Codes in the 512+ range are now Function, anticipating eventual code-space translation
* FILEPKG: Consistency of exports.all external format
* Format implementation functions set a known variable *BYTECOUNTER*
The generic functions deal with updating the application variable.
\INCHAR eliminated in favor of \INCCODE.EOLC to make clear what it does.
OPENSTRINGSTREAM streams have their own format, and the string is always fattened.
READBITMAP doesn't mix character and byte reading
* AOFD: Don't execute \STRINGSTREAM.INIT
This creates a file device that is not used anywhere. The function OPENSTRINGSTREAM provides the functionality that this file device suggests that it would provide, but that functionality seems suspect at best. The function is left in the system for now, probably should be deleted at some point in the future so we don't try to maintain it if we trip over it.
* TTYIN: Fix an ancient coding error
but still doesn't solve the (DIRECTORY ?= problem #402
* LLREAD, FILEIO, XCCS: Improve charcode backing, copychars
Added \BACKCCODE.EOLC that backs up over EOL encoding bytes, simplifies \RSTRING2.
\XCCSBACKCCODE returns T/NIL according to whether it succeeded.
\XCCSOUTCHAR uses IPLUS16 for CHARPOSITION
COPYCHARS makes no assumptions about EOL encoding
But still no solution for #402
* LLREAD, TTYIN.LCOM fix#402
The bug showed up in TTYIN, but it was actually a bad edit in the generic backccode.
TTYIN.LCOM is just a recompile--that had never been done with various new declarations.
* Cleanup of character IO interface
Committing this branch for further testing. I know at least that the TTY output stream somehow is defaulting to :XCCS, which is wrong, but I haven't yet found the interface for that.
* Clean out \NSIN etc
No top-level calls to the NS specific functions, just to the generic \OUTCHAR etc.
Updated full.database
* MODERNIZE: added dragging for fixed-menu windows
They can be dragged by their title bars
* UNICODE: Added Greek to the default set
Also made spelling of default-externalformats consistent with FILEIO
* FASLOAD: EOL conversion in FASL::READ-TEXT
EOL's printed as LF's will be read as EOL
* LLREAD: Added meta as a CHARACTERSETNAME
meta,a maps to 1,a now. But slowly propagating this to TEDIT, SEDIT, etc will make it easier to change the coding of meta characters, e.g. as part of a Unicode transition.
* APRINT FILEIO LLREAD: \OUTCHAR now a closed function
Removed the macro
* LLKEY: call CHARCODE.DECODE directory in \KEYACTION1
Minor cleanup, avoid typical user entry and APPLY*
* WHEELSCROLL: re-enable on AFTERMAKESYS/SYSOUT FORMS
Also sets up mappings in the \COMMANDKEYACTIONS, whatever that is
* ABASIC: NILL and ZERO change from LAMBDA NOBIND to LAMBDA NIL
So that things like Masterscope don't break
* MASTERSCOPE: Added WHEREIS as last-resort for CONTAINS
Looks at the WHEREIS database, if present, for FNS and FUNCTIONS if it has no other information. . WHO CONTAINS ANY CALLING FOO works, but not the inverse: . WHO DOES FUM CONTAIN. We still need to figure out why the CONTAINS table isn't populated
* POSTSCRIPTSTREAM: use standard \OUTCHAR conventions
Now uses generic \OUTCHAR to get the proper function from the stream (or default)
* Recompile with right EXPORTS.ALL
Some of the macros weren't correct.
* Fix POSTSCRIPTSTREAM
Cleaner separation between external \OUTCHAR and internal BOUT
* POSTSCRIPTSTREAM gets its own external format
* Minor fix
* Compile-time warning about EXPORTS.ALL
* MODERNIZE: Modern button fn has same args as the original
For Notecards #343
* Fixed another glitch in the MODERNIZE arglist thing
\TEDIT.BUTTONEVENTFN actually takes a second STREAM argument. I don't see where it is ever called with that. The modernize replacement binds that argument, but it isn't being passed to the original.
* FILEWATCH: added missing record field
* Update FILEWATCH.LCOM
* Eliminating record/type name conflicts
Mostly just qualifying references, more work to get BIGBITMAP stuff out of ADISPLAY and to eliminate ambiguity of LINE record (now XXLINE in XXGEOM)
* Compile away open calls to \OUTCHAR, add loadups/full.database
Mostly new LCOMS where \OUTCHAR calls were compiled open
* Remove garbage library/XCCS
Old tools for reading wikipedia XCCS tables, sources/XCCS will deal with XCCS external format
* Next step: Remove open input-character calls, factor XCCS to separate file
XCCS is the default, but can be swapped out (eventually) by setting a few variables, without recompiling everything
* Lots of residual cleanup for XCCS isolation
* Delete old file MACINTERFACE (migrated to MODERNIZE)
* Eliminate straggling NS calls: LAFITE, READINTERPRESS
* Typo
* READINTERPRESS: removed CHARSET
* MODERNIZE: Interface to control title-bar response (for Notecards)
* Many changes for external format name consistency
Very close to the end of this
* Put :FORMAT in file info, fix TEDIT plaintext hardcopy
I distributed :FORMAT :XCCS as the default marking, but somehow one of the variables seems to get revert during the loadup. This is correct, as far as it goes.
* Getting the format in the file-info
This is all very twisty, different variables set in different places. It now seems to do the right thing, at least for new files. Marks them with :FORMAT :XCCS.
* Another fileinfo glitch
* CLIPBOARD -UNICODE: Make UTF8 to UTF-8 to match standards
* MODERNIZE: fix bug in MODERWINDOW
* External format as MAKEFILE option, LOAD applies the file's format
(MAKEFILE 'XX '((FORMAT :UTF-8)))
will dump XX as a UTF-8 file. LOAD will load it back to XCCS internal.
* Compilers respect DEFINE-FILE-INFO format
* MODERNIZE: little glitch
* Delete old FILEIO.LCOM
* More edge cases of external format thru MAKEFILE, PRETTY, PRETTYFILEINDEX etc.
* FILEBROWSER: Can SEE UTF-8 Lisp sourcefile
* INSPECT: Better macro for inspecting readtables
* recompile changed files and do new loadup
Co-authored-by: rmkaplan <ron.kaplan@post.harvard.edu>
* All source files converted to LF
Also, HPRINT: EQUALALL knows about CL arrays
FILEIO: STREAM record with fields for external format functions
* Delete makeinit.dribble
* Converted CR to LF on internal/library and docs/Documentation Tools
this will give us a stable point on which we can make changes in coordination via git.
NO MORE USING A SHARED DROPBOX
Last major commit wihout a PR against a Medley issue.