home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / wp_dtp / xdme1821.lha / XDME / docs / PATCHES.DOC < prev    next >
Text File  |  1993-03-09  |  25KB  |  725 lines

  1.  
  2. extracts from an elder DOC to my old DME-patches
  3. i have documneted some other commands - you might get their
  4. " (see below)
  5.  
  6. PLEASE NOTE, THAT THE MACROS-COMMANDS WILL DIE IN XDME 2.00
  7. SO DO NOT USE THESE FEATURES TOO MUCH (You might get used to them)
  8.  
  9.  
  10.     ABORT        -Unconditionally end current macro
  11.     BREAK        -Unconditionally abort the current loop
  12.     CONTINUE        -next turn off the loop
  13.     (DEC vname       -Mathfunc: Decrement (see below))
  14.     (INC vname       -Mathfunc: Increment (see below))
  15.     INSERT text     -insert text without respect of insertmode
  16.     MATH1 func name -long version of INC/DEC/NEG
  17.     MATH2 func name value  / MATH2 name func value
  18.             -long version of ADD/SUB/MUL/DIV/MOD
  19.              the two different modes of syntax can be toggled via INFIXMODE
  20.     (MOD vname N     -Mathfunc: Modulo (see below))
  21.     (MUL vname N     -Mathfunc: Multiplicate (see below))
  22.     (NEG vname       -Mathfunc: Negate (see below))
  23.     OVERWRITE text  -overwrite text without respect of insertmode
  24.     QUALIFIER [+]which -Add a certain keystroke - qualifier
  25.              ( which is out of acsxyzALMR )
  26.              for the next keypress ( if + is omitted,
  27.              previous calls are forgotten)
  28.              With that command multi-key sequences
  29.              like MEmacs C-X... are possible
  30.     REM comment     -don't interpret the next expression
  31.     SETCLIP var str -create/modify an ARexx-Clip (access w/ $)
  32.     SETTVAR var str -create/modify a textlocal variable (access w/ $)
  33.     SETMACRO name numargs macroblock
  34.             -define a macro with numargs parameters
  35.     SETMACROVAR var str
  36.             -define a macro's local variable (during execution)
  37.     SETREXX var str -create/modify an AREXX variable - only if an AREXX script is active
  38.     SMV var str     -short for SETMACROVAR
  39.     (SUB vname N     -Mathfunc: Subtract (see below))
  40.     SWAPV name1 name2 -swap the contents of 2 variables
  41.     UNABORT        -Reset Abortion flag (senseful for Rexx-macros only)
  42.     UNSETTVAR var  -delete a textlocal variable
  43.     UNSETCLIP var   -delete an ARexx clip
  44.     UNSETMACRO name -delete a macro
  45.     UNSETMACROVAR var -delete a macro's local var
  46.     VCTAGS name     -use the ctags-function with an explicit searchname
  47.     VREF name        -use the ref-function with an explicit searchname
  48.     (INC/DEC/NEG varname)
  49.     (ADD/SUB/MUL/DIV/MOD varname number)
  50.     MATH1 INC/DEC/NEG/++/-- varname
  51.     MATH2 ADD/SUB/MUL/DIV/MOD/+=/-=/*=//=/%= varname number ( == prefix notation)
  52.     MATH2 varname ADD/SUB/MUL/DIV/MOD/+=/-=/*=//=/%= number ( == infix notation)
  53.     INFIXMODE what
  54.  
  55.     Some primitive mathfunctions with simple syntax.
  56.     They all expect an EXISTING non-special variable as first argument
  57.     which must contain a valid numberstring (that is to be converted
  58.     by atoi) (and the latter ones additionally a valid number as 2nd
  59.     argument).
  60.     The math-function is performed on the argument(s) and then the
  61.     result is written back into the variable ( so it must not be a
  62.     readonly variable but either a normal dme variable, an ENV
  63.     variable, a rexxclip or a toggle )
  64.     (toggle between infix notation and prefix notation for math2 with
  65.      the specialflag INFIXMODE (see above))
  66.  
  67.  
  68.  
  69.  
  70. - these docs might be inconsistent to the commands, as they were created
  71. - for a slightly different system
  72.  
  73.  
  74.  >ABORT
  75.  >UNABORT
  76.       they toggle a flag which controlles macro-executing
  77.       ABORT sets the break-flag which causes e.g. immediately macro-abortion at keys
  78.       or terminates line-execution
  79.       UNABORT allows to reset this flag in a AREXX-script,
  80.       is the last line produced an error, you may clear the error-flag
  81.       if UNABORT is the first (or only) command of a line
  82.  
  83.  
  84.  >BREAK
  85.  >CONTINUE
  86.     like their C-equvalents
  87.  
  88.  >EVAL com
  89.  
  90.       to split longer commandsequences to fit their length down to MAXIA
  91.       so MAXIA may stay "small" and anybody can avoid "expression too complex"
  92.  
  93.  
  94.   >FORCE [T|S|F|R|D] command
  95.  
  96.       Execute a command in a certain way
  97.  
  98.        T == unTitle
  99.        S == quiet (no Screen updating)
  100.        F == unFail
  101.        R == no Requestors
  102.        D == enable debugging mode
  103.      <no flags> -> simple eval
  104.  
  105.  >INSERT text
  106.  >OVERWRITE text
  107.  
  108.       insert or overwrite text in the current line without respect
  109.       to the specialflag INSERTMODE
  110.  
  111.  
  112. *********************************************************************
  113.  
  114.   PATCH_MACROS - OVERVIEW
  115.  
  116.   the module supports several commands:
  117.   SETMACRO           definition of a new macro
  118.   UNSETMACRO           deletion of a macro
  119.  
  120.   SETMACROVAR  definition of a macro's local variable
  121.   UNSETMACROVAR        deletion of suh a variable
  122.            (at the end of a macrocall all its local variables
  123.             are deleted automatically)
  124.  
  125.  
  126.  >RET
  127.        return from a macro befor it end is reached
  128.  
  129.  >UNSETMACRO name
  130.        remove a macro definition
  131.  
  132.  >SETMACRO macroname numargs body
  133.        create a macro definition
  134.        please note that a macro-body is read twice once on definition
  135.        and once on execution (variables should be excaped so)
  136.  
  137.        after such a definition it is possible to use macroname like
  138.        any DME-command; the following numargs expressions are used
  139.        as the macros variables, they can be accessed for read with
  140.        $arg0-$arg<numargs> (not for write)($arg0 returnes the macro's
  141.        name)
  142.  
  143.   BUG:      if numargs is not a number then this command
  144.        will assume a value of "0"
  145.  
  146.   WARNING:     the synopsis of that command MIGHT change in near future, as
  147.            I am thinking about use of macros' local flags or static vars
  148.            so there might come up another number of local-flags ->
  149.            SETMACRO name numargs NUMFLAGS|LIST-OF-NAMES body
  150.  
  151. **********
  152.  
  153.  >SETMACROVAR name value
  154.  >SMV  name value
  155.        define a local variable for the current macro-call
  156.        all local vars will be deleted at the end of a macro-execution
  157.        (SMV is a shortcut for SETMACROVAR as we can't define a short
  158.     macro for that command)
  159.  
  160.  >UNSETMACROVAR name
  161.        drop a local variable before the end of the current macro-call
  162.        all local vars will be deleted at the end of a macro-execution
  163.        so that command may be obsolete
  164.   NOTE:   ARGUMENTS to a macro are READ-ONLY,
  165.        You can't alter their values from the body of the called macro
  166.            (at the end of a macrocall all its local variables
  167.             are deleted automatically)
  168.  
  169.     [UN]SETMACRO (definement of macros)
  170.     ([UN]SETMACROVAR, SMV)
  171.  
  172.     the usage of SETMACRO allows parametered macros:
  173.     eg. after
  174.         SETMACRO x 2 (set \$arg1 \$arg2 title (\$arg1 set))
  175.     U must call x with 2 arguments, which are accessed with
  176.     $argX (case sensitive) in the macro-body (arg0 = macroname)
  177.     in the block of a so defined macro You can define local
  178.     variables with the command SMV(SETMACROVAR) which are
  179.     valid only during that macrocall (or until UNSETMACROVAR)
  180.     so capsulated variables are possible
  181.         SETMACRO pseudo 1 (SMV abc \$arg1 TITLE \$abc)
  182.         SET abc 10 pseudo 1000 TITLE abc
  183.     (global abc is set to 10; in the procedure local abc is set
  184.      to 5; after execution abc again ha the value 10)
  185.  
  186.     NOTES * SMV is only a shortcut for SETMACROVAR
  187.           * the commands SMV/[UN]SETMACROVAR are usable only
  188.         during macro-execution
  189.  
  190. **********************************************
  191.  
  192.    command.c..
  193.   PATCH_JUX (reine gaudi)
  194.  
  195.     Direct assignments of existing vars
  196.      With that patch something is possible like:
  197.     set abc 1 ... abc = 3 (instead of set abc 3)
  198.  
  199.      if arg1 is a "=" we search for a variable of the name in arg0
  200.      if there is such a variable, we assign its value to the value
  201.      in arg2  (the correct types are used)
  202.  
  203.       But what shall we do, if there was not such a variable???
  204.  
  205. **********************************************************
  206.  
  207.     >QUALIFIER [+]xyzLMRaAcs
  208.  
  209.      That Function is to enable an extended qualifier ( or any other one )
  210.      for the next pressed key - there should be no interaction to calls from
  211.      macros.
  212.      '+' at the first position tells dme not to forget previous calls of
  213.       QUALIFIER
  214.  
  215.     NOTE that a call of QUALIFIER only has a menaing for
  216.      the NEXT interactive keystroke, it does not concern any later
  217.      keystrokes, and does not affect any commands which
  218.      use keymapping in any way
  219.  
  220. *********************************************************
  221.  
  222.  
  223.   simple calculator:
  224.   recognizes +,-,*,/,(,)
  225.   2 numbers must be separated with one operator,
  226.   !!each operator must be surrounded with whitespaces!!
  227.   (there are no unique +/- operators allowed, if they are
  228.    not part of a number: "-1" is allowed, "(- 1)" is not!)
  229.  
  230.   so each expression has an inequal number of subexpressions -
  231.   x+1 values and x operators with x in N
  232.   there should not be more than MAXIA (== 5)
  233.   expressions on one level (simply use brackets)
  234.   ( that is in fact no problem, as on any evaluation
  235.     we try to shorten our results due to operator prorities,
  236.     as long as there are only 4 operatores, we can never ever
  237.     run out of space
  238.    e.g.:>
  239.        => 1     => 1*      => 1*2   => 1*2+   [-> 2+]
  240.        => 2+3     => 2+3*  => 2+3*4 => 2+3*4/ [-> 2+12/]
  241.        => 2+12/5 => 2+12/5- [-> 2+2-] [-> 4-] => 4-6
  242.        == -2
  243.   PATCH_MATH
  244.  
  245.   math-functions , they are all implemented in do_mathfunc
  246.  
  247.   Very simple syntax:
  248.   >[MATH1] NEG / INC / DEC / NOT    <varname>
  249.   >[MATH2] ADD / SUB / MUL / DIV / MOD <varname> (<value>)
  250.  
  251.        <value>     is a valid dezimal number
  252.        <varname> must be given at each function and must be the name
  253.          of an existing variable containing a valid number
  254.  
  255.   (a simple hack to do some increment etc. without arexx)
  256.  
  257.   PATCH_SMATH:
  258.  
  259.   8 short mathfuncs:
  260.    INC, DEC, NEG, NOT        x
  261.    ADD, SUB, MUL, DIV, MOD  x y
  262.       which expect 1 or 2 arguments
  263.       their function is recognized with their name
  264.       since they all use the same routines.
  265.  
  266.   PATCH_LMATH
  267.  
  268.   2 long math-functions:
  269.    MATH1 x y
  270.    MATH2 x y z
  271.       which expect 2 or 3 arguments
  272.  
  273.       If You use the Toggle INFIX
  274.       the second argument defines the mathematical function
  275.       else the first arg does
  276.  
  277.  >SWAPV var1 var2
  278.  
  279.       Swap the contents of 2 variables
  280.  
  281.       the command should recognize the type of the 2 variables and
  282.       use the appropriate set-funcions
  283.  
  284. ***************************************************************
  285.  
  286.   PATCH_VARS - OVERVIEW
  287.  
  288.  
  289.   ActivateToFront
  290.   Windowcycling
  291.  
  292.        These two flags refer to SELECT:
  293.  
  294.        ActivateToFront invokes a "WindowToFront()" every
  295.                time, windows are switched
  296.        Windowcycling   enables the possibility to switch
  297.                to the other end of Textlist, if
  298.                one end is reacjed with SELECT next/prev
  299.  
  300.  
  301.   SourceBreaks
  302.        That flag refers to SOURCE
  303.        if an abortcommand or a break occurs on
  304.        sourcing level, the operation is aborted
  305.  
  306.   SimpleTabs
  307.        That flag is an add to SAVETABS and SAVE[old|as]
  308.        if Savetabs is set, SimpleTabs decides to optimize
  309.        TAB-Optimisation until the first non-blank only
  310.  
  311.    smallspc.c..
  312.   $[SPC_]currentword
  313.        that read-only special-variable
  314.        represents "the word under the cursor"
  315.        that means it finds the beginning of the current word on
  316.        on its own (but we do not move the cursor) if cursor is
  317.        not within a word, it returns the next word of the line
  318.        if there is no next word, an empty string is returned
  319.   NOTE this variable is not accessible, if PATCH_VARS is not active
  320.  
  321.  
  322.     activefront - windowtofront when switching to another(0/1)(rw)
  323.               window
  324.     currentword - the "word under the cursor"                 (rO)
  325.     infixmode   - use math2 with prefix or infixmode (0/1)    (rw)
  326.               (see mathfuncs below)
  327.     restofline  - the name says all
  328.     viewmode    - no changes in text allowed (0/1)            (rw)
  329.  
  330.     Other variables cause a search of three variable domains to find the
  331.     contents.  For example, if you give  $DMEFONT:
  332.     (1) An internal Special variable named DMEFONT is searched for.
  333.         Special variabes are case sensitive.
  334.  
  335.     (2) A global or local toggle named DMEFONT s searched for.
  336.         global toggles are simply numbers and local toggles are numbers
  337.         preceded by an 'i'.   (see [[RE]SET]TOGGLE)
  338.  
  339.     (3) If called from a function it's argumentlist is searched
  340.         for DMEFONT (currently all arguments are called $argN with
  341.         N >= 1; arg0 == functionname)
  342.  
  343.     (4) A macrolocal variable named DMEFONT is searched for.
  344.         (SMV, SETMACROVAR, UNSETTMACROVAR)
  345.  
  346.     (5) A textlocal variable named DMEFONT is searched for. Textlocal
  347.         variables are case sensitive.  (SETTVAR, UNSETTVAR)
  348.  
  349.     (6) An Internal variable named DMEFONT is searched for.  Internal
  350.         variables are case sensitive.  (see SET, UNSET)
  351.  
  352.     (7) An Enviroment variable name DMEFONT is searched for.  Enviroment
  353.         variables are NOT case sensitive.  (see SETENV, UNSETENV).  The
  354.         1.3 ENV: is used.
  355.  
  356.     (8) A DME keymap or menu definition named DMEFONT is searched for.
  357.         This allows you to say something like $sa-tab to insert the
  358.         contents of the shift-alt-tab keymap.   (see MAP, UNMAP, and
  359.         MENU oriented commands).
  360.  
  361.  
  362.  
  363.   the vars-module shall support access to different types of
  364.   variables
  365.   which are currently "global" vars/flags, "textlocal" vars/flags,
  366.   "macrolocal" vars and "env" vars
  367.  
  368.  
  369.   WARNING:
  370.        as this module is written very close
  371.        to DME's internal hierachy, it will be object of major changes,
  372.        as soon as Packages are introduced as a new concept for management
  373.        of macros, menues, keys, flags and variables
  374.  
  375.  >SET name value
  376.  >UNSET name
  377.  
  378.       set a std DME variable to a new value or drop it and its contents
  379.       if the name is only a number, set the according dme std flag
  380.  
  381.       NOTE that if packages are ready, SET should default to PVars/PFlags,
  382.        not to GVars/GFlags
  383.  
  384.  >SETTVAR name value
  385.  >UNSETTVAR name
  386.  
  387.       set a text local variable to a new value or drop it and its contents
  388.       if the name is only a "t"number, set the according text local flag
  389.  
  390.  >SETENV name value
  391.  >UNSETENV name
  392.  
  393.       set an Environment variable to a new value or drop it and its contents
  394.  
  395. NOT IN XDME: FLAG flagname on/off/toggle/switch/0/1/set/reset/true/false
  396.  
  397.           set any flag that is controlled by DME
  398.           with flagname is number, "t"number or specialflagname
  399.  
  400.  >[[RE]SET]TOGGLE flagname
  401.  
  402.       modify any flag, that is controlled by DME
  403.       with flagname is number, "i"number or specialflag
  404.  
  405. **********************************************************
  406.  
  407.   Variable Stacking:
  408.  
  409.     PUSHVAR  varname
  410.     POPVAR   varname
  411.     PICKVAR  varname
  412.     SWAPVAR  varname
  413.     PURGEVAR varname
  414.  
  415.   Stacking for all structures, which may be read and
  416.   written via GetTypedVar()
  417.   (Please notice that stackable are only variables,
  418.    not macros, menues or mappings (they are stackable, but
  419.    popping or picking might fail))
  420.  
  421.   Users should be aware to pop their entries from the stack
  422.   when they are needed not any more
  423.   (We have NOT planned to create a garbage-collector :-))
  424.  
  425.  >PUSHVAR varname
  426.  
  427.        push the contents of the variable varname onto variable-stack
  428.  
  429.  >POPVAR varname
  430.  
  431.        get the latest to variable-stack pushed contents of the variable
  432.        varname back and free the stack-entry
  433.  
  434.  >PICKVAR varname
  435.  
  436.        get the latest to variable-stack pushed contents of the variable
  437.        varname back without freeing the stack-entry
  438.  
  439.  >SWAPVAR varname
  440.  
  441.        swap the contents of the variable varname and of its first occurancy in variable-stack
  442.  
  443.  >PURGEVAR varname
  444.  
  445.        remove all entries with the name varname from varstack
  446.  
  447.  
  448.  
  449. ********************************************************
  450.  
  451. save/load the different parts of the environment in a _special_format_:
  452.     MENUSAVE  filename
  453.     MENULOAD  filename
  454.     KEYSAVE   filename
  455.     KEYLOAD   filename
  456.     MACROSAVE filename
  457.     MACROLOAD filename
  458.  
  459.  
  460.  
  461. *********************************************************
  462.  
  463.   MENUES:
  464.   ******
  465.  
  466.     the following commands allow access to [X]DME's menustructures;
  467.   that way it is possible for each user to create an individual
  468.   GUI for "his" [X]DME, for "his" programming language and for
  469.   his wishes.
  470.  
  471.   INTRODUCTION
  472.   ************
  473.  
  474.       we divide menus in several parts:
  475.     each window may have one _Menustrip_   attached
  476.     consisting of several     _Menus_       or MenuHeaders
  477.     containing at least one  _MenuItem_    or Item
  478.     which may carry      _SubMenutems_ or Subs
  479.  
  480.  
  481.       The XDME process can manage multiple _Menustrips_,
  482.     for that purpose You can access them with
  483.     NEWMENUSTRIP, USEMENUSTRIP and REMMENUSTRIP (see below)
  484.  
  485.       Each menustrip consists of 0 or more _Menuheaders_
  486.     and their Items;
  487.     there are currently 2 commands for management of
  488.     MenuHeaders: MENUDELHDR  (see below)
  489.     please note that in that version of XDME You cannot
  490.     explicitely create or modify MenuHeaders but only
  491.     delete them; creation is done automatically while
  492.     creating MenuItems or SubItems.
  493.       MenuHeaders are inplicitely deleted by delteing their
  494.     last MenuItem.
  495.  
  496.  
  497.       MenuItems are the components of MenuHeaders;
  498.     (wanna say each MenuHeader contains at least one MenuItem,
  499.     else it is deleted) they are classified into
  500.     (normal) Items, CheckItems, ItemBars and SubItemCarriers
  501.     the class of each Item is defined at creation time
  502.     (no - I dont wanna forbid redefinition at a later time,
  503.      but it is "undefined" which effect that action has)
  504.     each class has its own characteristics:
  505.  
  506.     normal Items only may be executed;
  507.     Checkitems may additionally be toggled or their value
  508.            may be asked;
  509.     ItemBars only may be created or deleted, they have no function
  510.          exept their optical accearance;
  511.     SubItemCarriers can not be executed, too; their only function
  512.          is giving their connected SubItems a name;
  513.  
  514.     there are different commands for each class to be created,
  515.     but all of them can be deleted in the same way ( pardon:
  516.     not all - single ItemBars must be deleted with an own command)
  517.  
  518.       there are no commands to explicitely create SubItemCarriers -
  519.     they are implicitely created in the generation of SubItems
  520.     (the same like menuHeaders and MenuItems) also SubItemCarriers
  521.     are deleted automatically with their last attached SubItem
  522.  
  523.  
  524.       SubItems are nearly the same as MenuItems, only they are not
  525.     attached to a MenuHeader but to a MenuItem ( = SubItemCarrier)
  526.     and they can not carry another series of SubItems;
  527.     so we have (normal) SubItems, SubBars, and SubCheckItems
  528.  
  529.  
  530.   MENUHEADERS
  531.   ***********
  532.  
  533.    >MENUDELHDR menuname
  534.  
  535.     delete a menuheader and all associated items (and subitems).
  536.  
  537.     menuheaders are created by using their names in item or
  538.     subitem definitions.
  539.  
  540.  
  541.   MENUITEMS
  542.   *********
  543.  
  544.    >MENUADD   menuname itemname subname command
  545.    >MENUBAR   menuname itemname
  546.    >MENUCHECK menuname itemname subname command
  547.  
  548.     create a menuitem-entry
  549.     BAR simply appends an itembar to the item-list
  550.     ADD creates a full menuitem-entry, if not already one
  551.         of the same name exists
  552.     CHECK also sets the menutoggle flag to an entry created
  553.         like ADD
  554.  
  555.       Not so important notes (they might be obsolete in near future)
  556.     You cannot add subitems to items that were created with
  557.         MENUADD or MENUCHECK as these have commands added
  558.         while we expect subitem carrier to have no command added
  559.     You cannot redefine the type of an menuitem once created
  560.         normal items can't be redefined to checkitems
  561.         or subitem carriers and vice versa
  562.  
  563.    >MENUDEL    menuname itemname
  564.    >MENUDELBAR menuname
  565.  
  566.     delete a menuitem-entry
  567.     MENUDELBAR deletes the first(!) itembar in a menu's
  568.           itemlist
  569.     MENUDEL   deletes the menuitem with the name itemname
  570.           if itemname is a subitem-carrier, all subs
  571.           are deleted, too
  572.  
  573.     You can delete all items of a menu, if You call MENUDELHDR
  574.  
  575.    >MENUSETITEM menuname itemname      status
  576.    >MENUCHKITEM menuname itemname      variablename
  577.  
  578.     these commands set or check the satus of the item-checked
  579.     flags for items created with the MENUCHECK commands
  580.     status is one of 0|1 the value set into variable is also 0|1
  581.  
  582.  
  583.   SUBMENUITEMS
  584.   ************
  585.  
  586.    >MENUSUBADD     menuname itemname subname command
  587.    >MENUSUBBAR     menuname itemname
  588.    >MENUSUBCHECK menuname itemname subname command
  589.  
  590.     create a submenu-entry
  591.     SUBBAR simply appends an itembar to the subitem-list
  592.     SUBADD creates a full subitem-entry, if not already one
  593.         of the same name exists
  594.     SUBCHECK also sets the menutoggle flag to an entry created
  595.         like SUBADD
  596.  
  597.       Not so important notes (they might be obsolete in near future)
  598.     You cannot add subitems to items that were created with
  599.         MENUADD or MENUCHECK as these are managed in a quite
  600.         different way, so You create subitem-carrier simply by
  601.         using their names in a subitem definition
  602.     You cannot redefine the type of an subitem once created
  603.         normal subs can't be redefined to subcheck and vice versa
  604.  
  605.    >MENUDELSUB      menuname itemname subname
  606.    >MENUDELSUBBAR menuname itemname
  607.  
  608.     delete a submenu-entry
  609.     DELSUBBAR deletes the first submenubar in a menuitem's subitemlist
  610.     DELSUB deletes the submenu with the name subname
  611.  
  612.     You can delete all an item's subitem if You MENUDEL the carrying item
  613.  
  614.    >MENUSETSUB    menuname itemname subname status
  615.    >MENUCHKSUB    menuname itemname subname variablename
  616.  
  617.     these commands set or check the satus of the subitem-checked
  618.     flags for subitems created with the MENUSUBCHECK commands
  619.     status is one of 0|1 the value set into variable is also 0|1
  620.  
  621.  
  622.  
  623.   MENUSTRIPS:
  624.   **********
  625.  
  626.     The following three commands do only make sense, if
  627.   You are using multiple menustrips
  628.   at [X]DME's start a menustrip called "default" is created;
  629.   for "normal" usage, that single strip may suffer.
  630.  
  631.   (these commands are obsolete as soon as we introduce PACKAGES)
  632.  
  633.    >USEMENUSTRIP name
  634.  
  635.     search for a certain menustrip and use it as the current one
  636.  
  637.    >REMMENUSTRIP
  638.  
  639.     delete the current menustrip, if it is not the only one
  640.  
  641.    >NEWMENUSTRIP name
  642.  
  643.     create a new menustrip called name and use it
  644.  
  645.     note that it is not defined here, what happens if You
  646.          call NEWMENUSTRIP with the name of an existiong MenuStrip
  647.  
  648.  
  649.     The following commands concern the current Menustrip
  650.   (Please note that the MENU... commands below apply to the
  651.   CURRENT menustrip (and only to it))
  652.  
  653.    >MENUCLEAR
  654.  
  655.     clean up the menustrip, i.e. delete all of its
  656.     menuheaders
  657.  
  658.    >MENUSAVE filename
  659.  
  660.     save the menustrip as a file that can be
  661.     read by MENULOAD
  662.  
  663.    >MENULOAD filename
  664.  
  665.     clear the menustrip and instead build a new
  666.     contents out of the file filename
  667.  
  668.    >MENUON
  669.    >MENUOFF
  670.  
  671.     show or hide the whole menustrip
  672.     MENUOFF is stackable, i.e You need as many MENUON calls
  673.     to show the menustrip as previously MENUOFF calls
  674.  
  675.  
  676.  
  677. ***************************************************
  678.  
  679.  
  680. BUGS etc.
  681.  
  682.   * disappointing is the fact, that esc/escimm
  683.     are not really functions but more complex switches; so You can't use
  684.     escimm on higher recursion depths - and neither from functions as
  685.     these are simply higher recursions - if they are followed by text
  686.     and/or -return on a calling level:
  687.  
  688.     #    level x | level x + 1 with escimm  | level x
  689.     SETMACRO get 1 (ESCIMM (SET $arg1 '))
  690.         get name            (void) RETURN
  691.            EVAL (ESCIMM (SET name '))   (void) RETURN
  692.     SETTOGGLE 1
  693.            IF 1 (ESCIMM (SET name '))   (void) RETURN
  694.     # all these 3 functions have the same effect:
  695.         SET name void
  696.     # plus  write that line into recall buffer
  697.  
  698.     that bug is due to the strange management of ESC[IMM] since DME
  699.     doesn't freeze all recursion levels but only the highest one to
  700.     ask the user for input - that problem is NOT new (it also occurs with
  701.     old versions in connection with IF, WHILE & REPEAT), but it gets
  702.     disturbing in connection with functions.
  703.      It might be fixed if someone changed the method ESCIMM is done.
  704.      The simple way was to take the main loop out of main() and put it
  705.     into an own reentrant function, which whould be called on every call
  706.     of ESC, ESCIMM and other hypothetic asynchronous commands, which
  707.     momentary are senseless to be written;
  708.      but then You could QUIT DME only if all requests were satisfied -
  709.     or ? not really user friendly if that's right.
  710.      another way is to make CF_PAR recursible and set CF_PAR for IF[ELSE],
  711.     WHILE, REPEAT, QUIET, EVAL, UNTITLE and FORCE and extend the macro-
  712.     definition, SETMACRO and callmacro with a new Flag for CF_PAR.
  713.  
  714.   * it is NOT possible to implicitly call AREXXMacros whose names start
  715.     with NKx, F10, ESC, HEL, LEF, BAC, RIG, DOW, RET, ENT, TAB, DEL,
  716.     LMB, MMB, RMB or MMO as AREXXMacros are searched AFTER Keymappings
  717.     and the recognition-scheme for Mappings only checks up to 3 letters
  718.     (so these functions would be recognized as -NKx, -F10, -ESC, -HELP,
  719.     -LEFT, -RIGHT, -DOWN, -RETURN, -ENTER, -TAB or -DEL ...)
  720.     That problem does not occur with Macronames beginning with
  721.     UP or Fx.
  722.  
  723.  
  724.  
  725.