This file contains the history of changes to the original SPFLite and SPFLite2 versions of the program. The current Changes.TXT file tracks the changes to the newer SPFLite3 version of the program. Chronologically in reverse date order (i.e. oldest at the bottom) Between 3.0.24026 AND 3.0.24069 (Mar 09/2024 ============================================= * If using Beta versions, the option to run only a single Instance was crippled. This has been corrected. * An error in how AUTO files were loaded has been corrected. It was effectively turning colorization off. * If an "EDIT file-name" command is issued, and the file does not exist, it is supposed to create an Empty file. It has not been doing so for some time. This has been corrected. * The MRF (Most Recent File) list was not being consistently reset during startup, depending on the startup options. This has been corrected. * A variety of problems related to the handling and display of messages has been corrected. Particularly with messages related to tab startup and shutdown. There were several messages of this type which were simply 'disappearing'. Between 3.0.23313 AND 3.0.24026 (Jan 26/2024 ============================================= * Added new primitve (CmdLog) to toggle (ON/OFF) the debugging command logger. Normally only used if requested by SPFLite support to aid in solving reported problems. * The number of UNDO levels option will be removed as a Profile Level item and will become an Options => General item. Automatic migration will be done and the setting will be made to the highest value currently used by any Profile. * Correct several errors in handling UNDO/REDO commands. Errors were corrected in the commands CLIP, COPY, and in the main UNDO support itself. * Correct an error in how internal data memory tables are expanded to prevent affecting special line storage (e.g. PROF lines). * Correct MINLEN command. If the MINLEN value was increasing, it was failing to adjust the existing lines in the session. * Correct macro function Get_RBound. If RBound was 0 (MAX) is was incorrectly returning the maximum length data line. * Correct PRESERVE handling when AUTOCAPS ON is also specified. * Correct coding error in the DIFF support for removing comments from the data being compared. * Correct error in parsing the -FILEOPEN file contents which could cause the contents to be ignored. * Correct error in a FIND PREV type search. It was not finding strings which were ON the cursor line to the left of the cursor column. * Add several enhanced Primitives to support TABS delimited column mode editing. So, what is Column Mode Editing? Well, it uses the TABS settings to organize the data into 'columns', and normal KB activity will honor column widths IF ASKED FOR. This means character typing in INS, OVR or DIN mode. The DEL, BS, DataDelete and DataBS will also adapt to the new mode. How is it asked for? The new Primitive (TabBNDS). This will toggle this new mode. It will be displayed in the INS/OVR box of the Status Bar. Other new associated Primitives are: (TabShift) - Will take all data from the current cursor column and shift it right to the next 'column' boundary. (TabRelease) - In INS mode, you may 'push' characters into the next column. When this would occur, the function will be stopped, with an Audible/Visible Beep. (TabRelease) will temporarily stop column oriented activity for the current line. Note: When typing in a column, if all further columns are blank, the check for overlowing a column will not be made, as no further data is impacted. * Add several requested new MACRO functions: Get_Arg_LRef_Count Get_Arg_NumLit_Count Get_Arg_Tag_Count Get_Arg_TextLit_Count Get_ANSI2SOURCE_Table$ Get_SOURCE2ANSI_Table$ For details of these functions, please see the Help Documentation * Correct cursor positioning of 'N' inserted lines when there is actual data in the MASK line. * Correct handling of the -F * operand in the INSTANCE command. * Correct error in the SUBMIT handling of INCLUDED files. * Correct error in the Line Command table which caused some line commands to reject / or \ modifiers. * Update macro function Get_Profile$() to add the new MACLIB profile paramater. * Correct parsing error when a Picture literal contains only a single *. * Minor tweaks to INSTANCE support. If the -F filename has no path specified, the SPFLite HomeFolder will be added. An extra reset of the Most Recent Files list when the END operand was used, was removed. Some overlooked Doc. changes were completed. Between 3.0.23259 AND 3.0.23313 (Nov 09/2023) ============================================= * Correct File Manager handling of FLISTS with a mixture of single path and extended path requests. * Correct error in the main Line Command table for the TR command. * Alter PRESERVE OFF handling so that if the trailing blanks to be removed contain any Attribute values (like hi-lighting), the line will retain the needed blanks to retain the hi-lighting. * Correct the COPY command. It was incorrectly using the Current Directory rather than the directory from which the loaded file was read. This caused incorrect "Missing File" messages * If "Minimize to Tray" ia activated, the ToolTip text has been modified to display the Instance name if other than DEFAULT. * Add new -FILEOPEN command line option. This allows you to specify the name of a text file containing filenames to be opened. You can open multiple files in tabs, or in MEdit sessions. For individual files you can also specify if they are to be opened in View or Browse modes. Read the new section - "FileOpen Startup Files" in "Working with" in the Help file * Add the new Primary command INSTANCE (alias INST). This command can be used to switch the SPFLite session to another Instance. It will start a new SPFLite Instance and optionally close the current session. If there are active Edit tabs, the command provides optional operands to allow you to request they all be CANCELed or ENDed. If END is chosen, each tab will use the current AUTOSAVE option to determine if, and what level of prompting to perform. There is also a KEEP option which does not close the current session. The syntax is: INSTANCE new-instance-name INST [ END | CANCEL | CAN | KEEP ] [ -F { * | FileOpen-Name } ] [ -D DoMacro-Name ] Other than new-instance-name which MUST be operand one, the remaining operands can be entered in any order. Notes: Some accompanying items * The command line -F operand will now accept an * to indicate the current _FILEOPEN.TXT contents are to be treated as the FILEOPEN data. * To accomany the above, the INSTANCE command will, as long as the new Instance-name is not the Current Instance Name, create a valid _FILEOPEN.TXT file in the SPFLite Home folder (the one holding the CFG file) with the list of the currently open tabs. * The passing of files to be opened to an existing Instance has been improved to support multiple files and/or MEdit lists. * The KEEP option also allows you to request the current session be kept open. If the new-instance-name equals the current name, the _FILELIST.TXT file can be used to ADD open files to the session. For example, if running normally as DEFAULT the command INST DEFAULT -F MyNewList.TXT KEEP would add the files in the specified file to the current session. The following would reopen the current Edit tabs in a new INSTANCE INST MYNEWINST -F * END * Extend the File Manager ALL command to support the END and CANCEL commands. These of course can only be used when displaying the Open Tabs list. * V3.0.23253 revised the handling of FM line commands to correct several inconsistencies. The support for the C/CC line commands (used with the CUT primary command) was crippled. It has been restored. * Add a new macro function Get_Instance$ to return the name of the Instance the session is running under. * Correct error in re-opening files when more that 1 tab was a MEdit session. The MEdit tabs were incorrectly merged into a single MEdit session. * Correct error in the command table definition for the FM ML command. * When creating a new INSTANCE, if the Instance being used as the model for the new Instance has unique EFT, KBD, SET and Retrieve tables, then then will be used for the new Instance. Previously, those 4 tables were always copied from the DEFAULT Instance. If they do not have unique tables then the copy will still be made from the DEFAULT Instance. * Correct erroneous message when a Primary CMD command is entered in a special edit tab (CLIP, SetEdit and EFTEdit). * Add support to the Edit line command M (Move) to allow moving whole files around in MEdit mode. The M command is placed on the =FILE> line, and an A/B line command to mark the new position. The new position must be located before another =FILE> line or the **Bottom** line. * Add a new Profile option - MACLIB. MACLIB allows you to specify 1 or more alternate folders to use as the source for macros, IN PLACE OF the normal Users\You\Documents\SPFLite\MACROS folder. The default for MACLIB is NONE. The list of folders is NOT specified directly by the MACLIB operand. The MACLIB value is the name of a SET symbol containing the list. This makes it easier to Enter/Edit the list in SetEdit rather than entering a long string as a MACLIB operand. e.g. Enter the command "MACLIB MyMacs" sets the profile value to MyMacs. Enter SET to reach (SetEdit) mode and create a line MACLIB.MyMacs=C:\MyStuff\MyMacros\|C:\Users\Me\Documents\SPFLite\MACROS\ Notes: The example adds the normal MACROS folder after the new user folder, but there is no requirement to do so. You may enter any set of folders you desire. Also, multiple filenames are separated using the | character. The effective MACLIB list (specified or NONE) is automatically added to the thinBasic #INCLUDE search list. Between 3.0.23253 AND 3.0.23259 (Sep 16/2023) ============================================= * Correct the NFIND logic. It was accepting a TOP operand, but never actually acted on it. * Correct handling EFT override profile handling. The override were supposed to be temporary, but were actually being saved to the profile if it was unlocked. * Correct a serious error in MEdit which caused incorrect saving of the MEdit session files. Between 3.0.23169 AND 3.0.23253 (Sep 10/2023) ============================================= * There are new Profile options: AUTONAME - Defaulted to NONE, if not NONE it specifies the name of a different AUTO file to be used for text colorization. (Rather then the normal Profile Name) MODE - Defaulted to EDIT. Can be used to specify the type of tab to be opened when a simple SELECT or LMB click is done on a file in File Manager. Choices are EDIT, VIEW and BROWSE. * Correct handling FM Line command repeat values that exceeds the size of the current list * Correct the handling of a MODE xxxx and AUTONAME xxxx Profile overrides in the EFT list. * Correct File Manager error in not saving the STANDARD / ALTERNATE format setting for each of the display types. (FilePath, Recent, Favorites, etc.) * Correct CFGMaint. It was not always actually saving the corrected value for error entries when doing an IMPORT. * Correct handling of MEdit session re-open at startup to maintain the MEdit file order. * Correct EFT validation. Blank lines were not being skipped as they should have been. * Corrections to handling some FM Line commands, and to issuing FM Line commands in macros. * Correct allocation of UNDO files for MEdit sessions. * Prevent internal updating of the EFT table if an actual (EFTEdit) session is running. * LOCATE with 'color' operands has been corrected to handle excluded lines properly. * LOCATE with LONG operand also received a correction in the command parser. * Corrections to handling some FM Line commands, and to issuing FM Line commands in macros. * The FM DEFAULT command has been eliminated. * Correct BACKUP handling of files which have no extension. * INSTANCE support has been extended to allow the EFT (Extended File Type) table to be maintained uniquely by Instance ID. * An extensive internal revision was done to 'tidy up' the handling of Tab Creation/Deletion and inter-tab communication. The handling of file Profiles was also simplified. * The EFT (Extended File Type) support is being extended, and will take over handling other file type related choices. ** File types which should share the DEFAULT profile ** File types which should be treated as non-text files ** File types which should be Opened by the Windows default app for that file type This means the DEFAULT extension list specified in Options => General will be removed, as well as the no-text list in Options => FM. These former lists will be automatically converted to the equivalent EFT table entries, you do NOT need to perform any conversion. Please review these extensions in the Help file. Between 3.0.23088 AND 3.0.23169 (Jun 18/2023) ============================================= * Correct the SET command. It was not handling an empty SET table properly. * Correct the (Paste) KB primitive, It was not handling a Paste into the command line properly. * Correct colorization scan, it was not handling the AUTOCASE of a single delimiter character properly. * The macro function Get_Profile$ has been re-written to properly perform what the HELP file indicates. As well the BNDS, MASK, MARK and TABS line data can be retrieved either with the functions Get_xxxxLINE$ or with Get_Profile$("xxxxLINE"). * When loading a file using an XMACRO, the routine that validates the SOURCE attribute will be skipped, to avoid issuing extraneous messages. * Correct error in saving Hilite entries in the STATE file. The length of color fields was incorrect if within 1 character of the line length. * Macro Get_Profile$ will now, for EMACRO, IMACRO and XFORM return the ON / OFF value as the last operand in the string. * Correct handling of the Dialog for missing Profiles. If SKIP or SKIP(W) is chosen the entry was being added to the wrong CFG table. * Remove the option for whether 2D mouse movement may be used to mark text in an edit session. 2D selection will always be allowed. * The handling of File Manager Line commands has been revised to better handle Repeating and Block mode commands. * The primary commands RECFM, EOL, and LRECL control how your data files are processed during reading and writing. There are a variety of combinations of these parameters which are illogical. Validation in the individual commands has not prevented the creation of these illogical combinations. So, these individual commands are internally becoming 'pass-through' commands, meaning they no longer perform the validation and actual change to the Profile settings. The command is restructured and passed to a new DCB command, which will 'do all the work'. The new command can, of course, be used directly and is the recommended approach. For most users, using the old commands is probably still more familiar and will continue to operate. The format of the new command is: DCB [ RECFM operand ] [ LRECL operand ] [ EOL operand ] ie. A standard TXT file would be spacified as DCB RECFM U LRECL 0 EOL CRLF The operands following the keywords RECFM, LRECL and EOL are identical to the operands of the former commands. This allows for proper validation of the parameters and will prevent the accidental creation of illogical sets of parameters. Between 2.7.23056 AND 3.0.23088 (Mar 29/2023) ============================================= * Correct (PA2) primitive KB function. It was not performing the flip/flop between old and new screen images when pressed repeatedly. * Alter the (DataDelete) and (DataBackspace) primitive characteristics to allow their use in the FM tab on the Command Line. Correct (DataBackspace) operation on the command line. * Re-establish the alternate form of the Line Command modifiers / and \ as described in the Help for Extended Line Command Modifiers. This uses the sequences of . and .. as substitutions. (Easier to use on non-English keyboards). This support 'disappeared' about 3-4 years ago. * Tweak messages for the SAVE command in a CLIP session to better indicate 'where' the data was saved. (i.e. Named or Windows clipboard) * Revise the (Copy), (CUT) and (Lift) primitives so that if there is no 'marked' area, the clipboard is left untouched. If it IS necessary to actually clear the clipboard, use the (ClipClear) primitive. * Add support for a normal Windows ScrollBar on the right of the screen. This feature is optional; to activate it go to Options => Screen and toggle the "Add Vertical ScrollBars" option. * Minor correction to macro function SPF_Post_Do regarding marked text areas. * Minor correction to the (LowerCase) primitive. It was not checking for an active Marked area before proceeding. * Revise internal MSGBOX routine to support custom text on the dialog buttons. * Remove the FM Line command PURGE. The option to perform a Permanent Delete can now be done with the DELETE/DEL/D line command by adding a 'U' as an operand. e.g DEL U * Improve the clarity of text in the popup DELETE confirmation dialog. * Revise the FM line command LINES, which updated the STATE information for a file. If the file currently HAS a LINES value, it will skip the overhead of performing a STATE rebuild. This is helpful when you want to select a large range of file lines where only a few are actually missing LINES data. When needed, a U operand can be added to request an unconditional STATE update regardless of whether a LINES value currently exists. e.g. L U Between 2.7.23019 AND 2.7.23056 (Feb 25/2023) ============================================= * Reverse the change to the colorization QUOTED command default in AUTO files. The revised default (of 3 sets of quotes "" '' and ``) seems to be causing more problems in colorization than before. So the default will go back to being the single double-quote. * Add support for Alias names for the colorization schemes. This helps to remember what each of the schemes are used for. These Aliases can optionally be used to replace hard-coded scheme numbers in the AUTO files. * Correct the (DataInsert), (DataDelete) and (DataBackspace) KB functions as well as the CHANGE logic for handling CHANGE DataShift mode changes. A revision to avoid spaces within quoted strings was just not up to handling lines with multiple individual quoted strings. * Alter the display of the INS/OVR value in the status bar to better hi-light when the setting differs from the user's default as specified in Options => Keyboard. As well, (DataInsert) mode will be indicated by the DIN designation. i.e. the StatusBar may now display INS, OVR or DIN. * Review the various KB Primitives related to INS/OVR mode. The following changes have been made. While there are numerous changes, most users will be unaffected by them. * The following function names have been deprecated; they will still function normally but should eventually be replaced by their new names. These functions are normally only used by multi-step KB macros. (SetInsert) - Replace with (SetINS) (ResetInsert) - Replace with (SetOVR) * Add (SetDIN) - a new function to switch to DataInsert mode. Note the new designation of DIN (DataINsert) will be displayed in the StatusBar. * The 3 functions (SetXXX) will save the current insert mode and immediately switch to the requested mode (INS, OVR or DIN). The saved mode doesn't actually need to be used. i.e. The (SetXXX) functions may be used as a simple "Please switch to XXX mode". * The (RestoreInsert) function is unchanged and will still perform a restore of the saved insert mode created by the (SetXXX) functions. * (Insert) is also unchanged and will continue to toggle between INS and OVR mode. (Insert) will also continue to reset DIN mode. * (DataInsert) has been modified to better operate as a toggle. If in INS or OVR mode, (DataInsert) will save the current mode and switch to DIN mode. If already in DIN mode, it will revert to the previously saved mode when DIN mode was entered. * (ClearInsert) will revert the insert mode to the mode specified in Options => Keyboard for initial startup mode. * When the (PA1) KB primitive (cancel screen input) was implemented, we created a small Oops! It turns out it should have been called PA2. So PA1 is now deprecated (but will still work). The proper name for the function is now (PA2) * Correct DIFF error which did not allow specification of a Tab # operand if the tab was a 'special' tab (e.g. CLIP). Also correct missing color hilights by DIFF on Inserted and Deleted lines. * Correct line command handling to do with clearing the completed line commands. Some were being 'left behind'. * When the FM Line Command EXEC was introduced, it introduced some confusion with the equally named EXCLUDE primary command. (Both could be abbreviated to EX) So EXEC processing has been merged with the W line command (which opened a file using its default application. The W line command, if it includes an optional operand, will now process the selected file using that operand as the command. i.e. W against TEST.BAS will open TEST.BAS in its default App. W NOTEPAD against TEST.BAS will open TEST.BAS in the NOTEPAD App. * Additional corrections to colorization scan logic to better handle comments on lines which also have quoted strings. * Improve the DIFF command removal of comments feature to match the improved comment handling in colorization support. * Add additional new selection criteria to those commands which support string searches. The new operands are: C - Locate the string ONLY within a source Comment Q - Locate the string ONLY within a Quoted literal T - Locate the string ONLY in normal text (not a Quote, not a Comment) The operands can be combined to create custom searches. e.g Entering C T - locate the string within a comment, or in normal text, but not within quotes. These new operands are only supported if the Profile being used specifies a valid AUTO colorization configuration. * Corrections to program startup to handle running from a portable install of SPFLite. Some previous changes had inadvertently crippled the portable operation. Between 2.7.22344 AND 2.7.23019 (Jan 19/2023) ============================================= * Return code 4 from Macros was removed in a previous release. This change removes support for a Return Code 4 from an XFORM macro's Write routine. This used to be used to specify that the Write was simply 'not performed'. This change is highly unlikely to impact any users. * Add a new KB primitive (TrackC) - Track Create - to establish a new Track point. This is mainly intended for use in KB macros that may otherwise not create a new track point. * Enhance the SET substitution support. Previously the substitution could only replace entire space delimited 'words' in the command line. You may now use the normal concatenation symbol | to concatenate the SET text to the following characters. e.g. If SET ABC = DEF was defined, then =ABC|GHI would create DEFGHI. * Adjust Crash handling. A Loop Detect will only create a Crash Report when the option to crash is chosen. If "Continue Execution" is chosen, no report is written. Also correct the filename message when the data is saved in a .CrashSave file. * Correct the handling of the English Only / Not English Only internal Character List. It was not being generated correctly. * RETRIEVE will now ensure the command line scroll offset is reset so that the left end of the retrieved command is in position 1. * Add a new FM Line Command - EXEC / EX. This command requires a single operand, the name of a normal system command, BAT file or program. SPFLite will invoke the command and add the fully quoted filename from the selected FM line. e.g. EX NOTEPAD would open the selected file in the NOTEPAD editor. * Refresh the Status Bar after a macro execution to pick up any changes that may have been created by macro processing. (BNDS, CHANGE CS/DS etc.) * Correct color attribute management logic in swapping Scheme numbers. It was inadvertently resetting other non-Scheme attributes. * Improve the DataShift mode of the CHANGE command, the (DataInsert) and (DataDelete) KB primitives to prevent spotting and altering spans of blanks that are within quoted strings. Previously the code could inadvertently alter the format of the quoted string. * Reinstate the checking for a new SPFLite release. It allows the choice of automatic checking every 7 or 30 days, or specifying a Manual Check. A Manual Check requires the clicking of a button on the Options => General screen to perform the check. * Add some tracking of the usage of various SPFLite functions (Primary Commands, Line Commands etc.) Add a new option to the CFGMaint utility to create a tracking data file (a normal CSV type file). These hopefully can be collected and reviewed to assist SPFLite Support. * Correct the Picture types '&' and '%' (Word and non-word) to properly use the WORD values from the current active Profile. * Correct errors in the colorization scan to better handle comments and quoted strings. Between 2.6.22194 AND 2.7.22344 (Dec 10/2022) ============================================= * Correct the SORT command. It was NOT maintaining the associated STATUS of lines during the sort. (USER, .Labels, :Tags AND HANDLES) * Alter the TF LINE command to match the current writing style guides regarding the number of spaces recommended after a word ending in punctuation. Previously TF inserted 2 spaces, it will now onlt insert one. * Change the RESET command to be more selective about when it triggers the creation of an UNDO point. Previously, *ANY* RESET command variation would trigger this, even IF the RESET did NOT alter ANY UNDO related data. * Correct the handling of a 'changed elsewhere' notification, which results in the file being re-loaded, so that the cursor IS properly activated AT the completion of the reload activity. * Correction to RESET handling pending LINE commands. * Correct the FIND result message FOR Hex strings in EBCDIC file to properly display the EBCDIC HEX of the found string, NOT the ANSI HEX value. * Alter the PROFILE RESET FUNCTION to RESET all Profile settings to the original SPFLite Profile defaults. Formerly it was resetting values to the current DEFAULT Profile settings, which may (and probably have) been altered since the original SPFLite startup values were established. * ADD new support FOR 'Extended File Types'. This support provides a more flexible METHOD of assigning a particular file to a PROFILE than the current simple "use the file extension". Full details are in the Help file under "Working with Extended File Types". Note this addition removes the old PROFILE USING support. Any existing USING usage will be automatically converted to EFT as part of the first execution of this release. * Correct the handling of PRESERVE C. Truncation following a / character should ONLY be performed if all following characters are blank. (It wasn't) * Correct handling of RFIND for the 'D' - Delimiter and 'R' - Regex search strings. The resume search location was not being set correctly. * Enhance the MACRO TRACE output so that the functions which return an actual data result (not just a RC) will display the actual result. For string results, only a MAX of 32 characters will be displayed. * Alter RELOAD to remove an unneeded internal RESET ALL before the actual reload. * Alter the macros HALT and Set_MSG to restrict the allowable RETURN CODE values to 0 and 8 (OK and FAIL). The formerly allowable RC of WARN (4) IS no longer available. * The DROP and KEEP commands have been removed. * ADD new option to the Options -> Screen to allow specification of a 'scale' factor for the sizeE of the font used for the Status Bar and Tab Titles. The default is set to 1.0, smaller values (like 0.9) will reduce the font, larger values (like 1.2) will increase the font size. As well, alter the Status Bar allocations to better calculate the different box sizes. * Assign some new default color values to the USER Schemes so that a new installation will at least have a variety of colors for those experimenting with colorize support. Previously, these colors were all the same, giving the appearance that colorize was simply not working. The colors may not be suitable, but that is easily corrected with an Options -> Scheme session. * Correct MACRO function Get_Profile$. The "NAME" option had accidentally been crippled. This was corrected and the new field "LOCK" added. The LOCK STATUS was previously combined with the NAME data, they have now been separated. * Extend the BACKUP command to allow it to backup the CLIP, SET and EFT sessions. The backups will be stored in a standard $BACKUP folder, located within the HomeData folder (normally \Users\you\Documents\ * "Tidy uo" the message text for many of the PROFILE commands and displays to be more consistent in format. * Correct the LINE commands M/MM, C/CC and R/RR to properly handle xNOTE lines. The lines were being copied and converted to standard NOTE lines. * Correct the FM SELECT line command to properly handle LNK (shortcut) files that reference filetypes marked in FM AS Windows executable type. * Correct the LOCATE command. It was not rejecting line numbers bigger than the file size. * Tighten up the command parsing code in checking quoted operands. * Correct handling of RETRIEVE following a Command line error. * Update the PROF NEW xxxxx command so that when a new Profile is created, you will immediately be placed into the Profile Edit Dialog to customize the new profile as needed before actually using it for the first time. * Allow CLIP, DIFF, SetEdit and EFTEdit to use unique Profile entries. If a Profile exists, these special Edit sessions will use them, otherwise the previous DEFAULT Profile will be used. The special Profile names are (of course) CLIP, DIFF, SETEDit and EFTEdit. * Correct crash error if switching to HEX mode in a Multi-Edit session. * Alter the macros Get_Find_xxxx and Get_Loc_xxx functions to return Line/Column/Length values that are compatible with the Get_Csr-xxxx functions. * Correct DIFF code to properly perform deblocking of data from the clipboard when low value line control characters are present. * Correct command keyword lookup to properly exempt ALL the different types of quoted strings. (C type, T type etc.) * Correct generalized search routine handling of multiple optional search criteria. * Correct cursor positioning logic to properly handle multiple requests when processing stacked Primary commands. * Correct error in saving New sessions. * Rename the designation of new Tabs to (New) rather than (Empty) to better reflect how the tab was created. Between 2.6.22138 and 2.6.22194 (Jul 13/2022) ============================================= * Correct the (RestoreInsert) primitive to re-DISPLAY the NEW INS STATUS in the StatusBar. * Corrections to the (SWAP) primitive, to FIX random crashes. * Correct handling of the MAX operand of the ALIGN command. * ADD NEW FM primary COMMAND CSV [ALIGN]. This will CREATE a standard CSV (Comma Separated Value) file of the current FM displayed filelist. The ALIGN operand will trigger formatting WITH the COLUMN widths SET to the longest value. * STOP adding an LRDATE COLUMN to ALL Recent/PATH FM displays. Can't even remember a reason why this was ever done in the first place. * Correct handling of attribute characteristics when inserting TEXT WITH (DataInsert) MODE set. * Revise KEYMAP DIALOG to correct various TEXT formatting problems AND improve the Hints information. * Allow the (Record) KB primitive to accept a private CLIPBOARD NAME to receive the saved recording. e.g. you may now CODE (Record/MyCBName) * Introduce the (CmdPad) KB primitive. This FUNCTION will LOAD the CMDPAD.CLIP file AND INSERT the commands into the KB processing stream the same way a DO file IS processed. FULL details ON the NEW CMDPAD facility can be found in the HELP file under "Working with" => COMMAND Pad. * ADD a NEW startup COMMAND LINE option. The OPTION -SCRSIZE may now be used to request the SPFLite screen be opened WITH a specific SIZE rather than the values FROM the PREVIOUS termination. You may specify -SCRSIZE FULL, OR -SCRSIZE hhXww, where hh IS the screen height, AND ww IS the screen width. e.g. -SCRSIZE 43x100 FOR 43 lines by 100 columns. Between 2.5.22066 AND 2.6.22138 (May 18/2022) ============================================= * Changes to CREATE/REPLACE/SAVEAS >> IF no LINE-RANGE-operands are specified, a DEFAULT of ALL lines will be assumed. >> CREATE, IF it detects an existing filename, will, along WITH the ERROR message, REPLACE the COMMAND LINE WITH the fully substituted complete pathname TO allow simple re-entry / retry of the command. >> CREATE will now ACCEPT a keyword of REP/REPLACE (which effectively turns it into a REPLACE COMMAND). Useful FOR the circumstances of the PREVIOUS point. >> CREATE / REPLACE, IF entered ON a 'special' tab which has no associated PATH (like CLIP) will always pop-up an OPENFILE DIALOG TO allow FOR the specification of the pathname. FOR normal tabs, the PATH of the file displayed IN the TAB will be used IF the NAME IS NOT fully qualified. * FOR the primary file manipulation commands (BROWSE, EDIT, VIEW, SAVEAS, CLONE, CREATE AND REPLACE), the filename operand may now use the system Environment variables (like %USERPROFILE%) AND they will be replaced WITH their associated value. * Correct the handling of START LABEL processing. It was missing a flag setting which caused inconsistent results IN positioning top-of-screen AT file LOAD startup. * Correct the handling of -STD COLOR operand IN FIND/CHANGE searches. Basically, -STD was being ignored. * Correct errors IN the handling of Attribute characteristics (COLOR) LINES by PASTE. The extension of short LINES was NOT being done correctly. * Alter the LOCK ACCESS TO the HnDIndex file so that simultaneous instances of SPFLite starting up are NOT prevented FROM accessing the file. * Remove the ancient kludge of USING 999999 AS a repeat value FOR LINE commands OR a .9999999 FOR primary commands when what IS wanted IS 'the last line'. For primary commands use .ZL (last) and for LINE commands use / (here TO last LINE) OR \ * Correct handling of RESET [COMMAND]. Processing was NOT correctly distinguishing USER issued RESET commands FROM internally issued RESET commands. Also ensure the WORD, HIDE AND SOURCE operands are properly exempted FROM ALL processing. * When a MACRO returns WITH a WARN OR FAIL RETURN CODE, the COMMAND LINE will be restored TO the ORIGINAL COMMAND invoking the MACRO, rather than the last Primary COMMAND (which may have been issued internally by the MACRO itself. * Alter the interaction between functions which SET the Top-Of-Screen position AND those which SET the Cursor Location (which can also reposition the Top-Of-Screen) TO better adapt TO the actual current screen positioning. * ADD DATE AND TIME TO the NAME of the CrashSave files created when an SPFLite crash occurs. * Alter the CFG file ACCESS routines (which use SQLite) TO ADD DOUBLE quote marks around internal table names. When the file-TYPE of a file contains special characters (e.g. an @) the PROFILE NAME must be quoted IN the SQL syntax. * Correct the restrictions ON making changes IN BROWSE mode. BackSpace was being denied ON the COMMAND LINE, just a wee BIT too restrictive. * Allow the PROFILE MASK LINE TO contain SET variables. These will be substituted AS the MASK LINE IS being inserted. * Introduce a NEW 'Tracking' facility. This is designed to proide a simpler way TO RETURN TO a PREVIOUS working location IN a file after 'jumping' to a different location TO review CODE, OR COPY CODE snippets. See the NEW "Tracking" section IN the Help "Working with ..." topic. * Correct the PROFILE Edit DIALOG CODE, it was simply failing TO PROCESS the NEW EMACRO field. * Remove the QUERY COMMAND used TO DISPLAY the current STATE of various configuration AND PROFILE settings. ALL the commands that alter these settings will now ACCEPT a ? operand TO trigger a STATUS display. THIS will standardize things, AS previously some commands, when entered without operands, would treat it AS a DISPLAY request, WHILE others did not. e.g. formerly, TO DISPLAY STATE STATUS, the COMMAND would be QUERY STATE, now it will be STATE ? IN conjunction WITH THIS, those commands which simply turn conditions ON OR OFF, will now treat a COMMAND WITH no operands AS a 'toggle' request. e.g. HEX will now TOGGLE the HEX ON / HEX OFF status. One last part of THIS, the QUERY KB FUNCTION, which searched FOR AND displayed which KB mapping used a specified primitive, has been moved TO the KEYMAP COMMAND, which IS probably more appropriate. e.g. the former "QUERY KB insert" COMMAND would now be "KEYMAP QUERY insert" (OR KEY Q INSERT) USING abbreviations. THIS IS probably a minimal disruption ITEM AS THIS feature IS rarely used. * Enhance the SET ALIAS.cmdname support TO HANDLE substitution / insertion of the COMMAND LINE operands via variables. The variable names =0 thru =9 will now be substituted WITH the relative operand number FROM the COMMAND line. e.g. SET ALIAS.MyCmd = CHANGE =2 =1 ALL would CREATE a MyCmd which performs a CHANGE ALL WITH the operands reversed. * Revise the Routine FOR handling a missing Profile. IF the COMMAND triggering the action was initiated by a MACRO, THEN the pop-up DIALOG will be suppressed. A NEW PROFILE will automatically be created FOR the file-TYPE, containing the actual running values (NOT a COPY of the stored running PROFILE). * Revise the format of the filename used IN the CrashSave routine so that it retains the original filetype. THIS will prevent multiple filetype recovery files ALL having the .CrashSave filetype. * Improve SPEED of a DELETE ALL request. * Remove support FOR the old enhanced LINE RANGE feature. THIS allowed use of LINE RANGE requests like (.<=123 OR .>=567) OR (.>ABC AND . FM TAB DISPLAY TO ease editing the list. * Alter logic FOR how/when commands are saved IN the RETRIEVE stack. It was NOT handling PFK initiated RFIND/RLOCFIND triggers of COMMAND LINE FIND / CHANGE commands properly. * ADD additional validation TO internal pointers IN the TAB removal process. * Adjust LOCATE message generation TO prevent multiple messages being issued FOR what IS a SINGLE error. * Correct handling of an empty =WORD> STRING TO properly RESET the WORD value TO its default. * Correct colorizing of the STATUS LINE MODE BOX, it was NOT oroperly highlighting certain modes (BROWSE, VIEW, etc.) Between 2.5.21285 AND 2.5.21346 (Dec 12/2021) ============================================= * Correct the CHANGE COMMAND handling of +COLOR operands, it was setting the COLOR attribute BITS incorrectly. * ADD MAX TO the COMMAND operand hilighting FOR ALIGN, it was missing. * ALIGN COMMAND was NOT setting the Modified status. Corrected. * Repair the handling of the MACRO functions Get_Find_LPtr, Get_Find_Col AND Get_Find_Len which were 'broken' by the fix in 2.5.21285 for the ZFIND and ZLOC variables. * Relax the validation ON Tag operands TO allow more than just alphanumeric characters. * Alter the last three valid NOTE LINE types (WNOTE, XNOTE AND YNOTE) so that they are purely temporary. i.e. They will NOT be saved AND restored by normal STATE processing. * Alter the handling of ERROR messages generated during file LOAD FROM normal message LINE style, TO insertion AS WNOTE LINES AT the top of the initial screen displey. * Correct ERROR IN the screen DISPLAY logic when a DATA LINE IS exactly 1 BYTE shorter than the screen WIDTH available. * Correct handling of PREFIX AND SUFFIX IN the negative search routine. The boundary condition testing FOR the PREFIX/suffix was NOT thorough enough. * ADD a NEW ITEM TO Options => FM. THIS OPTION will allow you TO specify whether FM will use the standard MS Explorer STYLE logical sorting, OR whether you prefer the simple ANSI sorting used IN older SPFLite versions. * Correct PRINT handling. When NOT printing IN COLOR, it was USING the TextHi COLOR, which MAY NOT be dark depending ON the USER's color choices. It will now use BLACK when NOT printing IN color. * ADD a COLOR EXPORT / IMPORT ability TO the CFGMaint utility. THIS will allow COLOR 'themes' to be copied between Instances within the CFG file, or shared WITH other users IN the forum. e.g. there might be old 'green screen' themes, 'blue / white' themes, etc. * Correct cursor positioning after an EraseEOL IN the COMMAND LINE when the COMMAND length exceeds the screen width. * Remove the HnDIndex.txt file (which provides enhanced HELP search ability) FROM the EXE LOAD module itself, AND install it AS a separate file along WITH the MAIN SPFLite.CHM file. * Improvements TO colorization support: NOTE: These changes may trigger ERROR messages FOR some current AUTO files which may need correction manually. ** A NEW TYPE of WORD directive has been added - AUTOCASE. THIS NEW OPTION will cause the WORD TO be displayed IN the EXACT CASE of the TEXT IN the AUTOCASE statement. e.g. "AUTOCASE 5 OkCancel" would DISPLAY the TEXT OKCANCEL AS OkCancel. ** A CHECK FOR duplicate WORD / AUTOCAPS / AUTOCASE words will now be performed. ** The QUOTED directive may now optionally specify the delimiters TO be used TO identify quoted strings. IF no OPTIONAL parameters are entered it will operate AS previously WITH SINGLE, DOUBLE AND back quotes AS the delimiters. Delimiters are entered AS pairs (leading AND trailing) which DO NOT need TO be the same character. e.g. The current QUOTED 5 STATEMENT IS treated AS QUOTED 5 "" '' `` An example WITH different delimiters mmight be QUOTED 5 <> IF the < AND > were the quoted STRING delimiters. Between 2.5.21238 AND 2.5.21285 (Oct 12/2021) ============================================= * Correct handling of the Custom Colors OPTION of the COLOR SELECTION tool, it was NOT properly saving the custom colors IN the CFG file. AS well, clarify the instructions IN the Help file FOR how TO SAVE the colors. * Correct the DISPLAY of Scheme 14 IN the Options => Schemes dialog. It was NOT being displayed IN the correct colors OR font. * ADD refresh of the NEW BG2 DISPLAY IN the Options => Screen/Scheme tabs when a NEW COLOR IS selected. THIS refresh was missing FROM the NEW BG2 DISPLAY support. * Correct handling of colorize AUTOCAPS, the PREVIOUS release had accidentally crippled it. * Correct the routine which tracks the length of the current maximum length LINE, it was NOT properly examining ALL DATA lines. An incorrect maximum length value can affect other SPFLite functions which depend ON it. e.g SORT * Adjust spacing of the KEYMAP DIALOG elements. No functional changes were made. * Correct removal of the Invert attribute (used by the FIND COMMAND). It was NOT properly handling the length of the reset. * Alter the NEW Release procedure TO ensure Compiler Debugging support IS NOT included IN the production version AS it can visibly reduce performance. * IF STATE LOAD detects a LINE COUNT mis-match, but there IS no other STATE DATA other THEN the PREVIOUS top-of-screen position, it will still SET the position IF possible. (Assuming the PROFILE has START PRIOR SET) * Correct the RUN command. It was NOT sending the whole file FOR processing IF the DISPLAY was NOT sitting AT the top-of-file line. * Revised search routine FOR handling colorize kwyword search. * Repair the LOCATE FIND AND LOCATE CHANGE commands. They were 'broken' a few versions ago by changes TO the handling of FIND hilighting. * Repair .ZFIND AND .ZLOC support, another area 'broken' by other changes and upgrades. * Repair the handling of the CAPS:Auto setting. Another casualty of prior changes TO improve the loading TIME of large files. * Repair the checking of record lengths when RECFM = L IS specified. Same cause AS the PREVIOUS item. * ADD a warning message IF the file being loaded contains ANY embedded NULL (X'00') characters. NULLS can cause other application programs to truncate LINES prematurely depending ON how carefully their INPUT handling was written. * Corrections TO the saved top-of-screen position IN the STATE file. It was NOT being properly SET during END processing, AND was also NOT adjusting FOR ANY PROF LINES currently being displayed. * Prevent duplicate entries FROM being created IN the 'Non-Text Files' list. * ADD checking when an edit IS cancelled due TO a missing PROFILE, so that an attempt TO SWITCH TO the now cancelled TAB IS NOT made. * ADD 3 NEW MACRO functions: Get_LeftScrn_Col retrieves the leftmost VISIBLE screen COLUMN Get_RightScrn_Col retrieves the rightmost VISIBLE screen COLUMN Get_BottomScrn_LPtr retrieves the LPtr of the last displayed DATA LINE ON the screen. Between 2.5.21186 AND 2.5.21238 (Aug 26/2021) ============================================= * Correct SAVEAS command. It was NOT always checking IF the NEW filename was an existing file before proceeding. * Correct ERROR IN performing CASE-conformant TEXT changes. A LINE of debugging CODE had been accidentally LEFT IN, messing up the logic. * Enhance HELP TO better support the addition of the Macros Help DATA into the MAIN Help file. * CREATE a NEW SET option. IF an entry SET PENDING.xxx = Y IS created, it will allow a MACRO named xxx TO be processed even when there are pending LINE commands outstanding. Normally macros are NOT allowed TO run WITH outstanding LINE commands. * Correct ERROR IN COMMAND validation. A PREVIOUS logic change was made that ended up preventing RESET, CANCEL AND UNDO FROM being allowed TO run IF there were pending LINE commands. THIS has been corrected. * Change MACRO FUNCTION SPF_SHELL so that requests WITH SYNCH specified are issued WITH the CMD OPTION /C TO ensure the CMD WINDOW IS closed when the COMMAND finishes AND RETURN IS made TO the macro. * Correct handling of PFK issued commands AND how they interact WITH a Pending LINE COMMAND state. * Revise STATE handling internals TO relax the stringent re-loading rules. IF you use STATE, ALL your existing STATE files remain perfectly usable, no action ON your part IS required. HOWEVER -- ONCE you have moved TO THIS release, STATE files created by THIS NEW version will NOT be usable IF you revert TO an earlier version. * Prevent File Manager LINE COMMAND LINES FROM generating STATE loading ERROR messages since it will be replacing the STATE information anyway. * Correct ERROR IN setting the cursor position WITH a LEFT-MOUSE-click. Depending ON the COLUMN, it could falsely indicate that a TEXT area was being selected. * Improve message DISPLAY ON LINE 2 of the screen. The DISPLAY will now be sensitive TO whether it IS an ERROR message, OR simply an informational message. IF you desire, you may now SELECT 2 background colors FOR the Messages / ERROR setting ON the Options => Screen dialog. The BG1 value will be used FOR informationsl messages, AND the BG2 value FOR ERROR messages. THIS enables you TO make ERROR messages more highly visible. * Correct logic FLOW IN an initial SPFLite installation TO prevent a crash caused by an incorrect sequence of module calls. * Correct RELOAD logic. 2.5.21186 changes TO RELOAD incorrectly triggered a RESET of the Retrieve stack. Between 2.5.21174 AND 2.5.21186 (Jul 5/2021) ============================================= * Correct the NEW OPTION TO OPEN Help files IN FULL Screen instead of windowed. One condition was overlooked AND NOT honoring the setting. * Alter the Title CASE logic so that words like (isn't, don't, I've etc) don't end up as (Isn'T, Don'T, I'Ve etc.). * Adjust the File Manager LOCATE COMMAND TO use the NEW Windows Explorer collating sequence. It was still USING the old sequence, which basically prevents it FROM working properly. * Correct the Get_Find_Len MACRO function. It was returning the length of the COMMAND LINE search operand rather than the length of the actual found STRING, which can occur WITH Picture AND Regex searches. * REPLACE the RETRIEVE/RETF logic WITH a re-write. The PREVIOUS version was NOT working reliably AND would sometimes fail TO SAVE NEW commands TO the retrieve stack. * OPTIMIZE the File Manager directory read PROCESS TO remove the duplicate filename checking when processing ONLY a SINGLE file path. FOR very large folders, the un-needed processing was causing severe slowdowns. * Correct handling of File Profiles when performing SAVEAS, CREATE AND REPLACE commands TO ensure the file being written IS USING it's correct Profile. Previously they were written USING the loaded file's Profile. This could trigger some formatting errors AND STATE hashing errors when certain PROFILE variables were different between the two Profiles. Such AS PRESERVE, MINLEN, AUTOxx AND RECFM. * Correct serious ERROR IN SAVEAS. It was NOT saving the entire file IF the current top-of-screen LINE was NOT the first line. * ADD RELOAD AND END TO the list of commands allowed TO be processed when there are pending LINE commands. Between 2.5.21149 AND 2.5.21174 (Jun 23/2021) ============================================= * Correct handling of the ALIAS forms of REPLACE (REP AND REPL). They were NOT being treated properly AS REPLACE. * Further revisions AND enhancements TO the HELP command. The FULL search MODE IS now much more flexible. Please review the Help COMMAND section. * Correct test FOR an existing file IN the CREATE logic. It was NOT checking unqualified file names properly. * Correct RFIND/RCHANGE handling, they were NOT recognizing the presence of a PREVIOUS literal STRING IF it was a null string. * REPLACE the FM SORT logic WITH a standard Windows Explorer STYLE ordering. THIS ordering treats embedded numerical strings AS logical numbers regardless of the lengths of the string. E.G examine the following list TO see the effect. 2string 3string 20string st2ring st3ring st20ring string2 string3 string20 * Alter the ACTION SAVE processing so that the COUNT PROCESS IS ignored IF the file IS IN un-modified status. ONCE a modification occurs, the ACTION COUNT will continue AND eventually the SAVE will be done. Of course the SAVE will CLEAR the modified STATE, AND the PROCESS starts over. Between 2.4.21112 AND 2.5.21149 (May 29/2021) ============================================= * Major internal revision TO the way Primary commands are parsed, AND the various search/change criteria are managed. Previously, many of the Primary commands, which did NOT actually use the search / change criteria, would however still cause these criteria TO be reset. THIS caused subsequent attempts TO perform RFIND / RCHANGE commands TO fail WITH "No previous Find / Change criteria". This should now work as expected. * Correct handling of the CUT NEW OPTION TO prevent false prompts when closing a CLIP session FOR a named clipboard. * Alter handling of the START FIRST/LAST OPTION so that these will OVERRIDE the screen positioning done by normal STATE repositioning. IF the STATE location IS preferred THEN START PRIOR should be used. * Correct handling of the FM FIND-IN-Files search exemption list. IF the entry was marked WITH the (W) OPTION TO indicate the file should be normally opened by the associated Windows application, the file exemption search would fail. * Correct handling of the UNDO checkpoint files. Certain commands (like CREATE OR RENAME) can cause the active PROFILE TO change. IF there was a difference IN the SETUNDO value between the old AND NEW profiles, the UNDO file table could be corupted. These commands should heve performed re-allocation of the files, AND weren't doing so. This has been corrected. * Correct handling of the PAGE MARGIN values IN PRINT SETUP. They were NOT being saved AND restored correctly AND were always treated AS 0 (zero). * Revise HELP COMMAND processing TO provide a more thorough AND consistent search FOR Help Topics. HELP will now HANDLE multiple search terms TO assist IN locating suitable topics. * Alter the File Manager STATUS BAR TO DISPLAY a message WITH the LINE COUNT AND position of the current display. Format IS: LINE x:y of z e.g. LINE 4:28 of 64 Along WITH THIS, the LOCATE COMMAND will now ACCEPT a simle numeric operand AS a request TO position TO that line. * Correct ERROR IN handling the PROFILE WORD setting. The edit of the LINE was NOT properly displaying the LINE's contents as it was typed. * ADD a NEW KB primitive (Refresh) which may be used IN File Manager TO force a refresh of the DISPLAY contents. THIS may be needed AT times TO pick up changes (deletes etc.) made by external means. * Correct ERROR IN the Edit LINE move COMMAND (M/MM). ANY labels IN the selected SOURCE LINE RANGE were dropped instead of being moved along WITH the data. * ADD a NEW OPTION TO the KEYMAP dialog. There IS a NEW BUTTON, which can be used TO RESET a specific Key (AND modifiers) TO the DEFAULT value that SPFLite would have used ON a NEW installation. Simply place the cursor IN the TEXT BOX FOR a specific key combination, AND press the NEW button. * Correct messages issued following a FIND FOR a Delimited STYLE literal. The message was displaying the raw FIND operand rather THEN the found string. Also correct the determination of when TO DISPLAY the found STRING IN Hex (When it contains non-printable characters.) * Correct support FOR COMMAND Chaining. It has been 'broken' for a long time, but never reported. Between 2.4.21104 AND 2.4.21112 (Apr 22/2021) ============================================= * Revise the Crash handler so that LOOP STYLE crashes also have the OPTION TO SAVE the DATA IN modified tabs before allowing termination TO proceed. * CODE cleanup TO corect the handling of internal TRACE entries when a crash OR LOOP condition IS detected. * Correct the CFGMaint tool TO HANDLE FM Layout parameters IN the same manner``` AS the MAIN SPFLite program. * Allow CLS, TOP AND BOTTOM TO be requested IN a SPF_CMD MACRO call. * Correct STATE creation FROM an MEdit session when exiting via END. Between 2.4.21101 AND 2.4.21104 (Apr 14/2021) ============================================= * Correct a nasty bug IN the Crash TRACE logic, which would slowly FILL the TRACE table, eentually triggering a crash. Correct similar missing statements IN other functions. * Correction TO the STATE LOAD process. The Top-of-screen LINE was NOT always being properly re-established. * Correction CFGMaint tool TO HANDLE spaces IN the FMLayout string. Between 2.3.21053 AND 2.4.21101 (Apr 11/2021) ============================================= * Significant re-WRITE of the File Manager support. Please review the Help file section "Working with - File Manager" FOR FULL details. * Rename the CLONE FM LINE COMMAND TO Klone (abbrev. K) TO FREE up the C LINE COMMAND TO make it available FOR its normal C/CC usage. (See NEXT ITEM) * Allow the primary CUT COMMAND TO be used IN File Manager. When used within File Manager, the C/CC LINE commands may be used TO SELECT which items are TO be copied TO the clipboard. The DATA cut TO the CLIPBOARD will be the FULL pathname of the file enclosed IN DOUBLE quotes. (NOT the contents of the file.) ALL appropriate CUT operands may be used, APPEND, NEW, RAW, AND named clipboards, but NOT LINE ranges, X/NX OR U/NU. * Alter processing of FLIST entries TO support both unquoted AND quoted PATH/filenames. * Alter the RECALL COMMAND TO allow an * TO be specified AS the FLIST name. THIS will be treated AS a request TO use the contents of the CLIPBOARD AS the FLIST contents. * Allow the Primary RUN COMMAND TO be used IN a CLIP Edit session. RUN now supports an initial operand of a file extension (.xxx) TO provide the filetype FOR run. IF NOT provided FOR CLIP, a .BAT will be assumed. The NEW operand can also be used TO OVERRIDE the extension when RUN IS issued IN a normal Edit session. * Correct MACRO FUNCTION SET_CSR. It was NOT setting the OPTIONAL high-light when requested. * Correct program COMMAND LINE parsing so that UNC format filenames are properly handled. * Prevent duplicate entries FROM being created IN the list of file-types which are TO use the DEFAULT Profile. * Correct the procedure used TO move the CFG file TO a different location. The HomeFolder AND HomeData entries IN the NEW CFG file were NOT being correctly updated ON the initial run USING the NEW location. * Revise startup PROCESS of handling COMMAND LINE FileName/FilePath operands TO avoid 'collisions' with saved File Manager paths and masks. * Enhance the program Crash handler. The pop-up has been revised TO be more readable, AND a NEW OPTION made available which will request an attempt TO SAVE ALL active edit TAB DATA before completing termination. The DATA IS saved IN a NEW file WITH a suffix of .CrashSave. * ADD an additional OPTION TO the Pop-up DIALOG which appears when a NEW file-TYPE IS encountered, AND no current file PROFILE has been established. IF the file IS actually a non-TEXT file-TYPE, the NEW OPTION will skip the OPEN, ADD the file-TYPE TO the list of non-editable file-types, AND ADD the (W) operand which indicates that, IF clicked ON, the file IS TO be opened IN the DEFAULT Windows application FOR thet file-type. * Correct an ERROR IN HELP COMMAND which caused many topic searches TO fail AND OPEN the Help file AT the Introduction. WHILE fixing the CODE, the COMMAND has been enhanced a BIT TO be more CONTEXT sensitive between File Manager tabs AND Edit tabs. NEW operands of CMD/CMDS AND LINE/LINES may be specified TO OPEN help directly IN the relevant COMMAND summary PAGE (Primary commands OR LINE Commands). * File Manager can now HI-lite the active Quick Launch BAR SELECTION IF desired. The background COLOR FOR the selected ITEM can be specified IN Options => Screen by the BG2 value FOR FM Quick Launch Bar. * The KEYMAP LIST OUTPUT will now break OUT the PFSHOW labels into a separate COLUMN TO provide more readability. Between 2.3.21016 AND 2.3.21053 (Feb 22/2021) ============================================= * Correct logic of the Backup Retention handler. It was failing TO DELETE backups which were past the expiry period. * Altered the TitleCase routine TO treat additional chacters AS 'word' delimiters. The following characters were added IN addition TO the space character: ,.:;/\ * Treat a request TO OPEN a file, which finds the file already OPEN IN a TAB, AS a non-error. A message will still be issued AND a SWITCH made TO the located TAB, but no warning BEEP will be made. * Correct loading of UTF files TO properly HANDLE embedded TAB characters. * Remove restriction ON the BOM UTF setting so that BOM OFF can be used WITH ANY of the UTF variations. * Correct handling of stacked commands ON the COMMAND LINE when ANY of the commands involve altering ANY LINES's Exclude status. * Correct the reverse search routine TO properly establish the RESUME SCAN location. * Revise the program startup when opening IN FULL-screen MODE TO prevent the DISPLAY of a non-fullscreen WINDOW during the process. * When the pop-up TO SELECT a PROFILE FOR a previously unseen file TYPE appears, the pull-down list of existing PROFILE will no longer contain the names of Profiles which are currently SET TO USE a different Profile. * IF doing a KB (Paste), the LINE inserted will also be TAB processed IF ImportTabs IS set. THIS will now agree WITH how the Primary PASTE COMMAND HANDLES it. * Alter the (DataInsert) primitive TO be a TOGGLE ON/OFF rather than just turning DataInsert MODE ON AND USING (INSERT) TO turn it off. N.B. (INSERT) will stll perform the turn OFF AS before. * Correct END processing. IF AUTOSAVE ON NOROMPT was SET, AND the file had NOT been modified (thus NOT needing a SAVE) THEN STATE saving was also being incorrectly skipped. * Alter the RELOAD processing so that IF an IMACRO IS specified, it will be re-invoked after the DATA IS reloaded. * Correct STATE saving routine handling when immediately prior editing commands used X/NX OR U/NU operands FOR LINE filtering. Between 2.3.21016 AND 2.3.21026 (Jan 26/2021) ============================================= * Correct painting of FM screem when Banding IS turned on. * Correct BACKUP's handling of the table of $Backup folder locations. * ADD a NEW validation of CHANGE operands TO prevent a LOOP/CANCEL condition when MINLEN > 0 AND the CHANGE IS modifying Blanks TO Nulls. THIS TYPE of CHANGE will now be rejected. * Increase the FONT SIZE FOR the LEFT-hand Contents COLUMN FOR the CHM Help files. Reorder ALL the topics under Working WITH SPFLite TO be IN alphabetical order (AND remove the "Working with ... " FROM the beginning of EACH SUB-topic). Between 2.2.20255 AND 2.3.21016 (Jan 16/2021) ============================================= * Correct saving of the AutoScroll value, it was saved incorrectly so ANY changes were effectively 'lost'. * Revise startup sequence ON Initial Install so that a WINDOW IS always present during the process. Previously there were periods when no WINDOW was OPEN AND it gave the appearance that SPFLite had terminated. IF a 2nd COPY of SPFLite was started during THIS period the CFG file was NOT built properly. * Correct handling of the EOL parameter when setting it via the PROFILE Edit dialog. * Correct ERROR IN reading INCLUDE files during SUBMIT processing. The improvements IN recent releases FOR large file handling missed 1 SOURCE LINE ONLY used by the INCLUDE processing. * ADD a NEW utility program, CFGMaint, TO the installation. THIS tool allows you TO EXPORT OR IMPORT the SPFLite CFG file which contains ALL your preferences FOR the program AND FOR ALL the various file Profiles. A NEW section has been added TO the documentation "Working with the CFGMaint utility". Please review this for details on ts capabilities and usage. * Correct top of screen positioning logic when the Maintain screen position after LINE Cmds OPTION IS selected. * The SPFLite setup program will now ADD the Installation folder TO the system's PATH statement. * File Manager will now resolve Shortcut entries (i.e. .LNK files). IF a shortcut TO a normal file, the file will be processed, IF it points AT a folder, the folder will be opened IN File Manager. AS the cursor moves over the list, the real NAME FOR LNK files will appear IN a STATUS LINE Box. * ADD a TOPMOST attribute TO Message Boxes. Hopefully THIS will prevent them opening beneath the MAIN SPFLite Window. * Correct an internal typo IN managing the Options keyword table. * Correct LOCATE PARSE ERROR FOR LINE number zero. * The DIFF COMMAND has been enhanced considerably. It will now support: * Use of LEFT/RIGHT bounds TO restrict the RANGE of TEXT comparisons. * An OPTION TO remove/nullify SOURCE CODE comments FROM the comparison based ON the AUTO colorization file FOR the selected file types. * Embedded TABS can be ignored (treated AS spaces). * Compares can be requested TO be CASE-insensitive. * You can exclude LINES FROM the DIFF process. (Either X OR NX LINES) * Strings of multiple spaces can be reduced TO a SINGLE space before comparison, THIS allows comparison TO be done properly regardless of indentation, varying comment spacing etc. * Format of the saved DIFF report filenames was EXTENDED WITH additional fields. THIS will provide FOR better information ON the DIFF LIST SELECTION panel, AND will allow multiple DIFF reports of the same two files TO be retained. * Correct the FM Config panel logic TO properly invoke EDIT of a Profile. It was incorrectly following a PROFILE's USE value and displaying the USE'd PROFILE rather than the one selected FROM the panel * Cleanup inconsistency IN saving File Manager configuration parameters. * Prevent a LOOP IN FIND/Change logic when PROFILE MINLEN > 0 IS IN effect AND the Change would attempt TO shrink a totally blank line. * Revise PROFILE storage routines TO eliminate possibility of storing values IN an alternate active Profile. * Extend STATE processing so that STATE information IS saved when a session IS closed, AS LONG AS the DATA IS NOT im modified status. Ths will now also perform STATE saving IN Browe AND VIEW sessions. * Correct AUTO colorize SCAN TO correct an ERROR IN handling comments which use bracketed delimiters. Like /* */ * ADD several NEW DEFAULT keymappings TO the initial Install version of the KEYMAP. See the HELP file (Differences between SPFLite AND ISPF -> DEFAULT Key Definitions). THIS change will have no effect ON existing installations. * Correct logic ERROR IN handling the SUFFIX operand of the Negative STYLE searck commands. (Like NFIND, NX etc.) Suffixes were NOT being determined properly. * Alter handling of the BEEP which occurs ON ERROR conditions TO suppress the BEEP when issued by a COMMAND being run FROM within a macro. IF the MACRO wishes a BEEP TO occur, it must EXIT via a HALT(FAIL [,message] Between 2.2.20191 AND 2.2.20255 (Sep 11/2020) ============================================= * Correct STATE saving. It was incorrectly including empty INSERT LINES IN the STATE file data. * Correct CLIPBOARD read routine. IF the CLIPBOARD was empty, a LOOP would occur. * Cosmetic changes TO the DIFF OUTPUT display. Added file timestamps, AND other improvements TO the display. * LOCATE will now ACCEPT an operand ALIAS of "DIFF" TO equal the "U" operand. Useful FOR locating the NEXT DIFF mismatch lines. * ADD a NEW OPTION TO request an attempt be made TO keep the screen position AS it was AT the TIME of the Attention (Enter OR PFK). THIS effctively means that screen (positioning) commands issued by LINE Commands outside the currently VISIBLE WINDOW will be ignored. THIS NOT a 100% guarantee, depending ON the various COMMAND combinations that are possible, but will usually prevent the screen FROM 'moving' away from it's last position. See Options => General => "Maintain screen position after Line Cmds" * Correct MACRO FUNCTION FMGet_Folder_Class, it was simply NOT doing what the documentation said it was. * Correct handling of UTF8 files which DO NOT have a BOM file marker. Even though SOURCE=UTF8 was SET, they were being treated an ANSI files. * Correct DIFF COMMAND when the filenames contain embedded spaces. Between 2.2.20151 AND 2.2.20191 (Jul 9/2020) ============================================= * OPTIMIZE CODE which HANDLES the CLIPBOARD strings. THIS will improve the performance of CUT / PASTE / DIFF when large amounts of DATA are involved. * Correct PROF EDIT DIALOG verification routine FOR the IMACRO AND XFORM values. Clean up message formatting. * Correct CFG database routine which was inadvertently doing a TRIM ON a FIELD during processing causing a loss of leading blanks. * Correct (again) handling of the MARK string. * Alter UNDO / REDO TO report how many repeats are available IN the UNDO stack. * Expand INSTANCES support so that EACH INSTANCE will have it's own Recent Files FLIST. e.g. An INSTANCE named FRED would be USING "Recent Files.Fred.FLIST". * Correct Options handling of the KBD variables, they were NOT being saved correctly since the migration TO SPFLite2. * Alter DIFF processing TO use PRIVATE Clipboards WITH temporary names. THIS includes: + Modifying the TAB headers TO identify the files which DIFF compared. The enhanced TAB headers help TO identify tabs when multiple DIFF reports are OPEN AT the same time. + DIFF reports will be kept IN the \SPFLite\CLIP\ days FOR reference. + Alter FM OPEN DISPLAY TO DISPLAY the NEW DIFF format TAB headers rather than calling them ALL (CLIP). + ADD the USER LINE flag TO ALL non-equal matches. THIS will allow a LOCATE U TO quickly move TO the NEXT difference section of the report. + ADD a NEW DIFF operand - LIST. A DIFF LIST COMMAND will DISPLAY available reports IN the CLIP folder TO allow FOR easier retrieval FOR viewing. * Revise the File Watch routines TO better cope WITH the slower ACCESS times of NAS drives. Remove unneeded delays IN shutting down a FileWatch. * When a modified file has been detected by FileWatch, AND reload IS selected, perform the reload USING XFORM, IF XFORM performed the original load. * Performance improvements TO some of the CFG file support routines TO improve SPEED, particularly during the first execution of SPFLite. * ADD OPTION TO the Pop-Up FOR a missing file TYPE PROFILE TO simply CANCEL OUT of the file Open. * Allow RELOAD IN a BROWSE session. * Allow the File Manager FF COMMAND TO be used IN the OPEN Files list. * Allow SAVEAS FOR an XFORM loaded file TO use the XFORM WRITE support. * Correct parsing ERROR IN NUMTYPE. * Correct the routine which provides the "Default Folder" FOR many functions. It was NOT correctly picking up the current FM folder. * When a NEW PROFILE IS created dynamically AT file OPEN TIME, SPFLite will now automatically SET the SOURCE AND EOL values IN the NEW PROFILE based ON the characteristics of the first file loaded. * The PROFILE setting primary commands (AUTOBKUP, CAPS, COLS, EOL, etc.) will now, IN the confirmation message, indicate whether the NEW value was saved OR NOT, based ON the PROFILE's LOCK status. * Major reorg of the Macros documentation. The details FOR ALL the various MACRO functions will now appear AS items IN the LEFT-hand MENU, making it easier TO quickly 'get to' the desired item, rather than scroll, scroll, scroll. Between 2.1.20072 AND 2.2.20151 (Jun 1/2020) ============================================ * Correct handling of STRING storage IN the CFG file. Strings were NOT being converted TO UTF8 before saving, meaning ANY TEXT WITH characters > CHR$(127) were NOT being saved properly. * Correct insertion of the PROF LINES into the TEXT when triggered by a PROF LOAD request of a different Profile. IF the COLS ON/OFF setting was changed by the NEW PROFILE an invalid LINE POINTER could be created resulting IN corrupted screen displays OR an outright crash. * ADD a NEW operand TO CUT - NEW - which will prevent saving a permanent CLIP file IF one of the same NAME already exists. IF one does exist, a prompt will appear asking permission TO overwrite it. * The addition of the PROFILE BOM operand IN 2.1.20072 defaulted the setting FOR THIS NEW variable TO ON, even when the SOURCE was NOT UTF8. THIS causes an unnecessary ERROR pop-up when editing non-UTF8 Profiles. Additional logic was added TO bypass THIS annoying message. * Extend the MACRO Get_Gbl_xxx_Count functions TO allow the specification of a SUB-table number. Formerly, ONLY the COUNT FOR ALL tables was available. * Correct handling of LINES WITH the MM CC AND RR LINE commands TO properly HANDLE embedded special LINES like TABS, BNDS etc. Previously these LINES could END up without an internal attribute LINE, triggering crashes. * Correct screen positioning when multiple positioning commands are issued IN one stacked COMMAND sequence. e.g. TOP; L 100 The 1st COMMAND never actually gets physically displayed AND causes the position calculation FOR the subsequent COMMAND TO be wrong. * Remove the CASE COMMAND AS a File Manager primary command. The OPTION was NOT well known, AND had limited usefulness. AS well, the CODE was faulty AND simply NOT worth correcting. * Correct LINE COMMAND handling when the specified COUNT operand caused excluded LINES TO be part of the COPY operation. The number of LINES handled was being incorrectly calculated. * Correct PROFILE handling of TABS AND MARK. The Version 2 conversion inadvertently saved the values within quote marks. THIS version will 'clean up' that error. * Prevent block MODE LINE commands IN File Manager FROM incorrectly USING a numeric operand. * Increase SIZE of the File Manager MSG FROM 64 TO 128 characters. THIS will aid macros which wish TO SET longer messages. * Correct ERROR handling FM LINE COMMAND entry IF a space IS the first KB entry IN the field. * Correct ERROR IN handling the prompt when a VIEW session IS ended, AND the contents have been modified. * Revise the routine TO determine the valid DISPLAY characters. PREVIOUS CODE 'missed' some invalid characters. * ADD a NEW COMMAND DIFF TO compare TEXT files AND report the differences WITH marked up AND colorized TEXT TO indicate insertions, deletions etc. * Revise the File WRITE routine TO improve writing speed. THIS will be most noticeable when writing TO a Network Drive. * Introduce preliminary Beta support TO allow an external MACRO TO perform the loading AND saving of files. Note: THIS support IS FOR Advanced users AS it requires the creation of macros TO DO the actual 'work'. AT THIS point the documentation IS incomplete AS we are still "Working through" the details of how all this will work. Any questions and comments are welcome AND should be done via the SPFLite Forums. THIS support will provide FOR two different usage scenarios. First: it will provide a means TO ACCESS file types that SPFLite can NOT normally handle. e.g. Databases, BINARY files etc. Second: it would permit the DATA FROM structured TYPE files TO be reformatted FOR easier viewing AND browsing. OR displaying DATA IN Dump format. The NEW facility IS called Transform AND introduces a NEW PROFILE OPTION - XFORM. There IS a NEW "Working with" topic IN the Help file discussing THIS support. Between 2.1.20019 AND 2.1.20072 (Mar 15/2020) ============================================= * Correct ACTION processing TO suppress doing the SAVE when the session IS a BROWSE OR VIEW session. * ADD additional validation FOR some of the critical PROFILE variables. * Upgrade the version of thinBasic shipped WITH SPFLite FROM 1.9.6 TO 1.10.7. No changes TO SPFLite itself were required TO upgrade THIS release. * A NEW PROFILE OPTION has been added - BOM - TO specify whether the BOM (BYTE Order Marker) used WITH UTF8 files should be written when saving the file. * Extend PowerType keyboard support TO HANDLE the PEN colour keys. * Correct X LINE COMMAND TO properly position cursor when the RANGE TO be excluded will be collapsed into a subsequent excluded LINE set. Between 2.1.20019 AND 2.1.20072 (Mar 15/2020) ============================================= * Correct ACTION processing TO suppress doing the SAVE when the session IS a BROWSE OR VIEW session. * ADD additional validation FOR some of the critical PROFILE variables. * Upgrade the version of thinBasic shipped WITH SPFLite FROM 1.9.6 TO 1.10.7. No changes TO SPFLite itself were required TO upgrade THIS release. * A NEW PROFILE OPTION has been added - BOM - TO specify whether the BOM (BYTE Order Marker) used WITH UTF8 files should be written when saving the file. * Extend PowerType keyboard support TO HANDLE the PEN colour keys. * Correct X LINE COMMAND TO properly position cursor when the RANGE TO be excluded will be collapsed into a subsequent excluded LINE set. Between 2.0.19350 AND 2.1.20019 (Jan 19/2020) ============================================= * Correct CHANGE COMMAND USING 'D' type search literals. The CHANGE was not USING the correct STRING length of the located string. * Change the sequence of program initialization TO resolve the sporadic errors pointing AT the PCRE_REGEX_COMPILE routine. * Alter Version 2 packaging TO completely separate its install FROM the old V11 AND prior releases. * REPLACE the SPFLite Debug CONSOLE WITH a NEW version. THIS version can now be Cleared OR Closed via a NEW CLS COMMAND without inadvertently closing the MAIN SPFLite window. Between 2.0.19344 AND 2.0.19350 (Dec 16/2019) ============================================= * Correct ERROR IN setting up Keyboard Mapping ON a completely NEW install. The DEFAULT configuration was NOT properly stored IN the SPFLite.CFG file. Between 2.0.19339 AND 2.0.19344 (Dec 10/2019) ============================================= * Update SQLite INTERFACE TO support configuration filepaths which contain international characters. * Revise the procedure FOR moving the configuration file / folders TO a NEW location. There was a minor chicken-AND-the-egg situation IN the old procedure. No change TO the external PROCESS IS required. Between 11.0.19192 AND 2.0.19339 (Dec 05/2019) ============================================= * TO reflect the significant changes internally IN THIS release, the NAME has been revised FROM SPFLite TO SPFLite2. Since the executable IS now called SPFLite2.EXE it allows both the NEW release AND the old TO co-exist AT the same time. Installation of THIS release will NOT alter OR change ANY of the configuration DATA files of your old release. * Total revision of the way your Options AND Preferences are saved. IF you are a 'normal everyday' user, you will not notice any changes to SPFLite appearance OR operation. ALL your current settings will migrate automatically. There IS a Release 2 Migration document available FROM the Start Menu. It contains more details ON migration considerations. * FOR advanced users, SPFLite2 introduces the ability TO customize the handling of Options storage, AND allows FOR creating alternate environments FOR SPFLite where different setting combinations can be maintained. e.g. different Keyboard layouts, different COLOR schemes, different screen sizes AND OR fonts. AS well, the location of the various SFLite SUB-folders (FILELIST, CLIP, MACROS etc. can be moved TO a location of your choice. Read the "Managing SPFLite Instances and Customization" IN the Help file FOR FULL details ON USING THIS NEW support. * Enhance the Crash report TO include a TRACE of the last 25 interactions before the problem ocurred. * Correct ERROR IN handling of the RIGHT MAX command. * Correct crash IN EXIT processing caused by accessing TAB related DATA after the tabs had been closed. * Correct MACRO functions Reset_Gbl_Num AND Reset_Gbl_Str when clearing SUB-tables. The RESET was NOT clearing ALL the entries. * Correct creation of STATE DATA during CREATE/REPLACE when ONLY a starting LINE RANGE operand IS coded. * Prevent KEYMAP LIST FROM displaying keys which are NOT even mappable. * Correct LEFT/RIGHT MAX scrolling problems. * ADD a NEW operand TO STATE TO allow creation / update of STATE information without having TO SAVE the file. Entering STATE SAVE will perform THIS regardless of the current setting of STATE (ON, OFF etc.) Between 11.0.19192 and 11.0.19196 (Jul 15/2019) ============================================= Bug fixes ========= * Correct Set_Csr macro function to re-institute the 3rd parameter as optional instead of mandatory. * Revise the IMacro facility. The timing of when the macro was invoked was a bit too early in the processing and some macro functions were processing data before the edit was fully initialized. * Correct UNDO temporary file handling. a) not all files were being removed when an Edit ended, and b) multi-instances of SPFLite were still performing 'abandoned' UNDO file cleanup even though other instances were running. * Remove Quick Renum option. It was simply causing more internal problems with other routines than it's usefulness justified. Enhancement / New Features ========================== * Add cleanup routine for the new temporary clipboard files (those starting with an underscore _ ). Using temporary style names helps prevent the \CLIP folder becoming full of old 'forgotten' CLIP data. * Improve mouse keyboard mapping to allow it to function in the FM Line command area. Previously any click in the Line Cmd area simply positioned the cursor, now you can insert keystrokes in the area. Between 11.0.19187 and 11.0.19192 (Jul 11/2019) ============================================= Bug fixes ========= * Correct Is_Line_Cmd and Is_Primary_Cmd in File Manager. * Correct Set_Line(0,xxx). V11 restricted Set_Line completely in FM, when Set_Line(0,xxx) should still be allowed. * HEX ON failed totally due to incompatibility with the new PA1 key support. * Correct handling of the FM Line Command area. The recent change to left align new entries in the field was mis-handling overtype mode keying. Between 10.2.19129 and 11.0.19187 (Jul 06/2019) ============================================= Bug fixes ========= * Correct error in SORT when using alternate COLLATE sequence. The keys for descending sorts were not being built correctly. * Correct error in the SAVE of MEdit files when there are zero lines left in the file at SAVE time. * Correct error in the COPY line command. If the A destination line was placed on an X'd indicator line, it was not adjusted properly. * Correct FF (Find in File) command handling to prevent accidental enqueue of the filename when it should not be done. * Correct File Manager LINE command to prevent loss of current STATE data when it exixts. LINE was re-creating STATE from scratch as if no previous version existed. * Add additional error message to File Manager ADD command when issued against an unsupported entry type. * Improve SPFLite restart into Screen Maximized mode so that a subsequent Restore Screen will actually return to the last non maximized location. * Correct line number handling when using Quick Renum mode. * Correct the establishment of default (Enter) and (NewLine) keys on an initial SPFLite install. The Enter/Ctrl-Enter pair was not established correctly. Enhancement / New Features ========================== * Alter File Manager MAKELIST behaviour when creating new entries to pick up, where possible, the File Pattern mask and move it to the new FLIST entries. * Add a new File Profile option - IMACRO - to specify a macro to be run immediately after loading the file. An initial macro can also be provided on the command line by prefixing the macro name with a @ character. See the Help for details. * Add a new command line option, -DO to specify a DO macro to be run after normal initialization is complete. The DO macro will be executed in the File Manager tab. * Add additional totals to the File Manager total line. The total line will now include totals for Lines (when available), and for the Total Size of the files. * Add a W line command to File Manager to perform a "Windows Shell Open" on a file. i.e. Open it in its default application. * Added support for the \ and / line command modifiers to the FM Line Command parsing support. * Add a new SORT option to File Manager. The 'Name' item now has a Name* setting in addition to the previous Name+ and Name- values. The Name* is taken as a request to display the list items in their native unsorted sequence. i.e. in the order they were retrieved, either from the disk directory, or from their sequence in an FLIST file. * Open up Macro support to allow use in the File Manager tab. There are a whole new set of Macro functions to provide the needed interfaces to the File Manager data. Macros in File Manager can, of course, use all the additional module support provided by thinBasic. The FILE module of thinBasic alone provides over 40+ file maintenance functions. Review the SPFLite Macros documentation for full details. * Add a new general macro function - SPF_Post_Do to allow specifying a standard DO macro string to be executed immediately following macro execution. This can be used, for example, to perform actions not otherwise allowed in a macro, like Opening a new edit session in another tab. * Replace the handling of temporary labels in Macros. The functions of Request_Label$ and Release_Label$ are being replaced with Get_Handle$ and Drop_Handle$ in macros. (The old names will still be supported as aliases of the new versions for some time). The assigned labels will now be persistent and not 'disappear' at the end of macro execution. This will enable companion macros to mark and pass identified lines between the individual macro executions. * Alter entering commands into a File Manager line field to start commands in position one when starting a new command. This now operates the same way line commands are handled in an Edit tab. * Added a new KB primitive (PA1) to simmulate what the PA1 key did on the old 3270 terminals - allow you to 'throw away' your typing since the last screen refresh. Typically you would do this after discovering you had been typing away, but NOT where you thought the cursor was and you'd overtyped a bunch of good data. As long as you hit PA1 before any of the normal Attention keys (Enter, PFn, PgUp, PgDn, etc.) the screen will be refreshed back to it's last display. Repeated PA1 keys with no other intervening keys will 'toggle' the display between the two versions. * Revise the File Manager screen history support. It will now function more like a Browser history. There are two new KB primitives which are available, (FMBack) and (FMFwd) which request moving back and forth in the FM screen history. This will alleviate having to re-enter criteria repeatedly when moving between the various FM screen display moded. Between 10.2.19107 and 10.2.19129 (May 10/2019) ============================================= * Correct RCHANGE using Mapping Strings. The mapping string was corrupted on 2nd and subsequent RCHANGE operations. * Correct WDIR primary command in File Manager to use the current FM FilePath. * Add the COND parameter to SAVE to match the SAVEALL COND support. This will allow SAVE COND to be used on Multi-Edit sessions and only trigger saving of the modified files rather than every file. On single edit sessions SAVE COND will only do the Save if the file has been modified since the last SAVE (or when loaded) * Correct file cleanup routine that removes old working files (JOBS, STATE etc) when they are sufficiently old. An error caused all files in the folder to be removed once ANY file reached its expiry date. * Completely revise the newly implemented Backup/Restore support. After reviewing how this process was handled, we thought we could do it better. The process is basically the same, but the actual backup file structure has altered. All existing backups will be automatically migrated to the new standard, you will not lose any of your current backups. In addition, support was added for a backup retention criteria to assist in managing the backup files. A fll review of "Working with Backup and Restore" in the Help file is recommended, * Remove the unused option to use the folder name as the Profile name for those files which do not have a file extension. * Correct error in the line Data Shift (<< and >>) commands which was corrupting the color attributes of the line. Between 10.2.19103 and 10.2.19107 (Apr 18/2019) ============================================= * Correct error in FM which no longer displayed the Line count. Triggered by the changes to STATE files in the 10.2.19103 release. * The 10.2.19103 version change to the search for other instances of running SPFLite caused some problems. To alleviate this a new Command line option of -TITLE XXXXX was created to allow a substitute string for the window title to replace the SPFLite version number. * Correct error in screen re-sizing routines which could trigger crashes under some circumstances. * Correct Windows API calls for Clipboard support to properly handle the returned data handles. This also corrects some crash incidents. Between 10.1.9014 and 10.2.19103 (Apr 14/2019) ============================================= * Allow the Touch line command in FM to alter Read-Only files. * Correct INI handling quirk which prevented INVCHAR from being set to a blank. * Add the VV line command to the File Manager line command valid list, it was missing. * Correct Parsing of FM line commands with a repeat number to prevent exceeding the # of files in the current list. * Cleanup message box handling in the Crash intercept routine. * Alter the SPFLite version numbering format from using the last digit of the year to using the last two digits of the year. As the year rolls over from 2019 to 2020, we would have ended up with a possibility of out of sequence versions. e.g. This version updates from 10.1.9014 to 10.2.19060. * Correct error in STATE SAVE which did not correctly process color hilite values. This error could under some circumstances trigger a crash when reloading the file. Add an identifying header line to the beginning of the STATE file. * Add support to the Options and Profile dialogs so that the ESC key can be used to cancel out of the dialog. This can be useful if the dialog ends up positioned with the Cancel/Done buttons off the screen. * Add a new Primary command - ALIGN - to assist in performing column alignment operations when editing data files. See details in the Help file. * Change FM Line Command RENAME to be case sensitive. Formerly you could not 'correct' the desired case of a filename because the command thought the old/new names were identical. * Correct the KB (Record) function. It was not always removing the trailing (Record) string from the recorded entries. * Alter the AUTOBKUP support to use the new BACKUP and RESTORE support. This support will now backup the file itself along with any associated STATE file. The old support effectively dropped all STATE information. At the same time, add new BACKUP and RESTORE support which will allow for multiple Date/Time stamped Backups to exist. The former BKP support only allowed for one level of backup. This new support backs up the data file and it's STATE information together. The backups are stored in a separate \$BACKUP\ folder created in the original data file's folder. The FM RESTORE command will restore the files to their original location. File date and time stamps are maintained throughout. More info in the Help document. With the introduction of this new Backup support, the old VSAVE support has been withdrawn. * Alter the definition of the C/CC line commands so that they can be used while in Browse mode for line range selection (as for CUT). * Correct error in parsing command operand strings which also equal color selection operands. * Add keyboaard accelerator shortcuts to most dialog boxes so that answers to simple prompts (like Y / N) can be done via the keyboard rather than having to click the button with the mouse. The required shortcut key will be displayed with an Underline in the button text. * Correct adding additional spaces to the command line on Retrieve. * Add a new literal type, a D-Literal, which stands for a Delimited String. This allows you to specify a prefix string and a suffix string and locate strings which match this regardless of the number of characters between Prefix and Suffix. e.g. A D-Literal of D"(|)" would find strings such as (A) (123.45) (= xxx =) A D-Literal of D"/*|*/)" would find comments like /* Say something here */ More information is in the Help documentation * Correct the Win 64 version of the "Open with SPFLite" REG file in the distribution. It had the wrong location for the location of the EXE file. * Change the search for running copies of SPFLite to ignore different version numbers. * Remove previous migration support for the color based changes between the 8.5 level versions and the version 10 and up versions. * Add a new Options => General item. "Warn on Open of Non-Text files?" This option, if selected, will cause SPFLite to check the extension of files being opened against the list of Non-Text files (specified in the Options => FM tab). If it matches, the user will receive a prompt to comfirm whether to proceed or not. Editing of non-text files opens an exposure to accidentally altering and damaging such files. * Correct error in the KB (Up) command. If vertical scrolling was not in effect, the cursor did not wrap to the bottom at top of screen. Also correct similar scrolling errors in File Manager, which was not honoring the setting in Options => KB => Scroll Up/Down with arrow keys? * Cleanup the Help Topic Index which had drifted out of sync with the latest versions of the Help file. This should assist the "Help xxxx" commands locate the correct page to open when Help is requested. * STATE changes. Usage of a STATE file will 'touch' the file. This will mark it active so that is does not get prematurely deleted for no activity in 180 days. File Manager will now, when deleting a file, also delete any existing STATE file at the same time. Between 10.1.8351 and 10.1.9014 (Jan 14/2019) ============================================= * Prevent a mouse marked text select area from including the Top / Bottom of Data lines. * Eliminate use of the Options => General => Valid Character string as the criteria for what characters can be validly displayed on the screen in the currently assigned font. SPFLite will now evaluate the chosen font and determine which characters do not have a valid glyph. A new Invalid Character substitution is available so the user can choose what to display instead for the invalid characters. This substitution character may now be a blank. As well, entering an "N" or "n" will request no translation be done. The initial execution of this SPFLite version will create the Invalid string definition based on your prior Valid string definition, you may want to 'tweak' this definition, but it is not necessary. * The now unused Options => General => Valid Character string has been re-purposed and will now be used to specify the ACTUAL invalid characters that are to be considered as P'.' characters. The specification uses the same simple syntax as the WORD line command. This avoids having to type a very long string of characters. * Correct searches using Hex literals (e.g. X'FF'). The logic previously was performing CASE processing causing incorect results if the Hex value happened to also be an alphabetic character. * Tweak the logic which hi-lites found strings so that if the command itself uses color hi-liting operands (+colorname etc.), then the search will not also add the invert color option to mark the found item. Previously this double color setting obscured the actual user's requested color setting. * Add the number of lines pasted to the PASTE command successful message. * Correct the FOLD support which had gone AWOL during the Version 10 upgrades. * Correct the re-display of non-data lines (TABS, WORD etc.) when overtyped. Between 10.1.8350 and 10.1.8351 (Dec 16/2018) ============================================= * 10.1.8350 had a fix which effectively crippled RFIND and RCHANGE. I must apologize for letting this slip by me. Corrected in this release. Between 10.0.8319 and 10.1.8350 (Dec 16/2018) ============================================= * As of the date of this release, I turn 76, and have decided to semi-retire from active development and only work on errors and bug corrections as my time and inclination permit. You may still report bugs, just be aware I may not respond or work on them at the same speed as today. * So, as my birthday present to you, I am converting SPFLite to an Open Source license. It will be released under the GNU General Public License (V3). The complete source and development folder will be made available on the SPFLite web site. At this time, I have removed the random registration nagging (for unregistered versions), and removed the online checking for new releases. This removes any dependency on the SPFLite web site. Any new fix releases will simply be made available on the web site and announced on the web site and in the SPFLite forum. Other Changes / Fixes * As per the GPL recommendation, added an optional Splash screen at startup. The display of this can be suppressed in the Options => General settings. * Correct display routine for the Command line. It was not handling length of line correctly. * Correct generalized search routine to properly handle the +/- color operands. The routine was performing color processing when driven by commands which did not expect nor want color processing to take place. * To prevent corrupted screen displays which can occur when the edit text contains characters which are not displayable in the currently chosen screen font, SPFLite will now use the list of displayable characters specified under the Options => General Tab and replace undisplayable characters with a user specified character. This is similar to what ISPF used to do when it replaced non-displayable characters with a '.' (Period). * Correct handling of the Displayable Characters setting in Options => General. It was not correctly saving the value. * Correct error in Vertical cursor support. Non text lines on the screen (COLS, BNDS, etc.) were not being re-drawn when the cursor moved. * Correct error in the TF line command, it was mis-handling the text attributes (color etc.) at some end of line conditions. * Improve handling of marked text highlighting when using the Vertical Cursor line support. (Still not perfect, but better) Between 10.0.8298 and 10.0.8319 (Nov 15/2018) ============================================= * Cosmetic correction to File Manager Help lines to properly show LINES as a valid line command for a Filepath Display. * Correct STATE processing to flush the File Type/STATE cache whenever a change to STATE status is made. This enables the File Manager LINES command to properly obtain STATE status for a file. * Correct macro Set_Line (again). It was truncating text set in the Command Line to the length of the visible command line. * Correct EraseEOL of the Command line. If the command line had been shifted due to exceeding the visible length, the truncation was not handled properly. * Correct handling of a RESET COLOR command to clean up data structures when complete to prevent interaction with future color related commands. * Correct File Manager layout formatting. EXT field was mis-handled and would not always appear when selected. * Resize the Options and Profile Edit dialogs to increase the font size and make them more readable. Add a promotional icon to these dialogs to promote the Open Source movement. * Correct error in CHANGE handling of +color values. * Correct error in handling of multiple SORT keys. * Correct error in text memory management affecting files over 10,000 lines. The color attributes for the text were damaged during buffer expansion. Between 10.0.8287 and 10.0.8298 (Oct 25/2018) ============================================= * Correct File Manager Open File display which was incorrectly creating $Empty items. * Provide a default for the File Manager Submit working directory on brand new installations. The default will be the \Documents\SPFLite\JOBS folder. * Correct error in CurrWord support which somehow stopped working during the Version 10 changes. * Correct macro Set_Line support to properly clear the previous line data when used to set a string in the command line. * Correct timing of initial colorization when a tabbed file is loaded. Colorization was being performed incorrectly before the tabs were expanded. * Correct Profile corruption when doing a Find-In-Files, a file is found which does not have a Profile yet, and the option to create a new USING profile is chosen. * Reduce font size of Status Bar and Tab Headers a bit from the original V10 increase. Between 8.5.8144 and 10.0.8287 (Oct 15/2018) ============================================ * Complete revision of all internal color management. This will correct the long running incompatibilities between the handling of normal screen color choices and defining the colors in the AUTO colorization files. * The initial run of this new version perform the following: - Create a backup copy of your \Documents\SPFLite folder. - Migrate all your old color choices to the new environment, your normal screen color settings will be maintained. - Display a short document providing more details. - IF you use Colorize support, prompt you for a default AUTO file to convert. IF you do not use Colorize support, there is nothing further for you to do. * All color choices are now made in the OPTIONS dialog, and all choices now will display sample text in the chosen colors. This makes it much easier to choose colors and quickly see what the effect will be. * Color high-lighting support now allows up to 15 different colors. However, you can no longer specify MULTIPLE Hi-Lite colors names on commands like FIND/CHANGE/etc. i.e. You can no longer use commands like FIND fred RED GREEN to search for 'fred' in either RED or GREEN. One colorname at a time. * A FIND ALL command will now high-light ALL the occurrences of the found string the same way ISPF does. This introduces a new RESET option - RESET FIND. Otherwise the high-lighting is removed by the next FIND/CHANGE, or by any direct change to the contents of a high-lighted string. * The new color support can now 'paint' the screen about 25-30% faster then the prior version, meaning screen scrolling/paging is much faster. * Color support has been extended to Printing. A new option on the PRINT SETUP dialog allows you to request printing in color or not. Color printing only functions if you have HILITE AUTO ON and have a valid .AUTO file for the file being edited. Color support is not functional for FM initiated PRINT nor for Print Screen requests. * The size of the Status Bar and Tab Headers has been slightly increased to accomodate a larger Font size. (My eyes are getting worse, my guess is yours are too!) * You can also now choose which fields of the Status Bar you wish to be displayed, and can specify the order, left to right, in which they should appear. With 14 available fields, most normal screen widths cannot display all of them, so you can choose based on your own priorities. This specification has been added to the OPTIONS dialog. (Options => Status) * A new File Manager Line command has been added - L/LINES - this command will refresh the STATE information for the selected file. The FM display column LINES obtains it's information from the STATE data. The PROFILE for the selected file must have been set to STATE ON for this to function. * A new primitive was added (FirstLineCmd) which will move the cursor to column 1 of the first Line command area on the screen. * Support has been added to allow KEYMAP entries to be saved as separate files in the MACROS folder. This allows for easier editing of long complex keyboard macros which can now be split into multiple lines and also have comments added. These macros are invoked in KEYMAP using an @macname syntax. * A new DO command is available to provide an alternative to the full MACRO support. It provides no programability, it can only issue a series of commands. However it CAN issue all Primary commands (except DO), all KB primitives and all line commands. *----- Plus current maintenance from Version 8.5 not yet released * Correct cursor positioning after Exclude line commands. * Allow LOCATE command in FM to operate with Profile lists. * Correct RLOCFIND so that it can be used to scroll while there are Line Commands pending. * Correct the Primary DIR command which was simply not working at all. * UNDO / REDO will now clear any pending Line Commands. * Correct crash when using .AUTO files with a large number of keyword entries. * Correct scrolling in File Manager which was not honoring a CSR setting. Between 8.5.8104 and 8.5.8144 (May 25/2018) =========================================== * Correct RFIND handling when prior commands like EXCLUDE have altered the last line position. * Correct missing internal flag setting. EXCLUDE/SHOW requests were not always triggering UNDO Save processing. * Correct internal logic error. With large files (> 10,000 lines) and use of Colour Highlighting, internal data structures could be corrupted. Between 8.5.7231 and 8.5.8104 (Apr 15/2017) ========================================== * Add macro support for sub-tables within the Global storage support. This enables multiple 'tables' to exist within the global storage area. See the full description in the Macros Help document. * Correct initialization of 2 File Manager related INI values. One was missing and one had a wrong value. Error could cause crashes during File Manager column sorting. * Correct handling of :ZALL and :\ZALL selection criteria. i.e. make them work as intended. * Treat a SAVEAS command in a CLIP session as if it were a CREATE command rather than triggering an error message saying to use CREATE. * Correct failure to add newly created files to the Recent Files list. * Correct error in AUTOFAV file masking support. * Add -NOLOOP command line option to request SPFLite internal loop detection logic be turned off. This can assist with I/O operations to slower external file systems over network connections. Between 8.5.7156 and 8.5.7231 (Aug 19/2017) ========================================== * Correct error in validating E-type literals. The macro validation was inadvertently interfering with normal operand parsing. * Correct CHANGE handling of M and E type literals to properly adjust for the dynamic length of the change strings. * Add a simple #INCLUDE ability to SUBMIT jobstreams. * Alter macro function SetLine() to ensure any Color hiliting for the line does not exceed the text line length. * Alter macro function Set_CLR_Line() to allow specifying a CLR line longer than the text line without an error message. The CLR line will be truncated to the text line length. * Correct the BackTab keyboard primitive. It was crashing when used in HEX mode. * Add the back quote ` (x'60') to the Colorize scan for quoted strings along with the normal ' and ". * Correct handling of RFIND values so they are not 'lost' during other primary commands which also use the common internal search routines. Between 8.5.7110 and 8.5.7156 (Jun 5/2017) ========================================== * Correct error in colorize keyword lookup, it was ignoring the last WORD table entry. * Yet another re-write of the BOUNDS command and the associated BNDS line data entry. Basically now, the BNDS line data, when Enter is pressed, must be valid; it is no longer possible to just overtype a BNDS line and leave old < and > characters around and expect SPFLite to just 'know' to ignore them. * Correct several errors in MEdit support. Line command (D)etach wasn't working, first file wasn't being marked modified correctly, a CANCEL command was crashing SPFLite and some other errors in marking lines and files modified. * Correct handling of certain substitution characters. Some were failing to be resolved properly. * Revise the Get_Line$() macro function to allow retrieval of all line types, even normally non-modifyable lines. These non-modifyable lines are still restricted from being 'saved back' using Set_Line$ function. * Create a new macro function Get_Modified_FileName() to allow requesting the modified status of a particular filename within a MEdit session. If used in a non-MEdit session, it will act just like the simple Get_Modified() function. * Remove limitations on the number of files an FM ALL MEDIT command could handle. Also, when more than 100 filenames are entered, it will pop-up an option to allow suppression of the File-Watch function. As the number of files increases, there is more risk of exceeding program Stack space, and less likelihood of File-Watch even being needed. Between 8.5.7027 and 8.5.7110 (Apr 21/2017) ========================================== * Correct error in handling dotted line references which are larger than the last real line. * Extend the display support for horizontal and Vertical line cursor rulers to the File Manager screen. Formerly, these enhanced cursors were only available on the normal Edit screen. * Correct error in typing into the Command line in Insert mode when the cursor position is past the end of the current line data. * Correct error in handling EOL AUTO deblocking when the last line in the file does not contain any valid delimiter. * Correct several errors in the new NUMBER support. The errors were impacting the operation of the PROFILE EDIT handling. * Remove support for the FILTER command. This command is really no longer needed since full Macro support was added. For the last couple releases, a warning message has been issued announcing the coming removal. * Add a new "Lines" column to the File Manager to show the number of data lines in the file. Note that this value will only be displayed for those files whose Profile STATE option is set to ON, and which actually HAVE valid STATE data. All other conditions will be displayed as blanks. To make this a bit more similar to ISPF, the command STATS will be added as an alias of the STATE command. * Correct error in print headers / footers when performing the print from within File Manager. Substitution of ~x type file related variables was not being performed correctly. * Correct error in the RLOCFIND REVERSE handling. It was not properly handling the REVERSE option when the last search was a LOCATE. * Correct error in handling BKP file creation during a MEdit session. Only the first file was having the BKP file created. * Correct errors in MEdit handling. When converting a simple Edit session into a MEdit session, the modified state of the existing Edit file was not being carried forward. Also, converting a session from a normal Edit to a MEdit session, was enqueing the new fileame twice. * Enhance the File Manager RENAME command to also rename any associated STATE files the same way the Primary RENAME command already did. * Correct cleanup code which removes old SUBMIT work files. In prior versions, these were all created as *.TXT files. This was altered to use the extension of the edited file. These non *.TXT files were not being cleaned up properly. Between 8.4.6153 and 8.5.7027 (Jan 27/2017) ========================================== * Correct handling of Left arrow in Command line when command line has shifted left due to length. * Correct handling of a RESET command issued within a macro. * Add support for number of new commands to handle text numbering similar to that provided by the ISPF NUMBER command. Check the documentation for details on these new commands. * Enhance Macro function Set_Line() to allow setting a string into the Command line. (Experimental) * Correct error in Request_Label$() macro functio. (Loop when no existing normal label exists) * Alter the dialog building on systems where the default font size has been altered so that dialog labels are displayed in an appropriately scaled font. This will prevent the truncation of labels on systems which run in larger text font mode. * Revise the SPF_Parse() macro function to provide additional flexibility in specifying the macro operands. Please refer to the Macros Help file for full details. * Correct the operation of the Macro HALT command when issued with no operands. It was terminating the macro without allowing thinBasic to perform it's normal cleanup functions. * Corrected error in the (Swap) keyboard function when operating in PowerType mode. * Correct error in the TC Line command. Depending on the specific data content, the processing could perform an incorrect Title Case operation. * Correct error in handling changes to the BNDS line. * Correct screen drawing when HEX ON, HIDE ON and excluded lines are used together. * Add new option to the File Manager lists. The dates for files modified since the SPFLite session started, as well as those modified since yesterday at 12:01 AM will be color hi-lighted to make them stand out in the list. * Add a new option to the SORT command (MARKUNIQ). This option allows you to mark unique sort lines in the file as USER lines. This will allow manipulation of unique / non-unique lines in a file in a convenient manner. Between 8.4.6075 and 8.4.6153 (Jun 01/2016) ========================================== * Correct error in handling a move of a COLS line. * Correct building of STATE file data when filtering using Excluded lines or U/NU is active. * Correct handling of the Re-Open files logic when SPFLite is started using -INIT to specify an alternate INI file. * Improve handling of the Windows Clipboard to report when errors occur while reading / writing the clipboard. * Ensure File Manager path entries entered on the screen contain a trailing \ for consistency. * Correct cursor positioning when left/right autoscrolling occurs while in HEX mode. * Add two new functions to the macro support. Reset_Gbl_Str and Reset_Gbl_Num. These functions will reset (Empty) the global string and numeric storage areas. Between 8.3.6022 and 8.4.6075 (Mar 15/2016) ========================================== * Revise the handling of searches which have trailing blanks in the search string and how they are treated when there is a partial match at end of line. Previously, SPFLite would treat an end of line as if it had been extended with blanks. This is being changed so that this creation of 'virtual blanks' is no longer done. This means that search strings must match the actual real data present in the line. e.g. a search for "ABC " will no longer match a line which simply ends in "ABC". If you require the more flexible search as it used to be done, please explore using Picture Literals and use the { and } arguments, or the other alternative would be to use a Regex expression. Both of these provide powerful tools for text searching. The former SPFLite method was not exact and could cause incorrect lines to be selected. e.g. What if the search for "ABC " did NOT want to be satisfied with a line ending in simple "ABC"? * Correct loop in (Edit), (Browse) and (View) KB primitives when the selected filename is effectively null. * Revise International character support and replace the global option with a new setting "Only English letters A-Z and a-z are considered alphabetic". This should provide for more consistent handling of Upper/Lower case conversions. Please see the Help file for more information. * Standardize the insertion point for special lines like BNDS, COLS, MARK etc. Previously some were inserted before the selected line, and some were inserted after. They will now all be inserted before the line containing the line command. * Upgrade the macro support to use the latest version of thinBasic. Also make the standard \SPFLite\Macros folder become the default folder for #INCLUDE directives. * Correct error in the line number lookup code. * Reinstate the change which causes the Enter key to perform a reset of a marked area automatically. This change inadvertently crippled the TT line command and was withdrawn. The replacement code no longer interferes with the TT line command. * Correct the new CLONE command to use the proper Profile for the cloned file rather than using DEFAULT. * Correct error in the RUN command which created a temp. file with two periods preceding the file extension. * Revise handling of line commands when an error condition is detected along with other valid commands being present. Where possible now, the valid commands will be performed before the error condition is reported. * Correct initialization routine. The default status of the INS/OVR keyboard flag was being cleared after being set. * Add Date and Time to the filename used to save Crash Reports. This will uniquely identify each one and prevent overlay of previous reports when multiple crashes occur close together. * Correct handling of the command line -INIT option. It was not handling INI file names other than fully qualified ones. * Correct error in the Keyboard Trap which was not handling "Null'd" keys properly. Between 8.3.5337 and 8.3.6022 (Jan 22/2016) ========================================== * The -INIT command line option had been accidentally disabled. Fixed. * The logic for running in 'Portable' mode somehow lost the change which moved all the environment folders to a \CONFIG subfolder. Corrected. * Prevent attempts to place data in the clipboard which contains X'00' characters. To do so would truncate the clipboard contents resulting in data loss. * The Primary RENAME command was not working when using the pop-up Rename Box, it worked only when the new name was entered as a command operand. Corrected. * Correct crash error in the Mapping string Hex support function. * Correct crash when using Vertical cursor line support and switching between HEX modes. * Enhance the ANSI pop-up window support. A second primitive (CharSetCol) has been added in addition to (CharSet). The new version will rotate the rows / cols of the character display to match your visual preference. In addition, you may now have multiple instances of the ANSI window open at one time. e.g. one in ANSI mode, one in EBCDIC mode. The status display of the current clipboard contents has also been improved. * Correct (again) the handling of Inserted lines. A change in 8.3.5295 had accidentally crippled the automatic insertion of new Insert lines when pressing Enter while the cursor is located within the last inserted line. * Correct the CLONE command to ensure the new cloned tab is opened in Edit mode. * Correct handling of the line number field with 'special' lines like BNDS, COLS, etc. to prevent incorrect results when locating lines by line number. * Correct SAVE/SAVEAS to properly place the filename in the Recent Files FLIST. * Reverse a previous change which had Enter key processing perform a reset of a marked area automatically. This worked fine, except that it completely crippled the T/TT line commands. (Oops!) * The OPEN command had always opened the specified file in Edit mode. There are now two variations OPENV and OPENB which will cause the file to be opened in View or Browse mode respectively. As well, OPEN/O OPENV/OV and OPENB/OB line commands will now be supported in File Manager to perform the same functions. * The CLONE command has been re-purposed. It no longer simply creates a temporary file of the *.ext format, which you have to SAVE/SAVEAS later to make a permanent file. Since the majority of CLONE uses are to create an actual alternate file, that is what it will now do. You will be prompted immediately for the name of the new cloned file. * Add a DELETE/DEL option to the CUT command. CUT would always delete the CUT lines if specified via M/MM line commands, but the same delete option did not exist when selecting CUT lines using other criteria (X lines, U lines etc). The DELETE/DEL operand now allows you to delete the CUT lines, no matter how they were selected. * Revise code used to paint hi-lighted (pen color) areas of the display. There should be a noticeable speed improvement when multiple hi-lighted areas exist on the current screen. * When Read-Only files are requested to be opened in Edit mode, SPFLite has previously issued a message and opened the file in Browse mode. This has been altered to now open the file in View mode. * Correct CAPS ON processing when the Keyboard is in Insert mode. Between 8.3.5295 and 8.3.5337 (Dec 3/2015) ========================================== * Clicking on the Date to change sort order in File Manager was broken. Fixed. * Correct display of the 'Page n of m' Status bar message when running in PAGE ON mode. * Alter START FIRST in PAGE mode to position on the first real data line rather than on the Start of Data line. Between 8.2.5174 and 8.3.5295 (Oct 22/2015) ========================================== * Add a new FM primary command - ALL. It supports operands of: BROWSE, CLONE, EDIT, MEDIT, PRINT, TOUCH and VIEW. It acts on all normal files currently being displayed, regardless of the method used to select the files. * Expand the normal ALL FM line command to support VIEW. (Overlooked when BROWSE was split into BROWSE and VIEW commands). * Expand the handling of column sorting in File Manager. File Manager will now save the column sorting data uniquely for each type of display. e.g. Recent, Found, FilePath, Favorites etc. and switch to the saved values whenever the basic display is changed from one to another. * Expand the display of the current filename in the Title Bar when editing files in MEDIT mode to display the filename of the top screen line when the cursor in not located within the edit lines (e.g. on the command line) * Add a new facility we have called 'Block Insert Mode'. This enhances the edit capabilities when a block of text is highlighted. If Insert mode is set, and the cursor is located within the Highlighted block, then characters can be Inserted, Deleted or Backspaced over within the block and the typing duplicated for EACH LINE in the block. The Highlighted block will dynamically expand or contract to adapt to the changes. This is a 'sort of' mini PowerType mode. * Replace the Regular Expression engine used internally with a much more powerful, industry standard one. We have chosen to use PCRE (Perl Compatible Regular Expression) as the engine. This will provide significantly enhanced search abilities using the RegEx literal type (R"xxx"). * Add two new CHANGE only literal types. These new functions provide some major new abilities in making text changes. - E"xxxxx" which allows the invocation of a MACRO to perform the actual change of the found string. This will allow creation of complex change commands beyond the scope of normal SPFLite supported options. Refer to the Documentation for full details. - M"xxxxx" which provides a powerful Mapping function to allow complex transformations of the found string. Refer to the Documentation for full details. * Add two new AUTO file directives INCLUDE and EXCLUDE. These allow early filtering of the data lines and the ability to choose only certain lines for complete colorization. Lines rejected by these operands will be colored in the normal SCHEME 0 default. * Modify the file mask support in File Manager so that the * wild card handling is more compatible with that used in Windows Explorer when followed by a .(period). A mask with *. will skip to the LAST period, not just the NEXT period. Any other character following the * will still skip to only the NEXT occurrence of that character. * Some instability has been detected in the internal Hash routine used by SPFLite to ensure the validity of the State files and the User keyboard definition file (SPFLite.KBD). As a result, the hash routine has had to be revised. The conversion to the new hash algorithm will be automatic, both your KBD file and newly created STATE files will be written using the new algorithm. This unfortunately means these files are not backward compatible should you for any reason go back to an older version of SPFLite after using this new release. If you DO back off this new release, your old KBD file has been retained for you with the name SPFLite.Pre8.3.KBD. Simply swap this back to SPFLite.KBD to regain your old definitions. The new STATE files however will be rejected. Unfortunately this cannot be prevented. All the real data files are unaffected, only the STATE information will be lost. * Modify the validation of the previous screen position. Previous changes to accomodate multi-monitors prevented the rejection of invalid locations. * Modify SUBMIT so that the temporary Submit file is created with the same extension as the file being edited. * Correct the handling of the 'Close FM on last file close', recent changes to choosing the next tab to display when one closes had crippled this support. * Correct saving of the saved FM criteria during shutdown. * Correct handling of PROF USE when removing an existing USE profile. * Correct handling of MIXEDCASE in colorize AUTO files. * Correct Status Bar initial display of the selected text # and @ values. * Correct Status Bar display of file date/time for New files and SaveAs files. * Correct the ~X substitution variable, it was not returning the Extension with a leading period. * Correct handling of Inserted line cleanup. Some combinations of KB sequences were not being handled the same as real ISPF. * Correct handling of internal debug stack during Macro processing. * Correct error in colorize parsing triggered by an unclosed quoted string. * Correct error in parsing filenames with folder names containing periods and filenames without extensions. * Correct loop when searching for blanks and a totally null text line occurs. * Correct UNDO processing to properly retain PROF display lines. * Correct UNDO processing. It was incorrectly always leaving the file in modified status. Between 8.2.5174 and 8.2.5179 (Jun 28/2015) ========================================== * Correct cleanup of UNDO checkpoint files. * Correct re-open previous files opening file in the incorrect mode (Edit, View, Browse) Between 8.2.5165 and 8.2.5174 (Jun 23/2015) ========================================== * Correct cursor positioning performed by the Primary PASTE command. * Correct button label in the Choose Default INI pop-up dialog. * Expand the number of allowable SCHEMEs in an AUTO colorize file to 30. * Correct logic of ESCAPECHR handling in AUTO colorize files. * Correct handling of command line options, -V and -B were being ignored, and FM path requests were not always being honored. * The EXIT command has been extended to accept either END or CANCEL as operands, this allows a quick shutdown using CANCEL instead of END to terminate each tab. If CANCEL is used, it also accepts the DELETE / PURGE operands. * When editing multiple files in MEdit, the filename of the file on which the cursor is located will be shown in the Windows title bar. This will assist in knowing which file is being worked on when the =FILE> lines are not vivible. * Correct error in the 'Portable Version' support, it was not properly switching the default INI file location to the portable drive. In addition restructure the portable file structure to reduce clutter in the main EXE file folder. * Revise tab switching logic when tabs are closed to swap to the most recent active tab before the one being closed. * To make use on Non-US keyboards easier, aliases have been created for the / and \ line command modifiers. . will equal / and .. will equal \ For example c. will mean copy to the bottom of the file, just like c/ * Allow an overriding Profile to be specified on the external command line startup of SPFLite. This is equivalent to specifying the Profile on an normal Primary Edit command. The .profilename operand should be entered on the command line immediately following the filename. If the filename is quoted, the .profile name should appear following the quoted filename Between 8.2.5103 and 8.2.5165 (Jun 16/2015) ========================================== * Correct a serious problem in handling the Status Bar. This problem was causing SPFLite to randomly become totally non-responsive. * Add a new AUTO colorize word type. Colorize will now support a NUMERIC directive to specify a unique color for totally numeric 'words'. * Correct handling of the File Manager FF exemption list. V8.2 accidentally created a problem in storing the value properly in the INI file. * Correct a minor formatting error in the File Manager Quick Launch bar. * Prevent loss of previous FIND/CHANGE criteria caused by file write processes (SAVE, VSAVE, CREATE, etc.) * Correct error which prevented using an RFIND/RLOCFIND function key to perform an initial FIND / CHANGE command. * Correct error when a file is reloaded following a notification of modification by an external program. The edit mode (Edit, Browse, View) was not being re-established properly, all sessions were converted to Edit sessions. * Correct badly formed entry in the Recent FLIST when a file was saved. * Correct handling of marked text to prevent inadvertent text selection during mouse operations. * Correct screen marking routine, particularly in the Command line. * Correct handling of color hi-liting by CHANGE commands. Removal of color from a line's text was not always fully processed. * Correct CLIP command. It was not properly honoring a private clipboard name operand. * Correct handling of the Tab mode flag internally, caused various errors in the handling of tabs. * Correct saving of MARK columns. * Improve saving of FM NOTE data when swapping away from the FM tab. * Correct (CopyPaste) to work properly with FM NOTE fields. * Correct error in handling line label/Tag toggle commands. * Correct action of Bksp when in a highlighted area, it was not properly handling multi-line marked areas. * Correct handling of command line operands which provide starting values for the File Manager display. * Add a safety check in the file open routines to ensure that the filename requested is not actually a folder name. * Correct error in RCHANGE, it was not allowing it's use as the starting point for a full CHANGE command. * Correct error in building the VSAVE filename when the file being edited is still an unsaved clone file (e.g. the name is *.extn). * Correct 'broken' Primary BOUNDS command. * Correct mis-positioned COLS line. It was being inserted after the requested line rather than before. * Correct the COPY command which was not properly handling the inclusion of files which needed different SOURCE translate tables from the primary file. * Correct tab selection when a new file is opened from Windows Explorer and passed to an existing SPFLite instance. * Correct initialization handling of the DEFAULT.INI file, it was incorrectly being reset to defaults. * Correct an error in re-sizing operations that could cause a crash. Between 8.2.5085 and 8.2.5103 (Apr 13/2015) ========================================== * Correct keyboard handling of the extra keys present on foreign language keyboards. An incorrect index was triggering a crash. * Correct handling of PROFILE USING. Altered values were being stored in the incorrect INI file (i.e. not the USE'd profile). * Correct errors in FILTER and CMD commands in handling the CMD window. Between 8.1.5064 and 8.2.5085 (Mar 26/2015) ========================================== * Alter the field delimiter used internally for FLIST contents. Previously a comma was used, but since a comma is a legitimate character for a filename (who knew!) users who had such filenames found FM simply didn't work. The delimiter has been altered to a | (vertical bar). If you do not manually create FLISTS, then the change will be transparent and you need do nothing. ** However ** once you migrate to this version, if you back off to a prior SPFLite version, your FLISTS will probably not work. They will need to be manually edited to change all | back to , * Improve File Manager 'nesting' so that when browsing up/down folder structures, a return to a prior level will re-display the previous scroll and cursor positions. * Correct false warning message when loading RECFM F LRECL nnnn files. The message incorrectly warned that the file was not a multiple of the LRECL value. * Add a new option to File Manager to allow choosing the location within a list of Directory entries. They can be positioned at the Top (as is done currently), at the bottom, or in-line in alphabetical sequence within the filenames. * Correct error in routine which deletes unused Insert lines. If additional Insert lines are requested before cleanup has been performed on prior lines, it was possible for extraneous '''''' lines to remain. * Prevent unresolved '''''' lines from being written to a file if they exist at the time of the write operation. Between 8.1.5002 and 8.1.5064 (Mar 5/2015) ========================================== * Correct error in the FM VER line command which could trigger a crash if the FLIST ends up empty and is deleted. * Alter list of FLIST files in FM so that only the filename (minus path) is displayed. If the cursor is over a single line, the full path will be shown in the FSPEC line in the headings. * Correct loss of cursor during Minimize / Restore activity, or loss / regain of focus (sometimes). * Correct error in COPY and PASTE commands when the insertion point is marked with a 'B' line command on the Bottom of File line. * Correct error in the UNDO process which can cause program crashes. If chained commands cause UNDO processing to be followed immediately by a switch to a different Tab, depending on the size of the edit datasets, and the speed of the processor, a crash can occur. * Add a new function - ACTION - which can optionally be used to request an automatic SAVE or VSAVE to be performed after 'n' data altering interactions. See the ACTION command in the Help document for further details. * Correct macro function Get_Find_LPtr(). If the status of excluded lines changed during the FIND/CHANGE command, the returned LPtr could be incorrect. * Correct error in the DELETE ALL xxx command. The deletes were performed correctly, but the setting of the modified flag for the file was not being set correctly depending on the state of excluded lines adjacent to the line(s) being deleted. * Add additional validity checking to AUTO file statements and improve the contents of the error message. * Rename the FM line command VERIFY to NORM (Normalize) to avoid conflict with the recently added View command. The command can be entered as N or NORM. (Or the block mode NN/NN version). As well, NORM will no longer re-write an FLIST which has not actually been altered. Between 8.1.4311 and 8.1.5002 (Jan 2/2015) ========================================== * Correct AUTO colorization when using comments with start/end delimiters. (Like /* */) * Correct loop in macro handling of SPF_CMD items. * Correct PRINTER SETUP saving of a printers DUPLEX setting. * Correct screen size calculation error which caused width to slowly grow. * Relax pseudo line label syntax to allow use of .0 to indicate the *** Top of Data **** line. This will allow commands such as ADD and LINE to use the top of data line as a valid reference. e.g. "LINE N .0" would insert a blank line at the top of the file. * Correct command table entry for VV command (alias of REVERT). It was not flagged as being eligible for command chaining. * Expand AUTO color controls to support COMMENT1 thru COMMENT9 statements. * Remove validation of previous screen position vs the curent desktop so that previous locations on multiple screen configurations are not treated as being invalid INI values. * CREATE REPLACE with MM line markers were not deleting the lines following the file creation. Corrected. * Correct the OPEN logic to use the name of the currently running EXE file for the new session rather than assuming it is named SPFLite.EXE. * Alter the timing of the automatic 'Check for New Version' to later in the initialization process. It was failing to initialize completely if for some reason it could not reach the SPFLite Web Site. * Alter File Manager display of FLISTS so that if all files are from a simple single-path request, the list will only display the filename (without the repetitive path) for easier reading. Between 8.0.4181 and 8.1.4311 (Nov 7/2014) ========================================== * Correct handling of cursor positioning when multiple primary commands are entered separated by ; delimiters. * Correct handling of SPFLite.EXE command line operands specifying a starting path and mask for File Manager. * Correct handling of EOL hex character strings as delimiters. * Correct SAVEALL command which was crippled by the V7 => V8 restructuring. * Correct cursor positioning when mouse scrolling. The cursor remained 'locked' to the screen location rather than following the text line on which it was located. * Correct error in (( line command when the shift created a null length line. * Correct error in cursor positioning when switching back to File Manager after CANCELing out of an Edit tab. * Correct cursor positioning following a line sequence C -> A to put cursor in the line number area rather than the data area. * Alter the RESET command to remove RETRIEVE from items reset when using the ALL operand. * Add support to the FF (Find in Files) command to better handle files which do not have an existing Profile to control the reading of the file's data. You may now Abort the FF command, or have the file type automatically added to the FF file exemption list and continue. * Correct some pop-up dialogs to be properly MODAL so that they can not be ignored or dismissed without taking the needed pop-up action. * Expand message handling ability. When one interaction generates multiple messages, the most severe message is the one issued. When multiple messages are issued internally, this message will be prefixed with a + sign. If HELP is immediately issued, the full chain of messages will be displayed in a pop-up list box for review. * Add documentation to the FF Command (Find in Files) to indicate that it DOES support column range operands. It had always supported columns, however the documentation did not indicate it was supported. * Add missing documentation for the (CondLineNo) KB primitive. * Add support for new built-in Tags :Z :ZF and :ZNF. These new tags will allow command chaining based on the lines processed by the immediately prior command. :Z includes all lines examined by the prior command :ZF includes all lines selected by the prior command :ZNF includes all lines examined but not selected by the prior command This will allow commands like: CHANGE ALL "ABC" "DEF"; LINE ] ALL :ZF which would change all "ABC" to "DEF" and then Indent all the changed lines. Or COPY INSERT.TXT AFTER .A; EXCLUDE all :ZF to copy a file into the edit and immediately exclude all the inserted lines. Or CHANGE ALL "AAA" "BBB" .L1 .L2 X NU; CHANGE ALL "CCC" "DDD" :Z which would do the first change, with its specialized line range, and then do the 2nd change to the same set of lines, without needing to repeat the .L1 .L2 X NU operands. Full details may be found in the Help file under "Working with Command Chaining". * Add a new EXCLUDE command to File Manager. This will enable bulk excludes of files from the list based on the same type of Mask string allowed on the Mask line for FilePath or the Mask operand of FLIST entries. This command would be useful for example when using FF (Find in Files) and there is a class of filenames which you would prefer be exempted from the FF operation. * Add a new Primary command - THEME - to allow quick saving and loading of the custom color settings. Often, if you want to experiment with a different set of colors, it becomes awkward since there is no simple way to revert back to what you had. Now you can save your settings and 'play' with new settings. It's also possible to share such 'themes' with other users by posting your themes on the SPFLite Forum. * Add a new Primary command - VIEW. This is a complementary command to the existing BROWSE which has been altered to make it impossible to accidentally modify the data. BROWSE is now a *true* browse, changes are impossible. VIEW is now the browse tool to use when you may want to modify the data, but want additional protection against accidentally saving. A companion change also added the (View) KB primitive. * The ability to use KEYMAP to remap the NumLock key has been withdrawn. This support was always tricky to implement and is being withdrawn due to problems in maintaining it. The key is now classed like Shift, Caps Lock etc. as being un-mappable. Between 8.0.4181 and 8.0.4216 (Aug 4/2014) ========================================== * Add an option for printed output to have background banding in the same manner as the screen background banding. See the additional option fields located on the PRINT SETUP dialog. * Corrected another error in reading RECFM V files, lengths > 256 were not being handled. * Added a new command line option -WINE, which tells SPFLite that it is running under the Wine emulator on Linux. This triggers some minor differences in screen handling which improves operation. * Corrected loss of mouse wheel function after some settings dialogs. Between 8.0.4172 and 8.0.4181 (Jun 30/2014) =========================================== * Corrected checking of changes to File Manager file-path to only be done after Enter is pressed, it was doing it after each keypress. * Corrected error in reading RECFM V files introduced by the new code for RECFM VBI and VLI. * Correct handling of the Keyboard Hook routine to prevent accidental doubling of keyboard entries under some initialization combinations. * Alter the default master key mapping table so that the Ctrt-Alt key mapping of all keys with printable values (i.e. the letter, number and special character keys) will now be (Passthru) instead of (Null). This default will simplify the initial setup for all new users who require non-US keyboards and use of the Alt Gr key to enter national/special characters. Between 8.0.4163 and 8.0.4172 (Jun 21/2014) =========================================== * Corrected missing screen refresh following execution of a user macro. * Corrected keyboard focus problem for pop-up dialogues when running under WINE. Between 8.0.4157 and 8.0.4163 (Jun 12/2014) =========================================== * Corrected cursor not appearing in tab initially. Only occurred in certain Windows releases. * Corrected various error in CANCEL / END which could trigger crashes. * (Backtab) KB primitive was simply not working correctly. Corrected. * Corrected crash when deleting multiple individual lines, one of which is the last line, and the Reset Inset Mode on Attention option is active. Between 8.0.4155 and 8.0.4157 (Jun 06/2014) =========================================== * File Manager keyboard selection of FilePath on the Quick Launch bar is not working. This has been corrected. * Crash on Initial Start in the Welcome Dialog for brand new installs. Corrected. * File Manager directory display changes should always Home the cursor. Corrected. * EXIT and =X do not properly exit the program. Corrected. * Corrected crash following the New Version Available pop-up message. Between 7.1.4050 and 8.0.4155 (Jun 04/2014) =========================================== A major review and revision of SPFLite internal code was completed. The review has had only small effects externally, but incorporates significant internal improvements which should improve long term reliability and performance. A completely revised File Manager was completed, introducing many new features (see below). File Manager ------------ A revised screen layout which has added a single line 'quick launch' line to eliminate the previous set of lines at the top for Recent Files, Open Files, etc. This line remains visible while scrolling the list to remain easy to access. Other changes to File Manager include: Quick access to your list of Profiles. Browse, Edit, Delete etc. line commands are supported. Enhanced FILELIST support. File lists can now contain multiple file path requests, each with their own unique file mask filters. Line commands can now be entered in block mode, similar to line commands in the Editor. e.g. selecting a series of files for MEDIT processing can now be done with MM/MM line commands (or M3). Exclude (X) is now supported to allow 'hiding' of lines in a long file display. Forget (F) is supported for FILELIST displays to request a long term exclusion of lines. This support extends to FILELISTs which include generic path requests. Forget requests are maintained across SPFLite sessions and may be undone or 'remembered' with a RESET F command. A NOTE display column can be added to FILELIST displays where you can enter reminders etc. for a particular file. These are also 'remembered' across SPFLite sessions. FF (Find in File) searches can now be interrupted not only between files, but during an individual file search. Useful when the file list accidentally contains some huge non-text files. A new DEFAULT command which allows you to switch the default line command for a mouse click (normally SELECT) to any other valid line command. Editor Changes -------------- Several improvements to Editor functions: File specific STATE setting. You can now not only Specify STATE ON or OFF for all files controlled by a Profile, but can establish a default ON/OFF status for most files and exempt individual files from this default. e.g. You could have STATE ON for all .TXT files and exempt SPECIAL.TXT from this default since you know it is updated often outside SPFLite. Simplification of Line Command aliases. Many block mode line commands had optional aliases to match the ISPF naming conventions. e.g. we had Uppercase commands of UC / UCC / UCUC. In this release we have eliminated 'doubling the command name' as an option. So Uppercase is now simply UC / UCC where the last character is repeated for the block mode. So line commands like LCLC, MDMD, MNMN, OROR, PLPL etc. are all gone. Colorize support has been improved. When the basic color theme of the AUTO file differs widely from the color scheme used for a normal edit screen (e.g. different background colors), some areas of the colorized screen could be painted in unreadable colors. New settinfs in the .AUTO file allow specifying the colors of these non-text-data areas. Dynamic colorization has been added. Previously when editing a line, colorization was only performed the next time the line was fully displayed. This has been changed so that colorization occurs 'as you type'. An AUTOCAPS mode is available when editing programming languages where it is desirable to have language keywords uppercased for readability. This support is dependent on the existing AUTO colorize support being activated. Keywords defined in the .AUTO control file will be updated to be in Uppercase. This action is in two stages. The first Uppercases the keywords only on the screen display. This is to prevent Uppercasing during typing; if typing the word 'forget', you wouldn't be happy with 'FORget' just because FOR was a language keyword as you typed the 'r'. When the file is saved, the uppercasing is finalized and written to the file. A new Options -> General selection is available to activate Keyword hi-lighting on the command line. This will trigger the hi-lighting of known command name and operand keywords on the command line. This is helpful where you might accidentally enter what you thought was a simple text literal and 'forgot' that it was a supported keyword operand for the command. It can make deciphering an error message a bit simpler. The support for recognizing changes to the BNDS line has been re-written again to react more logically to changes made to the line. By matching the old and new BNDS line, and recognizing specific changes, it will make altering this data simpler and more reliable. The PFKSHOW help lines now have an improved sort routine which should organize the display to handle key names in a more 'natural' manner. e.g. F2 will sort before F10. Between 7.1.4016 and 7.1.4050 (Feb 19/2014) =========================================== Improve loading performance for large files. Add two new RECFM varieties VBI and VLI to support alternate format variable RDW (Record Descriptor Words). See 'Working with non-Windows Files' for more details. Improve performance of the translation routines used between ANSI and external SOURCE values (e.g. EBCDIC <=> ANSI. Between 7.1.4001 and 7.1.4016 (Jan 16/2014) =========================================== Correct a few places where the move of the FILELIST files to a new folder was not being handled correctly. Correct handling of Escaped (\) values in picture literals. A Profile reset was not setting the START option correctly to FIRST. Corrected. Correct BOTTOM command in FM, it simply wasn't working. The (Swap) primitive has been enhanced to properly copy color highlighting attributes during the swap. Correct File Manager Delete Line Command. It was not properly handling the 'Delete to recycle Bin' option. Correct processing of PROFILE USING commands. INI values for the involved profiles were not being set correctly. Correct Get_Curr_Line$ macro function. It was removing leading/trailing blanks when it shouldn't have. Correct error in cursor positioning after an (EraseEOL) function, the cursor set request was being issued with an incorrect internal priority level. Correct saving of FM status on exit when displaying a single FILELIST. Between 7.0.3217 and 7.1.4001 (Jan 1/2014) =========================================== Please see the 7.1 announcement letter for more details on these items, or review the Online documentation on the SPFLite Web site. Primary-command changes ======================= New ULINE, REVERT, NULINE and NREVERT commands to support the new User Lines support. See also the U/UU and V/VV line commands, described below. Extended Find/Change color operands. New COLLATE command to provide temporary character set usage for Hex and SORT. New SUBCMD and XSUBMIT commands provide additional capabilities for SUBMIT. Repeatable DELETE. Like RFIND/RCHANGE you can now 'step' through the file performing selective deletes. New { and } Picture codes to support finding strings which begin or end lines and optionally have spaces between the literal and the line start/end. New TOP option for scrollable commands (commands that can trigger repositioning of the screen). FIND command alias FF supports using CC blocks to mark the search line range. Enhanced SOURCE command and user-defined translation tables. RegEx literals now supported for JOIN. New Z labels (.ZCSR, .ZFIND and .ZLOC) available. New ADD command allows macros a simple means to insert text lines. New WDIR command, similar to the DIR primary command, to open a Windows Explorer dialog for the “containing directory” of the current edit file. New FOLD command to force the Edit display into all uppercase, without actually changing the data itself. Enhanced CLIP command to now accept an optional private clipboard name. IMPORTTABS renamed to XTABS. Extended SORT fields: The SORT command will now support 5 sort keys (like ISPF) and the limit of 64 characters on the size of each key has been removed. New SCROLL operand for PAGE. Line-command changes ==================== New U/UU and V/VV commands to support the new User line functions. New TX/TXX and TU/TUU commands. These line commands will ‘toggle’ the excluded state (TX/TXX) or the User Line state (TU/TUU) of lines within their range. New xNOTE commands: Similar to NOTE commands, xNOTE commands provide a way to enter “extended” types of NOTE lines into a file. K line command modifier is now the & modifier. Macro changes ============= New Request_Label$ and Release_Label$ functions. Implicit Block-Mode line macros. SET symbol substitution added to SPF_CMD. File Manager changes ==================== New WDIR line command: Like the WDIR (“Windows Directory”) primary command. When the Find in Files command FF is issued, a copy of the FF command, including the string being searched for, will appear on the Found Files FILELIST display. Key Mapping and Function changes ================================ Enumerate functions now work on highlighted text. Implicit highlighting of single characters. Enhanced (Swap) function. The (Swap) function is now enabled in Power Typing mode and additionally, a “swap” operation can be performed when only one area is highlighted. When this is done, the “swap” is actually performed like a “text move”. Parameterized cursor movement functions: Existing functions (Left), (Right), (Up) and (Down), and a new function (Column) now take a numeric ‘n’ parameter, Lenient (Edit) and (Browse) processing. Previously, it was necessary for the user to be very precise about how the text that was highlighted. Now, any leading or trailing spaces and delimiters are trimmed before processing. New (CopyLcmd), (CopyAdd), (CopyPateAdd), (DataDeleteMark), (DataBackSpace), and (FMCompact) primitives have been added. New (CharSet) function replaces the previous (ANSI) function. Other changes ============= Relocation of .AUTO and .FILELIST files: These are now located in new folders AUTO and FILELIST under the main SPFLite directory. Adjustable sequence (Line Number) area size. The size of this area can be adjusted now from 5 to 8 digits. Vertical Insert Cursor is now available as an option. Added support for International characters for P'.' Picture Literals. Use of ADS discontinued. Due to Microsoft's stated direction of moving away from ADS usage, SPFLite has converted STATE saving to normal data files. Ability to automatically mark files of a specified name pattern to as Favorites. SPFLite will now remember the screen-sizing state (Max/Normal) it was in when closed and restore that state the next time it is started. Enhanced AUTO file color codes. Severl new options for coding the color values have been provided. Highlighting of non-default BOUNDS in the Status Bar. Many minor bug fixes: ===================== * Enhance EOL=AUTO(NL) processing to handle another weird line ending created by Hercules. * Correct setting of Profile name for files with no extension when the Option "Use DIR name as Profile when no extension" is selected. * Correct handling of the RESET command when issued within a macro. * Improve line range operand validation and make messages consistent. * Correct KB primitive (Paste) in File Manager when used with a private clipboard name. (The name was being ignored) * Clarify the File Manager Help data for the Open Files display. * Keyboard recording could not be started/stopped from the File Manager display. This is now supported. * Internal command table error effectively disabled the PL line command. This has been corrected. * Restriction of MINLEN to a maximum of 32 characters has been removed. * Correct error in the default for RESET. RED was inadvertently being cleared when not requested. * Corrected error in Keyboard primitive (Swap) which prevented 'bailing out' of an incomplete swap operation. * Correct error in handling alternating background colors when AUTO colorization is active. * Correct separate errors in handling RECFM F and RECFM V files. * Correct End of List message for the File Manager Open Files list to include the count of files. * Correct error in the SPLIT command when multiple split characters occur on the same line. * Correct error in line command parsing which caused the entry of specific 0 (zero) numeric operands to be ignored. e.g. a TS0 line command. * Correct setting of Profile name when doing a SAVEAS from a newly created file. i.e. from an (Empty) new file tab. * When HILITE AUTO OFF was in effect, some aspects of colorization specified by an AUTO file were still being utilized. Corrected to properly ignore the entire AUTO file. * Correction to macro function SPF_CMD. The passed command line was not having SET symbol substitution performed. This will now be done. * Correct colorize parsing. Handling of escaped characters within a quoted string was skipping 1 too many characters. * Expanded the KB primitives to work in non-PowerType mode. * DIR command will now accept a file-pattern operand to filter the contents of the selected directory.Corrected long standing random bug in FIND search routine. * Correct setting of screen sizes and default File Manager sort criteria during the initial startup run. * Correct screen resizing when the cursor is on a line which no longer exists following the resize. (Screen has shrunk) * Correct error in validation of the Scroll > field. Error was causing unneeded overhead by repeatedly updating INI file status when not needed. * Correct handling FB EBCDIC file with EOL=NONE. LRECL was being incorrectly handled. * Correct the Data Shift line commands < and >. They were not correctly performing the shift as per normal ISPF handling. Between 7.0.3185 and 7.0.3217 (Aug 05/2013) =========================================== * Correct saving of the Options -> Screen -> Insert cursor size value. * Correct sample ONLY.MACRO code. (misplaced closing parentheses). * Create a new macro function HALT which combines the functions of Set_Msg and the STOP command. This will simplify error handling in macros since only a single statement is needed to issue a message and terminate the macro. * The following macro functions: SPF_CMD SPF_SHELL SPF_EXEC SPF_DEBUG SET_MSG HALT have been enhanced to support multiple string operands and will concatenate them together with a single separating blank to simplify the creation of long command or message operands. * SPF_EXEC and SPF_SHELL have had two optional leading parameters created to allow finer control of how the command is to be run. You may now choose whether to run the command asynchronously or not; and to choose whether the command is to run in a Hidden or Normal window. * Add macro function Get_Uniq_ID to return a unique ID number for the current edit session. Unique in that it will never be duplicated within a single SPFLite instance. * Add macro function Get_FullPath(fname) to return a fully qualified path if the passed filename is only a simple name. * Create the Set_TopScrn_LPtr macro function to accompany the Get_TopScrn_LPtr function. This will allow macros to easily set a desired line to be the new top-of-screen line when the macro exits. Or to re-establish the position of the screen as of macro start by saving the value from the Get_TopScrn_Lptr function at the beginning of the macro. * Further correction to handling generic FILELISTs in File Manager. * Correct CHANGE handling of replacement null strings. * Correct handling of line labels. Moving a line label by simply re-entering it on another line was not being done properly. * Create new keyboard primitives: (NewLineNS) and (TxtNewLineNS). These are identical to the basic (NewLine) and (TxtNewLine) except that they will NOT cause the screen to scroll when the bottom screen line is reached; they will move the cursor up to the Command line. (NS = No Scroll) (DeleteMark) This will delete any single line marked text. If no such text is selected, it will delete nothing. * Improve editing of a newly entered BNDS line by matching the new line to the old to detect what has changed. * Correct error in building the line control field for special lines which have also been changed (e.g. flagged with ==CHG> ) * Correct default setting of the macro LoopTest flag (it was reversed) * Correct error in key validation during KEYMAP processing. * Eliminate (Clip) and (Set-Edit) sessions from being placed in the Open files list when exiting. Prevents annoying error messages on the next startup. * Correct handling of K (kept) line commands. The retained command was not always being re-inserted on the correct line. * Revise validation of changes to the Scroll Amount field. When the previous contents are not completely overtyped, it was not always detecting which characters were actually changed, causing validation errors. * Correct handling of pending block more line macros to allow scrolling commands to be processed. * Correct handling of inserted lines. Entering a single character did not always trigger detection of the line being 'changed' for removal of the '''''' indicators. Between 7.0.3182 and 7.0.3185 (Jul 4/2013) =========================================== * Correct crash when Cross-Hair cursors are used and the file is in HEX mode. * Correct the B(rowse) line command in File Manager when used to move to a lower directory folder. * Correct error in handling FILELIST entries with generic file paths. * If Re-Open files at start is active, only allow the files to re-open with the first instance of SPFLite. When multiple instances are allowed, the 2nd and subsequent instances will simply open to the File Manager tab. Between 7.0.3177 and 7.0.3182 (Jul 1/2013) =========================================== * Add aliases to Help for MACRO and BASIC to open the macro Help files. * Correct LINE command internal flags so that line range operands are accepted properly. * Remove some old DEBUG code in File Manager that shouldn't have stayed in the release version. * Alter the macro functions which return Line command status data to always return status as of the macro start, rather than 'real time' as macro actions proceed. Between 6.2.3061 and 7.0.3177 (Jun 26/2013) =========================================== Bug and Error Corrections ------------------------- * MAKELIST command will no longer overwrite an existing FILELIST if it already exists. * Multiple file re-opens at startup did not always paint the initial screen using the correct colors if different tabs were using different colorize schemes. * Correct error in KeyMap which 'loses' PFK SHOW definitions when a key mapping is updated. * Correct error in initial program setup when choosing the initial defaults for Enter and Newline. It was incorrectly setting lowercase W to (NewLine). * Correct crash on a (Tab) primitive when the cursor is below the last screen line. * Correct handling of BOUNDS setting on several commands. Add BOUNDS support to the TS/TB commands. * Correct intermittent errors in Profile saving where changes to Profile variables were not properly saved. * MEDIT processing has received some internal improvements to enable it to handle larger numbers of files at one time. * Further performance improvements have been made to the handling of large data files. * Correct handling of Re-Open files at startup to properly handle filenames which contain commas. Programmable Macro Support -------------------------- SPFLite finally offers a true programmable macro capability, far better than the simple SPM macros available in the past. This allows you to create new Primary and Line commands to accomplish custom editing functions. We have included a variety of sample macros to demonstrate its capabilities, and to provide models to help you in your own first attempts to write macros. The former SPM macros are no longer supported, but we have provided a conversion script called SPMConvert.MACRO, to help you migrate these to the new format. See Command Macro Support in the Help for details. Primary-command changes ---------------------- Direct Script Execution: This provides for simple execution and testing of scripts (BAT files, Rexx execs, Perl scripts, etc.) directly from the Edit window without requiring you to SAVE, Open a Command window, and then enter the scripts name and parameters. The previous RUN command, which simply executed a command string in a Windows Command prompt, has been renamed to CMD to better represent what it does. The RUN command is now used to perform this Direct Script Execution. Both RUN and CMD allow you to control whether the Command window is automatically closed with new options on the Options => Submit panel. Data Shift option for CHANGE: Previously, SPFLite only supported a default “Data Shift” mode for the CHANGE primary command (compatible with that used in ISPF), which affects how data on a line is handled when the search string and the change string are of different lengths. This release adds a new “Column Shift” mode ability. See Effect of CHANGE Command on Column-Dependent Data for details. Edit / Browse Profile Override: ISPF has long had the ability to specify an overriding profile name on its Edit Entry Panel. This capability is now possible in SPFLite, on the Edit and Browse commands as well as via the File Manager selection list. See the Edit and Browse commands, and Working with File Manager, for details. Edit / Browse / Copy / Clone Clipboard Filename: These four commands will now accept a simple * asterisk in place of the filename operand, to indicate that the desired filename is currently sitting in the Windows clipboard. Persistent Text Selection and Supporting Command Line Arguments: When a text area is selected, either via the mouse or by shift-arrow keys, the boundaries of the selected area are remembered and can be used again later. The area can be quickly reselected with a mouse-click or a single keyboard key. In addition, the line and column range can be referenced on Primary commands through the use of special text selection operands. See Working with Line Labels for more information. Primary Command & prefix to retain command: To be compliant with standard ISPF usage, if the primary command is prefixed with an &, the command is not cleared from the command line after command completion. New Primary command DIR: The DIR command, when issued in an Edit or Browse tab, will switch to the File Manager and display the contents of the folder which contained the file being edited or browsed. The DIR command may also be issued as a Line Command within File Manager to switch the display to the folder containing the file on the selected line. Profile Display Revision and new QUERY command: The display output from the PROFILE command has been revised to be clearer and easier to read. In addition, to enable quick display of an individual setting, a new QUERY (Q) command is available to display individual settings. Profile PAGE Support: A new Profile option - PAGE - is available for use when the EOL=AUTO or EOL=AUTONL setting is active. These EOL settings provide an automatic page formatting cleanup when Editing/Browsing SYSOUT print files. The PAGE option extends this support so that the screen display will show only the lines for a single Page at a time. Short print pages will display short (aligned at the top of the screen with blank space at the bottom), and will not be followed by lines from the next page. User-defined Aliases for Primary Commands: You can now define alias names for primary commands (either primary edit command or File Manager primary commands) by defining them with the SET command. Line-command changes -------------------- DLMS support converted to WORD support: Previously, the DLMS command required you to determine all possible characters which were considered to be non-word delimiter characters. That required specifying a long list of non-alphabetic characters, and if you missed something, "word" strings might not be recognized the way you wanted. Version 7.0 has reversed this whole process. The DLMS command is gone, replaced by a new WORD Line command. So, instead of trying to define a word string by what it's not (that is, "not a delimiter") you now just define was a word IS. This serves basically the same purpose, but is much simpler to understand, and more reliable to set up. See Working with Word and Delimiter Characters for details. File Manager changes New File Manager commands for Open File List: When displaying the Open Files file list, the File Manager will now accept the following line commands which will be processed against the selected Open File tab: END to terminate the Edit/Browse SAVE to save the tabs data CAN to Cancel the Edit/Browse session DEL to issue a CANCEL DELETE for the session PUR to issue a CANCEL PURGE against the session Extended File Pattern Support: File Patterns used in File Manager may now include exclusion masks in concert with normal inclusion masks to better support custom file lists. See Working with File Manager for details. MAKELIST Improvements: The MAKELIST command now supports REPLACE and APPEND operands. This allows for replacement of the contents of existing file lists and alternatively, to merge the current list of files with an existing FILELIST, and also acts to prevent inadvertent overwriting of an existing file list. Other changes ------------- File Last Modified Date/Time Display: When the cursor is not located in the data area or on a line-command field, the current file's last-modified date and time (when lasted saved to disk) will be displayed in the Status Bar box normally used for Line/Column display. Alternating Screen Background: File Manager has, for a while, used alternating background colors to assist in maintaining your eye's horizontal position when browsing lists. This feature has now been extended to the Edit and Browse screens as well. The specific color used for the alternate background is now a user-selectable option under Options => Screen. The Color SCHEME statement in colorize AUTO files has also been extended to allow specification of this alternate color. Cross-hair Cursor Option: You may now request a full cross-hair cursor, like the hardware option on the later 3270 terminals. This option draws faint, full height/width lines on the screen to intersect at the cursor location. See Options -> Screen for instructions on activating this feature. Between 6.2.3060 and 6.2.3061 (Mar 02/2013) =========================================== * Fixed loss of mousewheel control if a CANCEL out of the Options dialog is performed rather than a DONE exit. * Corrected handling of SET command with no operands. It was not opening an Edit of all SET variables as it should. * Corrected loss of colorize support if running with STATE OFF. Between 6.1.3024 and 6.2.3060 (Mar 01/2013) =========================================== PRIMARY COMMANDS ---------------- * The keywords PREFIX and SUFFIX may now also be abbreviated as PFX and SFX. * A new Profile option, MINLEN, defines the minimum length for lines in a file. When MINLEN is greater than zero, whenever the file is edited and lines are inserted, modified or copied from the clipboard or from another file, the minimum line length will be enforced, by blank-padding any lines that are shorter than MINLEN characters. One reason to use a MINLEN value greater than zero is to avoid the existence of zero-length lines, which can create certain issues with FIND and CHANGE pictures. * The SWAP primary command, which accepts the operands PREV, NEXT and PRIOR, now additionally accepts FIRST, LAST, HOME and LIST. SWAP FIRST will select the leftmost file tab. SWAP LAST will select the rightmost file tab. SWAP HOME will select the File Manager tab. SWAP LIST will switch to File Manager and display the Open FILELIST from which you can choose a tab. * The OPTIONS primary command now accepts an optional keyword to select a specific tab within the Options Dialog. The keyword can be used to select the General, File Manager, Submit, Screen, Mouse or Keyboard tab. If this new operand is omitted, the General tab is displayed as was done previously. * A change Picture of P'!' copies the entire found-string as-is. Now, you can also copy the entire found-string and convert the value to upper or lower case. A change Picture of P'!>' copies a found-string of any length and converts it to upper case. A change Picture of P'!<' copies a found-string of any length and converts it to lower case. If desired, these new Picture codes can be shortened using the extended Ansi characters P'»' for P'!>', and P'«' for P'!<'. * When the =X command followed the CANCEL command, as in CANCEL;=X it now operates correctly. This resolves a prior command parsing issue that prevented such command usage from working properly. * The LOCATE primary command now accepts a keyword of ALL. When ALL is used, LOCATE does not "locate" any specific line, but is used for the side effect of un-excluding excluded lines that meet the the 'condition' described in the LOCATE command, such as CHANGE, LABEL or RED. In addition, the MX keyword can be combined with ALL to perform the opposite action, that of excluding non-excluded lines that have a given condition. * When the BOUNDS primary command is provided a single numeric operand, it is taken to be the righthand column boundary, and the lefthand column boundary is assumed to be 1. So, a command of BOUNDS 10 is now legal, and has the same effect as BOUNDS 1 10. * The CUT primary command now takes a new additional keyword of RAW, which will copy one or more lines to the clipboard without an End of Line terminator stored for any of the lines, comparable to what the new keyboard functions (CopyRaw) and (CopyPasteRaw) do. Using CUT RAW, it is possible to copy a block of lines and have them treated as one long line of text, which could then be pasted into an external text editor program such as Notepad, which could then treat that block as one continuous flowing paragraph of text. LINE COMMANDS ------------- * If a numeric-only value is entered into the line command area, it will be removed, and the original sequence number will be restored. Previously, if a numeric-only value were entered by mistake, it would not be treated as an error, but it would not get deleted either, requiring the user to erase it manually. * The Text Split line command TS will now accept a line count of 0. For the TS command, the 'n' value represents the number of blank lines inserted, so that TS0 means you can split a line without inserting any blank lines in the middle of the line you just split. In addition, a new line command called Text Break (TB and TBB) will allow insertion of permanent blank lines (not the temporary blank/MASK lines used by TS). The block mode TBB line command may be used to split multiple lines in the same place all at once. Like TS, TB and TBB will accept an 'n' value of 0. * A new Text Margin line command, TM and TMM, may be used to reformat one or more paragraphs of text, in a manner similar to that of the Text Flow line command TF/TFF, except that the operation of TM/TMM is simpler, is less sensitive to any non-default BOUNDS settings that might be in effect, and will not encounter the types of conflicts with BOUNDS that sometimes occurs when using TF/TFF. * The Text Flow line command TF/TFF, and the new Text Margin line command TM/TMM, will break lines based on 'words' being delimited by blanks or by the beginning and/or end of a line. Previously, SPFLite took into account the "Normal characters for P'.' picture literals" (as defined on the Global Options/General dialog) to help determine how to break lines apart into words; this approach caused problems at times. The new method is simpler, more reliable, and easier to understand. * A new Text Selection line command T/TT may be used to select large amounts of text for use with keyboard primitive commands that need such defined areas of text, such as (PenGreen). This can be useful in cases where the area that needs to be selected is so large that mouse selection or the use of shift/arrow keys is not possible or practical. Note: The new T/TT command has nothing to do with a prior usage of T/TT, which meant, "Take Lines". That old T/TT line command was removed, as of the 6.0 version of SPFLite. The old usage for T/TT has been superseded by more conventional C/CC blocks. * The Pad to Length line command PL will now accept a special modifier of / or \. When used in this way, a command of PL/ will pad all following lines to a minimum length of 1; PL\ will do the same to preceding lines. Placing PL/ on line 1 of a file can be used to ensure that all lines in the file have a minimum line length of 1; that is, it is a quick way to ensure there are no zero-length lines in the file. FILE MANAGER ------------ * A new Global Options tab is available for the File Manager. This gathers in one place all global options relating to the FM, which makes them easier to find and modify as needed, rather than having these options associated with the General options tab, as was done previously. * In File Manager, if an FM line command of the form 'ALL cmd' is entered on a FILELIST line, the 'cmd' is applied to every file named in the FILELIST. For example, ALL E will open every file for editing that is named in the FILELIST, and ALL M will open a Multi Edit session utilizing every file that is named in the FILELIST. OTHER CHANGES ------------- * Further enhancements to high overhead code areas sensitive to handling large files. Improvements were made in the line insertion / deletion handling as well as the saving of data for UNDO support. * SPFLite will respect the Read Only attribute of a file. If an attempt is made to EDIT such a file, SPFLite will open the file in BROWSE mode instead, and issue a warning message, to prevent inadvertent modification of the Read Only file. * If enabled by a new General Option checkbox, you can now highlight (select) a 2D (multi-line) block of text without using the Shift, Ctrl or Alt keys in combination with mouse movement. * To prevent users familiar with IBM ISPF from creating invalid line commands in KEYMAP, an attempt to define a key with a line command like :R will result in a warning popup message advising the user that the command has been automatically converted to the SPFLite-compatible equivalent format of {R}. * You now have finer control on how you are notified of a change to a file being edited by SPFLite when it is also modified from an outside source. You can continue to be always notified of outside modifications, or to only be notified if the file is in an EDIT session but not in a BROWSE session, or to not be notified at all. This control can be set on a permanent, global basis or can be temporarily altered as needed. * New keyboard functions (CopyRaw) and (CopyPasteRaw) will copy text without an End of Line terminator stored. This can be important if you copy text inside of SPFLite and then paste it to an application outside of SPFLite. In addition, the CUT primary command will take a new additional keyword of RAW which supports a similar capability. * Correct a KEYMAP bug, in which a key mapping that defaulted to (Passthru) was not getting restored to (PassThru) if it had been mapped to some other non-default setting and then erased later. * Correct a timing error in UNDO handling when several files are opened in rapid succession (as on program startup with a list of previously open files). The error caused diagnostic popup boxes to appear. * New options in specifying AUTO colorization file settings. Previously, the non-data areas of the screen (Headings, command line, line numbers etc.) were drawn using your normal screen colors. This sometimes resulted in unworkable combinations. You may now set the color schemes for these areas with the new NORMHI, NORMLO, LINEHI and LINELO keywords. Between 6.1.3004 and 6.1.3011 (Jan 11/2013) =========================================== * Correct a long standing bug (since V5.0) which could cause unpredictable crashes and/or loops when doing a SAVE (or AUTOSAVE during END processing). This only occurred for long running SPFLite sessions which had performed numerous file edits/saves. * Line command parsing was not correctly recognizing associated primary commands if the command line was built using =SET variables. This is now supported. Between 6.1.2325 and 6.1.3004 (Jan 4/2013) =========================================== * The filename operand on the command line may now specify a wild-card file specification to request a filtered display of the named folder in the initial File Manager display. e.g. SPFLite C:\Users\Me\Folder\*.BAT In addition a simple 'name' as this operand, which also matches an existing FILELIST, will be taken as a request for an initial File Manager display of the named FILELIST. * File Manager will now highlight the line command area where the current cursor is located similarly to the way an edit tab highlights the line number. This will make it easier to spot an underline cursor amongst the _______ line command fill characters. * Performance improvement to the internal module tracing used by crash/loop detection reporting. * Performance improvements to the loading of large files as well as improvements to deleting large line ranges. * A detected loop will now offer the option to simply ignore and continue execution rather than continue termination. As well, suppression of loop detection was added to some additional potential long-running processes. * An EDIT request for a non-existent file will now report the error and then open it as newly created zero length file. * A new macro variable ~V(varname) has been created to allow substitution of data from the System Environment variables. e.g. you could fetch the system command processor name with ~V(COMSPEC) * Correct error which prevented the File Manager LOCATE command from working. * Correct error in saving some Options settings. * Correct error in handling the SET xxx OFF command. * Correct error in UNDO handling of large files. Between 6.0.2319 and 6.1.2325 (Nov 20/2012) =========================================== * Correct saving of File Manager Scroll Amount setting. * Correct screen width handling with certain fonts. Calculation error could cause width to 'creep' larger with every SPFLite startup. Between 6.0.2317 and 6.1.2319 (Nov 14/2012) =========================================== Enhancements ------------ * Correct broken RFIND command and the REVERSE RFIND option. Between 6.0.2184 and 6.1.2317 (Nov 12/2012) =========================================== Enhancements ------------ * New primary commands SPLIT and JOIN are available to automate splitting and joining of lines based on string searches. An extensive tutorial explains these new features. * FTP support has been added to File Manager. You can now edit and browse files located on a remote FTP server just as you would do for local files and directories. * File Manager now contains two additional navigation lines. A "Recent Paths" line which is like the "Recent Files" but for paths. As well, an "Open Files" is present to display files currently open in tabs. This is useful when many tabs are open and not all tab headers are visible due to horizontal scrolling of the tab headers. The "Recent FILELIST" has been renamed to the "Recent Files FILELIST". * When File Manager lists are created from a FILELIST, you may now also specify a File Type mask to selectively display only certain file types. * When a file list is created using the MAKELIST command with the SYM option, the format of the resulting symbolic file list now causes the file names to be displayed in a shorter format without the full path-name qualification. This makes the list of files easier to read. * The File Manager line command area has been expanded to allow for future enhancements to line commands and for commands longer than one letter. Several existing commands have been modified to utilize the additional line command size. * A new FIND command in File Manager support searches for filenames based on any string or substring within a path name or file name. * FILELIST maintenance functions have been enhanced to better handle the addition, removal and rename of filenames in multiple FILELISTs. This is done to prevent inconsistencies when the same file appears in more than one FILELIST. * Commands initiated by using a Command key (like CHANGE ABC DEF started via an RFIND command key) will now be captured in the command stack for use by the RETRIEVE/CRETRIEV commands. This means if you start a FIND or CHANGE using RFIND/RCHANGE (usually the F5 or F6 keys), you can retrieve the original FIND/CHANGE or other command and run it again. * Text marking and Copy/Cut functions may now be performed on the Primary Command line as well as in the normal text area, using the shift-Arrows keys or the mouse. This can be useful when you need to paste strings or file names into the command area. * A new Primary command MARK ON/OFF allows you to suppress the display of MARK lines without actually altering the MARK line definition itself. This is similar to the way TABS ON/OFF suppresses tabbing without altering the location of the tab locations. * CHANGE now supports a new operand, TRUNC, which will cause all remaining characters on the line following the new change string to be deleted. * A Cancel button has been added to the Options dialog, so you can exit without saving any changes if desired. * New line shift commands [[ and ]] have been added, which are referred to as Indent Shifts, since they shift in terms of INDENT LEVELS. The size of an indent level is determined by the following new item. * A new Options -> General entry has been added to allow changing the default number of columns to be shifted by the shift line commands (( )) << >> [[ and ]]. * The text string keyboard primitive, like [string], when used for creating repetitive string values, can now be coded more simply. The new coding also will execute significantly faster. To generate 20 * asterisks, for example, rather than coding [********************] you can achieve the same effect by specifying (20:[*]). * The TF line command (Text Flow) has been extended for use as the block mode command TFF, so that multiple paragraphs can be formatted in a single step. * PowerType has been enhanced with the addition of faint vertical lines at the cursor column, to better show the cursor location on all the lines included in the PowerType process. * The SET command will now support PUSH and POP options for the variables. The PUSH option will allow macros to temporarily adjust SET variables, and then restore the previous value with POP. * Private clipboards have been expanded from a fixed list of ten (0 thru 9) to an unlimited number of Named Private Clipboards. A Named Private Clipboard can be accessed from primary commands or by new extensions to keyboard functions, without involving the normal Windows clipboard as an intermediary holding area. * The ISPF MASK line command is now supported. * Support has been added for "Virtual Highlighting Pens", which allow you to highlight text areas similar to how felt highlighting pens are used on paper listings. Four highlight colors are available, and highlighting is persistent across edit sessions when STATE saving is enabled. The exact color palette that is displayed by these Virtual Highlighting Pens may be tailored to any desired color via the Screen Options dialog. * The text SWAP function has been extended to support blocks of text in addition to single text line selections. * Two new keyboard primitives (DataInsert) and (DataDelete) will now support character insertion and deletion which attempts to maintain data column alignment when present, in a manner similar to the way a CHANGE command performs the same action when FIND / CHANGE strings are of different lengths and the changed strings have spans of spaces next to them. Bug Fixes --------- * Correction to COPY command when copying into an (Empty) tab with no A/B line command entered. It was basically ignoring the command instead of inserting after the Top Of Dataset line. * Relax filtering of folders in File Manager so that Hidden and System folders will now be processed. * Correct error in Line command parsing which could result in a permanent loop. * Correct error in STATE load of files with labels and/or tags during a COPY command. * Correct scrolling when an incomplete line command group was present. Also remove a duplicate call to an attention routine, pure wasted activity. Between 6.0.2181 and 6.0.2184 ============================= * Correct error in Line command processing which could result in false errors of "Pending command" following an otherwise perfectly successful line command. * Correct another error in Line command processing which could trigger a variety of false validation errors. Between 6.0.2096 and 6.0.2181 ============================= Enhancements ____________ * Finally re-write line command processing so that the need for the UU and TT line commands is removed. All places where UU/TT were used previously will now accept the CC/MM (sometimes HH) line commands as equivalents. This returns the use of CC/MM to old favorites such as CUT, CREATE, REPLACE and PRINT. * Alter UNDO processing so that large files do not cause performance delays when creating the UNDO checkpoints. * Also to assist large file performance issues, an optional, alternate line numbering technique is available. This method avoids the need for frequently renumbering ALL lines in the Edit session. The downside of this is that the visible line numbers are no longer equal to their 'physical' line number. All functions that use these visible line numbers continue to work as usual, no differences whatsoever. However, if you prefer line numbers = to physical line numbers, a setting under Options -> General allows you to specify a file size, in lines, under which the old method of numbering is to be used. Setting this value to a very large number (e.g 999999) will effectively turn off this new numbering. * Mark SPFLite as UAC aware. When editing files under Vista or Windows 7/8, this will prevent Windows from doing UAC Virtualization (AKA Data Redirection) and NOT writing the file into it's original location. In simple terms this means editing files in Windows protected folders (e.g. c:\Program Files\) will not report successful saving, while actually doing the save into a C:\Users\.... folder. Instead, you will receive a failure message of "File is in use or protected". And you will need to run SPFLite as an Administrator to properly save the file in it's protected location. * Allow REPLACE command to be used when Browsing a file. * When multiple files are re-opened at startup, the initial display will now be set to the tab which was active when SPFLite was shut down. * Add the current BNDS setting to the status bar. * Alter File Watch handling. If SPFLite does not have the focus when a file has been modified externally, it will not report the change till the tab for the affected file is given control. * For simple cursor left/right functions, make screen column 7 (between the line number and the text) into an Auto-Skip type field. * There is now a new Global option for BROWSE. You may now request a warning at END time if the Browse session has modified the data. It will allow you to return to Browse and use CREATE or REPLACE to save the data. Sometimes it is too easy to forget you are in Browse, make changes and then lose them without warning when END is entered. See Options => General for the new setting. Corrections ___________ * Correction to SAVEALL. It was not properly resetting the Tab Title colors to indicate the modified status. * Correction to mouse handling. Incorrect handling of middle mouse button clicks could cause mouse-wheel scrolling to be ignored. * Correction to EOL command parsing, and validation during file load. * Ensure the Options -> Submit -> Working directory does not end with a "\" character, remove it if present. * Correct SUBMIT handling of filenames that require quotes (embedded blanks). This was not working when the command itself was a quoted type. * Correct INI value handling of quoted strings to prevent the Windows API from inadvertently removing the outer quotes. * Correct COPY/PASTE -> BB/BB range when the range occurs right at the top of the file. * Correct MM -> Overlay type line command combinations which were failing to mark the file as being modified. * Improve performance in altering line labels and tags. * Correct error in UC line command. It was basically doing nothing if active BNDS were set. * Correct the display of the 3rd PFKSHOW line, it was overlaying the 2nd line. * When in PowerType mode, prevent a mouse click from moving the cursor off the PowerType model line. * Alter handling of 'Illogical Line Command Group' error so that text scrolling is permitted. * Correct RCHANGE so it will not proceed unless the most recent search function was actually successful. Previously it was re-using results from the last successful search even if the most recent search failed. * Correct mouse scrolling on the FM screen. It was not properly going to the last line when FM Help lines were being displayed at the bottom of the screen. * Ensure CREATE and REPLACE commands update the RECENT FILELIST. And if the RECENT FILELIST is actively displayed in FM tab, refresh the display to include the new filename. * Correct loading of RECFM F files when saved with an EOL value other than NONE. The deblocking will take into account the length of the EOL delimiters. * Correct cursor vertical scrolling when in HIDE mode. * Correct Left Data Shift ( << or < ) when a word exists at the left boundary separated by only one blank from other text in the bounded area. Between 6.0.2080 and 6.0.2096 ============================= * FILTER functionality has been enhanced to allow filters to perform actions beyond simply modifying text lines and returning them. Filters now can perform customized search functions and can, like the FIND command, cause scrolling to a desired line and cursor positioning and hi-lighting of text strings. Filters can now also act as summarization tools. e.g. performing some calculation based on the input lines, and insertion elsewhere of new text lines containing the calculation results. Think like a SUM function that inserts a Total line. * Colorize will now properly handle multiple /* */ comment strings on a single line. * Correct error in SORT. It was incorrectly only selecting input lines located from the top displayed screen line onward instead of selecting from ALL lines. * If the SOURCE format is changed while active Edit data exists, a warning will be issued to remind users to SAVE the current data immediately to prevent problems reloading in the future. * Alter the default key mapping for the keypad, for New users only, to mimic the normal, printed, non-Numlock mode key labels. i.e. Home, End, PgUp, PgDn etc. * Correct the AUTOSAVE default for any Initial Profile settings to AUTOSAVE ON PROMPT. * When a Normal or Shifted version of a key in KEYMAP is nulled (""), it will be set to (Passthru) rather than (Null) as this is the normal desired setting. Also, (Passthru) can no longer be accidentally combined with any other key settings. * Correct error in (Tab) primitive when display is in Hex mode. * Correct handling of columns during a CHANGE command. * Correct error in TF line command if a right boundary is specified which is smaller than the line indent value. Also correct handling when a long 'word' is actually bigger than the left/right bounds allow. * Correct error in TAG command syntax checking. * Correct action of LOCATE command when a pending line command state exists. * If START NEW is set and the .START line is in excluded state at file load time, the .START line will be removed from excluded status. * Correct cursor positioning in File Manager to properly remain on the last line item selected. * Correct error in PROF NEW which did not properly use the specified profile name. Between 5.0.1270 and 6.0.2080 ============================= Major new Functions / Facilities * You can now perform Multi-Edit sessions: the ability to edit multiple files, at the same time, in the same edit tab. You begin a Multi-Edit session by selecting multiple files from a File Manager list, using the M line command on each desired file and then pressing Enter after all files have been selected. When you SAVE or END a multi-edit session, every file in the session will be saved at the same time. See "Working with Multi-Edit Sessions" in the Help file for more information. * File Manager now supports named collections of files, and refers to these collections as FILELISTS. A FILELIST is itself a text file containing a list of file names of interest to you. A FILELIST is retained between SPFLite sessions. There are a number of pre-defined FILELIST names, and you may also create your own named FILELISTs as needed. There is a RECENT list, having the most recently opened files (up to a user-specified maximum number). There is a standard FAVORITE list of files you want to be remembered as favorites, and you can create you own private, named favorites as well. For example, you can create a "Project" FILELIST containing all files for some project, even if these files reside in different folders. * The new primary command SUBMIT provides the ability to submit an edit file to an external process (which may be an executable program or batch file) in a manner similar to the ISPF SUBMIT command. The facility is flexible enough to be usable in a wide variety of applications. It is expected that a principle use of the SUBMIT command will be to submit jobs for execution on mainframe systems operating under control of the Hercules emulator program. The SPFLite 6.0 installation includes the utility program SPFSUBMIT.EXE which may be used to submit jobs from SPFLite to a Hercules emulated card reader device using Socket I/O. SUBMIT can be issued from an Edit, Browse or Clipboard session. * A new primary command FILTER allows a range of lines to be filtered through an external process and then returned to the edit file. This allows the user to apply data transformations to a file using any desired utility program, without leaving the SPFLite edit session. A sample filter program, ReverseLines, has been included with SPFLite, to give you an example of what you might do with filters. This new function effectively now allows users to code macros in any scripting language which allows use of re-directed Input/Output or named input/output files. * A new edit primary command PTYPE allows Power Typing, a way to perform simultaneous editing multiple lines of text in parallel.(Some editors refer to this as "column mode editing".) A number of keyboard primitive commands have been added, and enhanced, to support Power Typing. See the Help article, Working with Power Typing Mode, for more information. * A new primary Find in Files command FF, only available for use in File Manager, provides the ability to search through a list of files for the presence (or absence) of a particular string. The operation will return a list of the files which match the search criteria. The list can be used to initiate Edit/Browse of those files, or to use as the basis for further searches of other different string criteria. A Find in Files search returns a FILELIST, for which you can perform any commands that can be done on any FILELIST. * NOTE lines are now supported. NOTE lines are non-data text lines that may contain any desired user comments. NOTE lines are not part of the data file per se, and do not have line numbers. New, blank NOTE lines are created with the NOTE line command. Data lines can be Made into Notes using the MN line command, and note lines can be Made into Data lines with the MD line command. You can also convert the special lines that appear in a PROFILE display into NOTE lines or data lines. See the Help article, Working with Notes, for more information. New and Enhanced Primary Commands * The CANCEL primary command now accepts two new operands, DELETE (DEL) or PURGE. They will, after terminating the Edit, cause the underlying file to be deleted (sent to the Recycle Bin if that option activated) or purged (bypassing the Recycle Bin, even if that option is enabled). * A new command START, supports the PROFILE option which allows you to control how a file is positioned when opened. You can choose FIRST (top of file); LAST (bottom of file); USER (position to a user entered label of .START); NEW (like USER, but the .START label is always moved to the last line on file on close); or OFF (effectively like FIRST). It is expected that START NEW will be useful in viewing SYSOUT files, possibly in conjunction with the EOL AUTO feature. * New LOCATE options, FIND and CHANGE, will locate lines which have been previously changed by a FIND, CHANGE or similar command. All other LOCATE options such as FIRST, LAST etc. are supported as usual. In addition, a new keyword CURRENT, abbreviated as CURR) may be used with LOCATE FIND or LOCATE CHG to locate the line that was most recently found or changed. LOCATE LONG allows lines to be found that exceed a size operand or exceed the LRECL value (when not zero), and LOCATE SIZE locates lines that are exactly a certain length. LOCATE NOT LONG and LOCATE NOT SIZE are also allowed. * The primary commands that change the exclusion status are now "unified". This means that EXCLUDE, FLIP, SHOW, NEXCLUDE, NSHOW and NFLIP all have the same underlying syntax and take the same operands as EXCLUDE does, including the optional string argument. As a result of this change, FLIP, which used to apply to all lines by default, now requires the ALL keyword for this action to occur. * The SORT primary command now performs a "stable" sorting operation; this maintains the original ordering of data lines when the sort keys are considered equal. * FIND and CHANGE can now utilize regular-expression search-strings when the search direction is specified as LAST or PREV. When this is done, the search is limited to the left-most only occurrence of the search string. Additionally, there are now no restrictions to using PREV, LAST, PREFIX or SUFFIX with Picture search strings, which now also performs better. * A new primary command EXIT or =X allows SPFLite to be closed, which is functionally the same as clicking the X button in the upper-right corner of the SPFLite window. The command =X is an abbreviation for EXIT. * A new edit primary command RENAME allows the currently-edited file to be renamed while being edited. When issued, RENAME will cause a Rename popup to be displayed, which asks for a new file name. * A new primary command RELOAD will discard any unsaved changes in the current edit file and then reload the file from its current contents on disk. If any unsaved changes exist, a popup will ask for confirmation of the Reload. * FIND, CHANGE and similar commands will now report the number of lines in which a string is found or changed, in addition to the number of times the string itself is found. * PRESERVE C. New option C to PRESERVE command causes trailing blanks to be retained except when the last non-blank character on the line is a \ backslash. This is intended for use in C-like languages that use \ for line continuation and do not allow blanks to follow it. * As a companion to the UNDO command, there is now a REDO command. Sometimes when doing repeated UNDO commands to reach a previous edit status, it is easy to UNDO more than intended. REDO allows you to reapply changes, effectively reversing the UNDO. * A new TAG option of SET operates much like TAG ON, except that lines not eligible to have the new tag assigned will have any old tag cleared. This allows a line range to get a new tag without the need to pre-clear the line range of old tags beforehand. * When the DELETE command is used to delete the entire edit file by using the ALL option, DELETE cannot be abbreviated as DEL. This is a safeguard to prevent deleting the entire file by accident, in case an X|NX option or line labels should have been used but were forgotten. * PROFILE EDIT profile-name allows editing of any existing Profile, either from an Edit session or from the File Manager. As well, the PROFILE NEW profile-name may be issued either from an Edit session or from the File Manager. For both commands, the SPFLite Profile Editor window is displayed so that the Profile information can be created or changed. * A new primary command COMPRESS can be used to compress repetitive spans of strings down to single occurrences. * A new REVERSE operand on RFIND, RLOCFIND and RLOC allows repeated FIND or LOCATE operations to be done in the direction opposite to the initial direction. This allow you to ‘change your mind’ as to the search direction without having to re-issue the original FIND or LOCATE command. * You can now perform a virtual save operation during the course of editing a file, using the new primary command VSAVE. A virtual save will save the edit session to a temporary file, without committing the edit changes to the permanent file you started editing. If you are editing a critical file and experience a system outage, the VSAVE files can be used to resume editing, while if the edit ends normally, the VSAVE files are automatically deleted. * Duplicate adjacent lines can now be deleted with the new primary command DELETE DUP. DUP is now a reserved word on the DELETE command, so if you wish to delete lines that contain a literal of DUP it must be quoted like 'DUP'. * The new LEFT and RIGHT operands of FIND and CHANGE allow strings to be searched for and changed at most once per line. Either the left-most or right-most string is found on a line, and any additional occurrences of the same string are ignored. * A new primary command SAVEALL saves every open edit file. SAVEALL by itself will unconditionally save all edit files, whether currently in a modified state or not. SAVEALL COND will save all edit files that are in a modified state, but unmodified edit files will not be saved. SAVEALL will not save files opened in browse mode, even if such browsed files are in a temporarily modified state. * The COPY primary command now supports the full ISPF syntax for COPY, including BEFORE and AFTER keywords and start/end line numbers for copied file. The copied lines may replace an existing block of line if they are marked as a UU or TT block, if the BEFORE / AFTER option is omitted. * The PASTE command now also permits the BEFORE/AFTER option as well as ERASE to clear the clipboard after the operation. * Enhancements have been made to primary command RETRIEVE processing. The RETRIEVE ‘command stack’ will now hold the last 50 commands. A new RETF command will retrieve commands in the ‘forward’ direction, as opposed to the 'backward' direction done by RETRIEVE; the command stack can be cleared by RESET RETRIEVE. * The APPEND primary command will insert a string at the end of every line in a line range. The complementary PREPEND primary command will insert a string in column 1 of every line in a line range. * The PRINT SETUP command can now define "formatted printing" of pages with page numbers, headers and footers, file names, and other variable information inserted. New and Enhanced Line Commands * The =TABS> line may now use a + character as a "repeating virtual tab" position. If used, the + may appear only once as the last code on the =TABS> line, and must be preceded by an * tab code. Using the distance in columns between the + code and the last * code that precedes it, ‘virtual’ tab positions are implied indefinitely to the right, starting in the column where the + appears. * The K (Keep) line command modifier, and the -/+ (post-exclude and post-unexclude) line command modifier, can now coexist for the line commands A, B, C/CC, O/OO, and OR/ORR. On CC, OO and ORR the block-header lines themselves will not be excluded or unexcluded by the -/+ modifier, but only the lines within those blocks. * The MARK line command now allows codes < and > to more accurately place the column marker lines, in addition to the * code which remains available. * G/GG and J/JJ are now defined as ‘physical’ glue and join operations that do not involve data trimming. To trim data before gluing or joining, the new line command TG/TGG and TJ/TJJ are now supported. Additionally, for the Glue commands G/GG and TG/TGG, a user-defined string can be specified to insert in between the glued lines, using the GLUEWITH command. * Two separate blocks of text may now be swapped by marking one block with M/MM and the other block with the new Swap line command W/WW. * A new Overlay/Replace line command OR/ORR is similar to the standard Overlay line command, but will unconditionally overlay data from the 'sending’ lines to the ‘receiving’ lines. * New keyboard primitive functions (FindNext) and (FindPrev) will find the next or previous text that is currently highlighted. These actions are typically performed in other text editors using the keys Ctrl-F and/or F3, and may be mapped in SPFLite to any desired key. New and Enhanced Keyboard Primitives * A piece of text on one line can now be swapped with another (non - overlapping) piece of text on the same line or on another line by using the new keyboard primitive function (Swap). * New keyboard primitive functions (Edit) and (Browse) allow you to directly jump into a file for editing or browsing through a highlighted a file name. For example, suppose Alt-E is mapped to (Edit). Then you would highlight a file name and press Alt-E. This causes that highlighted file to be opened up in a new Edit tab. * A new keyboard primitive command (ToggleHome) will toggle the position of the cursor between column 1 and the first non-blank character of the line. * The (SetInsert) and (ResetInsert) primitives have been enhanced to save the existing insert-mode state internally prior to changing it. A new primitive called (RestoreInsert) takes the insert-mode state saved by the most recent (SetInsert) or (ResetInsert) and restores it. If neither (SetInsert) nor (ResetInsert) have yet been performed, (RestoreInsert) does not change the insert mode from its current setting. These new and enhanced functions are useful in keyboard macros that need to modify the insert mode a certain way and then restore it to what it was previously. * New keyboard primitive commands (JustifyL), (JustifyR) and (JustifyC) enable you to left-justify, right-justify or center (center-justify) a span of highlighted text. The Justify commands act by removing spaces from one side of the highlighted text, and adding it to the other side of it. When Power Typing mode is in effect, and a span of text is highlighted on the first line, these commands will apply the justification to every line in range of the Power Typing command. * A new keyboard primitive function (Ansi) will display a 16 by 16 grid of characters which may be used to insert any characters into the clipboard, including ones not currently mapped to a key. The same display may be accessed in the KEYMAP window, by clicking a new button, "Show ANSI Character map". * New keyboard primitives (ScrollLeft), (ScrollRight), (ScrollUp) and (ScrollDown) allow the screen to be scrolled while leaving the cursor in its current location. * A new keyboard primitive (ClipClear) will clear the contents of the clipboard. * Keyboard functions can take a repetition factor so that if you need a function run several times, it only needs to be specified once. New and Enhanced Mouse Support * When a file tab is clicked with the right mouse button, it closes the file in the same way that the END command does. The PROFILE option AUTOSAVE is handled in the same way as is done for END. * Previously, the mouse could be used to highlight a section of a single line (a 1-dimensional highlight) or a square block of text (a 2-dimensional highlight). Now, you must hold the Shift key when doing a 2-dimensional highlight, while 1-dimensional highlighting is done without the Shift. This change means that 2-dimensional highlighting will not occur accidentally but only when intended, and makes normal highlighting easier and faster. * There are enhanced capabilities available with highlighted text; see the Help for more information. * You may now perform a ‘word select’ by double-clicking on a word, and highlighted text may be deleted and replaced with new text in one step, which is especially useful when Insert Mode is on. * When you hold down the Ctrl key while using the mouse wheel, the number of lines or columns moved is increased by a factor of 4; this is termed Turbo Motion. * When using a 3-button mouse, the middle mouse button may now be mapped in the same way as the left and right buttons. In addition to allowing use of all three mouse buttons, you may now use any combination of Shift, Ctrl and Alt, for a total of eight possible mappings for each button. And defining these mouse definitions is simpler, as they are now part of the KEYMAP facility, meaning an easy, one-step process just like keyboard keys are defined. Cosmetic / Interface Changes * Previously, when a file was Saved by an END command, the normal "File Saved" message would never appear since the Edit tab itself was removed as part of END processing. To ensure that you do receive a notification that the file was indeed saved, the message "File Saved" will appear in the message area of the status line, as a reminder that the automatic save took place. This message will disappear as soon as any key is pressed. * When the scroll amount field is blanked out for any reason, the default scroll amount will be restored without an error message being displayed. * The File Manager has new and updated primary and line commands, and has been reformatted to make it more functional, easier to use, easier to read, and with less clutter that allows more useful information to fit on the screen. See the section on Working with the File Manager for complete details. * A change has been made in the way screen colors are applied to file tabs. In prior versions, the Active and Inactive tabs had both a foreground color and a background color option available. With version 6.0, the background color is settable for both Active and Inactive tabs, but now the foreground color is decided based on whether the file is in a Modified or Unmodified state. The former use of (M) to indicate modified status was removed. For the File Manager tab, and tabs in GUI windows like SPFLite Global Options, the foreground text color used will be the same as the Tab Text - Unmodified Files color. * The visual spacing of messages in the multi-use status box (where "KB Recording" appears), and the "scroll progress bar" which appears below it, have been adjusted slightly so as not to overlap, so that when both are present the message portion is easier to read. * A new Option is available, Visual BEEP. This provides a short visual 'blink' when an error occurs that would normally trigger an Audible BEEP. For users that turn Audible BEEP off because it is disturbing, or for users that are hearing-impaired, this provides an alternative. Audible and Visual BEEPs may be activated independently from each other. As well, the audible BEEP is now produced as the standard Windows 'Asterisk' sound and can therefore be enabled, disabled and/or customized as desired through the "Sounds and Audio Devices" option in the Windows Control Panel. * The installation process for SPFLite will now add a Windows Explorer context menu item that says, "Open with SPFLite". This will allow a file to be quickly opened by SPFLite for editing by right-clicking on the mouse. At present, if you uninstall SPFLite, the uninstall process will not remove this context menu item; it can be manually removed by right-clicking on the RemoveOpenWithSPFLite.reg file and selecting Merge. * SPFLite will no longer steal the Windows focus back to itself when it is not the currently active task, and a file it is editing is modified by some outside application. SPFLite will now wait to notify you about the outside file modifications until you again click on SPFLite to make it the active task. This change makes it easier to use SPFLite collaboratively with other software, such as a compiler IDE or debugger, which may also have their own editing facilities. * In File Manager, the END command will now return to the parent directory, or to the prior FILELIST, of the currently displayed one. The same action will occur if you right-click the File Manager tab. Performance Enhancements * A change was made in the way SPFLite detects and responds to keystrokes in Repeat mode vs non-Repeat mode. The change allows SPFLite to process keystrokes more quickly and reliably, and prevents certain types of key combinations from being misinterpreted if typed at very high speeds. When a mapped key has the Repeat checkbox left blank, the key is now acted upon during "key-down time" instead of during "key-up time" so there is no longer a latency in responding to these keys. * The code used when searching for Picture strings has been totally redone. It is now 4-5 times faster and also now allows reverse searching. i.e. using the PREV or LAST operands of Find/Change. * Within the Key Map window, you can now jump from one of the eight various definitions (with or without Shift, Ctrl and/or Alt) of a key to another by using the Tab and Back-Tab keys. This reduces the need to frequently switch between the mouse and keyboard when entering many definitions for the same physical key. Miscellaneous Changes * It is now possible to have deleted files either sent to the Windows Recycle Bin or immediately deleted, based on new CANCEL command options and new handling of File Manager line commands D and U. The default action when files are deleted is controlled by a new global option checkbox, Delete to Recycle Bin. * Two new codes for Picture literal searches have been created; the P'%', which indicates the "special" characters defined in the DLMS setting; and P'@', which indicates all character NOT in the DLMS setting. i.e. the two types used to define a WORD in string searches. * As well, you can now 'escape' a character in a picture code which might be a defined picture code like @ by prefixing it with a \ (e.g. P'\@') When ‘x’ is a letter, it is matched literally including case, even when CASE T is in effect. * The new change Picture/Format code of P'!' or F'!' is used to represent the entire found search string value, regardless of that string’s length. The ! code can be used more than once, which would cause the found string value to be replicated as many times as there are ! codes. To use an actual ! in a change Picture or Format as a literal value, it must be escaped as P'\!' or F'\!'. * You can now create SET symbols and reference them in an edit session. Symbols are created with the SET command or in a SET edit session, and may be used in primary commands with the notation =NAME. * The Enumerate Facility allows a selected set of columns in a range of lines to be enumerated, that is, sequenced starting from an initial value on the first line and incrementing by 1 for each subsequent line, within a fixed field on a set of lines. Enumeration requires that Power Typing mode is be enabled, and one or more columns on the first line of the Power Typing line range are highlighted. Enumerated values may be in decimal or hex and are unsigned. When these conditions are true, one of the Enumerate keyboard primitive commands (Enum), EnumHexLc) or (EnumHexUc), can be issued. Increments other than 1 can also be used. * A new set of End of Line profile options, EOL AUTO/AUTONL allow for automatic detection of line terminations, possibly containing inconsistent and spurious line terminators, so that files edited across different system, mainframe SYSOUT files, and other inconsistently-terminated text files can be opened, viewed and edited in a reasonable way. EOL AUTO/AUTONL may be applied to non-mainframe files as well, to handle situations where a file’s line termination is inconsistent for some reason. A possible cause of this is a file shared between Windows and Unix on a network and edited with different editors applying different line endings. * SPFLite now supports Private Clipboards. Ten are provided for and are referred to as CB0 thru CB9. The clipboards are Global (shared amongst all active Edit tabs) and are also Permanent (saved and restored between SPFLite sessions. These are ideal for storing a variety of boilerplate type text. New keyboard primitives are available for moving clipboard data between the normal Windows clipboard and these new Private clipboards. These primitives can be easily used to create a coordinated 'set' of keyboard macros to access this new support. The default keyboard definitions contain Copy and Paste macros set up on the 0-9 keys. Between 5.0.1232 and 5.0.1270 ============================= * Correct checking of PROFILE STATE. It was being done after the check for the NTFS status of the drive rather than before. * Pending line controls (e.g. A/B) were not being correctly detected by primary commands like COPY issued from macros. * Line command processing was not properly detecting incomplete block commands followed by Immediate commands. * UU block line commands with the K (keep) modifier were not being properly retained following their use in a command. * CANCEL command could not be issued if there were line commands in 'Pending' status. * SAVE issued for a file with zero lines in it was incorrectly skipping the actual writing of the empty file. * The Tab expansion using the IMPORTTABS value was not correctly expanding text when only 1 character followed the Tab character. * A replacement EBCDIC.TXT file to alter the EBCDIC <-> ANSI translation was not being properly recognized during initialization. Between 5.0.1221 and 5.0.1232 ============================= * If a file save is done as part of closing a tab, the "File Saved" message will be displayed for a short time in the status bar of the next tab to be displayed. * The file extension inserted by the substitution string ~X will remain in normal case rather than being forced to Upper case. * Keyboard routines were enhanced to better handle keys flagged as non-repeating in keymap. This should eliminate possible dropped keys when the key is a 'chorded' key. (Like Crtl-Z, Alt-U, etc.) * The horizontal scroll bar in the status line has been altered so that it does not interfere with character text shown in the same status bar box. * SPFLite can now automatically check for a new version update on a regular basis. Whether to do this, and the interval to use (7 or 30 days) are settable now by a new option under Options -> General. The Options tab also contains a button which will perform an immediate check. The initial setting for this until you choose will be to never check automatically. * Instead of imposing a fixed key-mapping for the critical ENTER and NEWLINE keys, an initial install of SPFLite will provide a pop-up menu to choose between three suggested key mappings. This will prevent the all too common problem for new users of forgetting where the ENTER key is mapped. Regardless of which choice is made, these settings may be modified later via the KEYMAP function. * The new commands FIND WORDS and FIND CHARS can be used to set the default "search context". This is useful if you frequently search for strings on a WORD basis, so that the WORD operand can be omitted on FIND and CHANGE commands. When the default search context is set to WORDS, a W will appear in the C/T indicator on the status line that shows the current CASE C/T mode. Between 5.0.1208 and 5.0.1221 ============================= * File Manager was not 'forgetting' the file list position when display criteria had altered. * RCHANGE was not reacting to a previous search if it was invoked via the RLOCFIND command ather than RFIND. * Certain combinations of keyboard primitives in a keyboard macro were leaving remnants of the previous cursor behind. * Entering a full CHANGE command and pressing RCHANGE was not being honored. * Tab and BackTab handling on the Top/Bottom of data lines was not being handled correctly. * Handling of the Profile option IMPORTTABS was not being done properly when IMPORTTABS was set to 0 to suppress tab expansion. * Selecting a directory name in File Manager to switch to that directory was not being done properly. An embedded blank was being inserted into the path. Bug introduced by build 1208 inadvertently. * Mapping of the KP-Enter key was not being handled correctly. * Possible data corruption when loading files over 128K in size. * If Profile STATE is ON, and the file is being saved to drive which is not using the NTFS file system, a warning that STATE information will not be saved is generated. All other normal save activities continue as normal. * Add additional Icon sizes for the SPFLite5 program icon to display properly at different screen desktop resolutions and icon size settings. Between 5.0.1195 and 5.0.1208 ============================= * File Manager was not handling file masks with trailing * properly. * Add additional validation to BNDS setting when loading a file Profile. * RESET command was not always clearing previous error message text. * Correct handling of Enter key when NumLock is ON. (i.e. by toggling it with Shift-NumLock. * RESET was not being processed if there were outstanding line command errors. It should always be performed regardless of such errors. * Cosmetic changes to several messages. * Corrected handling of shutdown when modified, unsaved new files are being processed. * Pending line commands were suppressing the action of scrolling commands such as LOCATE, FIND etc. * Clarify STATE error message when file changes prevent re-establishing the previous STATE environment. * Editing of a new file type was not properly picking up the DEFAULT profile's parameters. As well, new profiles will start as UNLOCKED. * CAPS ON processing was not being properly handled in INSERT mode. * Correct formatting of the PROFILE NEW dialog. Some fields were not spaced properly. * File manager will now handle file names with leading blanks. However, use of such names is discouraged as it can be very confusing. * Cursor performance improved during rapid cursor movement. It will now be much more visible than before. Cursor also will no longer 'disappear' when the user has the Windows cursor blink rate set to 'Off'. * Altered the test for SPFLite residing on a removable drive when installed in 'portable' mode. Windows basic device type API insisted that a USB connected hard drive was not removable. Another API was found that acted more reasonably. Between 5.0.1189 and 5.0.1195 ============================= * FIND and CHANGE were treating quoted "*" and unquoted * operands as the same, they were both being treated as 'previous operand'. * Line commands inserted by keyboard customization settings were not being honored on '''''' inserted lines. * Documentation updated to describe keyboard customization when using non English keyboard which require use of the AltGr key to create national characters. Also corrected typo error in the Help file and Tutorial related to TAG handling. * Termination did not always provide the option to save a tabs data if the tab had never been saved. i.e. was still marked as (Empty) even though text lines existed. * PASTE into an empty file did not 'clean up' an optional A/B line command if it had been entered. Between 5.0.1186 and 5.0.1189 ============================= * Keymap will no longer accept changes that leave the ENTER key undefined as this makes further use of SPFLite impossible. * Global BOUNDS or BNDS settings were not being correctly honored by Primary commands like FIND/CHANGE. Boundaries were only being honored if they were specified on the commands themselves. * If specified bounds were included on a primary command, SPFLite was not allowing an arbitrary large value to be used for the right boundary which was larger than the current maximum length record. For example, specifying FIND P'^' 73 1000 on a file with all records under length 100 was rejected. * Data entry in the Scroll amount field (upper right) was not being handled properly. * The Keypad DEL key was not functional. * The Keypad Enter key incorrectly had a default assigned of RCHANGE. * UP and DOWN commands were incorrectly calculating the new screen position when excluded lines were present. * Multiple adjacent ranges of excluded lines were not being 'collapsed' in to one range following a line delete command. * File Manager was not handling Directories with very long names if the name was being abbreviated to fit a narrow screen display. Between 4.4.9 and 5.0.0 ======================= * Support added for EBCDIC input and output files, along with the EBCDIC NL character X'15' as another EOL delimiter character. In addition, you may now specify an LRECL value to specify that the file contains records with a fixed Logical RECord Length. * When editing EBCDIC files, conversion is done between Ansi code page MS-1252 (used for the editor display) and EBCDIC code page 1140 for user data files. * When a non-zero LRECL is specified, you may also specify an EOL of NONE, to indicate that none of the usual end of line delimiters are being used. The combination of a non-zero LRECL and EOL NONE is used to edit files that are a set of fixed-length records stored as a continuous stream of bytes with no line delimiters at all. * Persistent storage of the labels, tags and line exclude status between Edit sessions. You can now close a file, and resume editing it at another time, with your file's edit session conditions restored to the same state it had at the time it was closed. This feature is enabled with a new PROFILE option called STATE. * Add automatic cleanup of stray recovery files that may have been left behind in the event of an SPFLite crash. * A change was made to the naming standard for Automatic Colorization files. These files now have names like "type.AUTO", where "type" is the filename extension that defines the file's type. Use of a "type.AUTO" Automatic Colorization file is enabled by a PROFILE command of HILITE AUTO ON. Automatic Colorization files are "linked" to to the file's PROFILE. This means that when a PROFILE USE is in effect, a common colorization scheme can be defined for a group of related file types. Support for the former PROFILE ALIAS command has been removed. * Allow use of temporary line labels in commands. Temporary labels are .labels where the label value is a numeric line number; to reference line 10 in this way, a temporary line label of .10 could be used. This allows line ranges to be used in commands which also support column ranges (like FIND and CHANGE) without needing to assign some permanent labels to the lines just for the sake of that command and then having to delete them later. * New KEYMAP command and totally rewritten keyboard mapping support. The whole concept of PFKs has been replaced (don't worry, it's actually simpler), Now, the commands you desire are actually associated with the key, rather than the former two-stage process of associating a keyboard key with a PF key, and then associating the PF key with an SPF command. As well, the mapping allows for mapping of all control key combinations for the allowable keys (this is sometimes referred to as "chords"). There are 8 variations of each key allowed: Normal, Shift, Control, Alt, Shift-Control, Shift-Alt, Shift-Control-Alt, and Control-Alt. These are now easily managed by a new graphic dialog which allows you to click on a keyboard image to access the commands associated with each key. As well, support is now provided for keyboard macros. This includes a new Keyboard Recording function to assist in creating these macros. While Keyboard Recording is in progress, a message of "KB Recording" will appear on the status line. * Separate file option preferences for each file type. Many formerly global preferences are now settable by file type. The PREFERENCES command is now renamed to OPTIONS, and a new PROFILE command is used to display the file- oriented options. Setting of individual PROFILE options is done via primary commands as in the original ISPF, such as CAPS, TABS, HILITE, etc. * The PFSHOW feature now allows specification of 1 to 5 lines at the bottom of the screen. Only keys which have PFSHOW labels defined (via the KEYMAP facility) will appear in this area. The PFSHOW screen functionality is now being handled as an OPTIONS|SCREEN setting, and the former PFSHOW primary command is no longer supported. * The status line is no longer optional, and now appears as a conventional Windows-style status line at the bottom of the screen. The redesigned status area contains many new, useful fields in a concise, ease-to-read format. * The primary commands OPEN and EDIT have been swapped to have consistent meaning with other commands. BROWSE starts a browse tab, EDIT starts an edit tab, and OPEN will now open a new instance of SPFLite. * The primary command CRLF has been renamed to EOL (End-Of-Line) to better reflect its meaning. As well, the operands have been renamed from WIN/UNIX/MAC to CRLF/LF/CR to also better reflect their meaning. Also added is the ability to use a user specified 1 or 2 byte hex string as the delimiter. The EBCDIC NL character (X'15') is also now available, as is the ability to say EOL NONE to have no delimiters at all, which requires a specified LRECL value to delimit lines by their length alone. * The sort criteria for the File Manager may be quickly changed by left-clicking on the column headings. If currently sorted on the clicked column, the sort will switch direction (a + will appear next to the column heading for ascending order, and - will appear for descending order). If clicked on a different column, it will switch to an ascending sort on that column. In addition, a new option to sort on file extension has been added. As a result, the SORT type entry line at the top of the screen has been removed. * File Manager has altered the file type criteria from being a simple list of file types, to using the Windows standard file masking characters. For example, previously you might have had criteria like txt;BAS;CPP which would now be entered as *.txt; *.BAS;*.CPP. But more importantly, you can now enter criteria like PRJ*.C?? or *.B* to specify a much finer filtering of the resultant list. * New Keyboard Primitive commands: TxtHome - Moves cursor to 1st visible data column of the current line. Like Home in a conventional editor. TxtNewLine - Like NewLine, but moves cursor to the 1st visible data column of the next line rather than the line number area. LineNo - Moves the cursor to the line number area of the current line. LastTab - Tabs to the last (rightmost) tab marker. EndOfText - Moves cursor to 1 past last non-blank on the line, unlike EndOfLine which moves the cursor to 1 past the last character on the line, blank or non-blank. LowerCase - Will lower-case selected text on the screen. UpperCase - Will upper-case selected text on the screen. TitleCase - Will title-case selected text on the screen. SentenceCase - Will sentence-case selected text on the screen. CutPaste - Will act like Copy if text is selected, and if no text is selected will act like Paste. Date - Will Paste, at the current cursor location, the current Date in your normal Windows Short format. Time - Will Paste, at the current cursor location, the current Time in the format hh:mm:ss AM. (12 hr format with trailing AM/PM indication. ClipDate - Will insert the current date, in normal Windows short format, into the Clipboard. ClipTime - Will insert the current time into the Clipboard in the format hh:mm:ss AM (12 hr format with trailing AM/PM indication). IsoDate - Will Paste, at the current cursor location, the current Date in ISO format YYYY-MM-DDD. IsoTime - Will Paste, at the current cursor location, the current Time in the format hh:mm:ss (24 hr format without AM/PM). ClipIsoDate - Will insert the current date, in ISO format, into the Clipboard. ClipIsoTime - Will insert the current time into the Clipboard in the format hh:mm:ss (24 hr format without AM/PM). ClipPath - Will insert into the Clipboard the full path and filename of the currently edited file. ClipName - Will insert into the Clipboard the filename of the currently edited file. SetInsert - Will turn Insert mode ON regardless of its current setting. ResetInsert - Will turn Insert mode OFF regardles of its current setting. * New key-mapping capabilities for labels and tags. To define a key to set a label or tag, {.label} and {:tag} are used. To define a key to clear a label or tag, {.} and {:} are used. To define a key to toggle a label or tag, {..label} and {::tag} are used. * New line command H/HH ("Here"), which can be used as a destination for the line copy (C/CC) and move (M/MM) commands in much the same manner as A/B line commands are used. The lines marked by H/HH will be REPLACED by the copied or moved lines; the lines originally marked with H/HH are deleted. * Two new line commands U/UU ("Use") and T/TT ("Take") may be used to specify line range operands to many of the Primary commands (CHANGE, CREATE, CUT, etc.) When a valid range has been marked with these commands, affected Primary commands will react as if a line range had been specified as part of the command itself. These new line commands effectively replace the use of the C/CC and M/MM line commands when used in conjunction with Primary commands, which now use U/UU in place of C/CC and use T/TT in place of M/MM commands. The existing C/CC and M/MM are now used exclusively to copy and move lines around in the edit file, and are not referenced any more by primary commands. * The Primary command line area will now scroll left/right as needed so that commands of any length can be entered. Previously, if commands like FIND and CHANGE were entered with long text literals, it was very easy to 'run out of room' to enter the desired command. * Support for the 'K' line command modifier ("Keep"). When added to a line command, the command will be retained following the normal line operation. For example if a CK is entered on a line, and A on another, then after the copy of the line from the CK line to following the A line, the CK line command will remain in the line-command area. All that is needed is another A command to repeat the Copy. Unlike ISPF's implementation, 'kept' line commands are only removed by specifically blanking them, or via a RESET COMMAND primary command. * Support for two new line command modifiers, '+' and '-'. When added to a line command, it requests that the lines, following the specified line operation, be Excluded ('-') or UnExcluded ('+') from the display. For example, copying lines using a CC- / CC pair to mark the source lines, will perform the Copy and then hide the lines marked by the CC commands as if the lines were marked with XX line commands as well. If a CC+/CC pair were to be used, any excluded lines within the CC+/CC block will be unexcluded upon conclusion of the copy command. When + or - is added to an A or B line command, the A or B itself is not changed, but the target lines themselves that are moved or copied After or Before that point are excluded (-) or unexcluded (+) as the move or copy takes place. * A new primary command TAG and associated enhancements to other commands now provide a powerful tool to locate and mark (i.e. TAG) lines. These 'tagged' lines, whether contiguous or not, can now be isolated for processing by other commands. Thus you are able to apply multiple criteria to select the lines to be processed. For example, the following commands: TAG :AB ALL 'AB' 10 CHANGE 'ONE' 'TWO' ALL :AB would first Tag all lines which have AB in column 10 with the Tag :AB, and then would change ONE to TWO on ONLY those lines previously tagged with :AB. Tags can be set 'en masse' via the TAG command, or manually by entering a Tag in the line number field. A Tag is a : followed by up to 5 characters. A tag is much like a line label (.HERE), except the same Tag can appear on any number of lines. * A special 'generic' tag of :ZALL can be used to reference every line having a line tag of any kind whatsoever regardless of tag name. Similarly, a tag of :\ZALL can be used to reference every line NOT having a line tag. :ZALL and :\ZALL are useful on commands such as FIND, CHANGE and EXCLUDE. * A label and a tag may co-exist on the same line (the label and tag are said to be "co-located"). When this condition exists, only the label will be visible in the sequence area of the affected line. When the cursor is placed anywhere on the affected line, the tag name will appear below on the status line. Additionally, for such lines, the blank column that normally appears between the sequence number field and column 1 of the data line will contain a : colon as a visible reminder that this line, which has a visible label, also has an undisplayed tag name. If the label for this line is removed (in the usual way) the undisplayed tag will reappear in the sequence area. * The primitive keyboard command "(Delete)" will now delete a currently highlighted block of text on the screen. This works for highlighted blocks having single lines and for multi-line blocks. * For consistency, the CUT command will now accept a REPLACE keyword even though this is the default if APPEND is not coded. In addition, CUT will now accept the X and NX selection criteria to be used along with normal line range selection. * The CREATE and REPLACE commands may now optionally use the full range of line range commands, tag selection and X / NX selection when specifying the lines to be included. * The SORT command may now optionally use the full range of line range commands, tag selection and X / NX selection when specifying the lines to be included. This means that scattered lines may be sorted independently of the intervening lines. (For SORT X to operate the same as mainframe ISPF, it must be specified in SPFLite as SORT X DX to keep sorted lines excluded.) Also, new codes may be added to explicitly request a case sensitive sort (C) or a case insensitive sort (T). These C or T codes may stand alone to apply to the entire sort, or may be combined with A or D to control individual sort fields. The default for SORT's case sensitivity is the same as the current profile setting for the CASE option, which is also C or T. (Note that the current CASE setting also appears as the letter C or T on the status line.) Former uses of Tritus SPF will notice these features and options are essentially the same as the Tritus SPF implementation of SORT. * Two new primary commands NFIND/NF and NEXCLUDE/NX. These are effectively the negative versions of FIND/F and EXCLUDE/X, that is, they perform the 'NOT found' version of the tests that normal FIND/EXCLUDE do. For example, NFIND 'ABC' 10 will locate the 1st line that DOES NOT HAVE the characters ABC in column 10. NEXCLUDE ALL 'ABC' 10 would exclude all lines which DO NOT HAVE the characters ABC in column 10. In particular, starting from a file with no lines excluded, the command NX 'ABC' ALL will result in only lines containing 'ABC' still displayed. (Some editors refer to this capability as an ONLY function.) * Two new primary commands SHOW and NSHOW. SHOW directly corresponds to EXCLUDE (X) with the same syntax, and NSHOW directly corresponds to NEXCLUDE (NX) with the same syntax. Whereas EXCLUDE/NEXCLUDE only consider non-excluded lines (and based on some criteria, select lines to become excluded), SHOW/NSHOW only consider excluded lines, and based on some criteria, select lines to become un-excluded. * Many of the commands which support line range operands (CHANGE, CREATE, DELETE, EXCLUDE, FIND, FLIP, LC, NEXCLUDE, NFIND, RESET, SC, SORT, TAG, TC, UC) will now also support two new operands DX and MX. These are used to override the normal action of line searching where a located line, if in excluded (X'd) state, will be unexcluded. The DX option (don't change exclusion) will leave the excluded status unchanged. That means, previously excluded lines will remain excluded, and previously unexcluded lines will remain unexcluded. The MX option (make excluded) will force the line into excluded status, regardless of what its prior exclusion status was (excluded or not excluded). MX and DX should not be confused with X or NX. X or NX on a command is used to decide which lines should be used or acted upon, based on their current exclusion status. MX and DX control what the exclusion status of those lines is to be set to, after the command in question is completed. The distinction is important to understand, because X or NX can be combined with MX or DX on the same command. Example: To change all occurrences of 'ABC' to 'DEF' on excluded lines, and then leave them excluded, can be done by the command: CHANGE 'ABC' 'DEF' ALL X DX * Two new line command modifiers which apply to some specific line range commands: (C, D, LC, M, O, S, SC, T, TC, UC, X, H, U). These new modifiers / and \ are used to represent a range of lines that extends from the entered line all the way to the top (\) or all the way to the bottom (/) of the file. For example entering D/ as a line command means "Delete all lines from here to the bottom". The / modifier may be thought of as a shortcut to typing '9' many times to mean 'all the lines from this point forward' like a line command of D99999. Instead of typing all those 9's you can just say D/ to do the same thing. The \ is basically the same idea, but it works in the opposite direction. * The LOCATE command has now been enhanced greatly to not only locate specific line numbers or labels, but can now be used to generically search for lines in various conditions. e.g. LOCATE NEXT LABEL will find the next line containing any label. LOCATE CHANGE will find lines flagged by the ==CHG> line marker. Other options are EXCLUDED, TAG, SPECIAL, KEEP, LONG, and COMMAND. The FIRST, LAST, NEXT and PREV keywords are also supported. LOCATE LONG is used to find lines longer than the specified LRECL length. * A new Picture-like string called a Format is now supported. Format strings use a type code of F instead of P. Format strings differ from Pictures in that the codes other than those used for copying string characters (=, < and >) are not associated with positions in the source text. This makes it possible to use F strings to "insert" and "format" values in ways traditional P strings cannot do. * New features with Picture and Format strings: The ~ tilde code may be used to skip over, or "delete" corresponding positions from the source string; a change Picture or a Format need not be the same length as the search string; the use of search picture codes like $ and @ in change pictures has been relaxed; these codes are now permitted (whereas in ISPF, these codes cannot be used in change pictures even though they otherwise have no special meaning). * A new command CASE, which takes an operand of C or T. CASE is a PROFILE setting and is associated with the file type. CASE controls how a search string is treated in FIND, CHANGE and similar commands, and is used when a string is not enclosed in quotes, or if a string is enclosed in quotes but does not contain a type code like C or T. CASE does not affect letters that are within R strings, and does not apply to X strings, but does apply to P and F strings. For CASE C, the case of letters is treated "as is" or case-sensitive; for CASE T, the case of of letters is treated as case-insensitive. The current state of the CASE option is shown on the status line as a C or T. The current CASE setting is respected by the SORT command. As well, when Picture or Format search strings (with string types of P or F) contain letters, the matching process for these letters respects the CASE C or CASE T mode in effect at the time. When search strings contain explicit C or T string types, the C or T search string and its case-sensitivity is honored as in traditional ISPF, and the CASE mode in effect at the time is disregarded for such strings. In conjunction with this change, SPFLite fully supports and respects search strings of both types C and T, which it did not do previously. * Case-conformant text changes may be achieved by using a string of T'xxx' as a change-string value. The character casing of the result string will conform to the casing of the source string, which is determined on a string by string basis. When a case-conformant change string is longer than the search string, the upper or lower casing of the 'tail end' of the result is determined by 'propagating' the case of the last letter of the search string. For example, CHANGE T'one' T'two' will change 'one' to 'two', 'One' to 'Two' and 'ONE' to 'TWO'. CHANGE T'ONE' T'FOUR' will change 'One' to 'Four' because the casing of lower-case 'e' in the third position of 'One' becomes propagated to the fourth position of T'FOUR' to become 'r'. * A new "show" line/block command S/SS is used to un-exclude a range of lines, regardless of the prior exclusion status of a block. If the S line command is placed on an excluded line range, that entire excluded range becomes un-excluded. This is a new use for the S line command, and the legacy ISPF S line command has been renamed to SI (Show Indentation). The S/SS line commands may be thought of as the opposite of existing line commands X/XX. * KEEP and DROP primary commands may be used to selectively delete certain lines when groups of two or more adjacent lines have the same line tag. * A relative line label uses a defined line label to define a region of lines with respect to that label. The following describes all allowable forms of relative line labels: .ABC the line .ABC .\ABC or .<>ABC or .¬ABC all lines other than line .ABC .>ABC all lines after line .ABC .>=ABC the line .ABC and all lines after it . ------. This is a 'fixed format' layout which is easier to find and read, especially when a file contains many interspersed instances of excluded and non-excluded lines. * File Manager will 'remember' the displayed list's position properly so that returning to the FM screen will not lose positioning. * The HELP command will now accept an operand to allow opening the Help file directly at a specified primary or line command. e.g. HELP EXCLUDE. * The DELETE primary command has a new, relaxed syntax that accepts the keyword ALL but treats it as optional and assumed. This makes the DELETE syntax compatible with many different SPF-type editor programs. In addition, unlike ISPF, the command DELETE ALL is now allowed in SPFLite as a legal command and will delete the entire edit file, and thus must be used with care. Between 4.4.7 and 4.4.9 ======================= * The 4.4.8 and 4.4.9 releases were entirely bug fixes, no new features. Between 4.4.6 and 4.4.7 ======================= * Correct intermittent crashes when ENDing an Edit. * Correct character case testing in the Picture literals to correctly handle the additional characters in the European languages. * Correct display handling of long path names in File Manager when screen width is very narrow. * Correct handling of Newline key when display is in Hex mode. Between 4.4.5 and 4.4.6 ======================= * Use different Installer / packaging to prevent false AV warnings. * Correct error in CLIP mode not autosaving to Clipboard at END. Between 4.4.4 and 4.4.5 ======================= * Correct error in CANCEL of a newly created file. * Correct error in calculating visible top/bottom of display screen. This could affect positioning performed by Find/RFind/Change/RChange processing. Between 4.4.3 and 4.4.4 ======================= * Correct bug in Find/Change using the WORD option. Between 4.4.2 and 4.4.3 ======================= * Correct minor bug in marking textvia the keyboard. Between 4.4.1 and 4.4.2 ======================= Enhancements / New Features =========================== * The SPFLite screen can now be re-sized by normal stretching operations, in addition to specifying the width and height in the Preferences - Screen setting. Altering the Font selection or Font size is still done in the Preferences settings. * Add monitoring of files while they are being Edited/Browsed for changes by other applications in the system. When modifications are detected, you will be given the option to reload the modified data and replace the text currently in the edit buffer. * Add Column Marking. This option is similar to TABS. It will provide a slim vertical line on the screen at specified column locations to assist in aligning columnar data. The columns specified are independent of TABS columns; they may be the same, or different. The color of the vertical line is specified in the Preferences - Screen tab. The column marking is retained between sessions, and may be different for each file type. The new MARK line command is otherwise handled just like the TABS line command. * FIND, EXCLUDE and the 1st operand of CHANGE may now use Regular Expression format for the search. This is similar to the Use of the Picture literal (e.g. P'==##==') for those users who are familiar with and comfortable using Regular Expressions. The operand is coded, like the Picture literal except the leading literal type character is 'R'. For example to find the letters ABC at the end of a line code R'ABC$'. Full details of the Regular Expression syntax will be in the Help file. * Expand key mapping again to add the Ctl and Alt combinations with the numeric (0-9) and special character keys (`-=[];'\,./). As well, allow Ctl and Alt keys to be mapped as individual keys and still be used in combination with other keys. * Prevent Numlock key from altering the overall system Numlock status. * Add Numlock support. The keypad may now be mapped as before for use as Function keys, etc. and will function this way when NumLock is OFF. When NumLock is ON (i.e. LED is lit) the keypad will function as a normal numeric keypad. Since the NumLock key is mappable, toggling between NumLock ON and NumLock OFF must be done with the Shift-Numlock combination. * Display column numbers in status line when cursor is on TABS, BNDS or MARK lines. * Add TOP and BOTTOM/BOT scroll commands. * BNDS added to the settings maintained by file type, like TABS, CAPS, DLMS and MARK. * If OPEN creates an Empty file because the file did not exist, and is still empty when an END command is entered, you will be prompted as to whether you really wish to save the empty file or delete it. * Prevent DLMS line command from removing the blank as a delimiter. If DLMS=> line is completely blanked/erased, then the default set of DLMS characters will be recreated. * Line range operands (.aa, .bb, etc.) support has been added to the following commands: FIND, CHANGE, RESET, SORT, and EXCLUDE * Alter text select to use inverse video of the selection area rather than a simple line box around the selection. * Some New 'primitive' key functions are now available, these are all to provide a more familiar Windows style Cut / Paste operation ability: Users who are running a 4.4.0 or 4.4.1 release will have to manually use Preferences - Keymap to activate these new keys. 'MRKx' four companion commands MRKU, MRKD, MRKL and MRKR (Up, Down, Left and Right) to support marking (MRK) of text via the keyboard in the same manner as text can be selected with the mouse. The keyboard text selection will support selecting areas larger than a visible screen as well as stretching/shrinking of the selected area. Mouse support for selection is still restricted to a single screen. For new SPFLite installs, these will be defaulted to the Shift-Up, Down, Left and Right arrow keys. 'KCPY' new keyboard function to separate the Cut of marked text on the screen from the classic ISPF CUT command which is related to whole text lines selected with CC/MM line commands. It functions like the normal Windows Ctl-C keyboard command. For new SPFLite installs, this will be defaulted to the Ctl-C key. 'KPAS' which is a new keyboard level paste command, different from both the Primary PASTE and BPAS (below) commands. KPAS will allow pasting from the Clipboard into the middle of text lines, as well as pasting into the Primary command line. The function will honor the INS/OVR status to either Insert the text (shifting existing data right) or Overtype the existing data. If more than one line exists in the clipboard, only the 1st line will be used. For new SPFLite installs, this will be defaulted to the Ctl-V key. 'BPAS' (Block Paste) this is the previous BPASTE primary command which has moved to become a keyboard function for compatability with the other cut / paste functions. BPAS will also now position the cursor following the last character of the pasted data. For new SPFLite installs, this will be defaulted to the Alt-V key. Maintenance / Bug Fixes ======================= * Correct handling of the NewLine key when below the last line. * Correct positioning following Paste / Overlay. * Correct an error which caused the Back-Tab function to 'disappear'. * Reset ==CHG> indication on any activity in the line number field as well as text field. * For clarity, add spacer pixels between text margins and screen border. * Add missing aliases for the line commands TAB, BND and DLM. * Add aliases .ZF and .ZL for .ZFIRST and .ZLAST. * Correct Move --> Overlay to work like SPF itself regarding equal characters in the two lines. * A mouse click to position the cursor on the command line will automatically move the cursor to the left margin if the command field is blank. * UNDO now properly restores the modified data indicator along with the data. Between 4.4.0 and 4.4.1 ===================== * Correct nasty startup bug in 4.4.0 Between 4.3.2 and 4.4.0 ===================== Enhancements ____________ * Add additional overall command and operand aliases to match real SPF usage. * Extend PFKeys from 36 to 48 by allowing the Alt-Fx combination to be used. i.e. there are now unaltered, Shift, Control and Alt versions of the F1 thru F12 keys. * Extend key mapping to include Alt-A to Alt-Z, as well as Ctl/Shift/Alt combinations with the following keys: Backspace, Delete, Down, End, Enter, Home, Insert, Left, PgDown, PgUp, Right, and Up. This should considerably assist when using Laptop type keyboards. * The "Re-Open last file at Start" option of the Preferences - General tab has been enhanced so that SPFLite will re-open the SET of files that were being edited when SPFLite last terminated. Note this works properly only when SPFLite is terminated using the Close Button (X) on the Title bar, not if tabs are closed individually. * Alter the 'Modified' indicator. A modified file will now be indicated by the characters (M) in front of the filename on the Tab header. This will allow the modified status of all open tabs to be seen at once as well as on BROWSE and CLIP tabs which previously did not show Modified status. * Enhance File Manager operation to properly monitor for changes in the currently displayed directory regardless of where or how altered. * Allow user control of the delimiters used to determine WORD, PREFIX and SUFFIX searches by the FIND and CHANGE commands. This will allow proper support for programming languages which allow special characters to be part of variable names. e.g. characters like _ . - etc. A new line command DLMS (Delimiters) will display the current set of delimiter characters and you may alter these as desired. Like the TABS line data, the values set for DLMS are retained uniquely by file type. i.e. You may have separate delimiter sets for TXT files, CPP files, CMD files etc. * Add new line command 'N' - New line. This is just like the 'I' - Insert command except the lines inserted are permanent and will remain as blank lines even if unused. * Add a new Primary command - SAVEAS. This saves the current text as a new file and immediately swaps the current tab to using the new filename as the defalt filename. Just like the comparable Windows file system Save As does. * Enhance PASTE command. As well as specifying an A/B to indicate where to insert the data, you may now use the O / OO (Overlay) line commands to request the Clipboard data be overlaid onto existing text lines rather than simply inserted. * Enhance cursor mode (INS/OVR) handling to keep modes in multiple tabs unique. * The CAN/CANCEL command will close the current tab if File Manager is active and switch to the File Manager screen. If File Manager is not active, it will simply 'throw away' the current edit and remain on the current tab. * Support Print Screen key (and its Shift, Ctl, and Alt versions). This will provide 4 variations of capturing the current screen: PrtScr - Captures the entire SPFLite screen to the clipboard in Text mode. Ctl-PrtScr - Captures only the text area of the screen to the clipboard in Text mode. Shft-PrtScr - Prints the entire SPFLite screen to the Default Printer. Alt-PrtScr - Captures the entire screen to a LOG filein Append mode. Note: If you wish a normal Windows Screen Print it should be done when SPFLite does NOT have the keyboard focus, for obvious reasons. Bug fixes / Maintenance _______________________ * Conversion of Help file to different Help Authoring tool. I would appreciate it if any 'oops' in the conversion could be reported. Mostly they will be in the Internal Topic Links which had to be manually converted. * Correct Insert line cleanup following an UNDO command. Remove '''''' line markers earlier in processing to indicate sooner that they are real lines. * Correct parsing of Scroll amount field to better match the real SPF parsing. * Simplify format of the Status line. * Correct cursor positioning when Left/Right scrolling with fixed amounts (PAGE/HALF/etc.) * Correct minor errors in Up/Down commands for differing scroll amounts and RULER status. * Correct missing error messages when error occurs during new tab creation. * Correct RETRIEVE recall when doing repeated recalls of the same command. * Correct parse error in SORT command when optional operands were omitted. Between 4.3.1 and 4.3.2 ===================== * Add error message when invalid Colorize control file statement detected. * Fix Duh! error. An = sign was not being considered a delimiter when FIND/CHANGE were searching for WORD operands. * Correct some errors related to switching in and out of HEX mode. * Correct missing function keys in Preferences key mapping. Sort Real-Key selection list. * Allow mouse selection of blocks of text from the screen (i.e. not necessarily entire lines.) When a CUT command is issued with a selected text block present, then ONLY that selected block is copied. * A new command BPASTE (Block Paste) will perform an overlay type block paste where the current cursor location is the upper-left corner of the paste area. Any existing text is overlaid, lines will be lengthened as needed and additional lines added if the paste block extends past the last line. * Improvements to the loading speed for text files, particularly large ones, and add a visual progress indicator of activity during loading or saving of large files. * Allow key mapping of the Ctl-A thru Ctl-Z keys. Activate via the KeyMap tab of Preferences. The default is as in previous versions (NOT to map) and to pass Ctl keys through as normal text characters. This will aid SPFLite on laptop keyboards where it is easy to 'run out' of map'able keys. As well, mapping (for example) Ctl-C and Ctl-V to PFKeys set to CUT and BPASTE will allow cut/paste operations using familiar Windows short-cuts. Between 4.3.0 and 4.3.1 ===================== * Correct error in assigning default directories. Between 4.2b and 4.3.0 ===================== * Alter default mapping for the KeyPad Ins/Del keys to actually BE Ins/Del. * Several cosmetic changes related to cursor positioning after some commands to more closely match the real ISPF actions. * Correct certain cursor positioning when movement passes through Excluded lines. * When using File Manager, a mouse Left-Click may now be used on any of the detail line items displayed to simulate the entry of an "S" (Select) + for that line. This provides an alternate and usually quicker method of navigation when moving up/down/through file directories. * New option for the naming of BKP files. Previously the .BKP level was always added to the end of the Edit filename (e.g. Test.txt backup would be Test.txt.BKP). This caused the filetype of all backup files to be the same and also incorrectly reflect the type of file. A new Preferences option may be selected to have the .BKP level INSERTED before the file type. (e.g Test.txt backup would be Test.BKP.txt) * Add support for basic handling of UniCode encoded files. The support provides for translation on Input and for re-translation to the same encoding format on output. While editing, only normal ANSI character handling is performed based on your current default codepage. Encoding support is provided for UTF-8 and UTF-16 (both Big-Endian and Little-Endian). See the new ENCODING command as well as a new Help section "Handling Unicode Files" * Alter handling of filenames and default directories. It had become rather inconsistent since the introduction of the File Manager option. Now, when no operand at all or only a simple unqualified filename is provided for the CREATE, REPLACE, OPEN or EDIT commands, the default directory used for writing the file or for the file open dialog's starting directory will be determined as follows: -- If there is an active file being edited in the tab where the command is issued, then the Path for THAT Active file is used as the default for the command. -- If there is NO active file (i.e. the tab header displays (Empty): -- If File Manager is active, the current displayed directory of File Manager will be used. -- If File Manager is NOT active, then the Preferences setting for Default Open directory will be used (Last Used or Working). Remember 'Working' means the Windows working directory when SPFLite was started. * As well as the above, file names passed on the command line to SPFLite when starting, will always use the Working Directory as the default location unless the passed filename is a complete full pathname (which will of course be used). Between 4.2a and 4.2b ===================== * Adjust TS line command to keep indent of split lines the same. * Correct calculation of mouse click cursor location when adjacent to window border. * Correct Profile Preferences dialog. The Mouse and Key Mapping pull-down lists for 3270 keys were missing the UP, RIGHT and TAB settings. Between 4.2 and 4.2a ==================== Bug Fixes --------- * Correct Colorise parsing error introduced by the new ESCAPECHR support. * Correct cursor positioning in File Manager when switching to directories with fewer display items than the previous directory. * Correct corrupted Help and PDF Documentation files. Between 4.1c and 4.2 ======================== Enhancements ------------ * Introduce an optional integrated File Manager to assist in managing and selecting files for Edit or Browse, and for basic File Delete & Rename functions. This support can be activated via an option on the Preferences - General Tab. * Improve Colorize support: > New MIXEDCASE YES/NO option to Colorize files to support languages which are sensitive to the case of keywords. (e.g. Java) > New ESCAPECHR x option to allow specification of an ESC character sequence for those languages that use this. e.g. With ESCAPECHR \ the following would be a valid literal. 'What\'s the answer' * Add two new text support line commands: SC / SCSC - Sentence case. Convert the text to sentence format. All words are first lower-cased, then the first word of each 'sentence' is capitalized. TC / TCTC - Title case. Convert the text to Title format. All words are first lower-cased, then the first letter of each word is capitalized. * Reinstate the Scroll amount field on the SPFLite screen to allow setting a different default scroll amount from the previous CSR only default. Add another Preferences value to control the default starting value for the field. If not altered, the default will be CSR as in previous versions. * An optional Label is now available for PFK definitions. If used the label will be displayed by the PFSHOW line(s) rather than the actual command and its parameters. To enter a Label, simply prefix the actual command with the label enclosed in square brackets. e.g. [Test Data]Can;OPEN "D:\Public\Data\Test Data.txt" assigned to PFK5 would display in the PFSHOW line as 05=Test Data rather than 05="Can;OPEN D:\Pu... * Implement the CRETRIEV primary command. * Add a visible "Changed" indicator to show a file has been altered since Open / Last Save. * Add X and NX operands to PRINT to allow printing of only excluded or non-excluded lines. Bug Fixes --------- * Correct handling of Locate commands past the last line. (e.g. L 999999) * Correct Find/RFind handling of 'Not found' and wrapping back to the top to continue the search. * Altered scanning of multiple mixed line commands to improve the 'sorting out' of non-contiguous sets of commands. e.g. Copy/Move --> After groups with interspersed Immediate commands (I / D type). * Correct Preferences reporting a false error related to Key Mapping when no change to Key Mapping had been performed. * Correct OPEN processing when specifying a non-existent file from the Open Dialog. * Correct error in loading Colorize control files. * Revise RETRIEVE handling to more closely match the normal IBM ISPF handling. * Correct logical Screen position following a CANCEL command. * Correct parsing of stacked commands with embedded Cmd delimiters within literals. * Correct inadvertent altering of the Screen Height setting when PFK Show is activated. * Correct incorrect display of PF24 when PFSHOW is used. * Correct handling of Up/Down commands when cursor line is being deleted. * Correct colorize keyword lookup, it was somewhat less than 100% accurate before. * Correct colorize parsing error related to the COMMENT2 delimiter. * Correct error in shutting down when AUTOSAVE is set to ON. * Correct intermittent 'phantom' cursor when switching tabs. * Correct error when opening a new file in a 'CANCELed' tab. Between 4.1b and 4.1c ======================== * Correct internal remnants of one line command corrupting subsequent line commands. Between 4.1a and 4.1b ======================== * Correct previous bug fix which caused pending line commands to be overlooked. Between 4.1 and 4.1a ======================== * Correct CREATE / REPLACE treating MM line commands as CC commands. * Keep current screen location following CREATE / REPLACE command completion. * Correct handling of default directory when multiple tabs open to different directories. Between 4.0Beta2 and 4.1 ======================== * Performance improvements for simple cursor movements. * Correct handling of line number references on CREATE / REPLACE / CUT / PRINT commands. * Change PAGE command name to SWAP (more logical and matches ISPF usage). PAGE will be kept internally as an alias for SWAP. * Correct handling of COPY and PASTE commands when other line commands, in addition to the required A/B location specifier, are entered at the same time. * Add additional aliases for LCLC/UCUC commands (LL/UU) and correct parsing error on line commands which would allow numeric repeat factor on commands which do not need/support it. * Internal changes to simplify code re: Windows common dialog prompts. * Add new Line Command (J) - Join, which will join the specified line with the next line. e.g J..... Here's some text ...... Some more text would become the single line ...... Here's some text Some more text Note multiple embedded spaces are not compressed (like the TF command) nor are leading spaces removed from the lines. * SPFLite will now accept files via Drag/Drop onto the window to OPEN them (in a new tab if the currently selected tab is not (Empty). * Correct handling of Background color setting when change is made from a tab running with a colorize setting with a different BG color than that set in the Preferences - Screen tab. * New PROFILE option to request all SPFLite edits be kept as tabs in a single window. e.g. If turned ON, a file dropped on the SPFLite Icon, would simply Open as an edit, in a new tab, in the existing SPFLite session. A separate window can always be created via the EDIT command in the currently active window, which will always open a new independent window. * Ctl-LeftArrow and Ctl-Right arrow will now provide a 'quicker' way to move the cursor left and right. The cursor will be moved to the start of the next/previous word on the line. At the left/right end of the line, the cursor will move to the appropriate word on the prev/next line. These keys are only active on text lines, and 'word' is a simple blank delimited string. i.e. multiple words within quotes (e.g. a literal) are NOT considered to be one word. If you dislike compound key sequences, the functions can be re-assigned to some other keys (like a PFK) with Profile Preferences - Key Map. The keys are named CTLF and CTRT. Between 4.0Beta1 and 4.0Beta2 ============================= * Correct default minimum size for Cursor size in Preferences - Screen to 20%. Values lower than 20 may not even appear on certain Font / Screen resolutions. * Correct Left/Right mouse click event handling (inadvertently crippled - Oops). Between 3.2 and 4.0Beta1 ======================== * The main enhancement in this release is the addition of a Tabbed interface. You can now open multiple edits in the same window. Each edit will appear in its own Tab. Short description of Tab handling: > An OPEN command issued in an Edit session containing existing data will open a new tab. > An OPEN issued in an 'empty' tab (e.g. from a prior CANCEL) will open in the same tab. > Switching tabs can be done via the mouse (clicking on the desired tab) or via a new primary command PAGE Next/Prev. The command would typically be assigned to a PFK. > An END command will close the active tab (saving if appropriate). > A click on the Window Close button (X) will cause all tabs to close (with saving as appropriate) * Correction to line number reset in Copy/Overlay handling. * Correct recovery from illegal line commands on Top / Bottom of File lines. * Correct RFIND start search location when cursor is not in the data area. * Prevent program crash using X99999 line command on large files with multiple large blocks already excluded. * Correct handling of CRLF setting in the Preferences General tab. * LOCATE (L) command will now un-'X' the requested line if it is currently X'd out' * Enhance FIND parsing to 1) Prevent mixed numeric/alpha operands being treated as numeric 2) Allow simple single numeric operands to be treated as literals e.g. FIND 1234 will be treated as FIND "1234" * Correction to FIND FIRST for incorrect starting column on 1st line. * Reduce unneeded space in preferences dialog to reduce total height. * New preference option for the Window Title. The filename may be chosen to be 1st in the title line. This means the text in the Windows Task bar will properly identify which file is edited rather than always saying "SPFLite (Vx.y)....... * New Preference option to replace the Blob cursor setting. You may now control the height of the Normal and Insert cursors individually, each based on a % height of a full Blob cursor. The defaults are 20% for a normal cursor, and 90% for an Insert cursor. * Correct handling of cursor positioning when Enter is pressed while the cursor is in the Line number area. Between 3.2 and 3.1a =================== * Performance improvements for scrolling of large text files. * The code for handling of data entry in the line number area has been totally replaced. The 1st action in the line number area will now blank the whole field to avoid possible incorrect line commands being formed by a blend of typed characters and previous line number numerics. This change also removes the need for the 'Insert in Line number safely' option which has been removed. * Support has been added for bookmarks (line labels). Any character string starting with a period may be entered in the line number area. e.g. .here, .there, .back, etc. Once entered you can reposition quickly to the bookmarked location with the Locate command. For example,entering L .here would scroll the bookmarked .here line to the top of the screen. As well, primary commands which can have line number operands will accept either absolute line numbers or bookmark labels. e.g. PRINT NONUM .from .to (assuming the .from and .to labels had previously been assigned). Primary commands affected are: CREATE, CUT, DELETE, LOCATE, PRINT and REPLACE. * Enhancements to the CUT command. * CUT command will will now ignore X'd lines which are included in the CUT range. This will allow CUT'ing of fragmented ranges of lines by excluding the undesired embedded ranges. * The CUT command will now accept an APPEND command (or any abbreviation of it) to request the specified CUT range be ADDED to the current contents of the clipboard. e.g. CUT 10 20 APP * Prevent internal commands appearing in the RETRIEVE stack. * Correct cursor positioning after an 'S' line command on an Excluded range. * Correct Preferences processing when invoked by a PFKEY command. * Correct Preferences 3270 Key List (typo for PF34) * Minor spelling errors corected. * An EDIT filename, or OPEN filename command where the filename does not exist, will continue and open the file as a new, empty text file rather than report an error. A CANCEL out of the edit will delete the newly created file (e.g. it was a typo) * The HIDE command is now a 'toggle' type command (like HEX) to turn HIDE mode on and off. The HIDE operand of RESET has been removed. * The RESET command now supports the CHANGE, COMMAND, EXCLUDED, LABEL and SPECIAL operands. * EOLN (Erase to end of field) now works in line number area. * SPFLite previously always initialized using the last used directory as the starting directory. a new option now allows you to specify that it should use the 'Working' directory as the default. * Format of the COLS and RULER line altered to match the format of IBM's ISPF. Between 3.1a and 3.0b =================== * Correct initialization code so -CLIP command option is handled properly. * Correct Preferences handling of Insert Line Numbers Safely. * Correct display of INI file name at the bottom of the Preferences Dialog so that long path/filename combinations are not truncated. * Correct handling of Status Line after change in color preferences. * Correct repaint of selected color choice in Preferences. * Show effect of selected color in main window while choosing colors in Preferences. * A filename specified as an operand when starting SPFLite will, if it does not exist, cause an empty Null file to be created rather than report as a "File not found" error. If the edit is CANCELed before saving, the file will be deleted. * An UP arrow while in the Command Line when Keyboard scrolling is active will wrap to the last line of the screen rather than remain on the Command line. * The command line option -INIT will now accept a fully qualified filename. If this is provided in place of the 'simple' INI name then SPFLite will use the noted filename, even if it is NOT in the normal INI path. A 'simple' name will still be searched for in the normal INI path. * The command retrieve stack, used by the RETRIEVE command, will now only save unique values (it will not save the same command twice) and will also now save the current stack between SPFLite sessions. * Add support to Picture literals for the '.' character (any non display character). The Preferences > General tab now also contains a setting to allow specification of 'normal' characters. This will allow customization of 'normal' to include national characters (Å, Ç etc.) and other special characters (Euro €, Pound £, etc.) Between 3.0b and 3.0a =================== * Remove PFK line insertion fix for review, it was seriously flawed. * Correct handling color selection of Line Number area Hi/Lo. * Correct Preferences handling of Screen Height when PFK Show is active. * Correct Font selection when OK pressed with no font actually selected. * Correct handling of Keyboard Scrolling selection (it was not being saved). * Corrected logic in handling BKP file creation. Between 3.0a and 2.16 =================== * Major change to the saving of Profile and Initialization settings. Previously some were kept in the INI file, and some in the System Registry. These settings have now been combined and will be kept in a new format INI file. The INI file is now in 'standard' INI file format. * Direct editing of the INI file is no longer needed (nor recommended). All INI settings are now alterable by a Tabbed Preferences dialog. This is reached via the PROFILE command. * The TRY command no longer exists, the preferences dialog now serves this purpose. * The former PROFILE and PFKEY commands will both now invoke the Preferences Dialog. * To better handle security in Vista (and later) systems, the INI file will no longer be stored in the Install directory, but in the standard user documents folder (e.g. My Documents\SPFLite in XP, or Documents\SPFLite in Vista). * User macros (*.SPM files) and colorize files (*.CLR) files will also be stored in the same data directory. The initial execution of SPFLite V3.00 will handle copying these files to the new location. * Screen color customization can now select the full range of available colors, not just the simple basic 16 'standard' colors. * CLR (Colorize control files) may also now use the full range of available colors. See the Help Appendix for the change to the SCHEME statement. * As much as possible, previous settings have been migrated automatically, however it was not possible to handle them all. The first execution of this release will automatically place you into the Preferences Dialog. Two main areas not converted were the Keyboard Mapping, and the Screen color settings. As well TABS settings which were automatically saved for each edited file type will not have been converted. * If SPFLite is copied to a removeable drive (e.g. a USB thumbdrive) and executed from the removeable drive, then the EXE file location will be used to look for the INI, SPM and CLR files. This will enable a properly customized SPFLite to be used on systems to which it has never been installed. * Correction to handling screen background color during colorize processing. * Correction to handling of LEFTCLICK and RIGHTCLICK options when the CHRx option is selected. * Correction to UP command when cursor is in line number area of the last line on the screen. * Correction to PFK insertion of line commands when the cursor is IN the Top Of Data / Bottom of Data text area. * Yet another tweak to line command parsing. * Correct Find logic when search literal contains trailing blanks, or is all blanks. * Some more optimizations using new compiler features. Between 2.16 and 2.15 =================== * Correct handling of dead keys with International keyboard layouts. * Add support to CLR files to point at a different (common) CLR file to use. This will allow a single common CLR file to support multiple source file types. See Help file for more details. * Add Beep (if ERRORBEEP ON) when character key hit when in a non-typeable area. * Finally (for the many requesting it) add HEX support. * Add support for Hex literals as well. e.g. x'3132'. * Add PROFILE option (ROpenLast - Yes/No). If YES, and no filename is provided on the command line, SPFLite will re-Open the last file edited when starting. Between 2.15 and 2.14 =================== * Correct nasty bug which, for larger files, would cause lines to be split in two. Between 2.14 and 2.13 =================== * Correct FIND/CHANGE command parsing for handling bounds overrides when global BOUNDS values are active. * Add new command line parameter to allow alternate INI files to be specified. This will allow separate Startup Icons to be created for different screen sizes, keyboard mappings, etc. * Due to previous item, parsing of the command line is slightly altered. If you currently use the CLIP or BROWSE options, a trivial format change to the operands is required. * Correct LOCATE command positioning when used in stacked commands which also move the cursor when non-data lines (X, BNDS, etc.) are present. * Correction to properly save PROFILE ERRORBEEP setting. * Correction to CHANGE ALL X so that all occurrences on an X'd line are done, not just the 1st. * Leave cursor position unchanged unless needed when processing PFK commands. * Alter file reading routine to always read to the true EOF. Previously an embedded Ctl-Z was treated as the end of file. * Add support for the Data Shift line commands: << < > >> . * Add new TRY command to allow testing new Screen Width / Height / and Font selections. * Add new EDIT command to spawn additional SPFLite sessions. * Give up on Windows MSI files for the installer. Way too picky; way too slow. Between 2.13 and 2.12 =================== * Add NOFLUSH command for Batch files to prevent a command error stopping the execution of following commands. e.g. a series of CHANGE commands where some of the search values may not always be present. * Correction (further) to Line Command parsing. * Enhance keyboard routine which did not support Shift and Ctl with the Function keys to support additional function keys. Note that this change has altered the DEFAULT sample INI file. If you have a customized INI file you should review it to see if you might use this support. Note also the default ENTER key is now Enter (not Right-Ctl) as this seemed to cause a lot of confusion to new users before any customization was performed. * Variety of cleanup in handling command line refreshing when command syntax errors occur. * Corrections to keyboard handling of Numeric keys and Numlock combinations. * Corrections to Search commands when search literal has trailing blanks and the searched for text occurs at end of line. * Correction to F and L line commands to properly adjust for subsequent line commands. * Correction for CANCEL command not resetting Left/Right scroll. * Correction for Line Insert not scrolling to inserted line. * Correction for FIND/CHANGE ignoring cursor position if in the line number area. * Add a few more aliases for primary commands. * Add support for the S (Show) line command. * Correction to tab handling when on Top/Bottom of Dataset lines. * Correct window title of Help file. Between 2.12 and 2.11 =================== * Correction to PFKEY command which ignored settings for PFK10. * Addition to Colorize support to allow unique color for quoted literals. See the Appendix description of Colorize support for the new QUOTED keyword. * Correction to handling variable substitution in macros. * Correct RUN command to invoke all commands IN the SPFLite install directory. * Allow PFK definitions to stack Primary Commands after an initial Line Command. Between 2.11 and 2.10 =================== * Enhance the RUN command to allow use of the variable substitution characters. (~f, ~p, etc.) * Addition of ~l/~L variable for the current line the cursor is on. * Addition of Source Colorize support. See new PROFILE COLORIZE option and Appendix description of Colorize support and Keyword file layout. * Correction to CREATE and REPLACE commands when used with a new file to load the appropriate TABS and Colorize defaults for the file extension. * Correction (again) to line command parsing. * Correct error which caused the command line to sometimes appear to not be recognized. * Correction to PASTE command to properly handle text data with non-standard line delimiters. i.e. MAC or UNIX type line endings. Between 2.10 and 2.9 =================== * Correction to line command handling of MM/OO ranges where scrolling is needed to enter the commands. * Correction in handling copied/moved BNDS or TABS lines. * Correction to Change command handling of blank search string and column oriented data. * Correction to handling of RETRIEVEd commands. * Correction to Save Open file dialogue from forcing .txt extension. * Correction to parsing of operands containing mixed single and double quotes. * Correction to search logic during backward searches (PREV operand). * Correction to search hi-lighting when line ultimately becomes Excluded. * Enhance search logic to treat short or null lines as space filled during compares. * Blank lines in the INI file are now treated as comments. * Addition of optional Beep for error messages. See PROFILE ErrorBeep ON/OFF. * Addition of PROMPT as an option of PROF AUTOSAVE in addition to ON/OFF. * Addition of CAPS status to filetype data saving along with the TABS line. * Addition of support for a limited Macro ability. Support for a simple file of Primary commands with operand variable substitution. * Addition of a Font package on the SPFLite web site to supply some alternative fixed pitch fonts for use with SPFLite. Between 2.9 and 2.8 =================== * Corrections so that Shortcuts dropped on the SPFLite icon will properly open the file to which the shortcut points. * Correct error where the 'F' Line command prior to a Change command could corrupt Data. * Correct error which could cause crashes at program termination under some Windows versions. * Correct error in PRINT command handling of line ranges. * Improvements to File loading speed for larger files. * Update to finally add UNDO support. * Update to allow keyboard mapping to specify a actual character to substitute as well as the normal 3278 control keys. e.g. make the keypad back into a 'normal' numeric keypad. * Update to support NONUM operand on PRINT command. * Update to support a BROWSE mode to prevent accidental changing and saving of data when using SPFLite to simply browse files. * Update to support optional Cursor Blink/Noblink * Update to support an optional Status line on the bottom of the screen. Line will show status of: Insert, Caps, Screen cursor position, and logical data cursor location. * Update to support optional display of PFK definitions at bottom of screen. Refer to new SET values in the INI file for: > CursorBlink option > StatLine ON/OFF > UNDO number of levels specification > Color definitions for the New Status and PFK Show lines > Sample use of new Leyboard mapping option (CHRx) Refer to the PROFILE command for PFK definition display (PROFILE PFKSHOW). Between 2.8 and 2.7 =================== * Corrections to line command handling of ranges with Excluded lines. * Corrections to restore the RETRIEVE command damaged by a fix in the 2.7 release. * Corrections for window Title bar contents following a CANCEL command. * Updates to keyboard support. SPFLite should now support alternate keyboard layouts. Between 2.7 and 2.6 =================== * Corrections to scrolling when there are pending Line Commands. * Several new customization options related to how Insert Mode is handled. There are four new PROFILE options: INSMODE - ON/OFF - specifies whether to start in Insert mode or not - default OFF. INSRESET - ON/OFF - specifies whether to reset active Insert mode to the default INSMODE on an Attn key. Default ON. INSSAFELN - ON/OFF - Specifies handling of Insert mode in the Line Number area. Default is ON. ON - Insert chars only if trailing blanks exist in field OFF - Insert always, shift and truncate at right end as needed. INSBLOBCUR - ON/OFF - Specifies what cursor to use in Insert mode. ON - Use a 'blob' cursor. OFF - Use a normal Underline cursor. Between 2.6 and 2.5 =================== * Correct Title Bar setup when SPFLite started with a filename on the command line. * Corrected cursor positioning for FIND/CHANGE. When CHANGE text contains the FIND string, incorrect positioning caused SPFLite to 'loop' on the text line till cancelled or memory was exhausted. * Correction to handling Repeat value on CC/MM line commands. * Correct location of inserted BNDS line to be BEFORE the requesting line rather than AFTER. * Correct RESET logic handling of 'special' lines (COLS, BNDS, etc.). * Correct several problems when manipulating files with very large line counts. Note: SPFLite's memory management is NOT designed for very large files (> 100,000 lines). It will simply run slower and slower and become basically unusable. Between 2.5 and 2.4 =================== * Implemented the Primary HIDE command and associated RESET HIDE. * Corrected error handling when PASTE issued without an A/B line command. * Corrected line command processing when multiple pending requests are entered. * Numerous corrections to the handling of line commands involving XX'd out lines. The errors ranged from incorrect data handling to outright crashes. * Corrected error in handling MOVE/OVERLAY when fewer source lines than destination lines. * Corrected error in Primary FLIP command. Between 2.4 and 2.3 =================== * Corrected a long-undiscovered bug in handling Move/Overlay when the Overlay lines are higher in the file than the Move lines. Between 2.3 and 2.2 =================== * Alter handling of insert mode typing in the line number area to prevent SPFLite interpreting shifted line numbers as numeric operands. In Insert mode characters will not be inserted unless characters to the right have been deleted previously. e.g. Typing a 'D' in position 1 of Line # (000123) used to shift and leave the field as (D00012) - certainly NOT what was desired. * Corrections to handling FIND/CHANGE/RCHANGE strings, particularly null quoted strings e.g. "" Between 2.2 and 2.1 =================== * Version 2.2 fixes a the same dumb error in the OPEN / COPY primary commands as 2.1 did for CREATE / REPLACE. A true embarrassment to have missed it. Between 2.1 and 2.0 =================== * Version 2.1 fixes a dumb error related to the CREATE / REPLACE primary commands when they are using the standard Windows 'Save As' dialogue box. Between 1.4 and 2.0 =================== * Version 2.0 switches SPFLite from a Console mode application to a normal Windows application. * Almost full keyboard customization is now available. You may re-map nearly all the keyboard control keys as you desire. * Some additional mouse support has been added (including MouseWheel support), however SPFLite treats these all as extensions to the basic keyboard functioning. No change to keyboard operation (other than the new keyboard mapping) has been made. * Keyboard mappings and customization of the screen options have been removed from the PROFILE options and are now contained in an optional SPFLite.INI file for easier access and modification. * A new RULER option is available to cause a ruler to appear as the top line of the data screen. Between 1.3 and 1.4 =================== * Finally, with the assistance of many others in the PowerBasic forums, a way to access the Right-Ctl in SPFLite for use as the SPF Enter key for those who prefer it. See the new PROFILE option RIGHTCTL for details. Activating this option also frees up the BKSP key which will now function as a normal PC BKSP key. * The mouse can now be clicked anywhere on the screen to quickly move the cursor to that location. * A new PROFILE option (AUTOSCROLL) can be turned on which alters the cursor handling within the text data area. Moving the cursor 'past' a boundary will cause the text data to scroll rather than wrap the cursor to the other side of the screen. * The Close button in the Title bar has been re-activated and will be treated as a Primary END command. * Pressing Enter with the cursor on an empty command line will now tab properly. * Additional aliases for some of the Primary commands have been included. * Support is available for altering the command stacking character (default of ;). See the PROFILE option CMDCHR. Between 1.2 and 1.3 =================== * Repeat FIND which reaches the top or bottom (ending in a 'Not Found') will continue from the Top/Bottom as appropriate. * Added alias line commands LCC/UCC for Lower/Uppercase line range commands equivalent to LCLC/UCUC. * Added support for the Picture type literal in FIND and CHANGE commands Between 1.1 and 1.2 =================== * Correction to TF line command re: handling of lines containing quotes and/or double quotes Between 1.0 and 1.1 =================== * Correction to primary CUT command in placing data in Windows clipboard. * Correct PASTE command of text containing TAB characters (they weren't being expanded). * Correct text of PASTE error message. * Add new PROF option (DEL3270) to provide alternate DELETE key handling. * PROF command was not displaying the status of the ENDERASE setting. * Add command line option 'CLIP' to auto Edit/Save the clipboard contents Between 1.0beta and 1.0 ======================= * Improve Left/Right Scrolling when cursor in actual text area. * Add link to Help file in Start Menu Group during install. * Correct extraction of substrings with embedded quotes (like it's). * Correct Text Flow line command (TF) when paragraph is at bottom of document. * Make formatting of window title consistent. * Leave screen position 'as is' after a CUT/PASTE operation rather than TOP. * Really long file names cause problems (grrr!) * Correct really nasty Line Repeat errors (mispositioned Cursor, misadjustment of following line commands, etc.) * Correct Right scroll when max line length < viewable screen width. * Support UNIX/Mac style text files (i.e. line endings CRLF/LF/CR) * Add primary PRINT command. * Correct 'lost' instruction causing SAVE missing filename errors. * Correct TF line command when requested flow column > max. line size * Added CRLF primary command to simplify support for non-WIN format text files. * Additional scrolling and cursor positioning cleanup when multiple commands issued in one interaction. * Added Pop-Up display of current PROFILE options following any change to the PROFILE. * Added Pop-Up display of current PFKEY settings following any PFKEY change.