Released version :
------------------
23.07.01
New features.
-------------
New usability features :
MAC EXEC for managment and execution of macros.
HIS EXEC for easy use of history in screen mode.
"Exec" as a sub-command has come to mean a higly useable _screen_mode_ menu.
CC compiler modes.
6 addional modes and menu for tuning your compile.
Discussion
----------
This release adds some important usability features.
MAC EXEC is a screen mode menu for executing macros easilly.
If MAXEXEC mode is set to EXPERT, then MAC EXEC becomes a file manager
like tool for finding, viewing, moving, printing and executing macros.
HIS EXEC is a screen mode menu for easily finding and re-executing a
command from history.
There is a new pull down menu for compiler flags.
6 compiler modes added to guide compilation.
There are several bug fixes.
Program options
---------------
-path path:directory:list
Sets your macro path (like the PATH command) at program invocation.
Commands
--------
New
---
EXPORT shell_var = "value"
Sets a shell variable.
'shell_var' does not need to be an Open/ed variable but it can be.
Changes
-------
MAC EXEC and HIS EXEC.
'*' is deprecated in PATH and LEARN PATH. Use '.' instead.
CLOSE can now be used to close an open operating system table.
Supported tables are 'passwd' and 'group'.
Parenthesis are not needed at the command line.
Use this when a macro using SETPWENT() or SETGRENT() aborts early
leaving the table(s) open.
Abbreviations
-------------
No change.
Modes
-----
New compiler modes.
Controls Clang compiler options.
CCERLIMit
This mode sets the error limit.
CCLANGflav
This mode sets the language flavour for the compiler.
CCOPTimise
This mode sets the compiler optimisation.
CCSYNTaxonly
This mode cause a syntax only compile.
CCUSERargs
This mode adds additional user specified flags to the compile.
CCWARNALL
This mode sets on all warnings.
CCWUNDEFmac
This mode causes a warning for all undefined #define macros.
CCWUNUSednames
This mode causes a warning for any variable that is defined but unused.
HISTORY mode has new sub opti0ons :
ADDHIS removed.
NO/REPEAT added.
SHELLESC
Adds shell escapes to system command lines.
Currently SHELLESC adds escapes to '(' and ')'.
Functions
---------
New
---
let int# = SETENV ( 'NAME' , %value% )
Sets a shell environment variable. Does not have to be an Open/ed variable but can be.
let int# = LEAPYEAR ( 2023 )
Retuns true or false if the year is a leap year.
let int# = strall ( "string" , 'char' )
Return true if the string is all 'char'.
Changes
-------
Warning : these will effect existing macros.
str# = AFTER / AFTERFIRST / AFTERLAST
str# = BEFORE / BEFOREFIRST / BEFORELAST
str# = PREFIX / SUFFIX.
These functions have had their two arguments reversed.
It is now :
str# = AFTER ( "look_for" , "in_this" )
The first argument is what to look for and the second is the string to search.
This makes the defaults more useable.
Default "in_this" is %text% and PREFIX/SUFFIX is %
file.name%.
SETPWENT() and SETGRENT() _MUST_ be called before calling
GETPWENT() and GETGRENT(). Open/ed now keeps track of open tables.
The xxPWENT() and xxGRENT() functions now return -1 or 0 rather than 0 and 1.
All functions have a returns code consistent with the operating system.
The MENU() function now has an optional separator and title.
Variables
---------
New :
%private%.macros% and %public.macros% are settable with LET ...
%tag.count% added as a synonym for %total.tagged%.
Removed variables :
None.
Changed variables :
None.
Constants
---------
New constants :
None.
Changes :
STR_MAX is now STRING_MAX.
Maths operators
---------------
No change.
Symbols
-------
No change.
Macros
------
No new macros.
Some have been updated for Rev. 23.
Screen mode window.
-------------------
New compile flags managment pull down menu.
WHEN conditions
---------------
No change.
Menus
-----
The screen "Modes" menu has been widened for 22-026.
Keyboard
--------
No change.
Help.
-----
New entries for new functions and changed commands.
Scripts
-------
No change.
Error codes
-----------
No change.
Bug fixes
---------
23-032 22-009 fix is not working for TAG LOCATE;D;*
23-034 HISTORY START in begin.ned closes existing his file.
23-033 INIT is clearing HISTORY file. I think was 23-034.
23-031 Check each fbindex () does not malloc twice. Done.
23-037 NEW and INIT commands being wiped from history.
23-039 TOKENS var with no initial setting gets set to junk.
23-040 SORT(DIRLIST() gets memory corruption.
23-038 showeol macro gets seteol () Invalid scr.eol of '' 0.
22-031 winpick() needs an optional "title" for MENU().
23-041 Ctrl-P past EOL gets gstrunc () error. column > current length.
23-042 Add title string to MENU () function after 22-031.
23-043 PC column not working on .null. lines.
23-045 XEQ goes into history file.
23-046 Edit ./lesson. Overide ./lesson ? In nedmouse.c learn.c resp.
23-047 Internal error. backbone switch defaulted.
23-051 PC LOC string gets gstring errors displayed when past EOL.
23-050 LOCATE string reports no string arg in verbose mode.
23-051 LOCATE; giving string arg missing error which is n.a. after ...
22-018 FIND/LOC <NUL> inconsistent.
23-052 QUIT modified file (scr mode), opt 1 resume, quits.
23-043 Add %tag.count% synonym for %total.tagged%
23-054 Reverse BEFORE/AFTER() args so source is 2nd & defaults to text.
23-048 sleep %delay^ did not report an error.
23-044 PATH LIST should report full pathname of '.'.
23-023 H x1; should default to 1. Seems ok.
23-036 HIST EXEC gets strfill, sus max value 0, columns=0, core dump.
23-035 BUMP on number gets 'must be numeric'. Cannot reproduce.
22-018 WHICH double reports on "." and same directory in PATH.
22-015 Shared mem still splits to different segments after crash.
23-007 Click on ALERT message sometimes does not register in alarm system.
23-029 MODE() help needs more constants for modes ...
23-046 Blocked lines do not follow a SWL.
Open bugs
---------
22-018 WHICH double reports on "." and same directory in PATH.
22-015 Shared mem still splits to different segments after crash.
23-007 Click on ALERT message sometimes does not register in alarm system.
23-029 MODE() help needs more constants for modes ...
LR,SR,TAB,WAITER,XT,EOL,MSG,SB,GREP,HISTORY,LP.
23-046 Blocked lines do not follow a SWL.
Discussion :
If Open/ed crashes and is restarted, it may start a new shared memory segment for alarms.
The only way around this is to exit all of your Open/ed sessions and
remove the control file : %alarms.control.file%.
The WHICH command examines each directory in PATH.
If '*' is specified and the same directory is also specified, then the
WHICH command will double report if the command is found.
The integer value of a control character is ^X.
Quoted control codes needs a review.
Source code Stats
-----------------
Version : 23.06.29 Fri 30 Jun 2023 15:58:32
ned is 101223 lines, 4M bytes, averaging 41 bytes per line.
gstlib is 12946 lines, 453K bytes, averaging 35 bytes per line.
shmlib is 1158 lines, 37K bytes, averaging 32 bytes per line.
strsort is 541 lines, 16K bytes, averaging 30 bytes per line.
curwin is 6013 lines, 227K bytes, averaging 37 bytes per line.
gpl is 12474 lines, 392K bytes, averaging 31 bytes per line.
include is 1628 lines, 97K bytes, averaging 59 bytes per line.
Open/ed is 135983 lines, 5M bytes, averaging 39 bytes per line.
4306 additional lines.
Other
-----
--------------------------------------------------------------------------------