Open/ed Rev. 25 released.

6 views
Skip to first unread message

Greg Field

unread,
Jul 10, 2025, 3:00:30 AM7/10/25
to Open/ed
    Release notes for the Open/ed editor and developers environment.

    Commands, modes and function names are shown in upper case but are case insensitive in Open/ed.

Released version :
------------------

    25.07.01

Available at :
--------------

    Download from :
    https://drive.google.com/file/d/1A57TXDs_8qAyo7s9kGsZt-ZtV8fzSIDZ/view?usp=sharing

    Support at :
    https://groups.google.com/g/open-ed

New features.
-------------

    LOCAL and GLOBAL variables.

    STRUCTUREs including GLOBAL STRUCTures.

    WHEN MODIFIED   and mode SAVRESMOD
    WHEN reports

    Tables and GETTABLE () function.
    Tables :
        actions     When actions.
        alarms      When alarms
        keymaps     MAP settings.

    DEFAULT command for setting a variable.

    DEFKEY and UNDEFKEY

    Named variables can now have names up to 32 characters.
    This includes the full structured name of variables in a structure.

    Meta keys.
    Option + <any_key> is now MAP-able to any other key including Function keys.

Discussion
----------

    This release adds scope to named variables which may now be LOCAL or GLOBAL.

    This release adds STRUCTUREs and GLOBAL STRUCTUREs.

    WHEN has had a significant update and its syntax slightly changed.

    MAP and UNMAP have been updated with more key definitions.
    MAP recognises :
        all alphanumeric keys,
        all curses keys KEY_xxxx
        all curwin keys MOUSE_xxxx
        all curses keys M-x meta keys
        all curwin keys META_xxxx

    curwin is the Open/ed extensions to curses.

    Open/ed now recognises Meta keys, keys pressed with 8th bit on
    in the range 0200 to 0377. You will need to turn these on
    in your terminal program for Open/ed to see them.


Program options
---------------

    None.


Commands
--------

    New
    ---

    STRUCTURE   defines a data structure.

    DEFKEY and UNDEFKEY
    Allows additional escape sequence binding in screen mode.

    DEFAULT int = integer expression
    DEFAULT str = string  expression
    The DEFAULT command is an IF ( == 0 ) then LET command.
    If a variable is 0 or NUL, then set it to the value.

    Changes
    -------

    GLOBAL is renamed to EVERY which has an abbreviation of E.
    GLOBAL is now a scope declaration.

    STRUCTURE and ENDSTRUCTURE.
    This allows for declaration of data structures.
    STRUCT and ENDS are permitted abbreviations in macros.

    GLOBAL and LOCAL is a scope declaration that precedes any named
    variable such as INT, STRING, FSTREAM, DIRECT, TOKENS.

    WHEN syntax changes.

    Every WHEN (other than alarms) has syntax of :
    WHEN condition seconds macro arguments.

    WHEN condition   reports on that condition.
    WHEN <return>    reports on all conditions.

    Each action has a time recorded of the last time it executed.

    LX now inserts to the line above so the DX lands on the current line.

    HISTORY START is now begin.ned aware. If history is already recording
    it just continues on that file. Previously when begin.ned saw each
    HISTORY START it opened a new history file.

    MAP EXEC    Allows the execution of meta keys mapped to F-keys.
    MAP LIST    Lists                   meta keys mapped to F-keys.

    MAP now allows META_ keys.


Abbreviations
-------------

    The old GLOBAL command is now the EVERY command with an abbreviation of E.
    Because they are macro language commands GLOBAL and LOCAL have no abbreviation.


Modes
-----

    SAVRESMOD compliments the WHEN modified action.
    It allows WHEN modified to run after every SAVE.

    MENUFLAGS adds additional display flags to the Menu bar.

    WARNING mode has been updated for MODE commands. Add mode WARNING
    to the start of begin.ned and finish begin.ned with NO WARNING.
    This will allow begin.ned to continue if there is a non serious
    error in mode commands.

Functions
---------

    New
    ---

        Added GETTABLE ( 'tablename' , %item_sep% , %line_sep% )

        int = CLOSEDIR ( dir )  to close a directory.

        Six new integer functions to use on F-key values.
        The first 4 can also be used by the MAP command.

        FUNLOCATE  ( 'string' )
        FUNRLOCATE ( 'string' )
        FUNFIND    ( 'string' [ , n ] )
        FUNRFIND   ( 'string' [ , n ] )
        FUNGET     ( n , string_var )
        FUNSET     ( n , string_val )

    Changes
    -------

        OPENDIR ( ) mask now defaults to 'All'.

        The cast functions INT() and STR() have been updated.

    Name change
    -----------

    ITEMS (), FIELDS (), and LINES () renamed to
    COUNTITEMS (), COUNTFIELDS (), and COUNTLINES ().

    ITEMS(), FIELDS(), LINES() is now similar to ITEM with count of items to get.

    INSERTITEM (),  DELETEITEM (),   REPLACEITEM ().
    INSERTFIELD (), DELETEFIELD (),  REPLACEFIELD ().
    INSERTLINE (),  DELETELINE (),   REPLACELINE ().

    Insert, delete or replace an item, field or line in a list.

    ISALTERN () and AREALTERN () are renamed to
    ISMETA () and AREMETA ().

    Deprecated
    ----------



Variables
---------

    Named variables can now have names up to 32 characters.
    This includes the full structured name of variables in a structure.

    New :

        %text.line% A text line including empty lines. 0/1.
        %null.line% A top or bottom .null. line.       0/1.

    Removed variables :

        None.

    Changed variables :

        %printer% and %props% can now be set with LET.
        %term% is now case sensitive.


Constants
---------

    New constants :

        None.

    Changes :

        None.


Maths operators
---------------

    Like 'a' being used in integer arithmetic, '' can now be used for 0.


Symbols
-------

    No change.


Macros
------

    New macros.
    -----------

    led : Little editor to demo INSERT/DEL/REPLACE ITEM () functions
          and GLOBAL structures.

    sold : SAVe the disk file of the current work file name.

    ls : The dir.ned macro is renamed to ls.ned.

    ascii : Print the Ascii key code table.
            Any argument becomes a simple search string.
            Example ...

        : ascii p
        Dec    Oct      Hex   Label
        112   0160   0x0070   p
        240   0360   0x00f0   M-p


Screen mode window.
-------------------

   No change.


WHEN conditions
---------------

    New :
    -----

    'modified' when the work file is first modified.
    'sold.ned' is a sample macro for the modified condition.


Tables
------

    New :
    -----

        'actions', 'alarms', and 'keymaps'.
        Read with the GETTABLE () function.


Menus
-----

    Mode MENUFLAGS adds extra display flags to the menu bar.

    (m) in File    for work file modified.
    (a) in Block   for an active block (FROM/TO).
    (m) in Compile for "compile" macro enabled.


Keyboard
--------

    Rev. 25 introduces meta keys.
    These allow a way of executing Function keys, or MAPping to other keys.
    The MAP command now recognises many META_ labels. See the MAP help page.

    There is now 4 MAP functions which may be used as the 'action' part of a MAP command.

    FUNLOCATE  ( 'string' )
    FUNRLOCATE ( 'string' )
    FUNFIND    ( 'string' [ , n ] )
    FUNRFIND   ( 'string' [ , n ] )

    These may be used to locate which function key has the string.
    The FIND functions may specify a column else it defaults to 1.

Help.
-----

    New entries for new functions and commands.

Scripts
-------

    No change.


Error codes
-----------

    No change.


Bug fixes
---------

Fixed bugs
----------

    24-009 NEW Invalid wildcard *(.c echoes stderr "syntax error near unexpected token".
    25-001 gpl:listget () returns -1 when target size == source.
    25-003 Line mode NEW *item* get memory fault.
    25-004 string ins/del functions using glistins/glistdel () not working when source addr == target addr.
    25-002 let ok = item ( word, -1 , %list1% ) gets unknown int function LIST.
    25-005 ned *.c restarts history file each file.  Fix docs. Done.
    25-006 mode xterm none rejected by wrong length in strcmd (.,.,5).
    25-007 INSERTITEM () etc not returning ITEM_ negative status.
    25-009 whenreport () crashing when screencomo () used.
    25-010 Win Klist () shows <EOF> on tiny files. curwin:winklist ().
    25-011 intexpr () let 'd' + '' = 100. Tidy intexpr () quoted strings.
    25-012 CHANGE==anything= is being ignored.
    25-015 NEW map.h*  returns no entries when map.hlp exists.
    25-016 Some MODE commands use 'r' rest to check for superflous args. Use 't'.
    25-017 BLOCK macro was doing in_a_block so renamed. Made IS_A_BLOCK for is anywhere.
    25-018 HIS EXEC gets getfileyx () Could not open file name /tmp/xyz ! No such file.


Open bugs
---------

    Open bugs.
    ----------

    22-015 Shared mem still splits to different segments after crash.
    22-018 WHICH double reports on "." and same directory in PATH.
    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-061 gshift errors when ... mode tab in ... unusual options ?
    23-068 SCR_PAGE jumbles text on x86 Macos. To see do NO EPAGE on Macos x86.
        Mode EPAGE added to all platforms. No explanation for bug.
    23-069 ^200 up chars corrupt window borders and scroll bar. I think fixed.
    23-070 flag.c : Internal error : TAG_LIST and tag.list = NUL
    24-035 Single click is inconsistent in obar menus.
    24-037 GREP() returns NUL on empty string and unchanged reg_status.
    24-038 GREP() gets heap memory corruption crashing ned.  I think fixed.
    24-042 Screen mode getkey('message..') does not display message. I think fixed.
    24-048 Linux start gets begin not a directory.
    25-008 doubleclick Draw coMment fills with *'s. How ?
    25-013 QUIT gets no such history file error when deleting.
    ? No such file or directory : "/tmp/temp.tavx0X".
    Could not remove history file "/tmp/temp.tavx0X" !
    I think this is Macos which occasionally cleans up temp files.
    25-014 ESC-\ takes time to work. Perhaps 1 second. CUT is ok.
        Happens for simple \ in scredit().
        Seems to be a DEFKEY problem.

    Open bugs discussion :

    22-015
    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%.

    22-018
    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.

    23-068
    If you page forward or back in screen mode and see jumbled text from previous
    pages, then this is 23-068. This appeared just before release in Decmber 2023.
    You should only see it on x86 Macos, not on Arm or Linux. There is a workaround
    in place so you should not see it, but please report it if you do.


Source code Stats
-----------------

    Version : 25.06.28    Sat 28 Jun 2025 14:33:33

    ned     is 116833 lines,   4M bytes, averaging 42 bytes per line.
    gstlib  is  14993 lines, 532K bytes, averaging 35 bytes per line.
    shmlib  is   1156 lines,  38K bytes, averaging 33 bytes per line.
    strsort is    541 lines,  16K bytes, averaging 30 bytes per line.
    curwin  is   7079 lines, 267K bytes, averaging 37 bytes per line.
    gpl     is  13944 lines, 444K bytes, averaging 31 bytes per line.
    include is   1720 lines, 106K bytes, averaging 61 bytes per line.

    Open/ed is 156266 lines,   6M bytes, averaging 40 bytes per line.

Other
-----


    --------------------------------------------------------------------------------
Reply all
Reply to author
Forward
0 new messages