Change LOG
==========

This is the Change Log for the current SPFLite3 release.  Changes for the
previous release (SPFLite2) can be found in "Changes for Original SPFLite.txt"

Between 3.3.25344 and 3.3.26xxx (Dec 10/2026
=============================================

* Add a new macro function Is_Page(lPtr) to indicate whether a line is marked as
  a ==PAGE> line. (Thanks to MUEH for the new code.)

* Alter the file saving to a network file. After closing the file, SPFLite
  checks the file size reported on the network drive to the # of bytes written.
  The error message will now display both values. As well, the following loop
  which 'waited' till the network value became correct has been removed. The
  loop was originally added to wait for slower LAN drives to 'catch up'.

Between 3.3.25226 and 3.3.25344 (Dec 10/2025
=============================================

* Correct the DEBUG option of SUBMIT, it had been accidentially crippled.

* Correct handling of keyboard input on the lower lines of a HEX display.

* Correct handling of IMACRO names with leading % characters not updating the
  PROF display.

* Add extra validation to the Line Command processor to prevent both Source and
  Destination commands from having a Repeat value.

* Correct error introduced when Panel support was added. It mucked up mouse
  selection of strings in the Command line.

* Correct error in setting a SET variable containing special characters.

* Correct cursor positioning error when deleting scattered line ranges with a
  DEL ALL X type command.

* Add a new Profile Option - SUBINCLUDE - which can specify a folder name where
  SUBMIT INCLUDE files are to be found. The default is NONE - which indicates
  the included files will be found in the same folder as the SUBMIT file.

* Correct error in loading Hercules print files with EOL = AUTONL active. The
  formfeed character (x'0C') was not being remembered as a text line
  characteristic.

* Add new conditional tests to the Keyboard substitution <IF> support. These new
  options allow testing of the type of the Active tab. Supported are EDIT,
  BROWSE, VIEW, MEDIT, SetEDit, EFTEdit, ClipEdit and RDOnly.

* Correct formatting of KEYMAP LIST output to handle <IF> conditional Key
  settings.

* Correct some minor errors in the macro functions supporting Global variables.

* Replace the previous internal Dictionary support used to handle macro Global
  variables with new code.

* Alter the handling of the Get_Gbl_xxx_Count functions so that:
  a) Calling without a sub-table number still gives the total # entries in all
     tables.
  b) Calling WITH a sub-table number gives the # entries IN that sub-table. The
     change is that sub-table number 0 (zero) does NOT treat the 0 as a request
     for the total of all tables.

* Minor fix to PAGE mode handling for files using EOL=AUTOxx.

* Correct crash when a MouseWheel even is performed outside the actual Tab data
  area. e.g. the title bar or status bar.

* Correct handline of STANDARD and ALTERNATE FM Layout options so they are not
  'forgotten' when switching FM display modes, or other actions that trigger a
  refresh of the screen.

* Corrections to handling EOL AUTONL support. (Courtesy of user MUEH)

* Remove StatusBar EOL display related to AUTONL running in PAGE mode.


Between 3.3.25224 and 3.3.25226 (Aug 14/2025
=============================================

* Correct the setting of the Submit folder location to ensure it points
  correctly to \Users\UserName\Documents\SPFLite\JOBS.

* Correct spelling of the Get_EnvVar$ and Save_SrchArgs macro function.

* Add missing Doc for Save_SrchArgs and Restore_SrchArgs macro functions.

* Correct some long standing errors in the CHM and HTML versions of the
  Documentation. Some items were flagged as Transparent and simply appeared as
  blanks in the final document.

* Correct error in the window resize logic that restricts the minimum size of
  the window.


Between 3.3.25202 and 3.3.25224 (Aug 12/2025
=============================================

* A File RENAME will trigger an initial BACKUP of a file if AutoBKUP is ON.

* Add the new FC/FCHANGE FM command to support performing a CHANGE command on
  all displayed FM files. See the Help for more info.

* Add the following new macro functions:

  Get_EXEFullName$      Fully qualified EXE filename, including the path.
  Get_LNum_Width        Width of line number field
  Get_Panl_Height       No. of lines in the current panel/screen
  Get_Panl_Width        No. of columns in the current panel/screen
  Get_Panl_Mode$        Current panel mode NONE, VERT or HORZ
  Get_Scrn_Height       Total screen height in characters
  Get_Scrn_Width        Total screen width in characters
  Get_SPF_Version$      SPFLite program version
  Get_Text_Columns      No. of usable text columns on panel/screen
  Get_Text_Lines        No. of usable text data lines on panel/screen

  Get_Working_Dir$      The current working directory

  Get_Csr_LNum          The LNum of the cursor line
  Get_TopScrn_LNum      The LNum of the line at top-of-screen
  Get_BottomScrn_LNum   The LNum of the line at bottom-of-screen
  Get_Find_First_LNum   The LNum of the first found line
  Get_Find_Last_LNum    The LNum of the last found line
  Get_First_LNum        The LNum of the 1st line (0 if no file)
  Get_First_Real_LNum   The LNum of the 1st real data line (0 if no file)
  Get_Last_Real_LNum    The LNum of the last real data line (0 if no file)
  Get_LOC_LNum          The LNUM of the last LOCATE found line
  Get_Select_First_LNum The LNum of the 1st line of a selected block
  Get_Select_Last_LNum  The LNum of the last line of a selected block



Between 3.3.25200 and 3.3.25202 (Jul 21/2025
=============================================

* The packaging of the 25200 release was faulty in that it did not have the
  proper thinBasic library files. As well, an error in the new thinBasic 1.14
  release was discovered. Both problems have been corrected in 25202. There is
  NO change to any SPFLite code in this release.

  If you do not use SPFLite macros at all, you can safely skip this release. But
  we still advise upgrading to this, it IS relatively painless.


Between 3.1.25053 and 3.3.25200 (Jul 19/2025
=============================================

* Alter File Manager display so that when the cursor is located in the Line
  Command area of any file entry, the full file path & name will appear in the
  Mask area at the top of the screen. This will provide more assistance when the
  name is abbreviated by a narrow column width.

* Alter the background of the scrollbar to a medium gray to provide more
  contrast with the slider.

* Correct SORT (it was not honoring X/NX/U/NU filter operands.

* Relax naming standards for SET variable names. Only restriction now is that
  they can not start with a period (.) or a numeric digit.

* Correct the (ClipPath) KB Primitive to work properly when used in the FM Paths
  display.

* Upgrade the included thinBasic version to 1.14

* Add new support to allow an Edit tab display to be split into two 'panels' which
  can be independently positioned to allow viewing of different portions of the
  same file at the same time. The support allows you to split the screen either
  horizontally (top and bottom panels) or vertically (left and right panels).
  Full details are in the Help under "Working with Panels".


Between 3.1.24338 and 3.2.25053 (Feb 22/2025
=============================================

* Correct parse table for the RESET command, the X and U action requests were
  renamed to XL and UL to avoid 'collisions' with the X and U line-control-range
  operands. This release will automatically add 4 SET ALIAS statements to
  provide compatible operation with the former syntax.

* Correct error in DELETE using a specified line-control-range.

* Add support for a new SET option. A SET variable of RETRIEVE.cmdname = N will
  prevent the command fron being added to the Command retrieve stack.

* Correct handing of a HELP HELP or HELP ? command to properly display the Help
  data for HELP itself.

* Correct the (DataDelete) KB primitive. It was incorrectly deleting more
  attribute characters than were required from some lines.

* Replace the macro function Get_FullPath$ (which was not even working properly)
  with Get_FileFull$ which will return the full pathname to the current edit file.

* Alter the VBeep code to add a binking circle around the current cursor
  location as well as blinking the Command > prompt in the upper left corner of
  the screen.

* Correct parse substitution of the command line @ and # substitution.

* Correct the handling of doing a mouse-click on the active Instance in the file
  manager Config display. It was not properly invoking the OPTION command to
  allow modification.

* Add Spell Check support. This consists of a KB Primitive (SpellChk) and a
  Primary command SPELL.  See the HELP file for full details.

* Correct the KB substitution added in the last release so that it does not
  interfere with the handling of RegEx searches passing from FIND to RFIND

* Add macro functions Save_SrchArgs and Restore_SrchArgs which will allow a
  macro to save the current FIND search state, perform some other independent
  search functions, and restore the previous FIND search state and continue with
  the original FIND operation(s).

* Correct the support added in the last full release which supports
  Substitutions and Conditional KB assignments, it was interfering with the
  RegEx search criteria being passed from a FIND to an RFIND command.

* A new conditional KB type has been added. It is an <IF.SPELL> request. It will
  be True if the cursor is located on a string marked as a spelling error by the
  SPELL ALL command. As an example, this allows the RMB (Right Mouse Button) to
  be defined as - <IF.SPELL>(SpellChk)||(copyPaste)<> - which basically says:
  If the cursor is on a word marked as a spelling error, issue the (SpellChk) KB
  action to display the pop-up correction selection menu. If not on a spelling
  error, invoke the (CopyPaste) KB action.

* Re-write of popup menu handling.  You may now click outside the popup box to
  indicate the choice of the default (1st) item. Scroll bars have been added
  to handle lists larger than the popup window.

* Alter MACLIB verification to more fully check the MACLIB.name SET entry.
  Warnings will be issued for any errors, but the MACLIB setting will still
  proceed. If the associated SET is not created, the default MACROS folder will
  be substituted.

* Add support for a new IEDIT command which will scan a main program or
  Edit/MEDIT session and add all detected INCLUDE files into a single MEDIT
  session. See the HELP file for full details.

* On a FM FLIST display, the M (MEDIT) line command may now be used to Open all
  the files in a MEDIT session.

* The MAKELIST/ML command will now also operate in a MEDIT tab to create an
  FLIST from the current list of loaded files.

* Correct FM mask handling when both Primary masks and individual masks in an
  FLIST are used together.

* Correct creation of STATE data for MEDIT sessions.

* Correct execution of IMACRO for MEDIT sessions, it was basically being ignored.

* Add a new command - BUILTIN - which can be used to prefix any normal command
  and prevent the following command string from being interpreted as a Macro, even if
  a Macro does exist with the same name.


Between 3.1.24250 and 3.1.24338 (Dec 03/2024
=============================================

* Correct erroneous Help in the Options => Submit panel.

* Ensure the main screen is locked when a file change notification popup is
  active.

* Reactivate the Right-Click context menu in File Manager. It had gone AWOL.

* Correct the handling of changes using the Case Conformant rules (i.e. when the
  CHANGE string is a T'abc' type literal). It was a) broken and b) discovered
  during the correction that it had never accurately performed according to it's
  description.

* Correct the RLOC (Repeat Locate) command to properly 'wrap' from Top/Bottom
  when a search is unsuccessful. This has been non-functional for quite some
  time.

* Revise the macro Debug display to provide a scrolling window (both vertical
  and horizontal) rather then the previous fixed window where valuable info
  could easily be 'lost' by scrolling off the top.

* Add a new macro function SPF_DebugLog(ON|OFF [,filename] ) to support
  directing macro debug information to a disk file rather than a desktop window.
  For details, see the Help file.

* Correction to the handling of SPF_Post_DO strings to prevent truncation.

* Correct the interaction of "Warn on Edit of non-text files" and the EFT option
  of NONTEXT OPENWITH.

* Correct SAVEAS so that the Profile for the newly saved file is used to resume
  editing.

* Correct the (ResetCmd) KB primitive to properly clear Line Commands.

* Correct the (Delete) KB Primitive to properly adjust the line's attributes.

* Correct macros Get_Src_Op and Get_Dest_Op.

* Enhance the CrashSave logic to save any open SetEdit or EFTEdit sessions. The
  files will be created in the normal HomeData folder.

* Revise the popup message which warns of a View session being END'ed with
  modifications made to it, to better describe the options available.

* Tweak the UNDO/REDO code to correct some inconsistencies.

* Revise macro functions for fetching line commands to be more consistent.

* Cleanup old code in CFGMaint related to a proposed new function which did not
  proceed.

* Addition of new KB Primitives to support substitution of strings stored
  as SET variables. The new Primitives are (Set0) thru (Set9).

* Add support for conditional KB substitution. This provides an IF/ELSE
  form of assignment which can allow a single key to have multiple possible
  assignments depending on the context.  See Help for more details.


Between 3.1.24198 and 3.1.24250 (Sep 6/2024
=============================================

* Correct handling of a Profile override on the Windows command line, it was
  being ignored.

* Improve BACKUP handling of the special edit sessions (EFT, CLIP, and SET) so
  that the backup files are named properly to invoke the proper Profile when
  being viewed.

* Correct error in handling messages from an IMACRO.

* Correct handling of the Post_Do command queue.

* Extend AUTOBKUP support to the CLIP, SET and EFT tabs.

* Additional changes to BACKUP/AUTOBKUP.  SET and EFT backups will now properly
  save the correct 'before' data.  CLIP will use the proper timestamps for named
  CLIP file backups. AUTOBKUP will not back up named temporary CLIP files (those
  with a leading _ character).

* Backup of named CLIP sessions will now include the NAME of the CLIP file in
  the Backup name.

* Add a new macro function Get_TabNum which will return the active tab number.

* Correct handling of RETRIEVE/CRETRIEV/RETF commands.

* Enhancements to the macro file attribute functions: Get_Filexxxx$ to work with
  CLIP, SetEdit and EFTEdit session more reasonably.

* Corrected handling of command retrieval in File Manager, it was not properly
  adding all commands to the Retrieve stack.

* Consolidate multiple internal tables for CFG variables into a single table to
  ease maintenance.

* Remove the ASSERT option from the TAG command. This was an option which
  challenged most users to understand, alternative options of TAG provide the
  same function so ASSERT has been removed.

* Correct handling of Read-Only files when selected from File Manager. An
  erroneous error message was being issued.

* Improve the command parsing. It can now handle 'ignorable' keywords.

* Add new macro functions related to Get_Find variables. This will now allow
  fetching the location of both the first and last lines located by a FIND ALL
  command.

* Correct handling of special lines (Tabs, Mark, Mask etc.) so that if they are
  deleted after making a change to the line, the change is properly 'thrown
  away'.

* Add a new Macro function 'Is_Available' to test if a filename actually exists
  and is also not locked by some other process.

* Allow Drag/Drop of a folder onto SPFLite to cause the folder to be opened in
  File Manager.


Between 3.0.24069 AND 3.1.24198 (Jul 16/2024
=============================================

Bug Fixes
=========

* Upgrade the INCLUDE support in the SUBMIT command to handle UTF8 files with
  embedded BOM markers.

* Correct error message display so that messages issued by a macro are not
  removed until all macro issued Post_Do commands are complete. Additional
  corrections to resolve problems in KB macros with multiple commands.

* Correct support for creating a new INSTANCE. It was not properly copying
  the correct previous INSTANCE, it was always copying DEFAULT.

* Correct IMACRO support. FileWatch ReLoad and MEdit were not honouring an
  IMACRO xxxx OFF setting.

* Correct the generalized internal search routine: The support for negative
  colour searches was simply not working.

* Correct the Get_FileBase$ macro function to return the proper filename from a
  MEdit session.

* Correct a delete of a FILE section in MEdit. a) It was incorrectly setting the
  modified flag on the next FILE section, and b) It was not checking if the
  section being deleted had been itself modified. It will now issue a warning
  pop-up with a Continue or Exit option.

* Correct an error in the Environment variable substitution routine which was
  causing a character to be dropped.

* Correct an error in handling empty SET tables.

* Completely separate the setting of Profile options SOURCE and COLLATE to avoid
  confusion. Previously setting SOURCE could also result in COLLATE being
  changed.

* Correct a bug which prevented the File Manager FF (Find in Files) command from
  processing files which required usage of the XFORM macro support to read the
  file. Also FF was not always switching back to FM Mode after the search.

* Correct the opening of Font and Colour Choice dialogs to properly block the previous
  dialog (e.g. OPTIONS) from being closed before the Font/Color dialog is complete.

* Correct an error in the Macro function SPF_EXEC, it was not setting the Return
  Code properly.


Release 3 Changes
=================

* Re-write the main Primary command parser, and the accompanying generalized
  search routine to eliminate much of the previous 'code clutter' which had
  built up over the years.

* Remove support for "Command Chaining". This is NOT the ability to separate
  commands on the command line with a ; character.

* Remove some old primary commands that no longer provide useful functions.
  This includes:
      AUTONUM        Renumber lines automatically
      FOLD           Always Uppercase text data when displayed
      NONUMBER       Turn Number mode off
      NUMBER         Validate and generate line numbers
      NUMTYPE        Define the numbering 'style' to use
      ORDER          Re-Order file line numbers
      UNNUMBER       Remove existing line numbers

* Remove the FIND and CHANGE operands which alter working options (FIND
  WORD|CHAR and CHANGE CS|DS) and move those operands to the MODE command. This
  means the MODE command now looks like:
      MODE  [ EDIT | BROWSE | VIEW ]
            [ WORD | CHAR ]
            [ CS   | DS ]

* As part of this re-write, errors were detected in several commands which were
  not handling all their optional features as documented. They were corrected.

* Add new support for dynamically specifying the MACLIB name as a prefix to the
  macro name on the command line. e.g. maclibname:macname

* Performance improvements to the search routines for large tables. Serial
  searches were replaced with Binary Search routines.

* Some tweaks to the primitives WordLeft, WordRight and MASK insertion on
  Inserted lines to improve cursor positioning.

* Increase stack space to allow MEdit to handle larger number of files being loaded
  when FileWatch is also active. The limit is now ~~ 500 files.

* Alter (slightly) the syntax for the SET command to better support the need for
  SET variables.

* Add a new option to trigger display of a used macro name on the Message line
  following an interaction. This can assist in confusing situations where there
  is a macro with the same name as a real SPFLite command.

* Add a warning whenever an SPFLite macro located in the Primary MACLIB folder
  is created/written/renamed etc. -- IF the macro name would effectively replace
  a standard Primary or Line command. This is just a reminder to help avoid
  future confusion when a normal function seems to be mis-behaving.

* Extend the SET ALIAS support to handle up to 3 operands in the ALIAS name.
  This will allow actions like having CMD1 AAA and CMD1 BBB return different
  alias strings. See Help for more details.

* Add a new Options => Screen item to allow specifying the format of the =FILE>
  line used in MEdit sessions.

* Alter the display of =FILE> lines so they do NOT scroll sideways during LEFT /
  RIGHT operations.

* Add a new primary command LABEL which provides a variety of options to assist
  in manipulating Line Labels. See Help for full details.

* Upgrade the SQL library support to the latest version of SQLite (3.46.0) to
  pick up any SQL fixes and maintenance.

