home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / SLICKOS2.ZIP / SLICK.DOC < prev    next >
Text File  |  1989-12-01  |  329KB  |  7,880 lines

  1. @SLICK MA=4 74 4 , TABS=1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 , WWS=3, IWT=0, ST=1,
  2. (command,cursor): + number
  3.  
  4.    Moves the cursor the specified number of lines down.
  5.  
  6. (command,cursor): - number
  7.  
  8.    Moves the cursor the specified number of lines up.
  9.  
  10. (command,cursor): 0 number
  11.  
  12.    Moves the cursor to the specified line number.  The leading digit
  13.    0 zero is not required.  Any line number may be typed on the command
  14.    line and the (DEFC) for '0' will be called.
  15.  
  16.    Example
  17.  
  18.      100              - Move cursor to line 100
  19.  
  20. (command,search): /,L    /string[/ [E] [I] [-] [M] [<] [>] [R] [W]]
  21.  
  22.    This command description assumes invocation from the command line.  The
  23.    / or L commands may also be invoked from the FIND menu (MENU, "Search",
  24.    "Find...") which allows the string and option parameters to be entered
  25.    in separate input fields without delimiters.
  26.  
  27.    Searches for the string specified.  If you use the L command, the first
  28.    non blank character is used as the delimiter.  Multiple options having
  29.    the following meaning may be specified:
  30.  
  31.         E    Exact case
  32.         I    Ignore case
  33.         -    Reverse search
  34.         M    Limit search to marked area
  35.         <    If found, cursor is positioned at beginning of word
  36.         >    If found, cursor is positioned at end of word
  37.         R    Interpret string as a regular expression
  38.         W    Limits search to words.  Used for searching for variables.
  39.         W=regular expression
  40.  
  41.              Specifies the valid characters in a word.  The default value is
  42.              [A-Za-z0-9_$] and may be changed by the command
  43.              WORD-CHARS (CONFIG, "Other options...", "Word
  44.              characters...").
  45.  
  46.    When case sensitivity options E or I are not specified, the default
  47.    search case set by the SEARCH-CASE command is used.  The search string
  48.    is not interpreted as a regular expression unless the R option is
  49.    specified.
  50.  
  51.     Example
  52.  
  53.         /xyz/-            Search for "xyz" using default search case
  54.                           in reverse.
  55.         L /xyz/-          Search for "xyz" using default search case
  56.                           in reverse.  Notice that prefixing the
  57.                           string "/xyz-" with L has no effect on this
  58.                           command.
  59.         L $xyz$-          Search for "xyz" using default search case
  60.                           in reverse.  The L command can change the
  61.                           string delimiter which in this case is not
  62.                           necessary.
  63.         L $/$             Search forward for the character slash.  The L
  64.                           command has been used so that the string
  65.                           delimiter could be changed to $ which allows
  66.                           searching for the / character.
  67.         L $/$-            Search backward for the character slash.
  68.         /i/w              Search for the variable i.
  69.         /xyz/e            Search for "xyz" in exact case.
  70.  
  71.  
  72.     Regular expressions are defined as follows:
  73.  
  74.        ^      Matches beginning of line
  75.        $      Matches end of line
  76.        ?      Matches any character except new line.
  77.        X+     Minimal match of one or more occurrences of X.
  78.        X#     Maximal match of one or more occurrences of X.
  79.        X*     Minimal match of zero or more occurrences of X.
  80.        X@     Maximal match of zero or more occurrences of X.
  81.        ~X     Search fails if expression X is matched.  The expression
  82.               ^~(if) matches the beginning of all lines that do not start
  83.               with if.
  84.        (X)    Matches sub-expression X.
  85.        {X}    Matches sub-expression X and specifies a new group.
  86.        [char-set]  Matches any one of the characters specified by char-set.
  87.               A dash '-' character may be used to specify ranges.  The
  88.               expression [A-Z] matches any upper case letter.
  89.        [~char-set]  Matches any character not specified by char-set.
  90.               A dash '-' character may be used to specify ranges.  The
  91.               expression [~A-Z] matches all characters except upper
  92.               case letters.
  93.        X|Y    Matches X or Y.
  94.        \c     Specifies cursor position if match is found. If the
  95.               expression xyz\c is found the cursor is placed after the z.
  96.        \n     Matches newline character.  Useful for binary files only.
  97.        \r     Matches carriage return.  Useful for binary files only.
  98.        \t     Matches tab character.
  99.        \b     Matches backspace character.
  100.        \f     Matches form feed character.
  101.        \xhh   Matches hex character hh.
  102.        \ddd   Matches decimal character ddd.
  103.        \char  Declares character after slash to be literal. For
  104.               example '\:' represents the colon character.
  105.        :char  Matches predefined expression corresponding to char.
  106.               The predefined expressions are:
  107.  
  108.               :a   [A-Za-z0-9]                      Matches alphanumerics
  109.               :b    ([ \t]#)                        Matches blanks
  110.               :c    [A-Za-z]                        Matches alphabetic
  111.               :d    [0-9]                           Matches digit
  112.               :f    ([~\[\]\:\\/<>|=+;, \t]#)       Matches filename part
  113.               :h    ([0-9A-Fa-f]#)                  Matches hex number
  114.               :i    ([0-9]#)                        Matches integer
  115.               :n    (([0-9]#(.[0-9]#|)|.[0-9]#)([Ee](\+|-|)[0-9]#|))
  116.                                                     Matches floating point
  117.                                                     number
  118.               :p    (([A-Za-z]\:|)(\\|/|)(:f(\\|/))@:f)
  119.                                                     Matches path
  120.               :q    (\"[~\"]@\"|'[~']@')            Matches quoted string
  121.               :v    ([A-Za-z_$][A-Za-z0-9_$]@)      Matches C variable
  122.               :w    ([A-Za-z]#)                     Matches a word
  123.  
  124.  
  125.     Precedence of operators from highest to lowest.
  126.  
  127.         +,#,*,@       These operators have the same precedence
  128.         concatenation
  129.         |
  130.  
  131.     Example
  132.  
  133.        /^defproc/r           Matches lines that begin with the word
  134.                              defproc.
  135.        /^definit$/r          Matches lines that only contain the word
  136.                              definit.
  137.        /^\:name/r            Matches lines that begin with the string
  138.                              ":name".  Notice that the backslash must
  139.                              prefix the special character ':'.
  140.        /[\t ]/r              Matches tab and space characters.
  141.        /[\9\32]/r            Matches tab and space characters.
  142.        /[\x9\x20]/r          Matches tab and space characters.
  143.        /p?t/r                Matches any three letter string starting with
  144.                              the letter 'p' and ending with the letter
  145.                              't'. Possible matches are "pot" and "pat".
  146.        /s?*t/r               Matches the letter 's' followed by any number
  147.                              of characters followed by the letter 't'.
  148.                              Two possible matches are "seat" and "st".
  149.        /for|while/r          Matches the strings for or while.
  150.        /^:p/r                Matches lines beginning with a file name.
  151.        /xy+z/r               Matches x followed by one or more occurrences
  152.                              of y followed by z.
  153.        /a+/r                 Matches shortest string of a's. Same as "/a/r".
  154.        /a#/r                 Matches longest string of a's.
  155.  
  156.  
  157.  
  158.     See also   I-SEARCH, C ,EDIT-WITH
  159.  
  160. (command,misc): ABORT
  161.  
  162.    Cancels the command currently executing.  If you write macros which use
  163.    the GETKEY() procedure, be sure to call the procedure ISCANCEL, or
  164.    IS_LIST_CANCEL to check whether the user has selected to abort.
  165.  
  166.  
  167. (built-in,file): ABSOLUTE(filename)
  168.  
  169.    Returns filename with exact path specification.
  170.  
  171.    Example
  172.  
  173.       /* Assuming current working directory is 'c:\slick' */
  174.  
  175.       absolute('..\autoexec.bat')== 'c:\autoexec.bat'
  176.       absolute('s.exe')          == 'c:\slick\s.exe'
  177.  
  178.    See also  RELATIVE
  179.  
  180. (built-in,window): ACTIVATE_VIEW  view_id
  181.  
  182.    For an explanation of how windows,views, and buffers are related,
  183.    type "help windows-structure" on command line.
  184.  
  185.    A view holds the information necessary for the editor to remember your
  186.    location in a buffer.  The internal view variables you can access are
  187.    '.cursor_x', '.cursor_y', '.line', '.col', '.left_edge', '.buf_id', and
  188.    '.window_id'.  Each window has a ring of views to buffers.  When you
  189.    have more than one window looking at the same buffer.  The windows have
  190.    different views of that buffer.  Usually all view variables are
  191.    different except for '.buf_id'.  ACTIVATE_VIEW makes the
  192.    window,view, and buffer corresponding to view_id active.
  193.  
  194.    Example
  195.  
  196.       get_view_id view_id     /* Remember current window,view, and buffer */
  197.       next_view               /* switch to next view in current window. */
  198.       activate_view view_id   /* Go back to orig. window,view, and buffer. */
  199.  
  200.   See also  GET_VIEW_ID, NEXT_VIEW, PREV_VIEW, QUIT_VIEW,
  201.             LOAD_FILES, NEXT_WINDOW, PREV_WINDOW
  202.  
  203. (command,mark): ADD
  204.  
  205.    Adds marked text and inserts result below the last line of the mark.
  206.    If no operator exists between two adjacent numbers, addition is
  207.    assumed.  '$' and ',' characters are stripped from the line before the
  208.    expression is evaluated.  Accepts expressions supported by the MATH
  209.    commands.  See MATH command for information on expression.  The result
  210.    of each adjacent line is added.  Mark text first with one of the
  211.    commands MARK-CHAR (Alt-Z), MARK-LINE (Alt-L), or MARK-BLOCK (Alt-B).
  212.  
  213.    See also MARK-CHAR, MARK-LINE, MARK-BLOCK, MATH, MATHX, MATHO, MULT
  214.  
  215. (built-in,mark): ADJUST_BLOCK_MARK  [mark_id]
  216.  
  217.    Overlays the marked block of text specified at the cursor position and
  218.    fills in the source block with spaces.  This primitive handles all
  219.    source and destination conflicts.  A useful function for this primitive
  220.    is to move a large column of numbers up or down.
  221.  
  222. (command,mark): ADJUST-BLOCK-MARK
  223.  
  224.    Overlays the visible marked block of text at the cursor position and
  225.    fills in the source block with spaces.  This command handles all source
  226.    and destination conflicts.  A useful function for this command is to
  227.    move a large column of numbers up or down.  A block of text may be
  228.    marked with the MARK-BLOCK command (Alt-B).
  229.  
  230. (built-in,mark): ALLOC_MARK(['B'])
  231.  
  232.    Returns a handle to a mark.  If no more marks are available, RC is set
  233.    to TOO_MANY_MARKS_RC.  Otherwise RC is set to '0'.  This handle may be
  234.    passed as a parameter to other mark functions such as MARK_LINE and
  235.    COPY_MARK.  For a complete list of mark functions type "help-class
  236.    mark" on the command line and press ENTER.  The 'B' option is used for
  237.    allocating a book mark.  Book marks can not be deleted and require one
  238.    view instead of two.  A view contains cursor position information.
  239.  
  240.    IMPORTANT:  The active mark or mark showing may not be freed by the
  241.                FREE_MARK function.  Use the SHOW_MARK function to make
  242.                another  mark active before freeing the mark you have
  243.                allocated.
  244.  
  245.    Example
  246.       /* Allocate a mark for copying the current line. */
  247.       mark_id= alloc_mark()
  248.       if rc then
  249.         message get_message(rc)
  250.         return(rc)
  251.       endif
  252.       mark_line mark_id
  253.       copy_mark mark_id
  254.       /* This mark can be freed because it is not the active mark. */
  255.       free_mark mark_id
  256.       return(0)
  257.  
  258.  
  259.    See also  FREE_MARK, SHOW_MARK
  260.  
  261. (command,mark): APPEND file-name
  262.  
  263.    Appends marked text to file specified.  This command has no effects on
  264.    files already in memory.  Mark text first with one of the commands
  265.    MARK-CHAR (Alt-Z), MARK-LINE (Alt-L), or MARK-BLOCK (Alt-B).
  266.  
  267.    See also  MARK-CHAR, MARK-LINE, MARK-BLOCK, GET, PUT
  268.  
  269. (command,file): APPEND-DIR [filespec] [filespec] ...
  270.  
  271.    Appends a directory list of the files specified to the current buffer.
  272.    If filespec is not specified, the current directory list is used.  This
  273.    command is useful when in fileman mode.  Using the DIR or LIST commands
  274.    will change the mode to fileman mode.
  275.  
  276.    See also  DIR, LIST, APPEND-LIST
  277.  
  278. (command,file): APPEND-LIST [filespec] [filespec] ...
  279.  
  280.    Appends a tree directory list of the files specified to the current
  281.    buffer.  If filespec is not specified, the current tree directory list
  282.    is used.  This command is useful when in fileman mode.  Using the DIR
  283.    or LIST commands will change the mode to fileman mode.
  284.  
  285.    See also  DIR, LIST, APPEND-DIR, APPEND-LIST
  286.  
  287. (built-in,language): ARG([number])
  288.  
  289.    If number is not given the number of arguments passed to the procedure
  290.    is returned.  Otherwise the value of the parameter corresponding to
  291.    number is returned.  The first parameter is 1.
  292.  
  293.    Example
  294.  
  295.       defmain
  296.          call p('first','second')
  297.          pause
  298.  
  299.       defproc p()
  300.          say 'Received 'arg()' arguments'
  301.          for i=1 to arg()
  302.            say 'arg('i')='arg(i)
  303.          endfor
  304.  
  305. (built-in,misc): ASC(character)
  306.  
  307.    Returns the ASCII code corresponding to the ASCII character given.
  308.  
  309.    Example
  310.  
  311.        asc('A') == 65
  312.  
  313.    See also  CHR
  314.  
  315. (command,misc): ASC [character]
  316.  
  317.    Returns the ASCII code corresponding to the character given on the
  318.    command line.  If character is not specified, the character at the
  319.    cursor position in the buffer is used.
  320.  
  321.    See also  CHR
  322.  
  323.  
  324. (command,misc): ASCII-TABLE
  325.  
  326.    Loads the file "asciitab" which contains a table of the ascii
  327.    characters with the corresponding hex and decimal character codes.
  328.  
  329. (command,misc): AUTO-RESTORE  [on|off]
  330.  
  331.    When AUTO-RESTORE is on, the SAFE-EXIT command (Alt-X or Ctrl-X Ctrl-C)
  332.    will save the window configuration, buffer positions, and the command
  333.    retrieve buffer in the current directory before exiting the editor.
  334.    The next time the editor is invoked with no parameters, SLICK will
  335.    automatically resume your last edit session by restoring the window
  336.    configuration, buffer positions, and the command retrieve buffer.
  337.    Execute the command AUTO-RESTORE with no parameters to view the current
  338.    setting.  You can manually save the window/buffer configuration with
  339.    one of the commands SAVE-WINDOW-CONFIG or XDOS.  To manually restore
  340.    the window/buffer configuration, invoke SLICK with the "-r restore"
  341.    parameters.
  342.  
  343.    See also SAVE-WINDOW-CONFIG, XDOS, RESTORE
  344.  
  345. (built-in,cursor): BACK_TAB
  346.  
  347.    Places cursor at previous tab stop if any.  To set the tab stops see
  348.    help on TABS command.  If column is not in view, column is center
  349.    scrolled or smooth scrolled into view.  See SCROLL_STYLE.  Each
  350.    buffer has its own tab stops.  The default tabs for new buffers as well
  351.    as the tabs of the current buffer may be set by the TABS command.
  352.  
  353.    See also  TAB, INTERNAL-VARIABLES, TABS
  354.  
  355. (built-in,cursor): BEGIN_LINE
  356.  
  357.    Places cursor at column 1 of current line.
  358.  
  359.    See also  END_LINE
  360.  
  361. (built-in,mark): BEGIN_MARK [mark_id]
  362.  
  363.    Places cursor on first character of marked area specified.  If the mark
  364.    type is LINE, the cursor is moved to the first line of the marked area
  365.    and the column position is unchanged.
  366.  
  367. (command,mark): BEGIN-MARK
  368.  
  369.    Places cursor on first character of visible mark.  If the mark type is
  370.    LINE, the cursor is moved to the first line of the marked area and the
  371.    column position is unchanged.
  372.  
  373. (built-in,mark): BEGIN_MARK_COMPARE([mark_id])
  374.  
  375.    Compares current line position to first line of mark specified.
  376.  
  377.         Return values
  378.  
  379.            0        Current line is on first line of mark
  380.            >0       Current line is after first line of mark
  381.            <0       Current line is before first line of mark
  382.            -1       Text is not marked or mark is not in current buffer
  383.  
  384.  
  385.    See also  END_MARK_COMPARE
  386.  
  387. (command,keyboard): BIND-TO-KEY  [-r | -m] command
  388.  
  389.    Binds command specified to key(s) you type.  The -r and -m options may
  390.    be used to select key bindings to the root or mode key table.
  391.    If you don't quite understand what root and mode key tables
  392.    are, you should not specify the -r or -m option.
  393.  
  394.    Here are the reasons for selecting each option:
  395.  
  396.        -r      You want this key binding to be active in all modes.
  397.        -m      You want this key binding to be active only in the
  398.                current mode.
  399.  
  400.    If the current mode is fundamental, the -r and -m options have no
  401.    effect.  Keys bound while in fundamental mode will be active in all
  402.    modes unless there is a mode key binding.
  403.  
  404.    The most common mistake occurs under the following circumstances:
  405.  
  406.       * The current mode is SLICK, C, or PASCAL
  407.       * The BIND-TO-KEY command is invoked without the -r option
  408.       * One of the keys ENTER or SPACE BAR is selected to be rebound
  409.  
  410.    The above sequences rebinds either ENTER or SPACE BAR only for the
  411.    active mode.  This is not usually what was intended.  Specify the -r
  412.    option when you want a key binding to be active in all modes.
  413.  
  414.    When no options are specified a mode key table binding takes precedence
  415.    over a root key table binding.  When the mode key table has no binding
  416.    for the key, the root key table binding is selected.  After running the
  417.    BIND-TO-KEY command, use the "write-state" command to save the
  418.    configuration.  Use the config menu items "Bind command to key..." and
  419.    "Save configuration...".  To change the "summary of keys" help item,
  420.    execute the command "find-help summary-of-keys" and update the help.
  421.    The current key bindings may be listed by the command "list-keydefs".
  422.  
  423.    See also  UNBIND-KEY, LIST-KEYDEFS
  424.  
  425. (built-in,misc): BLOCK_WAS_READ([number])
  426.  
  427.    Returns a non-zero number if the editor has read a block from a file.
  428.    Otherwise zero is returned.  To reset this function the value '0' is
  429.    passed.  However the reset value may be any whole number.  The purpose
  430.    of this function is to allow macros to flush the keyboard buffer when
  431.    the editor is not keeping up with the key strokes.
  432.  
  433.    Example
  434.  
  435.      /* This macro allows the user to hold a key down which */
  436.      /* invokes this macro repeatedly to scroll down a file which is */
  437.      /* only partially loaded. No sudden screen jumps will occur. */
  438.      if block_was_read() then
  439.         call block_was_read(0)
  440.         call flush_keyboard();                   /* slick proc */
  441.      endif
  442.      down
  443.  
  444. (command,cursor): BOTH-BACKTAB
  445.  
  446.    Moves the cursor to the previous tab stop.  To set the tab stops see
  447.    help on TABS command.  Works on command line or text line.  Type
  448.    "both?" on the command line for a list of the commands that operate on
  449.    the command line and text area.
  450.  
  451.    See also  BOTH-TAB, BOTH-MOVE-TEXT-TAB, BOTH-MOVE-TEXT-BACKTAB,
  452.  
  453. (command,cursor): BOTH-BEGIN-LINE
  454.  
  455.    Moves the cursor to column one.  Works on command line or text line.
  456.    Type "both?" on the command line for a list of the commands that
  457.    operate on the command line and text area.
  458.  
  459. (command,cursor): BOTH-BEGIN-LINE-TEXT-TOGGLE
  460.  
  461.    If the visible cursor is on the command line, the cursor is moved to
  462.    column one of the command line.  If the text area is active and the
  463.    cursor is not in column one, the cursor is placed on the first non
  464.    blank character of the current line.  Otherwise the cursor is moved to
  465.    column one.  Type "both?" on the command line for a list of the
  466.    commands that operate on the command line and text area.
  467.  
  468. (command,misc): BOTH-CAP-WORD
  469.  
  470.    Capitalizes the first character of the current word and places the
  471.    cursor after the current word.  To change the default word characters
  472.    invoke the WORD-CHARS command (CONFIG, "Other options...", "Word
  473.    characters...").  Works on command line or text line.  Type "both?" on
  474.    the command line for a list of the commands that operate on the command
  475.    line and text area.
  476.  
  477.    See also  BOTH-LOWCASE-WORD, BOTH-UPCASE-WORD
  478.  
  479. (command,mark): BOTH-COPY-WORD
  480.  
  481.    Copies word at the cursor to the clipboard.  Invoking this command from
  482.    the keyboard multiple times in succession creates one clipboard.  To
  483.    change the default word characters invoke the WORD-CHARS command
  484.    (CONFIG, "Other options...", "Word characters...").  Works on command
  485.    line or text line.  Type "both?" on the command line for a list of the
  486.    commands that operate on the command line and text area.
  487.  
  488. (command,misc): BOTH-DELETE-CHAR
  489.  
  490.    Deletes the character at the cursor.  If the cursor is in the text
  491.    area ,the left/right margins are not 1/254, and no more characters
  492.    exist on the current line, the next line is joined to the current line.
  493.    Works on command line or text line.  Type "both?" on the command line
  494.    for a list of the commands that operate on the command line and text
  495.    area.
  496.  
  497. (command,cursor): BOTH-DOWN
  498.  
  499.    If the cursor is in the text area, the cursor is moved one line down.
  500.    If the cursor is on the command line, the next command in the retrieve
  501.    buffer ".command" is placed on the command line.  Type "both?" on the
  502.    command line for a list of the commands that operate on the command
  503.    line and text area.
  504.  
  505. (command,cursor): BOTH-END-LINE
  506.  
  507.    Moves the cursor after the last character of the line.  Works on
  508.    command line or text line.  Type "both?" on the command line for a list
  509.    of the commands that operate on the command line and text area.
  510.  
  511. (command,mark): BOTH-KILL-END-LINE
  512.  
  513.    Deletes text from cursor to end of line and copies it to the clipboard.
  514.    If the visible cursor is in the text area and the rest of the line is
  515.    null, the next line is joined with the current line.  Invoking this
  516.    command from the keyboard multiple times in succession creates one
  517.    clipboard.  You may retrieve the deleted text with the command
  518.    BOTH-YANK.  This command works on command line or text line.  Type
  519.    "both?" on the command line for a list of the commands that operate on
  520.    the command line and text area.
  521.  
  522. (command,mark): BOTH-KILL-LINE
  523.  
  524.    Deletes the current line and copies it to the clipboard.  If the
  525.    visible cursor in on the command line, the cursor is moved to column
  526.    one.  Invoking this command from the keyboard multiple times in
  527.    succession creates one clipboard.  You may retrieve the deleted line(s)
  528.    with the command BOTH-YANK.  This command works on command line or text
  529.    line.  Type "both?" on the command line for a list of the commands that
  530.    operate on the command line and text area.
  531.  
  532. (command,mark): BOTH-KILL-WORD
  533.  
  534.    Deletes from the cursor to the end of the word at the cursor or the
  535.    next word.  Invoking this command from the keyboard multiple times in
  536.    succession creates one clipboard.  A word is defined by the following
  537.    regular expression:
  538.  
  539.          [a-zA-Z0-9_$]#
  540.  
  541.    The above regular expression accepts valid characters in a C language
  542.    identifier.  To change the default word characters invoke the
  543.    WORD-CHARS command (CONFIG, "Other options...", "Word characters...").
  544.    The deleted text may be retrieved by the command BOTH-YANK.  This
  545.    command works on command line or text line.  Type "both?" on the
  546.    command line for a list of the commands that operate on the command
  547.    line and text area.
  548.  
  549. (command,cursor): BOTH-LEFT
  550.  
  551.    Moves the cursor one character to the left.  If the visible cursor is
  552.    in the text area and the left/right margins are not 1/254, the cursor
  553.    will wrap to the end of the previous line when the left margin is hit.
  554.    Works on command line or text line.  Type "both?" on the command line
  555.    for a list of the commands that operate on the command line and text
  556.    area.
  557.  
  558. (command,misc): BOTH-LINEWRAP-DELETE-CHAR
  559.  
  560.    Deletes character at the cursor.  If the visible cursor is in the
  561.    text area and the rest of the line is null, the next line is joined to
  562.    the current line.  Works on command line or text line.  Type "both?" on
  563.    the command line for a list of the commands that operate on the command
  564.    line and text area.
  565.  
  566. (command,cursor): BOTH-LINEWRAP-LEFT
  567.  
  568.    Moves the cursor to the left.  If the visible cursor is in the text
  569.    area the cursor will wrap to the end of previous line when the left
  570.    margin or column one is hit.  If you want line wrapping to occur when
  571.    column is reached, set the line wrap on text option to 'Y' (CONFIG,
  572.    "Redefine common keys...", "Line wrap on text...").  Works on command
  573.    line or text line.  Type "both?" on the command line for a list of the
  574.    commands that operate on the command line and text area.
  575.  
  576. (command,cursor): BOTH-LINEWRAP-RIGHT
  577.  
  578.    Moves the cursor to the right.  If the visible cursor is in the text
  579.    area the cursor will wrap to the next line when the end of line is hit.
  580.    Works on command line or text line.  Type "both?" on the command line
  581.    for a list of the commands that operate on the command line and text
  582.    area.
  583.  
  584. (command,cursor): BOTH-LINEWRAP-RUBOUT
  585.  
  586.    Deletes character to left of cursor.  If the visible cursor is in the
  587.    text area the cursor will wrap to the end of previous line when the
  588.    left margin is hit.  If you want line wrapping to occur when column one
  589.    is reached, set the line wrap on text option to 'Y' (CONFIG, "Redefine
  590.    common keys...", "Line wrap on text...").  Works on command line or
  591.    text line.  Type "both?" on the command line for a list of the commands
  592.    that operate on the command line and text area.
  593.  
  594. (command,mark): BOTH-LIST-YANK
  595.  
  596.    Allows you to select a clipboard from a list of your most recently used
  597.    (15 is the default maximum) clipboards to insert at the cursor.
  598.    Subsequent calls to the BOTH-YANK command will insert the same text as
  599.    your last BOTH-LIST-YANK.  LINE type clipboards are inserted before or
  600.    after the current line depending upon the line insert style (CONFIG,
  601.    "Other options...", "Line insert style...").  By default, they are
  602.    inserted before.  Works on command line or text line.  Type "both?" on
  603.    the command line for a list of the commands that operate on the command
  604.    line and text area.
  605.  
  606.    See also  BOTH-YANK
  607.  
  608. (command,misc): BOTH-LOWCASE-WORD
  609.  
  610.    Translates the current word to lower case and places the cursor after
  611.    the current word.  To change the default word characters invoke the
  612.    WORD-CHARS command (CONFIG, "Other options...", "Word characters...").
  613.    Works on command line or text line.  Type "both?" on the command line
  614.    for a list of the commands that operate on the command line and text
  615.    area.
  616.  
  617.    See also  BOTH-UPCASE-WORD, BOTH-CAP-WORD
  618.  
  619. (command,misc):  BOTH-MAYBE-SPLIT-INSERT-LINE
  620.  
  621.    If the visible cursor is on the command line, the command is executed.
  622.  
  623.    Otherwise if insert state is on, the current line is split at the
  624.    cursor.  Enough blanks are appended to the beginning of the new line to
  625.    align it with the first non blank character of the original line.
  626.  
  627.    If the insert state is off, the cursor is moved to column one of the
  628.    next line.
  629.  
  630.    Type "both?" on the command line for a list of the commands that
  631.    operate on the command line and text area.
  632.  
  633. (command,cursor): BOTH-MOVE-TEXT-BACKTAB
  634.  
  635.    Moves text from cursor to end of line to previous tab stop.  To set the
  636.    tab stops see TABS command.  Works on command line or text line.  Type
  637.    "both?" on the command line for a list of the commands that operate on
  638.    the command line and text area.
  639.  
  640. (command,cursor): BOTH-MOVE-TEXT-TAB
  641.  
  642.    If indent with tabs is on, a tab character is inserted.  Otherwise,
  643.    enough spaces are inserted to move the text from cursor to end of line
  644.    to the next tab stop.  The default indent with tabs setting is
  645.    accessible through the CONFIG menu (CONFIG, "File extension setup...").
  646.    To set the tab stops see TABS command.  Works on command line or text
  647.    line.  Type "both?" on the command line for a list of the commands that
  648.    operate on the command line and text area.
  649.  
  650. (command,cursor): BOTH-NEXT-WORD
  651.  
  652.    Moves the cursor to the end of the next word.  If you want the cursor
  653.    placed on the beginning of the next word change the next word style
  654.    (CONFIG, "Other options...", "Next word style...").  A word is defined
  655.    by the following regular expression:
  656.  
  657.          [a-zA-Z0-9_$]#
  658.  
  659.    The above regular expression accepts valid characters in a C language
  660.    identifier.  To change the default word characters invoke the
  661.    WORD-CHARS command (CONFIG, "Other options...", "Word characters...").
  662.    Works on command line or text line.  Type "both?" on the command line
  663.    for a list of the commands that operate on the command line and text
  664.    area.
  665.  
  666.    See also  BOTH-PREV-WORD
  667.  
  668. (command,misc):  BOTH-NOSPLIT-INSERT-LINE
  669.  
  670.    If the visible cursor is on the command line, the command is executed.
  671.    Otherwise a blank line is inserted after the current line and the
  672.    cursor is aligned with the first non blank character of the current
  673.    line.  The current line will not be split.  See BOTH-SPLIT-INSERT-LINE.
  674.  
  675. (command,cursor): BOTH-PREV-WORD
  676.  
  677.    Moves the cursor to the beginning of the previous word.  A word is
  678.    defined by the following regular expression:
  679.  
  680.          [a-zA-Z0-9_$]#
  681.  
  682.    The above regular expression accepts valid characters in a C language
  683.    identifier.  To change the default word characters invoke the
  684.    WORD-CHARS command (CONFIG, "Other options...", "Word characters...").
  685.    Works on command line or text line.  Type "both?" on the command line
  686.    for a list of the commands that operate on the command line and text
  687.    area.
  688.  
  689.    See also  BOTH-NEXT-WORD
  690.  
  691. (command,keyboard): BOTH-QUOTE
  692.  
  693.    Quotes the next character typed.  If a non ASCII key is typed, the
  694.    character and scan code is inserted (Can insert ascii zero this way).
  695.    Useful for entering printer codes into a file.
  696.  
  697. (command,cursor): BOTH-RIGHT
  698.  
  699.    Moves the cursor one character to the right.  If the visible cursor is
  700.    in the text area and the left/right margins are not 1/254, the cursor
  701.    will wrap to the next line when the right margin is hit.  Works on
  702.    command line or text line.  Type "both?" on the command line for a list
  703.    of the commands that operate on the command line and text area.
  704.  
  705. (command,misc): BOTH-RUBOUT
  706.  
  707.    Deletes the character to left of cursor.  If the visible cursor is in
  708.    the text area and the left/right margins are not 1/254, the cursor will
  709.    wrap to the previous line when the left margin is hit.  Works on
  710.    command line or text line.  Type "both?" on the command line for a list
  711.    of the commands that operate on the command line and text area.
  712.  
  713. (command,misc):  BOTH-SPLIT-INSERT-LINE
  714.  
  715.    If the visible cursor is on the command line, the command is executed.
  716.    Otherwise the current line is split at the cursor.  Enough blanks are
  717.    appended to the beginning of the new line to align it with the first
  718.    non blank character of the original line.  Type "both?" on the command
  719.    line for a list of the commands that operate on the command line and
  720.    text area.
  721.  
  722. (command,cursor):  BOTH-TAB
  723.  
  724.    If indent with tabs is on, a tab character is inserted.  Otherwise the
  725.    cursor moved to next tab stop.  The default indent with tabs setting is
  726.    accessible through the CONFIG menu (CONFIG, "File extension setup...").
  727.    To set the tab stops see TABS command.
  728.  
  729. (command,cursor): BOTH-UP
  730.  
  731.    If the cursor is in the text area, the cursor moves one line up.  If
  732.    the cursor is on the command line, the previous command in the retrieve
  733.    buffer ".command" is placed on the command line.  Type "both?" on the
  734.    command line for a list of the commands that operate on the command
  735.    line and text area.
  736.  
  737. (command,misc): BOTH-UPCASE-WORD
  738.  
  739.    Translates the current word to upper case and places the cursor after
  740.    the current word.  To change the default word characters invoke the
  741.    WORD-CHARS command (CONFIG, "Other options...", "Word characters...").
  742.    Works on command line or text line.  Type "both?" on the command line
  743.    for a list of the commands that operate on the command line and text
  744.    area.
  745.  
  746.    See also  BOTH-LOWCASE-WORD, BOTH-CAP-WORD
  747.  
  748. (command,mark): BOTH-YANK
  749.  
  750.    Inserts the last clipboard at the cursor.  LINE type clipboards are
  751.    inserted before or after the current line depending upon the line
  752.    insert style (CONFIG, "Other options...", "Line insert style...").  By
  753.    default, they are inserted after the cursor.  Works on command line or
  754.    text line.  Type "both?" on the command line for a list of the commands
  755.    that operate on the command line and text area.
  756.  
  757.    See also  BOTH-LIST-YANK
  758.  
  759. (built-in,cursor): BOTTOM
  760.  
  761.    Places text cursor at end of last line of buffer.  See SCROLL_STYLE
  762.    built-in to change the way the bottom of buffer line scrolls into
  763.    view.
  764.  
  765.    See also  TOP
  766.  
  767. (command,cursor): BOTTOM-OF-BUFFER
  768.  
  769.    Places text cursor at end of last line of buffer.  If the "Preserve
  770.    column on top/bottom..." option is set to "Y", the cursor is placed on
  771.    the last line of the buffer and the column position is unchanged.
  772.    Executing this command when the cursor is already on the last line of
  773.    the buffer will move the cursor to the end of the last line.  The
  774.    "Preserve column on top/bottom..." option is accessible through the
  775.    CONFIG menu (F5) under "Other options...".  See SCROLL_STYLE built-in
  776.    to change the way the bottom of buffer line scrolls into view.
  777.  
  778.    See also  TOP-OF-BUFFER
  779.  
  780. (command,cursor): BOTTOM-OF-WINDOW
  781.  
  782.    Places text cursor at the last line of the active window or last line
  783.    of file.
  784.  
  785.    See also  TOP-OF-WINDOW
  786.  
  787.  
  788. (built-in,buffer): BUF_MATCH(name_prefix,find_first)
  789.  
  790.    Returns buffer name of the buffer with prefix matching name_prefix. A
  791.    non-zero value for find_first,  begins a new search. If find_first is
  792.    zero, the next matching buffer id is returned. '' is returned and RC
  793.    is set to STRING_NOT_FOUND_RC if no match is found. Search is not case
  794.    sensitive except for file systems like UNIX which are case sensitive.
  795.  
  796.    Example
  797.       name_prefix='p'                     /* Find names that start with p */
  798.       name= buf_match(name_prefix,1)     /* find first. */
  799.       loop
  800.         if rc then  leave endif
  801.         say 'name='name
  802.         name= buf_match(name_prefix,0)    /* find next. */
  803.       endloop
  804.       pause
  805.  
  806.  
  807.    See also  FIND_INDEX, NAME_MATCH, FILE_MATCH
  808.  
  809. (misc,language): BUFFER
  810.  
  811.    Declares buffer variables.
  812.  
  813.    Syntax
  814.  
  815.       BUFFER
  816.          variable [= initial_value_expression] [',']
  817.          variable [= initial_value_expression] [',']
  818.          ....
  819.  
  820.    The comma is used to declare multiple buffer variables on one line.
  821.  
  822.    Each buffer maintains its own copy of buffer variables.  Switching
  823.    active buffers changes the contents of the variable to the value of the
  824.    new buffer.  When a new buffer is created, the initial value of
  825.    the buffer variable is set to initial_value_expression if given.
  826.    Otherwise it is set to ''.
  827.  
  828. (command,search): C /string1/string2[/[E][I][-][M][<][>][*][R][W]]
  829.  
  830.    This command description assumes invocation from the command line.  The
  831.    C command may also be invoked from the CHANGE menu (MENU, "Search",
  832.    "Change...") which allows the string1, string2, and option parameters
  833.    to be entered in separate input fields without delimiters.
  834.  
  835.    Changes occurrences of string1 with string2.  The First non blank
  836.    character is used as the delimiter.  Multiple options having the
  837.    following meaning may be specified:
  838.  
  839.         E    Exact case
  840.         I    Ignore case
  841.         -    Reverse search
  842.         M    Limit search to marked area
  843.         <    If found, position cursor at beginning of word
  844.         >    If found, position cursor at end of word
  845.         *    Make changes without prompting
  846.         R    Interprets string1 to be a regular expression.  String2
  847.              may specify match groups with a backslash followed by a
  848.              a group number 0-9. Count the left braces '{' to determine
  849.              a group number.  The first match group is "\0".  See
  850.              / command for syntax of regular expression.
  851.         W    Limits search to words.  Used to search and replace
  852.              variable names. The default word characters are
  853.              [A-Za-z0-9_$].
  854.         W=regular-expression
  855.              Specifies a word search and sets the default word
  856.              characters to those matched by the regular-expression
  857.              given.
  858.  
  859.    When case sensitivity options E or I are not specified, the default
  860.    search case set by the SEARCH-CASE command is used.  The string1
  861.    parameter is not interpreted as a regular expression unless the R
  862.    option is specified.
  863.  
  864.  
  865.    Example
  866.  
  867.       c/x/y/m         Replace occurrences of x in the marked area with y
  868.                       using default search case sensitivity.
  869.       c $x$y$m        Replace occurrences of x in the marked area with y
  870.                       using default search case sensitivity. The string
  871.                       '$' has been used required a space character after
  872.                       the C.
  873.       c/x/y/e*        Replace lower case occurrences of x with y without
  874.                       prompting.
  875.  
  876.       c/i/something_more_meaningful/w   Replace occurrences of the
  877.                                         variable i with
  878.                                         something_more_meaningful
  879.  
  880.       c/i/j/w=[A-Za-z]           Replace occurrences of the word i with j
  881.                                  and specify value characters in word to
  882.                                  be alphabetics.
  883.  
  884.       c/{if|while}/x\0y\1/r      Replaces occurrences of if and while with
  885.                                  xify and xwhiley.  Unmatched groups are
  886.                                  null.  Note the \1 is replaced with null.
  887.  
  888.       c $/$\\$        Replace forward slash with backslash.  Two
  889.                       backslashes represent single backslash for regular
  890.                       expression search and replace.
  891.  
  892.    See also    L, /, I-SEARCH
  893.  
  894. (command,misc):  C-ENTER
  895.  
  896.    New binding of ENTER key when in C mode.  Handles syntax expansion and
  897.    indenting for files with C or H extension.  See config menu to change
  898.    syntax expansion/indenting options.
  899.  
  900. (command,misc):  C-MODE
  901.  
  902.    Activates C file editing mode.  The ENTER and SPACE BAR bindings are
  903.    changed as well as the tab and margin options to provide syntax
  904.    expansion and indenting.
  905.  
  906. (command,misc):  C-SPACE
  907.  
  908.    New binding of SPACE key when in C mode.  Handles syntax expansion and
  909.    indenting for files with C or H extension.  See config menu to change
  910.    syntax expansion/indenting options.
  911.  
  912. (command,misc): CACHE-SIZE  [buffer_ksize [shell_ksize [EMS_ksize
  913.                              [state_ksize [rmu_ksize]]]]]
  914.  
  915.    If no parameters are specified the current cache size values are placed
  916.    on the command line for editing.
  917.  
  918.    The buffer_ksize parameter sets the maximum size of the text buffer
  919.    cache to buffer_ksize.  If buffer_ksize is less than zero, the cache
  920.    will grow until no memory is available.  In most cases, SLICK's cache
  921.    is 3 times faster than OS/2's cache.  This means that you will want
  922.    SLICK's cache size small enough that OS/2's cache is not used.  When
  923.    the cache is full, text is written to a spill file "$slick.nnn" where
  924.    nnn is a number.  When the buffer cache size is set to a small value
  925.    you may need to change the read ahead/read behind line setting to avoid
  926.    disk thrashing.  If the DISK light stays on too long while you scroll
  927.    your text files, execute the command "set-var def-read-ahead-lines 0"
  928.    to avoid the problem.
  929.  
  930.    The shell_ksize parameter specifies the buffer cache size when
  931.    executing a program and has no effect on OS/2.  When in DOS mode, the
  932.    cache size is reduced to shell_ksize when a program is executed.
  933.    Unlike the buffer_ksize parameter, shell_ksize may be as small as 0k.
  934.  
  935.    The EMS_ksize parameter is used to limit the editors use of EMS memory
  936.    or extended memory.  -1 specifies no limit.  0 specifies no use of EMS
  937.    memory or extended memory.  SLICK will use all extended memory
  938.    specified by the -y invocation option if EMS_ksize is non-zero.
  939.    Modifying the EMS cache size may not take effect until the editor is
  940.    reinvoked (be sure to save the configuration before exit).
  941.  
  942.    The state_ksize specifies the maximum amount of swappable state file
  943.    data (parts of SLICK.STA) to be kept in memory.  -1 specifies no limit.
  944.    0 specifies that the editor preload all state file data.  This is
  945.    useful if the file SLICK.STA is on a floppy which gets removed.  By
  946.    default the editor only loads modules that have a DEFINIT and the key
  947.    table named DEFAULT-KEYS.  The -ST invocation option may be used to
  948.    specify the state cache size.  Modifying the state cache size may not
  949.    take effect until the editor is reinvoked (be sure to save the
  950.    configuration before exit).
  951.  
  952.    The rmu_ksize specifies the amount of memory in kilobytes to allocate
  953.    when executing an external program.  SLICK can reduce its memory usage
  954.    to about 8k when executing an external program by saving its memory
  955.    image to EMS memory, extended memory, or disk.  A value of 0 specifies
  956.    as much memory as possible.  You can override this default value by
  957.    prefixing the name of the program with the amount of memory in
  958.    kilobytes the program requires.
  959.  
  960.  
  961. (built-in,misc): CACHE_SIZE([buffer_ksize [shell_ksize [EMS_ksize
  962.                             [state_ksize [rmu_ksize]]]]])
  963.  
  964.    The current cache size values are returned.
  965.  
  966.    The buffer_ksize parameter sets the maximum size of the text buffer
  967.    cache to buffer_ksize.  If buffer_ksize is less than zero, the cache
  968.    will grow until no memory is available.  In most cases, SLICK's cache
  969.    is 3 times faster than OS/2's cache.  This means that you will want
  970.    SLICK's cache size small enough that OS/2's cache is not used.  When
  971.    the cache is full, text is written to a spill file "$slick.nnn" where
  972.    nnn is a number.  When the buffer cache size is set to a small value
  973.    you may need to change the read ahead/read behind line setting to avoid
  974.    disk thrashing.  If the DISK light stays on too long while you scroll
  975.    your text files, execute the command "set-var def-read-ahead-lines 0"
  976.    to avoid the problem.
  977.  
  978.    The shell_ksize parameter specifies the buffer cache size when
  979.    executing a program and has no effect on OS/2.  When in DOS mode, the
  980.    cache size is reduced to shell_ksize when a program is executed.
  981.    Unlike the buffer_ksize parameter, shell_ksize may be as small as 0k.
  982.  
  983.    The EMS_ksize parameter is used to limit the editors use of EMS memory
  984.    or extended memory.  -1 specifies no limit.  0 specifies no use of EMS
  985.    memory or extended memory.  SLICK will use all extended memory
  986.    specified by the -y invocation option if EMS_ksize is non-zero.
  987.    Modifying the EMS cache size may not take effect until the editor is
  988.    reinvoked (be sure to save the configuration before exit).
  989.  
  990.    The state_ksize specifies the maximum amount of swappable state file
  991.    data (parts of SLICK.STA) to be kept in memory.  -1 specifies no limit.
  992.    0 specifies that the editor preload all state file data.  This is
  993.    useful if the file SLICK.STA is on a floppy which gets removed.  By
  994.    default the editor only loads modules that have a DEFINIT and the key
  995.    table named DEFAULT-KEYS.  The -ST invocation option may be used to
  996.    specify the state cache size.  Modifying the state cache size may not
  997.    take effect until the editor is reinvoked (be sure to save the
  998.    configuration before exit).
  999.  
  1000.    The rmu_ksize specifies the amount of memory in kilobytes to allocate
  1001.    when executing an external program.  SLICK can reduce its memory usage
  1002.    to about 8k when executing an external program by saving its memory
  1003.    image to EMS memory, extended memory, or disk.  A value of 0 specifies
  1004.    as much memory as possible.  You can override this default value by
  1005.    prefixing the name of the program with the amount of memory in
  1006.    kilobytes the program requires.
  1007.  
  1008. (built-in,misc): CALL expression
  1009.  
  1010.    Throws away return value of an expression returning a value.
  1011.    Insures that RC variable is not changed and function return value
  1012.    is not executed.  Since function return values are no longer executed
  1013.    unless enclosed in parenthesis, this built-in is no longer necessary.
  1014.  
  1015.    Example
  1016.  
  1017.       call getkey()   /* wait for key, but do not execute it. */
  1018.  
  1019. (built-in,name): CALL_INDEX([arg1 [,arg2]... argN],index)
  1020.  
  1021.    Calls command or procedure corresponding to name table index passing
  1022.    arguments arg1,arg2..argN.  The arguments may be call by reference
  1023.    or call by value as long as a constant is not passed to a procedure
  1024.    expecting a variable which can be referenced. If the procedure or
  1025.    command is not linked to a module, the interpreter is stopped and
  1026.    the message "Invalid argument" is displayed.  Use the function
  1027.    INDEX_CALLABLE to determine whether the procedure or command is linked
  1028.    to a module.
  1029.  
  1030.    Example
  1031.  
  1032.       index=find_index('upcase-filter')
  1033.       if not index_callable(index) then
  1034.          message 'upcase-filter name in name table but not linked to module'
  1035.       else
  1036.         string=call_index('abc',index)
  1037.       endif
  1038.  
  1039.    See also   INDEX_CALLABLE
  1040.  
  1041. (built-in,keyboard): CALL_KEY key
  1042.  
  1043.    Calls command or keyboard macro bound to key.  The key binding is
  1044.    determined first by checking if mode_keys has a binding for key.  If
  1045.    so, that binding is used.  If not, the root_keys binding for key is
  1046.    used.  If key is bound to a key table, another key is requested and the
  1047.    new key table binding for the next key pressed is executed unless this
  1048.    binding is another key table.  To break an infinite key table loop
  1049.    press CTRL-BREAK.
  1050.  
  1051.    Example
  1052.  
  1053.       key=getkey()
  1054.       call_key key
  1055.  
  1056.  
  1057.    See also   GETKEY, TESTKEY, LASTKEY, RAW_LASTKEY,
  1058.               KEY2NAME, KEY2INDEX, INDEX2KEY, LIST_BINDINGS,
  1059.               KEYTAB_INDEX, SET_KEYTAB_POINTER
  1060.  
  1061. (command,keyboard): CANCEL-KBD-MACRO
  1062.  
  1063.    When START-KBD-MACRO has been executed, the definition of one key
  1064.    (usually the ESC key) is temporarily bound to this command.  To change
  1065.    the key rebound, modify the SLICK macro procedure "cancel-key-index".
  1066.    You can find it by executing the command "find-proc cancel-key-index".
  1067.  
  1068. (command,file): CD [driveNpath]
  1069.  
  1070.    Changes the current working directory to the drive and path if given.
  1071.    A current directory message is displayed.
  1072.  
  1073. (built-in,string): CENTER(string, width [,pad])
  1074.  
  1075.    Returns a symmetrically padded string of width characters.  If the
  1076.    length of string is less than width characters, the left and right of
  1077.    the returned string will be padded with the pad character.  The right
  1078.    will always be padded the same or more than the left.  If the length of
  1079.    string is greater than or equal to width characters, the returned
  1080.    string will be truncated on the left and right.  The right will always
  1081.    be truncated the same or more than the left.  Pad defaults to ' '.
  1082.  
  1083.    Example
  1084.        center('test',6)      ==' test '
  1085.        center('test',6,'-')  =='-test-'
  1086.        center('test',7,'-')  =='-test--'
  1087.        center('test',3)      =='tes'
  1088.        center('test',2)      =='es'
  1089.  
  1090.  
  1091. (command,cursor): CENTER-LINE
  1092.  
  1093.    Centers the current line in the middle of the active window.
  1094.  
  1095. (command,file): CHANGE-DRIVE [driveNpath]
  1096.  
  1097.    When a command of the syntax "d:" is executed, the editor translates
  1098.    the command into "CHANGE-DRIVE d:" which calls this command procedure.
  1099.    The CHANGE-DRIVE command changes the current working directory to the
  1100.    drive and path specified.  A current directory message is displayed.
  1101.  
  1102. (command,window): CHANGE-WINDOW
  1103.  
  1104.    Allows you to point with the cursor keys to the window you wish to
  1105.    change to.
  1106.  
  1107.    See also   NEXT-WINDOW, PREV-WINDOW, MOVE-EDGE, DELETE-WINDOW
  1108.  
  1109. (built-in,file): CHDIR  path[,option]
  1110.  
  1111.    Changes to drive and directory specified.  If option is non zero the
  1112.    current working drive is changed to drive specified.  RC is set to 0 if
  1113.    successful.  Otherwise some of possible RC values are PATH_NOT_FOUND_RC
  1114.    and DRIVE_NOT_READY_RC.  Look through the file "rc.sh" for a complete
  1115.    list of return codes.
  1116.  
  1117. (built-in,file):  CHMOD [+|-][R][H][S][A] filename
  1118.  
  1119.    Changes the attributes of the file specified.  + adds the attribute
  1120.    and - removes the attribute.  The attributes have the following
  1121.    meaning:
  1122.  
  1123.        R     Read-only
  1124.        H     Hidden
  1125.        S     System
  1126.        A     Archive
  1127.  
  1128. (command,file):  CHMOD ^
  1129.  
  1130. (built-in,misc): CHR(ascii_code)
  1131.  
  1132.    Returns the ascii character corresponding to ascii_code.
  1133.  
  1134.    Example
  1135.  
  1136.       chr(65)== 'A'
  1137.  
  1138.    See also  ASC
  1139.  
  1140. (command,misc):  CHR number
  1141.  
  1142.    Displays the ascii character corresponding to number on the command
  1143.    line.
  1144.  
  1145. (built-in,display): CLEAR_MESSAGE
  1146.  
  1147.    If a message is currently showing where the function key text
  1148.    is, the function key text is redisplayed.  Cancels pending message.
  1149.  
  1150.    Example
  1151.       unmark
  1152.       mark_line      /* Cause pending message "Text not marked". */
  1153.       clear_message  /* Message will not get displayed. */
  1154.  
  1155.    See also  MESSAGE
  1156.  
  1157. (command,misc): COLOR
  1158.  
  1159.    Runs the external command "color.s".  This macro presents a selection
  1160.    list of the different color fields of the editor which may be changed.
  1161.    Select a color field with the ENTER key and the colors may be changed
  1162.    with the arrow keys.  This macro is self explanatory.  After running
  1163.    the color command, use the "write-state" command to save the
  1164.    configuration.  Use the config menu items "Colors..." and "Save
  1165.    configuration...".  The editor has 2 sets of colors, one set for
  1166.    monochrome monitors, and one set for color monitors.  The color command
  1167.    only changes the color set which is active.  If the editor is not able
  1168.    to correctly select the color set, use the COLOR-SET command to
  1169.    select the color set.
  1170.  
  1171. (built-in,display): COLOR_FIELD(field_number[,color[,'A'|'D'[,'?'|'C'|'M']]])
  1172.  
  1173.      Sets the color field value corresponding to field_number to the color
  1174.      parameter if given.  The current value of the color field specified
  1175.      is returned.  The color field constants have the suffix "_FIELD" and
  1176.      are listed in "slick.sh".  The optional third parameter selects
  1177.      whether to set the default value of the color field or limit the
  1178.      setting to the active value.  The value 'D' sets the default value
  1179.      and the value 'A' limits the setting to the active window.  If the
  1180.      third parameter is not given the default value is not set.  The
  1181.      fourth parameter selects the color set.  The value '?' (the default)
  1182.      selects the active color set.  The values 'C' and 'M' correspond to
  1183.      the color sets for color and monochrome monitors respectively.
  1184.  
  1185. (built-in,display): COLOR_SET(['M'|'C'|'?'])
  1186.  
  1187.    Forces the active color set to the color set specified.  The editor has
  1188.    one set of colors for monochrome monitors and another set for color
  1189.    monitors.  If the editor is unable to correctly select the correct
  1190.    color set because of your hardware configuration, use this function to
  1191.    force selection of the correct color set.  The input value '?' allows
  1192.    the editor to decide.  The input values 'M' and 'C' select the
  1193.    monochrome and color color set respectively.  The current value of the
  1194.    color set is returned.
  1195.  
  1196. (command,display): COLOR-SET [M][C][?]
  1197.  
  1198.    Forces the active color set to the color set specified.  The editor has
  1199.    one set of colors for monochrome monitors and another set for color
  1200.    monitors.  If the editor is unable to correctly select the correct
  1201.    color set, use this command.  Do not execute this command if the editor
  1202.    is able to select the correct color set.  Execute the command
  1203.    "COLOR-SET ?" to allow the editor to decide.  After running the
  1204.    color-set command, use the "write-state" command to save the
  1205.    configuration or select "Save configuration..." from the config menu.
  1206.  
  1207. (built-in,cmdline): COMMAND_DELETE_CHAR
  1208.  
  1209.    Deletes the character under the command cursor.  Visible cursor
  1210.    does not have to be on command line when COMMAND_DELETE_CHAR is
  1211.    executed.
  1212.  
  1213.  
  1214.    See also  COMMAND_STATE, COMMAND_TOGGLE, COMMAND_LEFT, COMMAND_RIGHT,
  1215.              COMMAND_RUBOUT, EXECUTE, SET_COMMAND,
  1216.              GET_COMMAND
  1217.  
  1218. (built-in,cmdline): COMMAND_LEFT
  1219.  
  1220.    Moves the command line cursor one position to the left.  Text area
  1221.    cursor is not changed.  When the left edge is hit, command line is
  1222.    smooth scrolled or center scrolled.  See SCROLL_STYLE.
  1223.  
  1224.    See also  COMMAND_STATE, COMMAND_TOGGLE, COMMAND_RIGHT,
  1225.              COMMAND_DELETE_CHAR, COMMAND_RUBOUT, EXECUTE, SET_COMMAND,
  1226.              GET_COMMAND
  1227.  
  1228. (built-in,cmdline): COMMAND_RIGHT
  1229.  
  1230.    Moves the command line cursor one position to the right.  Text area
  1231.    cursor is not changed.  When the right edge is hit, command line is
  1232.    smooth scrolled or center scrolled.  See SCROLL_STYLE.
  1233.  
  1234.    See also  COMMAND_STATE, COMMAND_TOGGLE, COMMAND_LEFT,
  1235.              COMMAND_DELETE_CHAR, COMMAND_RUBOUT, EXECUTE, SET_COMMAND,
  1236.              GET_COMMAND
  1237.  
  1238. (built-in,cmdline): COMMAND_RUBOUT
  1239.  
  1240.    Deletes character if any to left of command line cursor and moves cursor
  1241.    to left.  When the left edge is hit, the command line is smooth
  1242.    scrolled or center scrolled.  See SCROLL_STYLE.
  1243.  
  1244.    See also  COMMAND_STATE, COMMAND_TOGGLE, COMMAND_LEFT, COMMAND_RIGHT,
  1245.              COMMAND_DELETE_CHAR, EXECUTE, SET_COMMAND, GET_COMMAND
  1246.  
  1247. (built-in,cmdline): COMMAND_STATE()
  1248.  
  1249.    Returns true (not '0') if the visible cursor is on the command line.
  1250.    Returns '0' if editors cursor is on the command line.
  1251.  
  1252.    Example
  1253.  
  1254.       if command_state() then
  1255.          command_left
  1256.       else
  1257.          left
  1258.       endif
  1259.  
  1260.    See also  COMMAND_TOGGLE, COMMAND_LEFT, COMMAND_RIGHT,
  1261.              COMMAND_DELETE_CHAR, COMMAND_RUBOUT, EXECUTE, SET_COMMAND,
  1262.              GET_COMMAND
  1263.  
  1264. (built-in,cmdline): COMMAND_TOGGLE
  1265.  
  1266.    If the visible cursor is on the command line, the cursor is moved to
  1267.    the text area.  Otherwise the visible cursor is moved from the text
  1268.    area to the command line.
  1269.  
  1270.    See also  COMMAND_STATE, COMMAND_LEFT, COMMAND_RIGHT, CURSOR_DATA,
  1271.              CURSOR_COMMAND, COMMAND_DELETE_CHAR, COMMAND_RUBOUT, EXECUTE,
  1272.              SET_COMMAND, GET_COMMAND
  1273.  
  1274. (command,cmdline): COMMAND-TOGGLE ^
  1275.  
  1276. (misc,language): COMMENTS
  1277.  
  1278.    There are two ways to define comments in the SLICK language.  A
  1279.    semicolon placed in the first column declares the rest of the line to
  1280.    be a comment.  The two characters '/*' open a comment and '*/' closes a
  1281.    comment.  Comments may be nested.
  1282.  
  1283.    Example
  1284.  
  1285. ;  this is a comment
  1286.  
  1287.    /* this is a /* nested */ comment */
  1288.  
  1289. (command,buffer): COMPILE
  1290.  
  1291.    Executes an extension specific compile command.  Each file extension
  1292.    may have its own compile command.  Parts of the buffer name may be
  1293.    parsed into the compile command before it is executed.  To add or
  1294.    change the compile command for any extension, invoke the config menu
  1295.    (F5 by default) and select "File extension setup...".
  1296.  
  1297.    For DOS, all but approximately 10k of memory may be allocated to the
  1298.    compile command.  You specify how much memory your compiler needs and
  1299.    SLICK will swap enough of itself to disk or EMS memory to run your
  1300.    compiler.  SLICK will automatically use EMS memory if you have an EMS
  1301.    driver installed.  If you want SLICK to use extended memory, invoke
  1302.    SLICK with the -Y option (See help on INVOCATION).
  1303.  
  1304.    For OS/2, the compile command is executed in SLICK's concurrent process
  1305.    buffer.
  1306.  
  1307.    See also  MAKE-PROJECT, XDOS
  1308.  
  1309. (command,file): CONCUR-COMMAND command
  1310.  
  1311.    Inserts command at end of ".process" buffer.  If last line contains the
  1312.    read point, text after read point is replaced with command.  Concurrent
  1313.    process session is started if necessary.  If successful, 0 is
  1314.    returned.  Supported on OS/2 only.
  1315.  
  1316. (built-in,file): CONCUR_SHELL  command
  1317.  
  1318.    This functions supports OS/2 only.  Creates a concurrent process
  1319.    running in the current buffer.  If command=='' then the OS/2 command
  1320.    processor CMD.EXE is started.  Otherwise command contains the program
  1321.    name and arguments to be executed as a concurrent process.  Each copy
  1322.    of the SLICK editor can run one concurrent session.  If two copies of
  1323.    the SLICK editor are running in the same session only one may have a
  1324.    concurrent session running because OS/2 only allows one process within
  1325.    a session to be the parent of another session.
  1326.  
  1327. (command,menu): CONFIG
  1328.  
  1329.    Runs the config menu.  The config menu provides an easy way to change
  1330.    the configuration of the colors, search case sensitivity, cursor
  1331.    shape, cache size, spill file path, scroll style, language syntax
  1332.    options, file load/save options, tabs, margins, and more.
  1333.  
  1334. (command,file): COPY  text
  1335.  
  1336.    Passes text to the DOS copy command.  See DOS or OS/2 manual for syntax
  1337.    of arguments.
  1338.  
  1339. (built-in,file): COPY_FILE source_name, dest_name
  1340.  
  1341.    Copies the file source_name to dest_name.  RC is set to 0 if
  1342.    successful.  Otherwise some of possible RC values are ACCESS_DENIED_RC,
  1343.    ERROR_OPENING_FILE_RC, FILE_NOT_FOUND_RC, INSUFFICIENT_DISK_SPACE_RC,
  1344.    ERROR_CREATING_DIRECTORY_RC, ERROR_READING_FILE_RC,
  1345.    ERROR_WRITING_FILE_RC, DRIVE_NOT_READY_RC, PATH_NOT_FOUND_RC.  Look
  1346.    through the file "rc.sh" for a complete list of return codes.
  1347.  
  1348. (command,mark): COPY-MARK
  1349.  
  1350.    Copies visible marked text.  For character or block mark, text is
  1351.    inserted at cursor position.  For line mark, lines are inserted before
  1352.    or after the current line depending on the line insert style (CONFIG,
  1353.    "Other options...", "Line insert style...").  By default line marks are
  1354.    inserted after the current line.  Resulting mark is always on
  1355.    destination text.  Text may be marked with one of the commands
  1356.    MARK-CHAR (Alt-Z), MARK-LINE (Alt-L), or MARK-BLOCK (Alt-B).
  1357.  
  1358. (built-in,mark): COPY_MARK [mark_id[,text_width[,leading_spaces[,
  1359.                            trailing_spaces]]]]
  1360.  
  1361.    Copies marked text specified to cursor.  For line mark, lines are
  1362.    inserted before or after current line depending on the line insert
  1363.    style (CONFIG, "Other options...", "Line insert style...").  The
  1364.    default is after the current line.  Resulting mark is
  1365.    always on destination text.
  1366.  
  1367.    If more than one parameter is specified, the first parameter must be a
  1368.    view id which is positioned on a menu and not a mark id.  The purpose
  1369.    of this function is to provide formatting of the menu during the copy
  1370.    to speed up menu processing.  The leading spaces parameter specifies
  1371.    the number of spaces to prefix each line with when copying.  The
  1372.    trailing_spaces and text_width parameters specify the number of spaces
  1373.    to insert before the first semicolon of each line that is copied.
  1374.  
  1375.  
  1376. (command,mark): COPY-TO-CLIPBOARD
  1377.  
  1378.    Copies visible marked text to the clipboard.  If no text is marked the
  1379.    current line is copied to the clipboard.  All clipboards are stored in
  1380.    the ".killed" buffer.  The last clipboard may be retrieved by the
  1381.    BOTH-YANK command (Ctrl-Y).  Previous clipboards may be retrieved with
  1382.    the BOTH-LIST-YANK command (Ctrl-X Ctrl-Y).  Text may be marked with
  1383.    one of the commands MARK-CHAR (Alt-Z), MARK-LINE (Alt-L), or MARK-BLOCK
  1384.    (Alt-B).
  1385.  
  1386.    See also   KILL-MARK, BOTH-LIST-YANK, BOTH-YANK
  1387.  
  1388.  
  1389. (misc,language): CONST
  1390.  
  1391.    Declares string constants.
  1392.  
  1393.    Syntax
  1394.  
  1395.       CONST
  1396.          variable = constant_expression [',']
  1397.          variable = constant_expression [',']
  1398.          ....
  1399.  
  1400.    The comma is used to declare more than one constant on the same
  1401.    line.
  1402.  
  1403. (command,misc): COUNT-LINES
  1404.  
  1405.    Displays the number of lines in the current buffer.
  1406.  
  1407. (command,window): CREATE-WINDOW
  1408.  
  1409.    Allows you to create a new window by pointing to edge for new window
  1410.    with cursor keys.
  1411.  
  1412.    See also  MOVE-EDGE, NEXT-WINDOW, PREV-WINDOW, CHANGE-WINDOW,
  1413.              DELETE-WINDOW
  1414.  
  1415. (built-in,cursor): CURSOR_COMMAND
  1416.  
  1417.    Moves the cursor to the command line.
  1418.  
  1419.    See also  COMMAND_STATE, COMMAND_LEFT, COMMAND_RIGHT, CURSOR_DATA,
  1420.              CURSOR_COMMAND, COMMAND_DELETE_CHAR, COMMAND_RUBOUT, EXECUTE,
  1421.              SET_COMMAND, GET_COMMAND
  1422.  
  1423.  
  1424. (built-in,cursor): CURSOR_DATA
  1425.  
  1426.    Moves the cursor to the text area.
  1427.  
  1428.    See also  COMMAND_STATE, COMMAND_LEFT, COMMAND_RIGHT, CURSOR_DATA,
  1429.              CURSOR_COMMAND, COMMAND_DELETE_CHAR, COMMAND_RUBOUT, EXECUTE,
  1430.              SET_COMMAND, GET_COMMAND
  1431.  
  1432. (command,misc): CURSOR-ERROR
  1433.  
  1434.    This command is typically invoked when the concurrent process buffer
  1435.    created by the START-PROCESS command is active and provides additional
  1436.    support for processing compiler error messages from within the editor.
  1437.    However, it can also be used to edit a filename such as an include
  1438.    filename at the cursor.  If the current line is recognized as an error
  1439.    message, the cursor is placed on line and column of the file specified
  1440.    by the message.  Otherwise the filename at or before the cursor is
  1441.    loaded for editing.  The search strategy for include files is as
  1442.    follows:
  1443.  
  1444.        1.  Current directory.
  1445.        2.  Same directory as current buffer.
  1446.        3.  Include directories specified by the file extension setup
  1447.            menu.
  1448.  
  1449.    See NEXT-ERROR command for information on recognized error messages.
  1450.  
  1451.    See also  NEXT-ERROR
  1452.  
  1453. (command,misc): CURSOR-SHAPE  [ins_top ins_bot replace_top replace_bot]
  1454.  
  1455.    Sets the cursor shape for insert mode and replace mode.  To make this
  1456.    function independent of hardware, this function maps the numbers 1 to
  1457.    1000 to the actual number of scan lines in a character.  If no
  1458.    parameters are specified, the current settings are placed on the
  1459.    command line for editing.
  1460.  
  1461. (built-in,misc): CURSOR_SHAPE([ins_top ins_bot replace_top replace_bot])
  1462.  
  1463.    Returns the current cursor shape settings and sets insert/overwrite
  1464.    cursor shape if specified.  To make this function independent of
  1465.    hardware, this function maps the numbers 1 to 1000 to the actual number
  1466.    of scan lines in a character.
  1467.  
  1468. (misc,language): DEF  [prefix_key] key [- key], key [- key] ... = command
  1469.  
  1470.    Binds keys specified to command.  Command must be defined by DEFC.  The
  1471.    words prefix_key and key above may be any valid key name.  Type "help
  1472.    key-names" on command line and press ENTER for a list of key names.
  1473.  
  1474.    Example
  1475.  
  1476.       def C_X  'B','b' = find_buffer
  1477.  
  1478.       def C_A= command_toggle
  1479.  
  1480.       def \0 - \255= nothing
  1481.  
  1482.  
  1483. (misc,language): DEFC name[,name [,name... ] [(const_exp)] [=]
  1484.                       [LOCAL
  1485.                           variable [',']
  1486.                           variable [',']
  1487.                           ...
  1488.                       ]
  1489.                       statements
  1490.  
  1491.    The DEFC primitive is used to define a new command with argument
  1492.    completion.  Commands must be translated into binary code and loaded
  1493.    by the LOAD command (MENU, "Macro", "Load module...").  A command may
  1494.    be invoked by typing its name on the SLICK command line, invoking it
  1495.    from a key, quoting its name in a SLICK language procedure, or typing
  1496.    its name followed by arguments in parenthesis in a SLICK language
  1497.    expression.  Command procedures always have the scope UNIVERSAL and
  1498.    may be bound to a key with the BIND-TO-KEY command (CONFIG, "Bind
  1499.    command to key...").
  1500.  
  1501.    Example
  1502.  
  1503.      defc goto_line =
  1504.         local param    /* This line is not necessary to declare param */
  1505.                        /* as local. */
  1506.         param=arg(1)
  1507.         if param=='' or not isnumber(param) then
  1508.            message 'Please specify line number'
  1509.            return(1)
  1510.         endif
  1511.         .line=param
  1512.         return(0)
  1513.  
  1514.    Commands get command line arguments by calling the ARG function.  When
  1515.    a command is invoked from the command line, arg(1) contains the rest of
  1516.    the command line after the name with leading spaces removed.  For
  1517.    example, invoking the edit command "e file1 file2" calls the E command
  1518.    with "file1 file2" in arg(1).  The PARSE built-in is an excellant
  1519.    function for parsing a command line string (See help on PARSE).  When
  1520.    another macro calls a command procedure, more than one argument string
  1521.    may be passed.  Calling the ARG function with no parameters returns the
  1522.    number of parameters the command or procedure (DEFPROC) was called
  1523.    with.
  1524.  
  1525.    Local variables do not have to be declared.  Using a variable not
  1526.    defined by UNIVERSAL, GLOBAL, BUFFER, or CONST declares the variable
  1527.    to be a local variable.  However, the LOCAL primitive allows you to
  1528.    declare a local variable and ensure that the variable will be local
  1529.    even if the name has already been declared else where as a GLOBAL,
  1530.    UNIVERSAL, BUFFER, or CONST.
  1531.  
  1532.    The optional constant expression const_exp indicates the type of word
  1533.    arguments the command accepts and is used for argument completion
  1534.    purposes.  For a list of already defined argument types, look in the
  1535.    file "slick.sh" for constants that end in "_ARG".  The value of
  1536.    constant_expression may be retrieved by the built-in function NAME_INFO.
  1537.  
  1538.    There are two ways to call a command from another macro.  The two
  1539.    syntax are:
  1540.  
  1541.       1.  'command-name argument1'
  1542.       2.  command_name(argument1,argument2...)
  1543.  
  1544.    For syntax 1, the return statement sets the value of the variable RC.
  1545.    If no return statement exists, the value of RC is unchanged.  Commands
  1546.    invoked from the command line are called in this manner except no
  1547.    quotes are necessary.  Note under scores in commands must be typed as
  1548.    dashes when executed from the command line.  For syntax 2, the return
  1549.    statement sets the result of the function call.  If no return statement
  1550.    exists, the result of the function is ''.
  1551.  
  1552.    Example
  1553.       'goto-line 1'           /* RC is set to '0'. Command line style */
  1554.       status=goto_line('')    /* status is assigned the result '1' */
  1555.  
  1556.    For syntax 1, two arguments are always passed to the command.  The
  1557.    first argument is the contents of the rest of the string after the
  1558.    command name with leading blanks removed.  The second argument is '' or
  1559.    is a set of flags with the following meaning:
  1560.  
  1561.          4           Command should wait for key press after opening
  1562.                      shell window(PAUSE_COMMAND).
  1563.  
  1564.          8           Command should not open shell window (QUIET_COMMAND)
  1565.  
  1566.    For syntax 2, up to 15 arguments may be passed to the command.  Each
  1567.    argument can be retrieved by the function ARG.  If the second argument
  1568.    is passed, it should follow the meanings above.
  1569.  
  1570. (misc,language): DEFINIT
  1571.                       [LOCAL
  1572.                           variable [',']
  1573.                           variable [',']
  1574.                           ...
  1575.                       ]
  1576.                       statements
  1577.  
  1578.    Initialization procedure called before DEFMAIN or DEFLOAD.  This
  1579.    procedure is the first procedure called when a module is loaded and is
  1580.    also called when the editor is invoked for each module in the
  1581.    "slick.sta" file.  To determine why DEFINIT has been called check for
  1582.    ARG(1)=="L".  ARG(1) is set to "L" only when the module is loaded.  If
  1583.    the RETURN statement is used within the DEFINIT procedure it may not be
  1584.    given an expression.
  1585.  
  1586. (misc,language): DEFKEYS  name
  1587.  
  1588.    Defines a key table. The DEF primitive changes the binding of keys of
  1589.    the last key table defined.  If no key table is defined, the
  1590.    "root-keys" key table is used.
  1591.  
  1592.    Example
  1593.  
  1594.       defkeys  c_keys
  1595.       def ' '=c_space
  1596.       def ENTER=c_enter
  1597.  
  1598. (misc,language): DEFLOAD
  1599.                     [LOCAL
  1600.                         variable [',']
  1601.                         variable [',']
  1602.                         ...
  1603.                     ]
  1604.                     statements
  1605.  
  1606.    When a module is loaded this procedure is called after DEFINIT is
  1607.    called.  Initialization which only need to be performed one time are
  1608.    usually performed here.  If the RETURN statement is used within the
  1609.    DEFLOAD procedure it may not be given an expression.
  1610.  
  1611. (misc,language): DEFMACRO  name [=] string [,string [,string...
  1612.  
  1613.    Defines a keyboard macro.
  1614.  
  1615.    string may contain key name constants.  Constants defined by CONST are not
  1616.    supported.  Type "help key-names" on command line and press ENTER for a
  1617.    list of key names.
  1618.  
  1619.    Example
  1620.  
  1621.       defmacro  dup_line =  A_U A_L A_C A_U
  1622.  
  1623. (misc,language): DEFMAIN
  1624.                     [LOCAL
  1625.                         variable [',']
  1626.                         variable [',']
  1627.                         ...
  1628.                     ]
  1629.                     statements
  1630.  
  1631.    When a module is executed this procedure is called after DEFINIT is
  1632.    called.  If the return statement is used within the DEFMAIN procedure
  1633.    it must be given an expression which sets the variable RC.  The ARG
  1634.    function may be called to retrieve the command line passed to the
  1635.    module.  To execute a module from the command line, type the name of
  1636.    the module followed by the command line you wish to pass to the module.
  1637.    If the module needs to be recompiled (MAKE), the SLICK translator is
  1638.    invoked before the module is executed.
  1639.  
  1640. (misc,language): DEFPROC [GLOBAL] id[([VAR] id[, [VAR] id ...])] [=]
  1641.                     [LOCAL
  1642.                         variable [',']
  1643.                         variable [',']
  1644.                         ...
  1645.                     ]
  1646.                     statements
  1647.  
  1648.    The optional GLOBAL keyword may be used to limit the scope of a
  1649.    procedure to the module it is defined in.  By default, procedures are
  1650.    UNIVERSAL and may be accessed by any module.
  1651.  
  1652.    Example
  1653.  
  1654.        defproc setyesno(var number,input)
  1655.          local string   /* This line is not necessary to declare string */
  1656.                         /* as local. */
  1657.          string=upcase(input)
  1658.          if string='Y' or string='YES' then
  1659.            number=1
  1660.            return(0)
  1661.          elseif string='N' or string='NO' then
  1662.            number=0
  1663.            return(0)
  1664.          endif
  1665.          message 'Please specify YES or NO'
  1666.          return(1)
  1667.  
  1668.  
  1669.    The return statement sets the result of the function call.  If no
  1670.    return statement exists as in the example above, the result of the
  1671.    function is ''.
  1672.  
  1673.    Procedures may have up to 15 arguments defined.  The procedure may be
  1674.    called with more arguments than defined by the procedure declaration.
  1675.    These "extra" arguments as well as the arguments defined in the
  1676.    procedure declaration can be retrieved by the function ARG.  The
  1677.    minimum number of arguments the procedure may be called with is defined
  1678.    by the procedure heading.  When the procedure is called, the arguments
  1679.    passed to the procedure are checked to make sure the call by reference
  1680.    parameters correspond to variables of the caller.
  1681.  
  1682.    Local variables do not have to be declared.  Using a variable not
  1683.    defined by UNIVERSAL, GLOBAL, BUFFER, or CONST declares the variable
  1684.    to be a local variable.  However, the LOCAL primitive allows you to
  1685.    declare a local variable and ensure that the variable will be local
  1686.    even if the name has already been declared else where as a GLOBAL,
  1687.    UNIVERSAL, BUFFER, or CONST.
  1688.  
  1689. (command,file): DEL text
  1690.  
  1691.    Passes text to the DOS del command.  See DOS or OS/2 manual for syntax
  1692.    of arguments.
  1693.  
  1694. (built-in,misc): DELETE_CHAR
  1695.  
  1696.    Deletes character under text cursor.  Command line is not affected.
  1697.  
  1698. (built-in,file): DELETE_FILE filename
  1699.  
  1700.    Deletes the file specified.  RC is set to 0 if successful.  Otherwise
  1701.    some of the possible RC values are ACCESS_DENIED_RC,
  1702.    ERROR_OPENING_FILE_RC, FILE_NOT_FOUND_RC, DRIVE_NOT_READY_RC,
  1703.    PATH_NOT_FOUND_RC.  Look through the file "rc.sh" for a complete list
  1704.    of return codes.
  1705.  
  1706. (built-in,misc): DELETE_LINE
  1707.  
  1708.    Deletes current line of the current buffer.  If the buffer
  1709.    only has one line and DELETE_LINE is executed, the cursor is moved
  1710.    to the top border of the window.  This imaginary line is called
  1711.    line 0.
  1712.  
  1713.    See also  GET_LINE, INSERT_LINE, REPLACE_LINE, DELETE_LINE
  1714.  
  1715. (command,mark): DELETE-MARK
  1716.  
  1717.    Deletes the visible marked text.  No clipboard is created.
  1718.  
  1719. (built-in,mark): DELETE_MARK [mark_id]
  1720.  
  1721.    Deletes the marked text specified.  No clipboard is created.
  1722.  
  1723. (built-in,name): DELETE_NAME index
  1724.  
  1725.    Removes name entry corresponding to name table index. If index
  1726.    is not a valid index, the interpreter is halted.  Internal name types
  1727.    such as procedures, variables, modules, and key tables may not be
  1728.    deleted.
  1729.  
  1730.    See also  NAMES, FIND_INDEX, NAME_MATCH, NAME_NAME, NAME_TYPE, NAME_INFO
  1731.              NAME_HELP, SET_NAME_HELP, FIND_LINK, CALL_LINK, INSERT_NAME,
  1732.              SET_NAME_INFO, NAME_CLASS, SET_NAME_CLASS
  1733.  
  1734. (command,window): DELETE-WINDOW
  1735.  
  1736.    Allows you to delete a window by pointing to the edge of the window you
  1737.    wish to delete with the cursor keys.
  1738.  
  1739. (command,misc): DESELECT-ALL
  1740.  
  1741.    Removes the character '>' from the beginning of each line of the
  1742.    current buffer.  Typically used in fileman mode.  Using the DIR or LIST
  1743.    commands will change the mode to fileman mode.
  1744.  
  1745. (command,mark): DESELECT-MARK
  1746.  
  1747.    Removes the character '>' from the beginning of each line of the marked
  1748.    text.  Typically used in fileman mode.  Using the DIR or LIST
  1749.    commands will change the mode to fileman mode.
  1750.  
  1751.  
  1752. (command,file): DIR [command_line]
  1753.  
  1754.    Creates a buffer and inserts a list of the files specified with
  1755.    columns size, date, time, attributes, and name.
  1756.    The mode is changed to fileman mode.  When in fileman mode F1 becomes
  1757.    help on file management keys and F10 brings up a menu of file
  1758.    management commands.
  1759.  
  1760.    command_line has the following syntax:
  1761.  
  1762.       {filespec  | ['-' | '+' option_letters]}
  1763.  
  1764.    option_letters may be 'H','S','A','D','P','T' with the following
  1765.    meaning.
  1766.         H     Hidden files.  Default is off.
  1767.         S     System files.  Default is off.
  1768.         A     Archive files.  Default is off.
  1769.         D     Directory files.  Default is on.
  1770.         P     Append path.  Default is on.
  1771.         T     Tree file list.  Default is off.
  1772.  
  1773.    filespec may contain operating system wild cards such as '*' and '?'.
  1774.    If filespec is not specified, the current directory is used.
  1775.  
  1776.    Example
  1777.       dir                  - List file and directory entries of the
  1778.                              current directory.
  1779.       dir c:\              - List file and directory entries in the
  1780.                              root directory of drive C.
  1781.       dir +HS c:\          - List file and directory entries in the
  1782.                              root directory of drive C including
  1783.                              hidden and system files.
  1784.  
  1785. (built-in,misc): DOS [command]
  1786.  
  1787.    Executes the DOS command specified.  If no command is specified, the
  1788.    shell specified by the COMSPEC environment variable is executed with no
  1789.    parameters.  The DOS command is an internal command that must be quoted
  1790.    when executed.
  1791.  
  1792.    Example
  1793.  
  1794.         'xcom dos dir/w'    /* Execute the DOS dir command. */
  1795.                             /* XCOM is necessary to avoid calling */
  1796.                             /* the SLICK language DOS command. */
  1797.  
  1798. (command,misc): DOS [-e] [command]
  1799.  
  1800.    Executes the external DOS command specified.  If no command is
  1801.    specified, the shell specified by the COMSPEC environment variable is
  1802.    executed with no parameters.  To execute the SLICK SHELL, execute the
  1803.    command "SHELL".  There is also an internal command DOS which performs
  1804.    the same function as the (DEFC) DOS command.  The DEFC for the internal
  1805.    DOS command has been added for completion purposes.  Specify the -e
  1806.    parameter if you want the standard output of the command to be
  1807.    processed as error messages.  See help on NEXT-ERROR command for format
  1808.    of error messages recognized.
  1809.  
  1810.    See also  XDOS
  1811.  
  1812. (built-in,cursor): DOWN [number [, stop_column]]
  1813.  
  1814.    Moves cursor number of lines down.  If number is not given, a value of
  1815.    '1' is used.  If line is not in view, line is center scrolled or smooth
  1816.    scrolled into view.  See SCROLL_STYLE.  If bottom of buffer is hit RC
  1817.    is set to BOTTOM_OF_FILE_RC.  Otherwise, RC is set to 0.  Use the
  1818.    internal variable ".window_overlap" with the LIST_OVERLAP flag constant
  1819.    (in "slick.sh") to automate display of a bounce bar.  If stop_column is
  1820.    specified, the DOWN primitive stops when a line of length greater than
  1821.    or equal to stop_column is reached or until number of lines are
  1822.    scrolled.  Parameter two is useful for detecting lines that are too
  1823.    long to be printed on a printer.
  1824.  
  1825.    Example
  1826.  
  1827.        down
  1828.        if rc=BOTTOM_OF_FILE_RC then
  1829.           message get_message(rc)
  1830.        endif
  1831.  
  1832.  
  1833.    See also  UP
  1834.  
  1835. (built-in,mark): DUPLICATE_MARK([mark_id])
  1836.  
  1837.    Returns handle to newly created mark identical to mark specified.  If
  1838.    mark_id=='' then the handle of the mark showing is returned.
  1839.  
  1840.    Example
  1841.       unmark;mark_line
  1842.       mark_id=duplicate_mark()         /* duplicate current mark. */
  1843.       mark_showing=duplicate_mark('')  /* Save handle of mark showing. */
  1844.       copy_mark
  1845.       show_mark mark_id               /* Keep mark on source text. */
  1846.       free_mark mark_showing          /* Free mark on destination text. */
  1847.  
  1848. (command,file): E,EDIT [options filespec options filespec ...]
  1849.  
  1850.    Edits the file(s) specified.  Filespec may have wild card characters (*
  1851.    or ?  for DOS).  Default options for the EDIT command may by set with
  1852.    the LOAD-OPTIONS command.  The edit mode of each file loaded is set
  1853.    based on the file extension.  To add mode support for a new file
  1854.    extension, invoke the CONFIG menu (F5) and select "File extension
  1855.    setup...".  Each mode may have its on word wrap options, tab options,
  1856.    compile command, structure begin/end matching, and key bindings.
  1857.  
  1858.    The useful edit options are listed below.  For a complete list of
  1859.    options, see LOAD_FILES.  A few options are only useful in
  1860.    SLICK macros.
  1861.  
  1862.      +#command     Execute command on active buffer. For example,
  1863.                    "s test.c +#100" places the cursor on line 100 of
  1864.                    test.c.
  1865.      + or - L      Turn on/off Load entire file switch.
  1866.      + or - S      Turn on/off unmodified block swapping to spill file.
  1867.      +nnn          Load binary file(s) that follow in record width nnn.
  1868.      +T [buf_name] Start a temp buffer with name buf_name.
  1869.      + or - E      Turn on/off expand tabs to spaces switch.  Default
  1870.                    is off.  Only tabs of increments of 8 are supported.
  1871.      + or - D      Turn on/off memory buffer name search.  Disk file search.
  1872.      +B buf_name   Look in memory only for buffer with name buf_name.
  1873.  
  1874.    The options above that only show a plus sign will also take a minus
  1875.    sign.  However their function will remain the same.
  1876.  
  1877.    Example
  1878.  
  1879.       e +l test         Loads all of the file test and frees the file
  1880.                         handle.  If test is already loaded, its buffer is
  1881.                         activated.
  1882.  
  1883.       e +d test         Loads the file test from disk regardless if a copy
  1884.                         already exists in memory.
  1885.  
  1886.       e +b test         Activates the buffer test if it exists.
  1887.  
  1888.       e +t test         Starts a new buffer called test.
  1889.  
  1890.       e +40 +d test     Loads the binary file test from disk in 40
  1891.                         character line width. File may be edited and
  1892.                         saved.
  1893.  
  1894. (built-in,misc): ECHO 'on'|'off'
  1895.  
  1896.    Turns echo of command execution on or off.  Before a command is
  1897.    executed, the command is displayed in a shell window and a key must be
  1898.    pressed before the command is executed.  This command is useful for
  1899.    tracing execution of external commands.
  1900.  
  1901. (command,misc): ECHO on|off
  1902.  
  1903.    Turns echo of command execution on or off.  Before a command is
  1904.    executed, the command is displayed in a shell window and a key must be
  1905.    pressed before the command is executed.  This command is useful for
  1906.    tracing execution of external commands.
  1907.  
  1908. (command,menu): EDIT-MENU
  1909.  
  1910.    Runs the MAIN menu.  Many useful commands which are not bound to
  1911.    keys are accessible here.
  1912.  
  1913. (command,misc): EDIT-WITH filename command
  1914.  
  1915.    Loads the file specified and executes the command specified.  If
  1916.    command modifies the file, a prompt appears asking whether to save the
  1917.    file.  The file is quit if it has been saved or is not modified.  This
  1918.    command is useful in fileman mode for executing the change command on
  1919.    the selected files.
  1920.  
  1921.    Example
  1922.  
  1923.        for-select edit-with * c/string1/string2
  1924.  
  1925.        for-select edit-with * c/string1/string2/**     - No prompting
  1926.  
  1927. (built-in,misc): EDITOR_NAME()
  1928.  
  1929.    Returns name of editor without path or extension.  Used to check if a
  1930.    .CMD file belongs to the editor.  Look at the first line of
  1931.    "shell.cmd" for an example of the use of EXTPROC.
  1932.  
  1933.  
  1934. (command,keyboard): END-KBD-MACRO
  1935.  
  1936.    Ends the definition of a keyboard macro and names it LAST-KBD-MACRO.
  1937.  
  1938.  
  1939.    See also  START-KBD-MACRO, KBD-MACRO-TOGGLE, NAME-MACRO,
  1940.              KBD-MACRO-END-EXECUTE
  1941.  
  1942. (built-in,keyboard): END_KBD_MACRO
  1943.  
  1944.    Ends the keyboard macro definition started by START_KBD_MACRO.
  1945.    After END_KBD_MACRO is executed key strokes will not be remembered
  1946.    until the next START_KBD_MACRO is issued.  GET_MACRO may be called
  1947.    to get the string value of the macro.  Use NAME_MACRO to insert the
  1948.    macro and it's string value into the name table.
  1949.  
  1950.    Example
  1951.  
  1952.      start_kbd_macro
  1953.      k=getkey()                              /* Type a key. */
  1954.      end_kbd_macro
  1955.      name_macro 'last-kbd-macro',get_macro() /* insert the macro. */
  1956.      'last-kbd-macro'                        /* execute the macro. */
  1957.      k=getkey()                              /* macro will return key */
  1958.                                              /* type above. */
  1959.  
  1960.    See also  NAME_MACRO, GET_MACRO, START_KBD_MACRO
  1961.  
  1962. (built-in,cursor): END_LINE
  1963.  
  1964.    Places cursor after end of current line.  If column is not in view,
  1965.    column is center scrolled or smooth scrolled into view.  See
  1966.    SCROLL_STYLE.
  1967.  
  1968.    See also  BEGIN_LINE
  1969.  
  1970. (command,mark): END-MARK
  1971.  
  1972.    Places cursor on last character of visible mark.  If the current mark
  1973.    type is LINE, the cursor is moved to the last line of the marked area
  1974.    and the column position is unchanged.
  1975.  
  1976. (built-in,mark): END_MARK [mark_id]
  1977.  
  1978.    Places cursor on last character of mark specified.  If the current mark
  1979.    type is LINE, the cursor is move to the last line of the marked area
  1980.    and the column position is unchanged.
  1981.  
  1982. (built-in,mark): END_MARK_COMPARE([mark_id])
  1983.  
  1984.    Compares current line position to last line of mark specified.
  1985.  
  1986.         Return values
  1987.  
  1988.            0        Current line is on first line of mark
  1989.            >0       Current line is after last line of mark
  1990.            <0       Current line is before last line of mark
  1991.            1        Text is not marked or mark is not in current buffer
  1992.  
  1993.  
  1994.    See also  BEGIN_MARK_COMPARE
  1995.  
  1996. (built-in,misc): ENV_MATCH(name_prefix,find_first)
  1997.  
  1998.    Returns the name of the environment variable matching the prefix
  1999.    name_prefix.  If a match is not found, RC is set to STRING_NOT_FOUND_RC
  2000.    and '' is returned.  If find_first is non zero, matching starts from
  2001.    the first environment variable.  Otherwise matching starts after the
  2002.    previous match.
  2003.  
  2004.    See also  GET_ENV, SET_ENV
  2005.  
  2006. (built-in,misc): ERROR_POS(pcode_offset filename)
  2007.  
  2008.    Returns string containing pcode_offset and filename of the last
  2009.    interpreter run-time error.  The filename returned has no path.
  2010.    pcode_offset is the offset in .sx (pcode) file of error.  This
  2011.    information may be passed to ST (the SLICK translator) to find the
  2012.    corresponding line of the last run-time error.  If the pcode_offset and
  2013.    filename arguments are specified, the error position information is
  2014.    set.
  2015.  
  2016.    Example
  2017.       parse value error_pos() with pcode_offset filename
  2018.       sourcefilename= path_search(substr(filename,1,length(filename)-1))
  2019.       call st('-f 'pcode_offset sourcefilename)
  2020.  
  2021.  
  2022. (misc,help): ESCAPE
  2023.  
  2024.    The ESC key can be used to cancel any command that is prompting you to
  2025.    press a key.  The ESC key will also remove any pop-up window that is
  2026.    waiting for you to press a key.
  2027.  
  2028. (built-in,misc): EXECUTE
  2029.  
  2030.    Runs the command that is currently on the command line.  Command may be
  2031.    an internal command (DEFC), a keyboard macro command (DEFMACRO), an
  2032.    internal editor command (XCOM,DOS), an external DOS or OS/2 command, or
  2033.    an external command (extension '.S' or '.CMD').  Before the command is
  2034.    executed, the command line is erased, and the command is inserted into
  2035.    the command retrieve buffer ".command".  See RETRIEVE_PREV,
  2036.    RETRIEVE_NEXT.  After the command is executed, RC is set to the return
  2037.    code of the command.
  2038.  
  2039.    NOTE: On DOS or OS/2, If a command line has redirection characters, the
  2040.         command is passed to the command processor (usually COMMAND.COM or
  2041.         CMD.EXE ).  The command processor is also invoked for the following
  2042.         commands.
  2043.  
  2044.            BREAK   CTTY  ECHO   PATH   RD     TYPE
  2045.            CHDIR   DATE  ERASE  PAUSE  RMDIR  VER
  2046.            CLS     DEL   MD     REN    SET    VERIFY
  2047.            COPY    DIR   MKDIR  RENAME TIME   VOL
  2048.  
  2049.        In addition for OS/2 the command processor is invoked for the
  2050.        commands DETACH, and START
  2051.  
  2052.  
  2053.    See also  COMMAND_STATE, COMMAND_TOGGLE, COMMAND_LEFT, COMMAND_RIGHT,
  2054.              COMMAND_DELETE_CHAR, COMMAND_RUBOUT, SET_COMMAND,
  2055.              GET_COMMAND
  2056.  
  2057. (command,mark): EXECUTE-MARK
  2058.  
  2059.    Executes the commands in the marked area.  If text is not marked,
  2060.    current line is executed.
  2061.  
  2062. (command,menu): EXECUTE-QUERY command query_view_id
  2063.  
  2064.    Passes the arguments in the query buffer corresponding to query_view_id
  2065.    to command.  Afterwards the query buffer is quit.  This command is not
  2066.    intended to be bound to a key or executed from the command line.
  2067.  
  2068. (built-in,misc): EXIT  [number]
  2069.  
  2070.    Exits the editor without saving modified buffers.  The editors return
  2071.    code is set to number if given.  Otherwise return code is set to 0.
  2072.  
  2073. (command,misc): EXIT-PROCESS
  2074.  
  2075.    Exits the concurrent process buffer by entering the "exit" command and
  2076.    waiting until the command processor finishes.  This command supports
  2077.    OS/2 mode only.
  2078.  
  2079. (command,misc): EXPAND on|off
  2080.  
  2081.    Turns syntax expansion on or off.
  2082.  
  2083. (built-in,string): EXPAND_TABS(string[ ,start[ ,count[, 'E' | 'S']]])
  2084.  
  2085.    start defaults to 1
  2086.    count defaults to the rest of string
  2087.    Fourth parameter defaults to 'E'
  2088.  
  2089.    Returns a sub-string of input string containing tab characters.  The
  2090.    start and count specification correspond to the input string as if tab
  2091.    characters were expanded according to the current buffers tab settings.
  2092.    We call this type of text position or count imaginary.  Strings
  2093.    containing tab characters are expanded before displayed.  Hence, the
  2094.    need arises for a differentiation between physical and imaginary
  2095.    positions.  A physical position corresponds to a character in string.
  2096.    The characters are numbered one to the length of string.  An imaginary
  2097.    position corresponds to a position in a string once tabs have been
  2098.    expanded.
  2099.  
  2100.    By default, the tab characters in string specified by start and count
  2101.    are expanded to spaces according to the current buffer's tab settings.
  2102.    If the 'S' option is given as the fourth parameter, only bisected tab
  2103.    characters are expanded to the appropriate number of spaces.  If count
  2104.    extends past the imaginary length of string, the result is padded with
  2105.    blank characters.  A count of -1 specifies the rest of the input
  2106.    string starting from the imaginary column start.  The start parameter
  2107.    must be greater than zero.
  2108.  
  2109.    Example   (Assume tabs are  1 9 17 25 33 41 ... (increments of 8))
  2110.  
  2111.       expand_tabs('abc'\t'def'\t'ghi') =='abc'FIVE_SPACES'def'||
  2112.                                          FIVE_SPACES||'ghi'
  2113.       expand_tabs('abc'\t'def'\t'ghi',4) == FIVE_SPACES'def'FIVE_SPACES||
  2114.                                             'ghi'
  2115.       expand_tabs('abc'\t'def'\t'ghi',1,-1,'S') == 'abc'\t'def'\t'ghi'
  2116.       expand_tabs('abc'\t'def'\t'ghi',4,-1,'S') == \t'def'\t'ghi'
  2117.       expand_tabs('abc'\t'def'\t'ghi',5,-1,'S') == FOUR_SPACES'def'\t'ghi'
  2118.       expand_tabs('abc'\t'def'\t'ghi',5,10,'S') == FOUR_SPACES'def'||
  2119.                                                    THREE_SPACES
  2120.  
  2121.    see also  TEXT_COL
  2122.  
  2123. (command,file): FILE [options] [filename]
  2124.  
  2125.    Saves current file under name specified and quits the current file.  If
  2126.    filename is not specified, buffer name is used.  Default options for
  2127.    the FILE command may by set with the SAVE-OPTIONS command.  Options
  2128.    are:
  2129.  
  2130.      + or -O       Turn on/off overwrite file switch.  When on, no backup
  2131.                    of destination file is created.
  2132.  
  2133.      + or -T       Turn on/off compress with tabs switch.  Always uses
  2134.                    tab increments of 8 (1 9 17 ...).
  2135.  
  2136.      + or -E       Turn on/off expand tabs to spaces switch.  Default
  2137.                    is off.  The default may be set by the SAVE-OPTIONS
  2138.                    command.
  2139.  
  2140.      + or -B       Turn on/off binary save switch. Save file without
  2141.                    carriage return, line feeds, or end of file marker.
  2142.  
  2143.  
  2144. (command,file): FILE-COPY filename path
  2145.  
  2146.    Copies file specified to directory specified.  Directory is created if
  2147.    it does not exist.  Used by fileman mode.
  2148.  
  2149. (command,file): FILE-ERASE filename
  2150.  
  2151.    Erase the file specified.  Used by fileman mode.
  2152.  
  2153. (built-in,file): FILE_MATCH(name_prefix_options,find_first)
  2154.  
  2155.    Performs find first, find next directory search.
  2156.  
  2157.    name_prefix_options has the following syntax:
  2158.  
  2159.       {name_prefix  | ['-' | '+' option_letters]}
  2160.  
  2161.    option_letters may be 'H','S','A','D','P' with the following
  2162.    meaning.
  2163.         H     Include Hidden files. Defaults to off.
  2164.         S     Include System files. Defaults to off.
  2165.         A     Include Archive files. Defaults to off.
  2166.         D     Include Directory files. Defaults to on.
  2167.         P     Prefix match. Defaults to on.
  2168.         V     Verbose match. Defaults to off. When on, string
  2169.               returned is the same format as the file manager file list
  2170.               except that no path is included.  Column constants in
  2171.               "slick.sh" may be used to parse out name, file size,
  2172.               date, time, and attributes.
  2173.  
  2174.                   DIR_SIZE_COL
  2175.                   DIR_SIZE_WIDTH
  2176.                   DIR_DATE_COL
  2177.                   DIR_DATE_WIDTH
  2178.                   DIR_TIME_COL
  2179.                   DIR_TIME_WIDTH
  2180.                   DIR_ATTR_COL
  2181.                   DIR_ATTR_WIDTH
  2182.                   DIR_FILE_COL
  2183.  
  2184.         Note:  There is an R option for read only files which
  2185.                defaults to off.  However, read only files will always
  2186.                be included in file matching due to operating system
  2187.                limits of DOS and OS/2.
  2188.  
  2189.    When prefix match is on, file names with prefix matching name_prefix
  2190.    are returned (the prefix "abc" matches "abcd" and "abce").  When prefix
  2191.    match is off, a normal directory search is performed for file names
  2192.    matching name_prefix.  If any wild card characters such as '*' or '?'
  2193.    are present in name_prefix, prefix matching is ignored.
  2194.  
  2195.    A non-zero value for find_first, begins a new directory search.  If
  2196.    find_first is zero, the next matching file name is returned.  '' is
  2197.    returned if no match is found and RC is set to the error code.  Search
  2198.    is not case sensitive except for file systems like UNIX which are case
  2199.    sensitive.  If a directory is found, the name returned ends with a
  2200.    backslash.
  2201.  
  2202.    Example
  2203.       /* Find all C source files in the current directory. */
  2204.       /* '-P' turns off prefix match.  No directories will be found */
  2205.       /* since the D switch is not on. */
  2206.       filename= file_match('*.c -P',1)         /* find first. */
  2207.       loop
  2208.         if filename='' then  leave endif
  2209.         messageNwait('name='filename)
  2210.         /* Be sure to pass filename with correct path. */
  2211.         /* Result filename is built with path of given file name. */
  2212.         filename= file_match(filename,0)       /* find next. */
  2213.       endloop
  2214.  
  2215.       /* Find out if the file "junk" is read only */
  2216.       line=file_match("-p +v junk",1)
  2217.       if pos('R',substr(line,DIR_ATTR_COL,DIR_ATTR_WIDTH)) then
  2218.          message 'File "junk" is read only'
  2219.       else
  2220.          message 'File "junk" is NOT read only'
  2221.       endif
  2222.  
  2223.  
  2224.  
  2225.    See also  NAMES, FIND_INDEX, NAME_MATCH, BUF_MATCH, PATH_SEARCH
  2226.  
  2227. (command,file): FILE-MOVE filename path
  2228.  
  2229.    Moves the file specified to the directory specified.  Directory is
  2230.    created if it does not exists.  Used by fileman mode.
  2231.  
  2232. (command,file): FILEMAN-ATTR
  2233.  
  2234.    Prepares command line for executing the CHMOD command on the selected
  2235.    files.  Used by fileman mode.
  2236.  
  2237. (command,menu): FILEMAN-ATTR-MENU
  2238.  
  2239.    Runs fileman-attr-menu menu.
  2240.  
  2241. (command,file): FILEMAN-BACKUP
  2242.  
  2243.    Prepares command line for executing the SUBCOPY command on the selected
  2244.    files.  Used by fileman mode.
  2245.  
  2246. (command,file): FILEMAN-COPY
  2247.  
  2248.    Prepares command line for executing the FILE-COPY command on the
  2249.    selected files.  Used by fileman mode.
  2250.  
  2251. (command,file): FILEMAN-DELETE
  2252.  
  2253.    Prepares command line for executing the FILE-ERASE command on the
  2254.    selected files.  Used by fileman mode.
  2255.  
  2256. (command,misc): FILEMAN-DESELECT-DOWN
  2257.  
  2258.    Removes the '>' character at the beginning of the current line and
  2259.    moves the cursor to next line.  Used by fileman mode.
  2260.  
  2261. (command,misc): FILEMAN-DESELECT-UP
  2262.  
  2263.    Removes the '>' character at the beginning of the current line and
  2264.    moves the cursor to previous line.  Used by fileman mode.
  2265.  
  2266. (command,misc): FILEMAN-EDIT
  2267.  
  2268.    Loads the selected files for editing. Used by fileman mode.
  2269.  
  2270. (command,misc): FILEMAN-ENTER
  2271.  
  2272.    Loads the file at the cursor or inserts directory file list.  Used by
  2273.    fileman mode.
  2274.  
  2275. (command,menu): FILEMAN-FILES
  2276.  
  2277.    Runs the fileman-files menu.
  2278.  
  2279. (command,help): FILEMAN-HELP
  2280.  
  2281.    Displays help for fileman in a pop-up window.
  2282.  
  2283. (command,misc): FILEMAN-KEYIN-NAME
  2284.  
  2285.    Keys in file name at text cursor into the command line.  Used by
  2286.    fileman mode.
  2287.  
  2288. (command,menu): FILEMAN-MENU
  2289.  
  2290.     Runs fileman-menu menu.
  2291.  
  2292. (command,misc): FILEMAN-MODE
  2293.  
  2294.     The fileman mode keys are activated for the commands "dir" and "list".
  2295.     The keys are redefined as indicated below
  2296.  
  2297.     Alt-B   Backup selected files    Enter  Edit current file or insert
  2298.     Alt-C   Copy selected files             directory files.
  2299.     Alt-M   Move select files        Space  Select current file toggle
  2300.     Alt-D   Delete selected files    '8'    Select and cursor up
  2301.     Alt-E   Edit selected files      '2'    Select and cursor down
  2302.     Alt-S   Fileman select menu      '9'    Deselect and cursor up
  2303.     Alt-F   Fileman files menu       '3'    Deselect and cursor down
  2304.     Alt-A   File attributes menu     Alt-N  Keyin filename into command
  2305.     F10     Fileman main menu
  2306.  
  2307.     Selected directories are skipped by Backup, Move, Delete, Edit, and
  2308.     Set file attribute commands.
  2309.  
  2310. (command,file): FILEMAN-MOVE
  2311.  
  2312.    Prepares command line for executing the FILE-MOVE command on the
  2313.    selected files.  Used by fileman mode.
  2314.  
  2315. (command,menu): FILEMAN-SELECT
  2316.  
  2317.    Runs fileman-select menu.
  2318.  
  2319. (command,misc): FILEMAN-SELECT-DOWN
  2320.  
  2321.    Replaces the first character of the current line with '>' and moves the
  2322.    cursor to next line.  Used by fileman mode.
  2323.  
  2324. (command,misc): FILEMAN-SELECT-UP
  2325.  
  2326.    Replaces the first character of the current line with '>' and moves the
  2327.    cursor to previous line.  Used by fileman mode.
  2328.  
  2329. (command,misc): FILEMAN-SPACE
  2330.  
  2331.    If the visible cursor is in the text area, the select character '>' is
  2332.    toggled on or off.  Otherwise the default binding of space bar is
  2333.    executed.  Used by fileman mode.
  2334.  
  2335. (command,mark): FILL-MARK
  2336.  
  2337.    Fills marked area with key you type.  Text may be marked with one of
  2338.    the commands MARK-CHAR (Alt-Z), MARK-LINE (Alt-L), or MARK-BLOCK
  2339.    (Alt-B).
  2340.  
  2341. (built-in,mark): FILL_MARK character [,mark_id]
  2342.  
  2343.    Fills the mark specified with character.
  2344.  
  2345. (command,buffer): FIND-BUFFER [buffer_name]
  2346.  
  2347.    Activates the buffer specified.
  2348.  
  2349. (command,misc): FIND-ERROR
  2350.  
  2351.    Finds the last SLICK interpreter run time error.  The module with the
  2352.    error is loaded and the cursor is placed on the line causing the error.
  2353.  
  2354. (command,help): FIND-HELP [item [help_type]]
  2355.  
  2356.    Loads the "slick.doc" file and places the cursor on the help
  2357.    item of type help_type specified.
  2358.  
  2359. (built-in,name): FIND_INDEX(name,name_t)
  2360.  
  2361.    Returns name table index to name of type name_t.  A name type match is
  2362.    considered if (name_t & name_type(index)) is true.  The name type flags
  2363.    are listed in the file "slick.sh".  Search is not case sensitive.  All
  2364.    underscore characters in name are converted to dash characters before
  2365.    searching takes place.
  2366.  
  2367.  
  2368.    See also  NAMES, NAME_MATCH, NAME_NAME, NAME_TYPE, NAME_INFO,
  2369.              NAME_HELP, SET_NAME_HELP, FIND_LINK, CALL_LINK, INSERT_NAME,
  2370.              SET_NAME_INFO, NAME_CLASS, SET_NAME_CLASS, DELETE_NAME
  2371.  
  2372. (command,misc): FIND-MATCHING-PAREN
  2373.  
  2374.    Finds the parenthesis that matches the parenthesis the cursor is on.
  2375.    The supported parenthesis pairs are [], {}, and ().  This command now
  2376.    also matches begin/end structures for the languages C, PASCAL,
  2377.    Assembly, Modula2, Clipper, and SLICK.  For example, when editing a
  2378.    SLICK module FOR matches ENDFOR, LOOP matches ENDLOOP, and IF matches
  2379.    ENDIF.  To add begin/end structure matching for another language
  2380.    see help on SETUPEXT command.
  2381.  
  2382.    See also  KEYIN-MATCH-PAREN
  2383.  
  2384. (command,menu): FIND-MENU [menu_name[.menu_file]]
  2385.  
  2386.    Loads the menu_file specified and places the cursor on the menu
  2387.    menu_name.  The menu_file parameter may not contain a path or
  2388.    extension.  The extension "mnu" is used.  A path search is performed to
  2389.    find the menu file.  If menu_file is not given 'slick' is assumed.  If
  2390.    no argument is specified, a selection list of possible arguments is
  2391.    created.
  2392.  
  2393. (command,help): FIND-PROC proc_name
  2394.  
  2395.    Finds SLICK source code or help for the proc_name specified.  Unlike
  2396.    the FIND-TAG command, the FIND-PROC command does not use a tag file
  2397.    and does not support module only (GLOBAL) scope procedures.
  2398.  
  2399. (command,search): FIND-TAG [proc_name]
  2400.  
  2401.    The FIND-TAG command places the cursor on the source code for
  2402.    proc_name.  If proc_name is not specified, the procedure name at the
  2403.    cursor is used.  The MAKE-TAGS command must be used first to create a
  2404.    tag file called "tags.slk" which is a list of your procedure names
  2405.    followed by the source code file name.  Once created, the MAKE-TAGS
  2406.    command only needs to be reinvoked when a new procedure is written, a
  2407.    procedure is deleted, or a procedure is moved to a different source
  2408.    file.  By default, the FIND-TAG command looks for "tags.slk" in the
  2409.    current directory.  If you want the FIND-TAG command to always use a
  2410.    specific tag file, define an environment variable called TAGS.SLK which
  2411.    contains the path and name of the tag file.  The SPACE BAR and '?' keys
  2412.    may be used to complete the procedure name.  Currently the C, Pascal,
  2413.    Modula2, Clipper, and Assembly languages are supported.  See "tags.s"
  2414.    for information on adding support for other languages.
  2415.  
  2416.    See also MAKE-TAGS
  2417.  
  2418. (command,misc): FKEYTEXT
  2419.  
  2420.    Runs the external command "fkeytext.s".  This self explanatory macro
  2421.    provides simple line editing functions for editing the function key
  2422.    text.  After changing the function key text, invoke the WRITE-STATE
  2423.    command to save configuration.
  2424.  
  2425. (command,misc): FKEYTEXT-OPTIONS  ['S'|H'|'O']
  2426.  
  2427.    The function key text and message line have three configurations.
  2428.    The options S, H, and O have the following meaning:
  2429.  
  2430.        S          -  Show fkeytext.  Message line and fkeytext line are
  2431.                      on different lines of the screen.
  2432.        H          -  Hide fkeytext.  One line of screen is used as
  2433.                      the message line.  fkeytext is not displayed.
  2434.        O          -  Messages temporarily overlaps the function key
  2435.                      text until a key is pressed.
  2436.  
  2437.    If no option is specified, the current setting is shown.
  2438.  
  2439.    See also   STICKY_MESSAGE, MESSAGE, SET_FKEYTEXT, GET_FKEYTEXT
  2440.  
  2441.  
  2442. (command,misc): FOR-ALL  command
  2443.  
  2444.    Executes command specified on all the lines of the current buffer.
  2445.    Parts of the line being executed are inserted into the command
  2446.    specified according to the following specifications:
  2447.  
  2448.           *       Filename               (Directory buffers only)
  2449.           *L      Entire line
  2450.           *nnn    Nth word is inserted
  2451.           *P      Path without backslash is inserted (Directory buffers
  2452.                                                       only)
  2453.           *D      Drive with :           (Directory buffers only)
  2454.           *N      Name without extension (Directory buffers only)
  2455.           *F      Name with extension    (Directory buffers only)
  2456.           *E      File extension without dot  (Directory buffers only)
  2457.           **      star
  2458.  
  2459.    Example
  2460.  
  2461.        for-all say *L       - Displays all lines of the current buffer
  2462.  
  2463.  
  2464. (command,misc):  FOR-DIR command
  2465.  
  2466.    Executes command specified on the selected files.  Used by fileman
  2467.    mode.  Unlike the FOR-SELECT command, directory files are not skipped.
  2468.    Execute the command "help FOR-ALL" for help on inserting parts of line
  2469.    in the command.
  2470.  
  2471. (command,mark):  FOR-MARK command
  2472.  
  2473.    Executes command specified on the marked lines.  Execute the command
  2474.    "help FOR-ALL" for help on inserting parts of line in the command.
  2475.  
  2476. (command,misc):  FOR-SELECT command
  2477.  
  2478.    Executes command specified on the selected files.  Used by fileman
  2479.    mode.  Directory files are skipped.  See FOR-ALL for help on
  2480.    inserting parts of line in command.
  2481.  
  2482. (built-in,mark): FREE_MARK  mark_handle
  2483.  
  2484.    Frees the mark corresponding to mark_handle.  FREE_MARK will not free a
  2485.    mark that is showing.  Use SHOW_MARK if necessary to show another mark
  2486.    before freeing the mark.
  2487.  
  2488.    Example
  2489.       /* Get handle to mark showing (default mark handle) */
  2490.       current_mark_id=duplicate_mark('')
  2491.       /* Allocate another mark. */
  2492.       mark_id=alloc_mark()
  2493.       mark_line mark_id
  2494.       show_mark mark_id;call getkey()
  2495.       show_mark current_mark_id
  2496.       free_mark mark_id
  2497.  
  2498.  
  2499.    See also  ALLOC_MARK
  2500.  
  2501. (command,misc): FUNDAMENTAL-MODE
  2502.  
  2503.    Switches to Fundamental mode key bindings.
  2504.  
  2505. (command,file): GET filename
  2506.  
  2507.    Inserts the file specified before or after the current line depending
  2508.    on the line insert style.  The default is after the current line.  The
  2509.    line insert style is accessible through the config menu under "Other
  2510.    options...".
  2511.  
  2512. (built-in,misc): GET_COMMAND var text [,var col [,var leftedge [,
  2513.                              var prompt[,var popup_x[,
  2514.                              var popup_y[,var popup_width[,
  2515.                              var popup_color]]]]]]]
  2516.  
  2517.    Be sure to look at the macro function GET_STRING (See module "get.s")
  2518.    and the QUERY command (see help on QUERY command) which allow a macro
  2519.    to read input from the user.  Unlike the GET_STRING function, the QUERY
  2520.    command can prompt for multiple input fields in a pop-up window.  The
  2521.    GET_STRING function is typically used to read one string from the
  2522.    command line near the bottom of the screen.
  2523.  
  2524.    Returns the command line text, column position, left edge, prompt,
  2525.    popup x, popup y, popup width, and popup color in the corresponding
  2526.    variables.
  2527.  
  2528.  
  2529.    See also  COMMAND_STATE, COMMAND_TOGGLE, COMMAND_LEFT, COMMAND_RIGHT,
  2530.              COMMAND_DELETE_CHAR, COMMAND_RUBOUT, EXECUTE, SET_COMMAND,
  2531.              QUERY
  2532.  
  2533. (built-in,display): GET_CURSOR_XY var x,var y
  2534.  
  2535.    Returns visible cursor coordinates in the variables x and y.  x range
  2536.    is 0..SCREEN_WIDTH()-1. y range is 0..SCREEN_HEIGHT()-1.
  2537.  
  2538. (built-in,misc): GET_ENV(name)
  2539.  
  2540.    Returns the value of the environment variable name.  If name is not
  2541.    found RC is set to STRING_NOT_FOUND_RC and '' is returned.
  2542.  
  2543.    See also  ENV_MATCH, SET_ENV
  2544.  
  2545. (built-in,keyboard): GET_FKEYTEXT var text,var option
  2546.  
  2547.    Sets the variable text to the function key text of the key table
  2548.    "root-keys".  Each key table has its own set of function key text which
  2549.    may be up to 160 characters long.  The variable option is set to one
  2550.    of the following:
  2551.  
  2552.         S          -  Show fkeytext.  Message line and fkeytext line are
  2553.                       on different lines of the screen.
  2554.         H          -  Hide fkeytext.  One line of screen is used as
  2555.                       the message line.  fkeytext is not displayed.
  2556.         O          -  Messages temporarily overlap the function key
  2557.                       text until a key is pressed.  "sticky messages"
  2558.                       (See STICKY_MESSAGE) do not go away
  2559.                       until another message is displayed.
  2560.  
  2561. (built-in,misc): GET_LINE var line
  2562.  
  2563.    Places the current line of the current buffer into the variable line.
  2564.  
  2565.    See also  INSERT_LINE, REPLACE_LINE, DELETE_LINE
  2566.  
  2567. (built-in,keyboard): GET_MACRO()
  2568.  
  2569.    Returns the value of the last macro defined or the macro currently
  2570.    being defined. If the macro has overflowed the maximum macro size,
  2571.    RC is set to KBD_MACRO_TOO_LONG_RC.  Otherwise RC is set to 0.
  2572.  
  2573.    See also  NAME_MACRO, START_KBD_MACRO, END_KBD_MACRO
  2574.  
  2575.  
  2576. (built-in,mark): GET_MARK var start_col, var end_col, var buf_id[,
  2577.                     mark_id [,var buf_name]]
  2578.  
  2579.    Returns start column, end column, buffer id, and buffer name of the
  2580.    mark specified.  If the mark specified has no type, RC is set to
  2581.    TEXT_NOT_MARKED_RC.
  2582.  
  2583. (built-in,misc): GET_MESSAGE(error_code)
  2584.  
  2585.    Returns message corresponding to error number error_code.  If
  2586.    error_code does not exists, "Message not available" is returned.  The
  2587.    error codes are listed in the file "rc.sh".
  2588.  
  2589.  
  2590. (built-in,mark): GET_REFLOW_POSITION Noflines_down,col
  2591.  
  2592.    Returns relative position where cursor should be placed in resulting
  2593.    reflowed text output from the REFLOW_MARK function.  If the cursor does
  2594.    not need to be moved, Noflines_down will be a negative number.
  2595.  
  2596.  
  2597. (built-in,misc): GET_VAR(index)
  2598.  
  2599.    Returns the contents of the variable corresponding to the name table
  2600.    index given.
  2601.  
  2602.    Example
  2603.  
  2604.       /* VAR_TYPE is defined in "slick.sh" */
  2605.       index=find_index('rc',VAR_TYPE)
  2606.       message 'rc='get_var(index)
  2607.  
  2608.    See also  SET_VAR
  2609.  
  2610. (built-in,window): GET_VIEW_ID  view_id
  2611.  
  2612.    For an explanation of how windows,views, and buffers are related,
  2613.    type "help windows-structure" on command line.
  2614.  
  2615.    A view holds the information necessary for the editor to remember your
  2616.    location and scroll position in a buffer.  Each window has a ring of
  2617.    views to buffers.  When you have more than one window looking at the
  2618.    same buffer.  The windows have different views of that buffer.
  2619.  
  2620.    Example
  2621.  
  2622.       get_view_id view_id     /* Remember current window,view, and buffer */
  2623.       next_view               /* switch to next view in current window. */
  2624.       activate_view view_id   /* Go back to orig. window,view, and buffer. */
  2625.  
  2626.   See also  ACTIVATE_VIEW, NEXT_VIEW, PREV_VIEW, QUIT_VIEW, LOAD_FILES,
  2627.             NEXT_WINDOW, PREV_WINDOW
  2628.  
  2629. (built-in,file): GETCWD([drive])
  2630.  
  2631.    Returns the current working directory for the drive specified.  drive
  2632.    must be a one character drive letter.  If an error is encountered, RC
  2633.    is set to one of the return codes in "RC.SH" and '' is returned.
  2634.  
  2635.    Example
  2636.  
  2637.       message getcwd()    /* Display current working directory. */
  2638.       message getcwd('D') /* Display current working directory of */
  2639.                           /* drive D. */
  2640.  
  2641. (built-in,keyboard): GETKEY([options])
  2642.  
  2643.      options  defaults to '' and may be 'R' and/or 'K' and/or 'C'
  2644.  
  2645.           'R'          -  Specifies no screen refresh
  2646.           'K'          -  Retrieve keys from physical keyboard
  2647.                           and not from keyboard macro that is running.
  2648.           'C'          -  Limit refresh to command line only.  Used by
  2649.                           GET_STRING macro function to refresh text
  2650.                           in popup command line.
  2651.           'N'          -  Get next key.  When a SLICK language macro
  2652.                           uses GETKEY for multiple key sequence key
  2653.                           bindings, all GETKEY calls after the first
  2654.                           should pass this parameter.  Otherwise
  2655.                           key stroke recording will not work since
  2656.                           terminating key stroke recording requires
  2657.                           that the last key sequence be removed.
  2658.  
  2659.    Waits for a key to be pressed and returns a string representation of
  2660.    the key typed.  For ASCII keys a string of length 1 is returned except
  2661.    for C_ENTER, C_BACKSPACE, ENTER, TAB, BACKSPACE, and ESC.  For these
  2662.    special keys and extended keys like A_L, a string of length 2 is
  2663.    returned.  These separations allows the control keys C_J, C_H, C_M, and
  2664.    C_I to have a different binding from the keys listed above.  This
  2665.    function will return keys from a keyboard macro that is running unless
  2666.    option 'K' is specified.  If 'R' and 'C' options are not given, the
  2667.    screen is refreshed and the shell window is closed.  The shell window
  2668.    is opened when an external program is executed or by the built-in
  2669.    primitives SAY, SAYS, and PAUSE.
  2670.  
  2671.    Example
  2672.  
  2673.       key=getkey()
  2674.       message 'The key pressed was 'key2name(key)
  2675.  
  2676.    See also   TESTKEY, LASTKEY, RAW_LASTKEY, CALL_KEY, KEY2NAME,
  2677.               KEY2INDEX, INDEX2KEY, LIST_BINDINGS, KEYTAB_INDEX,
  2678.               SET_KEYTAB_POINTER
  2679.  
  2680. (misc,language): GLOBAL
  2681.  
  2682.    Declares a variable of the scope "global".  The scope of a global
  2683.    variable is limited to the module it is defined in.  When the module
  2684.    defining the global variable is unloaded, the space the variable used
  2685.    is freed.  Global variables may be saved from session to session by the
  2686.    WRITE-STATE command.
  2687.  
  2688.    Syntax
  2689.  
  2690.       GLOBAL
  2691.          variable [= initial_expression] [',']
  2692.          variable [= initial_expression] [',']
  2693.          ....
  2694.  
  2695.    The comma is used to declare global variables on one line.
  2696.  
  2697.    Global variables are initialized to initial_expression when the module
  2698.    is loaded.  If initial_expression is not given, the variable is
  2699.    initialized to ''.
  2700.  
  2701. (command,cursor): GOTO-LINE [line_number]
  2702.  
  2703.    Moves the cursor to line number specified.  Cursor column position is
  2704.    not changed.
  2705.  
  2706. (built-in,help): GOTO_POINT p[,line_number]
  2707.  
  2708.    Moves current buffer location to text position specified.  If the text
  2709.    position is found, .col is set to 1, .cursor_y is set to 0, and
  2710.    .cursor_x is set to 0.  The block number and the line number within the
  2711.    block is encoded in p as two 16 bit numbers returned by the built-in
  2712.    function POINT.  If line_number is specified, the current line number
  2713.    is set to line_number.  The current line number may also be retrieved by
  2714.    the built-in function POINT.
  2715.  
  2716.    Example
  2717.      index=find_index('goto-point',BUILT_IN_TYPE)
  2718.      goto_point name_help(index)
  2719.  
  2720.    See also  POINT
  2721.  
  2722. (command,help): HELP [name [help_type]]
  2723.  
  2724.    We recommend you learn the function keys and the following commands
  2725.    first:
  2726.  
  2727.         help             edit
  2728.         help-class       save
  2729.         what-is          quit
  2730.         where-is         file
  2731.  
  2732.    Help will be presented to you in a pop-up window or in a newly created
  2733.    buffer.  For help on one of the above commands toggle the visible
  2734.    cursor to the command line and type "help " followed by one of the
  2735.    commands above.  You may retrieve previously typed commands with the UP
  2736.    arrow key.
  2737.  
  2738.         Esc        Cancels pop-up window,
  2739.                    Toggles the visible cursor to and from the command line
  2740.  
  2741.         F1         Runs help menu or displays help on menu item.
  2742.  
  2743.         F3         Quits help buffer
  2744.  
  2745.         '?'        Lists possible arguments to a command when the visible
  2746.                    cursor is on the command line
  2747.  
  2748.         Space bar  Completes a command argument when the visible cursor
  2749.                    is on the command line
  2750.  
  2751.         Ctrl-A     Toggles the visible cursor to and from the command line
  2752.  
  2753. (command,help): HELP-CLASS [help_class [help_type]]
  2754.  
  2755.    Presents a list of the help items with class help_class and type
  2756.    help_type.  For a list of the help classes, type "HELP-CLASS ?" on the
  2757.    command line.  Select a help class and then type "?" for a list of the
  2758.    help types or just press ENTER (no help_type) to select any help type.
  2759.    Once the help item has been selected a buffer is created and the help
  2760.    text is inserted.
  2761.  
  2762. (command,help): HELP2-CLASS [help_class [help_type]]
  2763.  
  2764.    Returns a HELP command string to execute.  Help item is selected by
  2765.    class and type.  This command is intended to be used from within
  2766.    "slick.mnu".
  2767.  
  2768. (command,help): HELP-COMMAND [command]
  2769.  
  2770.    Creates a buffer and inserts help for the command specified.  Lists
  2771.    all keys that invoke the command specified.
  2772.  
  2773. (misc,language): IF
  2774.  
  2775.    The syntax of the SLICK language IF statement is:
  2776.  
  2777.      IF expression THEN statements
  2778.      {ELSEIF expression THEN  statements}
  2779.      [ELSE statements]
  2780.      ENDIF
  2781.  
  2782.    Example
  2783.  
  2784.       if x<y then a=1 endif
  2785.       if x='a' then
  2786.          y=1
  2787.       elseif x='b' then
  2788.          y=2
  2789.       elseif x='c' then
  2790.          y=3
  2791.       else x='d' then
  2792.          y=4
  2793.       endif
  2794.  
  2795. (command,search): I-SEARCH
  2796.  
  2797.    Starts an incremental search.  Searching takes place as characters are
  2798.    typed.  A long search may be stopped by pressing Ctrl-Break.  The
  2799.    following keys take on a different definition during an incremental
  2800.    search:
  2801.  
  2802.        Ctrl-R      Searches in reverse for next occurrence of search
  2803.                    string
  2804.        Ctrl-S      Searches forward for next occurrence of search
  2805.                    string
  2806.        Ctrl-T      Toggles regular expression pattern matching on/off. For
  2807.                    help on regular expressions, see / command.
  2808.        Ctrl-W      Toggles word searching on/off.  See the WORD-CHARS
  2809.                    command for changing the definition of a word.
  2810.  
  2811.  
  2812.    See also  REVERSE-I-SEARCH, L, /, C
  2813.  
  2814. (misc,language): INCLUDE string_constant
  2815.  
  2816.    Includes the file specified in string_constant for compiling.  If
  2817.    string_constant does not specify a path, the SLICK translator will look
  2818.    in the same directory of the main source file.  Otherwise, the path
  2819.    specified by string_constant is searched.  If the file is not found,
  2820.    the SLICK translator will look for the include file by concatenating
  2821.    the path specified by the SLICKINCLUDE environment variable to
  2822.    string_constant.  Currently, the SLICKINCLUDE environment variable may
  2823.    only contain one path.  Include files may be nested.
  2824.  
  2825. (command,mark): INDENT-MARK
  2826.  
  2827.    Indents the marked text to the first tab stop not equal to one.
  2828.    Supports line mark only.  Indenting will be with tab or space
  2829.    characters depending upon the indent style (CONFIG, "File extension
  2830.    setup...", select an extension, "Indent with tabs"). Lines of text may
  2831.    be marked with the MARK-LINE command (Alt-L).
  2832.  
  2833.  
  2834.    See also UNINDENT-MARK
  2835.  
  2836. (command,misc): INDENT-WITH-TABS [Y|N]
  2837.  
  2838.    If yes, the indent caused by invoking an ENTER key command or a
  2839.    reformat paragraph command indents with tab characters.  The
  2840.    INDENT-WITH-TABS command only affects the current buffer.  To set the
  2841.    default indent style for specific file extensions, use the CONFIG menu
  2842.    (CONFIG, "File extension setup...", select an extension, "Indent with
  2843.    tabs")
  2844.  
  2845. (built-in,name): INDEX_CALLABLE(index)
  2846.  
  2847.    Returns index into the name table of the module that the procedure
  2848.    or command corresponding to index is linked.  If index is invalid or
  2849.    does not correspond to a procedure or command, 0 is returned.
  2850.  
  2851.    Example
  2852.  
  2853.       index=find_index('upcase-filter')
  2854.       if not index_callable(index) then
  2855.          message 'upcase-filter name in name table but not linked to module'
  2856.       else
  2857.         message 'upcase-filter is defined in module 'name_name(index)
  2858.       endif
  2859.  
  2860.    See also   CALL_INDEX
  2861.  
  2862. (built-in,keyboard): INDEX2KEY(index)
  2863.  
  2864.    Converts key table index into the string representation of
  2865.    keys returned by GETKEY(), TESTKEY, and LASTKEY().
  2866.  
  2867.    See also   GETKEY, TESTKEY, LASTKEY, RAW_LASTKEY, CALL_KEY,
  2868.               KEY2NAME, KEY2INDEX, LIST_BINDINGS, KEYTAB_INDEX,
  2869.               SET_KEYTAB_POINTER
  2870.  
  2871. (built-in,file): INSERT_FILE_LIST command_line
  2872.  
  2873.    Inserts a file list of the files specified with columns for size, date,
  2874.    time, attributes, and name.
  2875.  
  2876.    command_line has the following syntax:
  2877.  
  2878.       {filespec  | ['-' | '+' option_letters]}
  2879.  
  2880.    option_letters may be 'H','S','A','D','P','T' with the following
  2881.    meaning.
  2882.         H     Include hidden files (defaults to OFF)
  2883.         S     Include system files (defaults to OFF)
  2884.         A     Include archive files (defaults to OFF)
  2885.         D     Include directory files (defaults to OFF)
  2886.         P     Append path (defaults to OFF)
  2887.         T     Tree file list (defaults to OFF)
  2888.  
  2889.         Note:  There is an R option for read only files which
  2890.                defaults to off.  However, read only files will always
  2891.                be included in file matching due to operating system
  2892.                limits of DOS and OS/2.
  2893.  
  2894.    filespec may contain operating system wild cards such as '*' and '?'.
  2895.    If filespec is not specified, current directory is used.
  2896.  
  2897.    Example
  2898.  
  2899.       insert_file_list '\*.*"     /* List just root directory with */
  2900.                                   /* directories. */
  2901.       insert_file_list '+tp \*.*"   /* List all files. Append paths. */
  2902.  
  2903.  
  2904. (command,keyboard): INSERT-KEYDEF
  2905.  
  2906.    Inserts SLICK source code for the binding of the key(s) you type.
  2907.  
  2908. (built-in,misc): INSERT_LINE line
  2909.  
  2910.    Inserts line into current buffer after the current line and places
  2911.    the cursor after the last character of line.
  2912.  
  2913.    See also  GET_LINE, REPLACE_LINE, DELETE_LINE
  2914.  
  2915. (command,keyboard): INSERT-MACRO kbd-macro-name
  2916.  
  2917.    Runs the external command 'listmacs.s'.  Inserts SLICK source code
  2918.    representing the keyboard macro you specify into the current buffer.
  2919.  
  2920.    Example
  2921.  
  2922.       insert-macro last-kbd-macro
  2923.  
  2924.    See also   LIST-SOURCE, LIST-MACROS, LIST-KEYDEFS, LIST-CONFIG
  2925.  
  2926. (built-in,name): INSERT_NAME(name, type [,info])
  2927.  
  2928.    Inserts name into name table with type and optional info.  The index of
  2929.    the new name table entry is returned if successful.  Otherwise 0 is
  2930.    returned and RC is set INTERPRETER_OUT_OF_MEMORY_RC and message will
  2931.    get displayed after macro finished unless CLEAR_MESSAGE is called.
  2932.    Valid types are listed in "slick.sh" and have the suffix "_TYPE".
  2933.    Internal name types may not be inserted except for KEYTAB_TYPE.  If the
  2934.    type of name given is KEYTAB_TYPE, space is allocated for the new key
  2935.    table.
  2936.  
  2937.    See also  NAMES, FIND_INDEX, NAME_MATCH, NAME_NAME, NAME_TYPE,
  2938.              NAME_INFO, NAME_HELP, SET_NAME_HELP, FIND_LINK, CALL_LINK,
  2939.              SET_NAME_INFO, NAME_CLASS, SET_NAME_CLASS, DELETE_NAME
  2940.  
  2941. (built-in,misc): INSERT_STATE()
  2942.  
  2943.    Returns '1' if insert mode on.  Otherwise '0' is returned.
  2944.  
  2945.    Example
  2946.  
  2947.       cursor_command
  2948.       /* set insert mode on. */
  2949.       if not insert_state() then insert_toggle endif
  2950.       keyin 'insert these characters into the command line'
  2951.  
  2952.    See also  INSERT_TOGGLE
  2953.  
  2954.  
  2955. (command,misc): INSERT-TOGGLE
  2956.  
  2957.    Toggles insert mode on/off.  Normally the cursor shape is smaller when
  2958.    in over-write mode.  When in insert mode, characters are inserted at
  2959.    the cursor position.  When in over-write mode, the characters at the
  2960.    cursor position are replaced.
  2961.  
  2962. (built-in,misc): INSERT_TOGGLE
  2963.  
  2964.    Toggles insert mode on/off.  Normally the cursor shape is smaller when
  2965.    in over-write mode.  When in insert mode, characters are inserted at
  2966.    the cursor position.  When in over-write mode, the characters at the
  2967.    cursor position are replaced.
  2968.  
  2969.    Example
  2970.  
  2971.       cursor_command
  2972.       /* set insert mode on. */
  2973.       if not insert_state() then insert_toggle endif
  2974.       keyin 'insert these characters into the command line'
  2975.  
  2976.    See also  INSERT_STATE
  2977.  
  2978. (built-in,misc): INT86X(int_num,ax bx cx dx si di cflag,ds es)
  2979.  
  2980.    Calls DOS interrupt int_num with the registers given.  Not all
  2981.    registers need to be specified.  The registers that are specified must
  2982.    be in the order shown above.  A string is returned with all the
  2983.    registers in the format:
  2984.  
  2985.       ax bx cx dx si di cflag,ds es
  2986.  
  2987.    Example
  2988.  
  2989.       defproc get_time()
  2990.          parse value int86x(0x21,0x2c00,'') with ax bx cx dx .
  2991.          hours= cx%256
  2992.          minutes=  cx & 0xff;
  2993.          seconds= dx%256;
  2994.          hundredths = dx & 0xff;
  2995.          return(hours':'minutes':'seconds'.'hundredths)
  2996.  
  2997.       defproc read(fh,var buffer,count)
  2998.          if length(buffer)<count then
  2999.             buffer=substr('',1,count)
  3000.          endif
  3001.          regs=0x3f00 fh 0 var_ofs(buffer)
  3002.          segregs=var_seg(buffer)
  3003.          parse value int86x(0x21,regs,segregs) with ax . . . . . cflag','
  3004.          if cflag then
  3005.             return(-ax)
  3006.          endif
  3007.          return(ax)
  3008.  
  3009.     See also  VAR_OFS, VAR_SEG
  3010.  
  3011. (misc,language): INTERNAL-VARIABLES
  3012.  
  3013.    Internal variables are variables that belong to the SLICK editor.  The
  3014.    possible scope of an internal variable is BUFFER, VIEW, WINDOW, and
  3015.    GROUP.  Internal variables may not be used as call by reference
  3016.    parameters.
  3017.  
  3018.    To access an internal editor variable, specify one of the names below
  3019.    and prefix it with a dot.
  3020.  
  3021.  
  3022.         Name                   Description                   Scope
  3023.    __________________________________________________________________
  3024.  
  3025.         buf_name_color         Color of buffer name          (WINDOW)
  3026.         mono_buf_name_color    Mono color of buffer  name    (WINDOW)
  3027.         box_color              Color of window border        (WINDOW)
  3028.         mono_box_color         Mono color of window border   (WINDOW)
  3029.         message_color          Color of message              (WINDOW)
  3030.         mono_message_color     Mono color of message         (WINDOW)
  3031.         fkeytext_color         Color of fkeytext             (WINDOW)
  3032.         mono_fkeytext_color    Mono color of fkeytext        (WINDOW)
  3033.         window_color           Color of window text          (WINDOW)
  3034.         mono_window_color      Mono color of window text     (WINDOW)
  3035.         command_color          Color of command line         (WINDOW)
  3036.         mono_command_color     Mono color of command line    (WINDOW)
  3037.         mark_color             Color of text mark            (WINDOW)
  3038.         mono_mark_color        Mono color of text mark       (WINDOW)
  3039.         subtitle_color         Color of window subtitle      (WINDOW)
  3040.         mono_subtitle_color    Mono color of window subtitle (WINDOW)
  3041.         cursor_color           Color of cursor mark          (WINDOW)
  3042.         mono_cursor_color      Mono color of cursor mark     (WINDOW)
  3043.         window_style           Determines window border      (WINDOW)
  3044.                                style and corner characters
  3045.                                to be used.  There is further
  3046.                                explanation below.
  3047.         window_overlap         Indicates whether this window (WINDOW)
  3048.                                overlaps any other window and
  3049.                                optionally specifies flags
  3050.                                for windows with selection
  3051.                                characters, list selection bar,
  3052.                                or word selection bar.  The flags
  3053.                                are in "slick.sh" and shown below:
  3054.  
  3055.               WINDOW_OVERLAP=1       Window overlaps other windows.
  3056.                 MENU_OVERLAP=2       Window has selection characters.
  3057.                                      Selection characters are surrounded
  3058.                                      with the character '^'.
  3059.                                      Uses cursor color.
  3060.                 LIST_OVERLAP=4       Window has line selection bar.
  3061.                                      Uses mark color.
  3062.                 WORD_OVERLAP=8       Window has word selection bar.
  3063.                                      Uses mark color.
  3064.       DISPLAY_COLOR_OVERLAP=16       Window has colored text. Uses cursor
  3065.                                      color.
  3066.  
  3067.                                These window_overlap flags are used
  3068.                                in conjunction with the WINDOW,UP, and
  3069.                                DOWN primitives to implement menus and
  3070.                                selection lists.
  3071.  
  3072.         window_x               The top left x position of    (WINDOW)
  3073.                                window (0..screen_width()-2)
  3074.         window_y               The top left y position of    (WINDOW)
  3075.                                window (0..screen_height()-3)
  3076.         window_height          Window height                 (WINDOW)
  3077.                                (1..screen_height()-2)
  3078.         window_width           Window width                  (WINDOW)
  3079.                                (2..screen_width())
  3080.         window_id              Window id.                    (WINDOW)
  3081.         left_edge              Column scroll position        (VIEW)
  3082.                                0..255-1.
  3083.         cursor_x               Text cursor x position        (VIEW)
  3084.                                0..screen_width()-1
  3085.         cursor_y               Text cursor y position        (VIEW)
  3086.                                0..screen_height()-3
  3087.         line                   Line number                   (VIEW)
  3088.         Noflines               Number of lines in file       (BUFFER)
  3089.         col                    Column position within        (VIEW)
  3090.                                current line. 1..255
  3091.         buf_name               Name of buffer                (BUFFER)
  3092.         Nofviews               Number of views of buffer     (BUFFER)
  3093.         modify                 Non zero indicates buffer     (BUFFER)
  3094.                                has been modified
  3095.         buf_id                 buffer id                     (BUFFER)
  3096.         margins                String containing left,right  (BUFFER)
  3097.                                and new paragraph margins.
  3098.                                1..254
  3099.         tabs                   String containing up to 30    (BUFFER)
  3100.                                tab stops.  See TABS command
  3101.                                for example input strings.
  3102.         subtitle               Window subtitle               (WINDOW)
  3103.         mode_name              Name of current mode          (BUFFER)
  3104.         group_id               Group id                      (GROUP)
  3105.         buf_width              If non-zero, width of         (BUFFER)
  3106.                                record file.
  3107.         word_wrap_style        Flags for word wrap on/off    (BUFFER)
  3108.                                and paragraph justification.
  3109.              1   Unjustify on/off flag.  Justify flag overrides this flag.
  3110.              2   Word wrap on/off flag.
  3111.              4   Justify flag.
  3112.  
  3113.         show_tabs              options for tab formatting    (BUFFER)
  3114.  
  3115.              0    Expand tabs to spaces.
  3116.              1    Display tab characters without expanding them.
  3117.              2    Expand tabs to spaces but display first character
  3118.                   as a tab character instead of a space.
  3119.  
  3120.         indent_with_tabs       0,1 Indicates whether         (BUFFER)
  3121.                                the editor should indent
  3122.                                with tabs or spaces.
  3123.  
  3124.    The following internal variables are read-only:
  3125.  
  3126.       window_id, left_edge, Noflines, Nofviews, buf_id, group_id, buf_width
  3127.  
  3128.    The .window_style variable determines the window borders and the corner
  3129.    characters.  The first 8 bits of the .window_style variable is the
  3130.    window border style which may have the follow values.
  3131.  
  3132.         0     No border.  Make the window to big to draw the borders
  3133.               instead of using this border style.
  3134.  
  3135.         1     ┼   All sides are single line.
  3136.  
  3137.         2     ╬   All sides are double line.
  3138.  
  3139.         3     ╪   top/bottom sides are double, left/right sides are single
  3140.  
  3141.         4     ╫   top/bottom sides are single, left/right sides are double
  3142.  
  3143.    The corner flags constants for the .window_style variable
  3144.    are defined in "slick.sh". There meaning is listed below.
  3145.  
  3146.       TL_MASK              Top left mask for turning on or off all
  3147.                            flags for top left corner.
  3148.       TL_LEFT_MASK         Join top left corner with left window  ╤
  3149.  
  3150.       TL_ABOVE_MASK        Join top left corner with above window ╞
  3151.       TR_MASK              Top right mask for turning on or off all
  3152.                            flags for top right corner.
  3153.       TR_RIGHT_MASK        Join top right corner with right window ╤
  3154.  
  3155.       TR_ABOVE_MASK        Join top right corner with above window  ╡
  3156.  
  3157.       BR_MASK              Bottom right mask for turning on or off all
  3158.                            flags for bottom right corner.
  3159.       BR_RIGHT_MASK        Join bottom right corner with right window ╧
  3160.       BR_BELOW_MASK        Join bottom right corner with below window ╡
  3161.       BL_MASK              Bottom left mask for turning on or off all
  3162.                            flags for bottom left corner.
  3163.       BL_LEFT_MASK         Join bottom left corner with left window  ╧
  3164.       BL_BELOW_MASK        Join bottom left corner with below window ╞
  3165.  
  3166.  
  3167. (misc,help): INVOCATION
  3168.  
  3169.    s [options] file1 [options] file2 ...
  3170.  
  3171.    options may be any one of the following:
  3172.  
  3173.       -q               Do not display version information.
  3174.       -k               Extended keyboard F11,F12. Do not
  3175.                        use the -k option unless you are sure
  3176.                        your BIOS has support for the extended
  3177.                        keyboard calls.
  3178.       -y kstart ksize  Specifies start and size of extended memory.  If
  3179.                        you have EMS memory, SLICK will automatically
  3180.                        use it. SLICK will not use extended memory unless
  3181.                        you specify this option.  Extended memory performs
  3182.                        about the same as EMS memory.
  3183.       -sh height       Screen height.
  3184.       -sw width        Screen width.
  3185.       -sc char_height  Character pixel height.  If you have problems
  3186.                        with the cursor shape, try using this option.
  3187.       -st state_ksize  Specifies the maximum amount of swappable state
  3188.                        file data in SLICK.STA to be kept in memory.  -1
  3189.                        specifies no limit.  0 specifies that the editor
  3190.                        preload all state file data.
  3191.       -sm max_file_size
  3192.                        Specifies the maximum amount of buffer text
  3193.                        in megabytes that may be edited at one time.  The
  3194.                        default is 2 megabytes (requires 6.5k of memory).
  3195.                        For DOS and OS/2, this number may not be higher
  3196.                        than 160 (requires 524k of memory) megabytes. For
  3197.                        DOS, we recommend you use this option if you plan
  3198.                        on editing more than 2 megabytes worth of files.
  3199.                        For OS/2, it is unnecessary to specify this option.
  3200.       -x pcode_name    Alternate state file (.sta) or pcode
  3201.                        file (.sx).
  3202.       -b               Indicates that slick was invoked via
  3203.                        "slk.bat" batch program.
  3204.       -h help_file     Filename with path containing help.
  3205.       -m menu_file     Filename with path containing menus.
  3206.       -p command       Execute command and exit.
  3207.       -r command       Execute command and remain resident.
  3208.       file1 file2      Files to edit.  May contain '*' and '?'
  3209.                        wild cards
  3210.       -#command        Execute command on active buffer. For example,
  3211.                        "s test.c -#bottom-of-buffer" places the cursor
  3212.                        at the end of test.c.
  3213.       + or -L          Turn on/off Load entire file switch.
  3214.       + or -S          Turn on/off unmodified block swapping to spill file.
  3215.       +nnn             Load binary file(s) that follow in record width nnn.
  3216.       +T [buf_name]    Start a temp buffer with name buf_name.
  3217.       + or -E          Turn on/off expand tabs to spaces switch.  Default
  3218.                        is off. Currently the POINT function does not
  3219.                        supported tabbed files that are expanded.
  3220.       + or -D          Turn on/off memory buffer name search.  Disk file
  3221.                        search.
  3222.       +B buf_name      Look in memory only for buffer with name buf_name.
  3223.  
  3224.    If you need to edit a file which contains space characters, place
  3225.    double quotes around the name.
  3226.  
  3227.    Note: To avoid having to type in options such as -k, -y, -h, and -m,
  3228.          Define an environment variable called SLICK and set it to the
  3229.          options you always use.  For example, adding the line
  3230.          "set SLICK=-k -y 1024 1536" tells SLICK to use extended keyboard
  3231.          calls and use 1.5 megabytes of extended memory starting after
  3232.          the first megabyte of memory.
  3233.  
  3234.    Technical note:
  3235.           The procedure DEFMAIN in "main.s" processes the -b, -h , -m, -p,
  3236.           and -r options. The editor processes the -q, -k, and -x options
  3237.           before DEFMAIN gets control.  All remaining parameters and
  3238.           options are passed to the EDIT command.
  3239.  
  3240.    Example
  3241.  
  3242.       s autoexec.bat config.sys     - Edit two files
  3243.  
  3244.       s "this is.c"                 - Edit a file with a space character
  3245.  
  3246.       s -y 1024 1536 autoexec.bat config.sys
  3247.                                     - Edit two files and use 1.5 megabytes
  3248.                                       of extended memory starting after
  3249.                                       the first megabyte of memory.
  3250.  
  3251.       s test.c -#1000               - Edit test.c and go to line 1000
  3252.  
  3253.       s orders -#bottom-of-buffer -#/invoice/-
  3254.  
  3255.                                     - Edit orders file, go to bottom of
  3256.                                       buffer, and search backward for
  3257.                                       "invoice".
  3258.  
  3259.       s +70 test.exe                - Edit binary file test.exe in record
  3260.                                       width 70.
  3261.  
  3262.       s -r list \                   - Start the file manager
  3263.  
  3264.       s -p shell                    - Start the slick shell
  3265.  
  3266.       s -xrich.sta  autoexec.bat    - Specify different state file and
  3267.                                       edit the file autoexec.bat
  3268.  
  3269.       s -xrich.sta -hc:\slick\slick.doc -mc:\slick\slick.mnu
  3270.                                     - Specify state, help, and menu files
  3271.  
  3272.    When SLICK is invoked it concatenates the value of the environment
  3273.    variable SLICK before the command line you specify.
  3274.  
  3275.    Example
  3276.           c:\slick>set SLICK=-m c:\slick\user.mnu
  3277.           c:\slick>s test.c
  3278.  
  3279.                 The above sequence is identical to
  3280.  
  3281.           c:\slick>s -m c:\slick\user.mnu test.c
  3282.  
  3283.  
  3284. (command,misc): JOIN-LINE
  3285.  
  3286.    Joins the next line to the current line at the cursor position.
  3287.    Leading blanks on the next line are removed.
  3288.  
  3289. (command,misc): JUSTIFY [Y|N|U]
  3290.  
  3291.    The JUSTIFY command affects the way the editor handles spaces between
  3292.    words when formatting paragraphs.  By default the REFLOW-PARAGRAPH and
  3293.    REFLOW-MARK commands place one space between words accept after the
  3294.    punctuation characters ".?!" which get two spaces.  If you want the
  3295.    editor to respect the spaces you have inserted between the words, enter
  3296.    the argument N.  If you want the paragraph to be left and right
  3297.    justified, enter the argument Y.  The JUSTIFY command only affects the
  3298.    current buffer.  To set the default JUSTIFY style for a specific file
  3299.    extension, use the CONFIG menu (CONFIG, "File extension setup...",
  3300.    select an extension, "Justify").
  3301.  
  3302.  
  3303.    IMPORTANT
  3304.        If JUSTIFY is set to N, the save options should be set to -S so
  3305.        that trailing spaces are not stripped from the end of each line
  3306.        when a file is saved.  See SAVE-OPTIONS command.
  3307.  
  3308.    See also  WORD-WRAP
  3309.  
  3310. (command,keyboard): KBD-MACRO-END-EXECUTE
  3311.  
  3312.    Ends definition of a keyboard macro if one is being defined and
  3313.    executes the last keyboard macro defined.
  3314.  
  3315.    See also  START-KBD-MACRO, END-KBD-MACRO, NAME-MACRO,
  3316.              KBD-MACRO-TOGGLE
  3317.  
  3318. (command,keyboard): KBD-MACRO-TOGGLE
  3319.  
  3320.    Starts or ends definition of a keyboard macro.
  3321.  
  3322.    See also  START-KBD-MACRO, END-KBD-MACRO, NAME-MACRO,
  3323.              KBD-MACRO-END-EXECUTE
  3324.  
  3325. (misc,language): KEY-NAMES
  3326.  
  3327.    A key name may be either a string literal of length one or a key
  3328.    constant.  See STRINGS, for information on string literals.  The
  3329.    acceptable key constants are listed below.
  3330.  
  3331.   PAD_PLUS, PAD_MINUS, PAD_STAR
  3332.   LEFT, RIGHT, UP, DOWN, PGDN, PGUP   C_LEFT, C_RIGHT, C_PGDN, C_PGUP
  3333.   BACKSPACE, ENTER                    C_BACKSPACE, C_ENTER
  3334.   HOME, END, INS, DEL, ESC            C_HOME, C_END
  3335.   TAB, S_TAB                          A_MINUS, A_EQUAL
  3336.   F1, F2, ...F10,F11,F12              A_F1, A_F2, ...A_F10,A_F11,A_F12
  3337.   C_A, C_B, ...C_Z                    A_A, A_B, ...A_Z
  3338.   C_F1, C_F2, ...C_F10,C_F11,C_F12    A_1, A_2, ...A_0
  3339.   S_F1, S_F2, ...S_F10,S_F11,S_F12    C_2, C_PRTSC
  3340.               OS/2 only
  3341.   C_UP, C_DOWN, C_INS, C_DEL          PAD_5, A_PAD_PLUS, C_PAD_PLUS, C_MINUS
  3342.   A_SLASH,A_BACKSPACE, A_COMMA        A_DOT, A_SEMICOLON, A_QUOTE
  3343.   A_LEFT_BRACKET, A_RIGHT_BRACKET     A_TAB, C_TAB, A_BACKSLASH, A_ENTER
  3344.   C_LEFT_BRACKET, C_RIGHT_BRACKET
  3345.               PS/2 keyboards only
  3346.   A_LEFT, A_RIGHT, A_UP, A_DOWN       A_INS, A_HOME, A_END, A_DEL
  3347.   A_PGUP, A_PGDN                      C_PAD_SLASH, A_ALT, C_CTRL
  3348.  
  3349.   Example
  3350.      def A_X=safe_exit
  3351.      defmacro dup_line= A_U A_L A_C A_U
  3352.      def \0 - \255=nothing
  3353.  
  3354. (command,misc): KEY-NOT-DEFINED
  3355.  
  3356.    The editor invokes this command when the user presses a key that has no
  3357.    definition.
  3358.  
  3359. (built-in,keyboard): KEY2INDEX(key)
  3360.  
  3361.    Converts the string representation of key returned by GETKEY(),
  3362.    TESTKEY(), and LASTKEY() into a key table index which can be used by
  3363.    the functions KEYTAB_INDEX, SET_KEYTAB_POINTER, or INDEX2KEY.
  3364.  
  3365.    Example
  3366.  
  3367.      key=getkey()
  3368.      mode_keys= find_index('mode-keys',KEYTAB_TYPE);
  3369.      root_keys= find_index('root-keys',KEYTAB_TYPE);
  3370.      index=keytab_index(root_keys,mode_keys,key2index(key))
  3371.      /* name could be type nothing, proc, command, macro, or key table. */
  3372.      message 'Key is bound to 'name_name(index)
  3373.  
  3374.  
  3375.    See also   GETKEY, TESTKEY, LASTKEY, RAW_LASTKEY, CALL_KEY,
  3376.               KEY2NAME, INDEX2KEY, LIST_BINDINGS, KEYTAB_INDEX,
  3377.               SET_KEYTAB_POINTER
  3378.  
  3379. (built-in,keyboard): KEY2NAME(key)
  3380.  
  3381.    Converts the string representation of key returned by GETKEY(),
  3382.    TESTKEY(), and LASTKEY() into a key name.
  3383.  
  3384.    Example
  3385.  
  3386.       key=getkey()
  3387.       message 'The key pressed was 'key2name(key)
  3388.  
  3389.    See also   GETKEY, TESTKEY, LASTKEY, RAW_LASTKEY, CALL_KEY,
  3390.               KEY2INDEX, INDEX2KEY, LIST_BINDINGS, KEYTAB_INDEX,
  3391.               SET_KEYTAB_POINTER
  3392.  
  3393. (built-in,misc): KEYIN string
  3394.  
  3395.    Inserts or overwrites characters into the command line or text area
  3396.    depending on the insert state and the cursor position.
  3397.  
  3398. (command,misc): KEYIN-BUF-NAME
  3399.  
  3400.    Inserts or overwrites the buffer name into the command line or text
  3401.    area depending on the insert state and the cursor position.
  3402.  
  3403. (command,misc): KEYIN-MATCH-PAREN
  3404.  
  3405.    Inserts one of the end parenthesis ], }, or ) and then temporarily
  3406.    places the cursor on the matching begin parenthesis for a short period
  3407.    of time.
  3408.  
  3409.    See also  FIND-MATCHING-PAREN
  3410.  
  3411. (built-in,keyboard): KEYTAB_INDEX(root_keys_index,mode_keys_index,
  3412.                                  key_index, [,'U'])
  3413.  
  3414.    Returns name table index bound to the key corresponding to
  3415.    key_index.  The fourth parameter may be set to 'U', to return the
  3416.    index of the key table used.  If the mode key table has a non zero
  3417.    binding for the key corresponding to key_index this index is
  3418.    returned. Otherwise the root key table binding is returned.
  3419.  
  3420.    Example
  3421.  
  3422.       key=getkey()
  3423.       root_keys_index= find_index('root-keys',KEYTAB_TYPE);
  3424.       mode_keys_index= find_index('mode-keys',KEYTAB_TYPE);
  3425.       index=keytab_index(root_keys_index,mode_keys_index,key2index(key))
  3426.       /* Display information about the binding to this key. */
  3427.       message 'name='name_name(index)' type='name_type(name)
  3428.  
  3429.  
  3430. (command,mark): KILL-BUFFERS  [number]
  3431.  
  3432.    Sets the maximum number of clipboards.  Clipboard text may be retrieved
  3433.    by the command BOTH-YANK or BOTH-LIST-YANK.  The BOTH-LIST-YANK command
  3434.    allows you to select any clipboard for pasting, not just your last.
  3435.  
  3436. (command,mark): KILL-MARK
  3437.  
  3438.    Deletes and copies visible marked text to the clipboard.  If no text is
  3439.    marked, the current line is deleted and copied to the clipboard.  All
  3440.    clipboards are stored in the ".killed" buffer.  The last clipboard may
  3441.    by retrieved by the BOTH-YANK command (Ctrl-Y).  Previous clipboards
  3442.    may be retrieved with the BOTH-LIST-YANK command (Ctrl-X Ctrl-Y).  The
  3443.    maximum number of clipboards may be set by the command KILL-BUFFERS.
  3444.    Text may be marked with one of the commands MARK-CHAR (Alt-Z),
  3445.    MARK-LINE (Alt-L), or MARK-BLOCK (Alt-B).
  3446.  
  3447.    See also   COPY-TO-CLIPBOARD, BOTH-LIST-YANK, BOTH-YANK
  3448.  
  3449. (built-in,misc): LAST_INDEX([new_value])
  3450.  
  3451.    Returns index of last command executed by a key or the built-in
  3452.    CALL_KEY function.  If new_value is given, the last command index is
  3453.    set to new_value.
  3454.  
  3455.    See also  PREV_INDEX
  3456.  
  3457. (command,keyboard): LAST-KBD-MACRO
  3458.  
  3459.    The last keyboard macro defined may be executed by the command
  3460.    LAST-KBD-MACRO.
  3461.  
  3462. (built-in,keyboard): LASTKEY()
  3463.  
  3464.    Returns a string representation of the last key returned from GETKEY or
  3465.    TESTKEY.  For ASCII keys a string of length 1 is returned except for
  3466.    C_ENTER, C_BACKSPACE, ENTER, TAB, BACKSPACE, and ESC.  For these
  3467.    special keys and extended keys like A_L, a string of length 2 is
  3468.    returned.  This separation allows the control keys C_J, C_H, C_M, and
  3469.    C_I to have a different binding from the keys listed above.
  3470.  
  3471.    Example
  3472.  
  3473.       key=getkey()
  3474.       message 'The key pressed was 'key2name(lastkey())
  3475.  
  3476.  
  3477.    See also   GETKEY, TESTKEY, RAW_LASTKEY, CALL_KEY, KEY2NAME,
  3478.               KEY2INDEX, INDEX2KEY, LIST_BINDINGS, KEYTAB_INDEX,
  3479.               SET_KEYTAB_POINTER
  3480.  
  3481. (built-in,string): LASTPOS(needle[,haystack[,start[, options]]])
  3482.  
  3483.    Returns the position (1..length(haystack)) of the last occurrence of
  3484.    needle in haystack.  If needle is not found, 0 is returned.  The start
  3485.    parameter specifies the position searching begins.  If not specified
  3486.    searching begins at end of haystack.  start must be in the range
  3487.    1..MAX_WHOLE_NUMBER.  Multiple options may be specified with the
  3488.    following meaning:
  3489.  
  3490.        'I'      Ignore case.
  3491.        'R'      Interpret search string needle as regular expression.  See
  3492.                 help on / command for syntax of regular expressions.
  3493.  
  3494.    Example
  3495.  
  3496.      lastpos('a','aca')    == '3'
  3497.      lastpos('aa','aaa',2) == '2'
  3498.      lastpos('W\cord','word test',3,'IR')=='2'
  3499.  
  3500.    Calling the LASTPOS function with one parameter allows you to retrieve
  3501.    match group information.  Specifying 'S' followed by a match group
  3502.    number 0-9 (i.e.  'S0') will return the start position of that match
  3503.    group.  1 is returned if that match group was not found.  If 'S' is not
  3504.    followed by a number, the start position of the entire string found is
  3505.    returned.  Specifying a match group number 0-9 will return the match
  3506.    length of that match group.  0 is returned if that match group was not
  3507.    found.  A value of '' will return the match length of the entire string
  3508.    found.
  3509.  
  3510.    Example
  3511.       get_line line
  3512.       word_sep='([~a-zA-Z0-9_$]|^|$)'
  3513.       i=lastpos(word_sep'{if|then|while}'word_sep,line,'','r')
  3514.       if not i then
  3515.          message 'Match not found'
  3516.          return(1)
  3517.       endif
  3518.       word=substr(line,lastpos('S0'),lastpos('0'))
  3519.  
  3520.    The POS and LASTPOS function return the same match group information.
  3521.    For example, pos('S0')==lastpos('S0') will always be true.
  3522.  
  3523.    See also  POS
  3524.  
  3525. (built-in,cursor): LEFT
  3526.  
  3527.    Moves the text cursor one position to the left.  If the visible cursor
  3528.    is in the command line area the visible cursor is not moved.  When the
  3529.    left edge is hit, the text area is smooth scrolled or center scrolled.
  3530.    See SCROLL_STYLE.
  3531.  
  3532.    See also  RIGHT
  3533.  
  3534. (built-in,string): LENGTH(string)
  3535.  
  3536.    Returns the number of characters in string.
  3537.  
  3538.    Example
  3539.  
  3540.      length('abc') == 3
  3541.      length('')    == 0
  3542.  
  3543. (command,menu): LEVEL2-MENU  menu_name [sticky]
  3544.  
  3545.    Runs the menu menu_name.  If the menu returns a command to execute, RC
  3546.    is set to the command.  Otherwise RC is set to a numeric error code.
  3547.    When the sticky option is given, the menu will not go away after
  3548.    returning from a subsequent menu level.  The MENU command calls the
  3549.    LEVEL2-MENU command and executes the return code.
  3550.  
  3551.    See also MENU, RETURN
  3552.  
  3553. (command,cursor): LINE-TO-TOP
  3554.  
  3555.    Places current line at top of window.
  3556.  
  3557. (command,file): LIST [command_line]
  3558.  
  3559.    Creates a buffer and inserts a tree directory list of the files
  3560.    specified with columns for size, date, time, attributes, and name.  The
  3561.    mode is changed to fileman mode.  When in fileman mode F1 becomes help
  3562.    on file management keys and F10 brings up a menu of file management
  3563.    commands.
  3564.  
  3565.    command_line has the following syntax:
  3566.  
  3567.       {filespec  | ['-' | '+' option_letters]}
  3568.  
  3569.    option_letters may be 'H','S','A','D','P','T' with the following
  3570.    meaning.
  3571.         H     Hidden files.  Default is off.
  3572.         S     System files.  Default is off.
  3573.         A     Archive files.  Default is off.
  3574.         D     Directory files.  Default is off.
  3575.         P     Append path.  Default is on.
  3576.         T     Tree file list.  Default is on.
  3577.  
  3578.    filespec may contain operating system wild cards such as '*' and '?'.
  3579.    If filespec is not specified, the current directory is used.
  3580.  
  3581.    Example
  3582.       list c:\             - List all files on drive C.
  3583.       list                 - List all files starting from the current
  3584.                              directory.
  3585.       list +HS c:\         - List all files on drive C including
  3586.                              hidden and system files.
  3587.  
  3588. (built-in,keyboard): LIST_BINDINGS  var key_index,var name_index_found,
  3589.                                    var keys_used,root_keys_index,
  3590.                                    mode_keys_index,match_index
  3591.  
  3592.    Finds all bindings to a name table index.
  3593.  
  3594.    INPUTS
  3595.        key_index           Previous key table index. -1 start list
  3596.        root_keys_index     Name table index of root key table.
  3597.                            Usually 'root-keys'
  3598.        mode_keys_index     Name table index of mode key table.
  3599.                            Usually 'mode-keys'
  3600.        match_index         Name table index binding to find.
  3601.  
  3602.  
  3603.   Example
  3604.  
  3605.      mode_keys= find_index('mode-keys',KEYTAB_TYPE);
  3606.      root_keys= find_index('root-keys',KEYTAB_TYPE);
  3607.      index=keytab_index(root_keys,mode_keys,key2index(key))
  3608.      /* name could be type nothing, proc, command, macro, or key table. */
  3609.      message 'Key is bound to 'name_name(index)
  3610.  
  3611.  
  3612.    See also   GETKEY, TESTKEY, LASTKEY, RAW_LASTKEY, CALL_KEY,
  3613.               KEY2NAME, KEY2INDEX, INDEX2KEY, KEYTAB_INDEX,
  3614.               SET_KEYTAB_POINTER
  3615.  
  3616. (command,buffer): LIST-BUFFERS
  3617.  
  3618.    Creates a pop-up window with a selection list of the names of all
  3619.    buffers with a name.  Press ENTER to edit one of the buffers.  Command
  3620.    is self explanatory.
  3621.  
  3622. (command,misc): LIST-CONFIG
  3623.  
  3624.    Runs the external command 'listcfg.s' with no arguments.  This command
  3625.    creates a new buffer and inserts SLICK source code representing the
  3626.    configuration of insert mode, colors, search case sensitivity, cursor
  3627.    shape, cache size, spill file path, scroll style, language syntax
  3628.    options, file load/save options, tabs, margins, and more.  For
  3629.    all variables that start with the four letters 'def_', an assignment
  3630.    statement (variable= current value) will be inserted into this buffer.
  3631.  
  3632.  
  3633.    See also   LIST-SOURCE, LIST-MACROS, INSERT-MACRO, LIST-KEYDEFS
  3634.  
  3635. (command,keyboard): LIST-KEYDEFS
  3636.  
  3637.    Runs the external command 'listkeys.s' with no arguments.  This command
  3638.    creates a new buffer and inserts SLICK source code representing all the
  3639.    key definitions including key definitions for all modes.  You may want
  3640.    to print this file and use it as a reference of your SLICK key
  3641.    definitions.
  3642.  
  3643.    See also   LIST-SOURCE, LIST-MACROS, INSERT-MACRO, LIST-CONFIG
  3644.  
  3645. (command,keyboard): LIST-MACROS
  3646.  
  3647.    Runs the external command 'listmacs.s' with no arguments.  This command
  3648.    creates a new buffer and inserts SLICK source code representing all
  3649.    the keyboard macros you have defined.
  3650.  
  3651.    See also   LIST-SOURCE, INSERT-MACRO, LIST-KEYDEFS, LIST-CONFIG
  3652.  
  3653. (command,misc): LIST-SOURCE
  3654.  
  3655.    This command creates a new buffer called 'userdefs.s' and inserts SLICK
  3656.    source code representing your current configuration.  The external
  3657.    commands 'listkeys', 'listmacs', and 'listcfg' are executed.  The most
  3658.    important use of this command is to allow you to easily update yourself
  3659.    to a new version of SLICK.  Following these steps will make
  3660.    updating to a new version of SLICK much easier:
  3661.  
  3662.       cd c:\slick   -  Change to directory containing the SLICK files.
  3663.       s             -  Run the old version of SLICK
  3664.       list-source   -  List the source code for your configuration
  3665.       save          -  Save the source code
  3666.       a:            -  Change to the drive containing the install program
  3667.       install       -  Install the new version of SLICK
  3668.       c:            -  Change to the drive containing the SLICK files.
  3669.       cd c:\slick   -  Change to directory containing the SLICK files.
  3670.       s             -  Run the new version of SLICK.
  3671.       userdefs      -  Run the batch program created by the LIST-SOURCE
  3672.                        command to setup your configuration.
  3673.       write-state   -  Run the WRITE-STATE command (CONFIG, "Save
  3674.                        configuration...").
  3675.  
  3676.    See also   LIST-MACROS, INSERT-MACRO, LIST-KEYDEFS, LIST-CONFIG
  3677.  
  3678. (command,misc): LOAD [modules]
  3679.  
  3680.    Compiles (if necessary) and loads the modules specified.  If the module
  3681.    is already loaded it is replaced.  If no module is specified and the
  3682.    current buffer has the extension ".s" or ".cmd", the current buffer is
  3683.    saved (if necessary) and loaded.
  3684.  
  3685. (built-in,misc): LOAD modules[,load_option]
  3686.  
  3687.    load_option defaults to 'L' and may be 'L','R', or 'U'. Modules name
  3688.    extensions are replaced with '.sx'.
  3689.  
  3690.    If load_option=='L' the modules specified are loaded if the module is
  3691.    not already loaded.  If any of the modules are already loaded, loading
  3692.    stops and RC is set to MODULE_ALREADY_LOADED_RC.  RC may also be set to
  3693.    INTERPRETER_OUT_OF_MEMORY_RC or a file I/O RC.  Upon successful
  3694.    completion, RC is set to 0.
  3695.  
  3696.    If load_option=='R' the modules specified are loaded after the SLICK
  3697.    interpreter stops.  If any of the modules are already loaded, they are
  3698.    unloaded before the new module is loaded.  RC may also be set to
  3699.    INTERPRETER_OUT_OF_MEMORY_RC immediately after LOAD is executed.  Upon
  3700.    successful completion, RC is set to 0.  If the any of the modules can
  3701.    not be unloaded, the message "Can't remove module" will be displayed.
  3702.  
  3703.    If load_option=='U' the modules specified are unloaded.  If any of the
  3704.    modules can not be unloaded because they are running, unloading stops
  3705.    and RC is set to CANT_REMOVE_MODULE_RC.  Upon successful completion, RC
  3706.    is set to 0.
  3707.  
  3708.    See also  UNLOAD
  3709.  
  3710. (built-in,window): LOAD_FILES params
  3711.  
  3712.    For an explanation of how windows,views, and buffers are related,
  3713.    type "help windows-structure" on command line.
  3714.  
  3715.    Params may contain file names and the following options
  3716.  
  3717.      name          Find the buffer specified or load the file
  3718.      + or -L       Turn on/off load entire file switch.  Default is off.
  3719.      + or -S       Turn on/off unmodified block swapping to spill file.
  3720.                    Default is off.
  3721.      +nnn          Load binary file(s) that follow in record width nnn.
  3722.      +T [buf_name] Start a temp buffer with name buf_name.
  3723.      + or -E       Turn on/off expand tabs to spaces switch.  Default is
  3724.                    off. Only tabs of increments of 8 are supported.
  3725.      + or -D       Turn on/off memory buffer name search.  Disk file search.
  3726.      + or -C       Turn copy view switch on or off.  Default is off.
  3727.      +V [view_id]  Insert a copy of the file view specified.
  3728.      +I            Insert a window with no views.
  3729.      + or -W       Insert a window for each file that follows.
  3730.      + or -A       Insert views into active window only.
  3731.      +B buf_name   Look in memory only for buffer with name buf_name.
  3732.      +H            Activate the Hidden window group
  3733.      + or -G       Turn switch group on/off. Affects +B and name params.
  3734.      + or -R       Turn switch replace current buffer on/off.
  3735.  
  3736.    The options above that only show a plus sign will also take a minus
  3737.    sign.  However there function will remain the same.
  3738.  
  3739.  
  3740.      Here is a more detailed description of the options.
  3741.  
  3742.      + or -L       Turn on/off load entire file switch.  Default is off.
  3743.                    Entire file is loaded and unmodified blocks are
  3744.                    swapped to spill file so that file handle is freed.
  3745.                    Used to speed up file scrolling on slow disk.
  3746.                    Used to free file handles or prevent file sharing problems.
  3747.                    Used to guard against loosing files loaded from
  3748.                    remote system.
  3749.  
  3750.      + or -S       Turn on/off unmodified block swapping to spill file.
  3751.                    When on, unmodified blocks are spilled to spill file.
  3752.                    Used for editing remote files across slow links or
  3753.                    EMS/extended memory support. Once a block is loaded
  3754.                    from a slow access link, if it needs to be spilled, it
  3755.                    is written to your local hard disk or EMS/extended
  3756.                    memory.
  3757.  
  3758.      +nnn          Load binary file giving each line nnn characters.
  3759.                    Used for editing binary or record files.
  3760.  
  3761.      +T [buf_name] Start a temp buffer with name buf_name.  buf_name
  3762.                    is expanded to absolute form and stored in the internal
  3763.                    variable ".buf_name".
  3764.  
  3765.      + or -E       Turn on/off expand tabs to spaces switch.  Default is
  3766.                    off. Only tabs of increments of 8 are supported.
  3767.  
  3768.      + or -D       Turn on/off memory buffer name search.
  3769.                    When on, files are loaded from disk regardless if
  3770.                    there is a copy already in memory.  It is wise to
  3771.                    rename the copy after loading it to prevent saving
  3772.                    the wrong file.
  3773.  
  3774.      + or -C       Turn copy view switch on or off.  Default is off.
  3775.                    When a file name is specified and a buffer exists
  3776.                    with the same name this option determines whether
  3777.                    a new view (+C) of the buffer is inserted into the current
  3778.                    window or the view of the buffer found is activated.
  3779.                    If the view is in a different window group like the hidden
  3780.                    window group, the view is always copied unless the +G
  3781.                    option is used.
  3782.  
  3783.      +V [view_id]  Insert a copy of the file view specified into the
  3784.                    windows specified. If no view is specified the current
  3785.                    view is copied.
  3786.  
  3787.      +I            Insert a window with no views. Window is deleted if
  3788.                    no views are inserted.
  3789.  
  3790.      + or -W       Insert a window for each file that follows.
  3791.  
  3792.      + or -A       Insert views into active window only.
  3793.  
  3794.      +B buf_name   Look in memory only for buffer with name buf_name.  If
  3795.                    buffer is not found, RC is set to  FILE_NOT_FOUND_RC.
  3796.                    No view is inserted if buffer is not found.  Buffer
  3797.                    name search is case insensitive for file systems like
  3798.                    DOS which are case insensitive. Buf_name must be in
  3799.                    absolute form (Full path spec).
  3800.  
  3801.      +H            Activate the Hidden window group.  The Hidden window
  3802.                    group is used to hold temporary files that the user
  3803.                    does not want to look at.  Usually there is only one
  3804.                    window in the hidden window group.  The editor will
  3805.                    exit when the only window group left is the hidden
  3806.                    window group.
  3807.  
  3808.      + or -G       Turn switch group on/off. Affects +B and name params.
  3809.                    Normally when the parameter "+B buf_name" is
  3810.                    given, buffer views found outside the active window
  3811.                    group are copied into the current window even if
  3812.                    the "+C" switch is not given.  To enable window group
  3813.                    switching specify +G.
  3814.  
  3815.      + or -R       Turn replace current buffer switch on/off.  When on
  3816.                    the files that follow will replace the current buffer.
  3817.  
  3818.    A view holds the information necessary for the editor to remember your
  3819.    location and scroll postion in a buffer.  Each window has a ring of
  3820.    views to buffers.  When you have more than one window looking at the
  3821.    same buffer.  The windows have different views of that buffer.
  3822.    QUIT_VIEW removes the active view from the window view ring.  The
  3823.    previous view becomes the new active view.  When QUIT_VIEW is executed
  3824.    and only one view exists in the active window, the window is removed
  3825.    from the active window group.  If no more windows exist the active
  3826.    window group is removed and the previous window group is activated.
  3827.    The editor exits when the only window group left is the hidden window
  3828.    group.  The hidden window group holds the command retrieve file
  3829.    ".command".
  3830.  
  3831.  
  3832.    Example
  3833.        /* insert a temp buffer with no name into all the windows */
  3834.        /* of the current window group. */
  3835.        load_files '+t'
  3836.  
  3837.        /* insert a temp buffer into the active window */
  3838.        load_files '+a +t'
  3839.  
  3840.        /* insert a view of the disk file "test.c" into all the windows */
  3841.        /* of the current window group. */
  3842.        load_files '+d test.c'
  3843.  
  3844.        /* insert a view of the disk file "test.c" into the active */
  3845.        /* window only. */
  3846.        load_files '+a +d test.c'
  3847.  
  3848.        /* insert a view of the disk file "test.c" into a new window */
  3849.        load_files '+i +a +d test.c'
  3850.  
  3851.        /* insert a view of the retrieve buffer ".command" into all the */
  3852.        /* windows of the current window group. */
  3853.        load_files '+c +b .command'
  3854.  
  3855.        /* insert a view of the retrieve buffer ".command" into all the */
  3856.        /* windows of the current window group. RETRIEVE_VIEW_ID defined */
  3857.        /*"slick.sh" */
  3858.        load_files '+c +v 'RETRIEVE_VIEW_ID
  3859.  
  3860.        /* Activate the retrieve buffer ".command" and the hidden */
  3861.        /* window group. Execute the next-group command to leave the */
  3862.        /* hidden window group. */
  3863.  
  3864.        load_files '+g +b .command'  or  load_files '+h +b .command'
  3865.  
  3866.        /* insert a copy of the active view into the current window. */
  3867.        load_files '+v'
  3868.  
  3869. ;         Case 1  no buffer has name absolute(filename).
  3870. ;         Then    Filename is loaded from disk and a view is inserted
  3871. ;                 into all the windows of the current window group.
  3872. ;
  3873. ;         Case 2  buffer exists with name absolute(filename) in the
  3874. ;                 current window group.
  3875. ;         Then    The first view of buffer found in current window group
  3876. ;                 is activated.
  3877. ;
  3878. ;         Case 3  buffer exists with name absolute(filename), but not in
  3879. ;                 the current window group.
  3880. ;         Then    A view of buffer is inserted into all the windows
  3881. ;                 of the current window group.
  3882. ;
  3883.        load_files 'filename'
  3884.  
  3885.  
  3886.    See also  GET_VIEW_ID, ACTIVATE_VIEW, NEXT_VIEW, PREV_VIEW, QUIT_VIEW,
  3887.              NEXT_WINDOW, PREV_WINDOW
  3888.  
  3889. (command,file): LOAD-OPTIONS +L|-L +S|-S +E|-E
  3890.  
  3891.    The LOAD-OPTIONS command specifies the default switches used by the E
  3892.    or EDIT commands.  If no options are given, the current option settings
  3893.    are displayed.  If you want different LOAD-OPTIONS for different disk
  3894.    drives, define an environment variable called SLICKLOAD and specify
  3895.    each drive followed by the options.  For example, "set SLICKLOAD= a: +L
  3896.    b:+L" specifies preloading files from floppy drives A and B.
  3897.  
  3898.    The option letters have the following meaning:
  3899.  
  3900.      + or -L       Turn on/off load entire file switch.
  3901.      + or -S       Turn on/off unmodified block swapping to spill file.
  3902.      + or -E       Turn on/off expand tabs to spaces.  Only supports
  3903.                    tab increments of 8.
  3904.  
  3905. (misc,language): LOCAL
  3906.  
  3907.    Declares a variable of the scope "local".  The scope of a local
  3908.    variable is limited to the procedure (DEFPROC) or command (DEFC) it is
  3909.    is defined in.  Local variables are not initialized.
  3910.  
  3911.    Syntax
  3912.  
  3913.       DEFPROC ...
  3914.         LOCAL
  3915.            variable [',']
  3916.            variable [',']
  3917.             ....
  3918.  
  3919.    The comma is used to declare multiple local variables on one line.
  3920.  
  3921.  
  3922. (misc,language): LOOPS
  3923.  
  3924.    The syntax for valid SLICK language loops are:
  3925.  
  3926.       WHILE expression DO
  3927.          statements
  3928.       ENDWHILE
  3929.       DO WHILE expression         - REXX style loop
  3930.          statements
  3931.       END
  3932.       LOOP
  3933.          statements
  3934.       ENDLOOP
  3935.       DO FOREVER                  - REXX style loop
  3936.          statements
  3937.       END
  3938.       FOR variable= expression TO expression [BY increment]
  3939.          statements
  3940.       ENDFOR
  3941.                                   - REXX style loop
  3942.       DO variable= expression TO expression [BY increment]
  3943.          statements
  3944.       END
  3945.  
  3946.    Loops may be exited with the LEAVE primitive.  The ITERATE primitive
  3947.    may be used to skip to the top of a loop.
  3948.  
  3949.    Example
  3950.  
  3951.      search  ':'
  3952.      loop
  3953.        if rc then
  3954.           leave
  3955.        endif
  3956.        get_line line
  3957.        say 'found match line='line
  3958.        repeat_search
  3959.      endloop
  3960.      clear_message;pause
  3961.  
  3962. (built-in,string): LOWCASE(string)
  3963.  
  3964.    Returns string converted to lower case.
  3965.  
  3966.    Example
  3967.  
  3968.      lowcase('ABc') == 'abc'
  3969.      lowcase('ABC') == 'abc'
  3970.  
  3971.    See also  UPCASE
  3972.  
  3973. (command,mark): LOWCASE-MARK
  3974.  
  3975.    Translates characters within visible mark into lower case.  Text may be
  3976.    marked with one of the commands MARK-CHAR (Alt-Z), MARK-LINE (Alt-L),
  3977.    or MARK-BLOCK (Alt-B).
  3978.  
  3979.    See also  UPCASE-MARK
  3980.  
  3981. (command,misc): MA,MARGINS  [left [right [new-paragraph]]]
  3982.  
  3983.    Sets the left, right, and new paragraph margins.  Each buffer has one
  3984.    set of margins.
  3985.  
  3986.    See also  REFLOW-MARK, REFLOW-PARAGRAPH
  3987.  
  3988. (built-in,misc): MACHINE()
  3989.  
  3990.    Returns 'PCDOSP' if running protect mode (OS/2 mode).  Otherwise
  3991.    'PCDOS' is returned.
  3992.  
  3993. (built-in,misc): MAKE modules
  3994.  
  3995.    The date of the each module in modules is checked against the date of
  3996.    the '.sx' file.  If the '.sx' file does not exist or the source file
  3997.    date is later the the '.sx' file, the command 'st -q -w '||source_name
  3998.    is executed.  If no extension is given '.s' is used.  Any module name
  3999.    with the extension '.sx' is not compiled.  If MAKE does not find the
  4000.    the source file, RC is set to FILE_NOT_FOUND_RC.  If an error occurs
  4001.    during compilation, RC is set to 1.  If a DEFC for command ST is
  4002.    defined, it should return '1' if an error occurs.
  4003.  
  4004. (command,misc): MAKE-PROJECT
  4005.  
  4006.    The command MAKE-PROJECT (Alt-F5) invokes an external program specified
  4007.    by the SLICK macro variable "def-make-project".  For OS/2, the program
  4008.    is executed in SLICK's concurrent process buffer.  For DOS, you may
  4009.    specify the amount of memory the command requires and SLICK will swap
  4010.    enough of itself to extended/EMS memory or disk to invoke the program.
  4011.    SLICK can shrink down to about 10k.  The SET-VAR command "set-var
  4012.    def-make-project" or the CONFIG menu item (CONFIG, "Make project
  4013.    command") may be used to set the value the "def-make-project" variable.
  4014.    Specify the amount of memory in kilobytes the program requires
  4015.    (optional) followed by the program name and parameters.
  4016.  
  4017.    See also  COMPILE, XDOS
  4018.  
  4019. (command,search): MAKE-TAGS [-L] file1 [-L] file2 ...
  4020.  
  4021.    This command runs the external macro "maketags.s".  The make-tags
  4022.    command builds a file called "tags.slk" which contains the names of C,
  4023.    Pascal, Modula2, Clipper, and Assembly language procedures followed by
  4024.    the file name.  This information is used by the FIND-TAGS command to
  4025.    quickly find one of your procedures.  "tags.slk" is written into the
  4026.    current directory.  Multiple files with wild cards may be specified.
  4027.    The -L option is used to specify a file that contains a list of file
  4028.    names.  The file manager WRITE-LIST command may be used to create a
  4029.    list of file names.  See "tags.s" for information on adding support for
  4030.    other languages.
  4031.  
  4032.    Example
  4033.  
  4034.       make-tags   *.c *.asm
  4035.       make-tags   f:\source\*.c     - Create tag file for non-writable
  4036.                                       drive this way.
  4037.       make-tags   -L list1 *.pas
  4038.  
  4039.    See also  FIND-TAG
  4040.  
  4041. (command,mark): MARK-BLOCK
  4042.  
  4043.    Starts or extends the visible block.  Used for processing columns of
  4044.    text.  The first MARK-BLOCK becomes the pivot point.  If begin/end
  4045.    (default) marking style is active, subsequent MARK-BLOCK calls will
  4046.    mark the area between the pivot point and the cursor.  If cut/paste
  4047.    marking style is active the mark will be extended as the cursor moves
  4048.    (See MARK-STYLE command).  In this style, the second MARK-BLOCK call
  4049.    "locks" the mark so that it does not extend as the cursor moves.
  4050.  
  4051.    See also  MARK-CHAR, MARK-LINE, MARK-STYLE
  4052.  
  4053. (built-in,mark): MARK_BLOCK  [mark_id[,'C'|'E']]
  4054.  
  4055.    Starts or extends the block mark specified.  Used for processing
  4056.    columns of text.  The first MARK_BLOCK becomes the pivot point.
  4057.    Subsequent MARK_BLOCK calls will mark the area between the pivot point
  4058.    and the cursor.  The second parameter specifies the marking style.  A
  4059.    value of 'C' specifies cut/paste style marking.  In this style the mark
  4060.    is extended as the cursor moves.  The default style 'E' requires that
  4061.    MARK_BLOCK be executed for the end of the text block as well as the
  4062.    beginning.
  4063.  
  4064.    See also  MARK_CHAR, MARK_LINE
  4065.  
  4066. (command,mark): MARK-CHAR
  4067.  
  4068.    Starts or extends the visible character mark.  Used for processing
  4069.    sentences of text which do not start and end on line boundaries.  The
  4070.    first MARK-CHAR becomes the pivot point.  If begin/end (default)
  4071.    marking style is active, subsequent MARK-CHAR calls will mark the area
  4072.    between the pivot point and the cursor.  If cut/paste marking style is
  4073.    active the mark will be extended as the cursor moves (See MARK-STYLE
  4074.    command).  In this style, the second MARK-CHAR call "locks" the mark so
  4075.    that it does extend as the cursor moves.
  4076.  
  4077.    See also  MARK-BLOCK, MARK-LINE, MARK-STYLE
  4078.  
  4079. (built-in,mark): MARK_CHAR  [mark_id[,'C'|'E']]
  4080.  
  4081.    Starts or extends the character mark specified.  Used for processing
  4082.    sentences of text which do not start and end on line boundaries.  The
  4083.    first MARK_CHAR becomes the pivot point.  Subsequent MARK_CHAR calls
  4084.    will mark the area between the pivot point and the cursor.  The second
  4085.    parameter specifies the marking style.  A value of 'C' specifies
  4086.    cut/paste style marking.  In this style the mark is extended as the
  4087.    cursor moves.  The default style 'E' requires that MARK_CHAR be
  4088.    executed for the end of the text area as well as the beginning.
  4089.  
  4090.    See also  MARK_BLOCK, MARK_LINE
  4091.  
  4092. (built-in,mark): MARK_LINE  [mark_id[,'C'|'E']]
  4093.  
  4094.    Starts or extends the line mark specified.  Used for processing
  4095.    complete lines of text.  The first MARK_LINE becomes the pivot point.
  4096.    Subsequent MARK_LINE calls will mark the area between the pivot point
  4097.    and the cursor.  A value of 'C' specifies cut/paste style marking.  In
  4098.    this style the mark is extended as the cursor moves.  The default style
  4099.    'E' requires that MARK_CHAR be executed for the end of the text area as
  4100.    well as the beginning.
  4101.  
  4102.    See also  MARK_BLOCK, MARK_CHAR
  4103.  
  4104. (command,mark): MARK-LINE
  4105.  
  4106.    Starts or extends the visible line mark.  Used for processing complete
  4107.    lines of text.  The first MARK-LINE becomes the pivot point.  If
  4108.    begin/end (default) marking style is active, subsequent MARK-LINE calls
  4109.    will mark the area between the pivot point and the cursor.  If
  4110.    cut/paste marking style is active the mark will be extended as the
  4111.    cursor moves (See MARK-STYLE command).  In this style, the second
  4112.    MARK-LINE call "locks" the mark so that it does extend as the cursor
  4113.    moves.
  4114.  
  4115.    See also  MARK-BLOCK, MARK-CHAR, MARK-STYLE
  4116.  
  4117. (built-in,search): MARK_MATCH [mark_id]
  4118.  
  4119.    Unmarks the mark specified and then starts a character mark for mark
  4120.    specified of the last string matched by one of the built-in functions
  4121.    SEARCH or REPEAT_SEARCH.
  4122.  
  4123.    See also    MARK_LENGTH, SEARCH, REPEAT_SEARCH, SEARCH_REPLACE,
  4124.                SAVE_SEARCH, RESTORE_SEARCH, SEARCH_CASE
  4125.  
  4126. (command,mark): MARK-STYLE  ['E'|'C']
  4127.  
  4128.    Selects the mark style to be used by the commands MARK-BLOCK,
  4129.    MARK-LINE, and MARK-CHAR.  If no parameters are specified, the current
  4130.    mark style is returned.  A value of 'E', as in the default
  4131.    configuration, specifies that marking an area of text requires both the
  4132.    beginning and end of the area be marked by the same command that
  4133.    initiated the mark.  A value of 'C' specifies cut/paste style marking.
  4134.    In this style the mark initiated with one of the commands MARK-BLOCK,
  4135.    MARK-LINE, or MARK-CHAR is extended as the cursor is moved.  The
  4136.    command COPY-TO-CLIPBOARD (Alt-V) copies marked text to the clipboard
  4137.    (actually the ".killed" buffer).  The command KILL-MARK (Alt-K) moves
  4138.    marked text to the clipboard.  The command BOTH-YANK (Ctrl-Y) retrieves
  4139.    text from the clip board.
  4140.  
  4141.  
  4142. (built-in,mark):  MARK_TYPE([mark_id[,'S'|'T']])
  4143.  
  4144.    Returns the type or style of the mark specified.  If a value of 'T' is
  4145.    specified (default) for the second parameter, one of the types "BLOCK",
  4146.    "CHAR", "LINE" or "" is returned.  The null string indicates the mark
  4147.    specified has not been set.  When a value of 'S' is specified for the
  4148.    second parameter the mark style is returned.  Mark styles are 'C' or
  4149.    'E' which correspond to cut/paste mark or begin/end mark respectively.
  4150.    The null string is returned if the mark specified has not been set.
  4151.  
  4152.    See also   MARK-STYLE, GET_MARK
  4153.  
  4154. (command,mark): MARK-WORD
  4155.  
  4156.    Sets a character mark from the cursor to the end of the word at the
  4157.    cursor or the next word.  A word is defined by the following regular
  4158.    expression:
  4159.  
  4160.          [a-zA-Z0-9_$]#
  4161.  
  4162.    The above regular expression accepts valid characters in a C language
  4163.    identifier.  To change the default word characters, use the
  4164.    WORD-CHARS command (CONFIG, "Other options...", "Word characters").
  4165.  
  4166. (built-in,search): MATCH_LENGTH('C'|['S'][0-9]|'' [,'I'|'P'])
  4167.  
  4168.    Returns the length of the string found by the last SEARCH or
  4169.    REPEAT_SEARCH executed.  If the 'C' parameter is given, the number of
  4170.    characters from the beginning of the match to the cursor is returned.
  4171.  
  4172.    The ['S'][0-9] parameter is used to return a match length or a start
  4173.    position of a match group.  Specifying 'S' followed by a match group
  4174.    number 0-9 (i.e.  'S0') will return the start position of that match
  4175.    group.  1 is returned if that match group was not found.  If 'S' is not
  4176.    followed by a number, the start position of the entire string found is
  4177.    returned.  Specifying a match group number 0-9 will return the match
  4178.    length of that match group.  0 is returned if that match group was not
  4179.    found.
  4180.  
  4181.    By default, all values returned are physical.  Specify 'I' for the
  4182.    second parameter if you want imaginary values (as if the tab characters
  4183.    were expanded to spaces).
  4184.  
  4185.    Example
  4186.      /* This example works for files with tab characters. */
  4187.      status=search('{if|then|while}','rew')
  4188.      if status then
  4189.         message 'Match not found'
  4190.         return(status)
  4191.      endif
  4192.      get_line line
  4193.      /* In this case, match_length('S')== match_length('S0') */
  4194.      /* and match_length()==match_length('0').  */
  4195.      word=substr(line,match_length('S0'),match_length('0'))
  4196.      replace_line substr(line,1,match_length('S0')-1)||upcase(word)||
  4197.                   substr(line,match_length('S0')+match_length('0'))
  4198.  
  4199.  
  4200.    See also    MARK_MATCH, SEARCH, REPEAT_SEARCH, SEARCH_REPLACE,
  4201.                SAVE_SEARCH, RESTORE_SEARCH, SEARCH_CASE
  4202.  
  4203. (command,misc): MATH expression
  4204.  
  4205.    Evaluates SLICK language expression given and places the results on the
  4206.    command line.  Unlike the SLICK language, octal numbers may be
  4207.    specified by prefixing the number with a 0 and binary numbers may be
  4208.    specified by prefixing the number with '0b' or 'b'.  If no operator is
  4209.    specified between two unary expressions, addition is assumed.
  4210.  
  4211.    Not all SLICK language operators are supported.
  4212.  
  4213.    expression can have the following unary operators:
  4214.  
  4215.        ~      bitwise complement
  4216.        -      Negation
  4217.        +      No change
  4218.  
  4219.    The available binary operators are listed below from lowest to highest
  4220.    precedence.  A comma after the operator indicates that the next
  4221.    operator is of the same precedence.
  4222.  
  4223.         &,        bitwise and
  4224.         |         bitwise or
  4225.         +,        addition
  4226.         blank(s), Implied addition.
  4227.         -         subtraction
  4228.         *,        multiplication
  4229.         /,        division
  4230.         //,       remainder
  4231.         %         integer division
  4232.         **        power
  4233.  
  4234.    See also  MATHX, MATHO, MATHB
  4235.  
  4236. (command,misc): MATHB expression
  4237.  
  4238.    Evaluates SLICK language expression given and places the result on the
  4239.    command line in binary.  Unlike the SLICK language, octal numbers may
  4240.    be specified by prefixing the number with a 0 and binary numbers may be
  4241.    specified by prefixing the number with '0b' or 'b'.  If no operator is
  4242.    specified between two unary expressions, addition is assumed.
  4243.  
  4244.    Not all SLICK language operators are supported.  See MATH
  4245.    command for a list of operators.
  4246.  
  4247.    See also  MATHX, MATH, MATHO
  4248.  
  4249. (command,misc): MATHO expression
  4250.  
  4251.    Evaluates SLICK language expression given and places the result on the
  4252.    command line in octal.  Unlike the SLICK language, octal numbers may be
  4253.    specified by prefixing the number with a 0 and binary numbers may be
  4254.    specified by prefixing the number with '0b' or 'b'..  If no operator is
  4255.    specified between two unary expressions, addition is assumed.
  4256.  
  4257.    Not all SLICK language operators are supported.  See MATH
  4258.    command for a list of operators.
  4259.  
  4260.    See also  MATHX, MATH, MATHB
  4261.  
  4262. (command,misc): MATHX expression
  4263.  
  4264.    Evaluates SLICK language expression given and places the result on the
  4265.    command line in hexadecimal.  Unlike the SLICK language, octal numbers
  4266.    may be specified by prefixing the number with a 0 and binary numbers
  4267.    may be specified by prefixing the number with '0b' or 'b'..  If no
  4268.    operator is specified between two unary expressions, addition is
  4269.    assumed.
  4270.  
  4271.    Not all SLICK language operators are supported.  See MATH
  4272.    command for a list of operators.
  4273.  
  4274.    See also  MATHO, MATH, MATHB
  4275.  
  4276. (command,misc): MAYBE-COMPLETE
  4277.  
  4278.    If the visible cursor is on the command line, the partially typed
  4279.    command currently on the command line is filled in ("completed") as
  4280.    much as possible.  Otherwise a space character is inserted or
  4281.    overwritten at the cursor position depending on the insert state.
  4282.  
  4283. (command,misc): MAYBE-LIST-MATCHES
  4284.  
  4285.    If the visible cursor is on the command line, a selection list of
  4286.    possible completions to the partially typed command currently on the
  4287.    command line is displayed.  Otherwise the '?' character is inserted or
  4288.    overwritten at the cursor position depending on the insert state.
  4289.  
  4290. (command,misc): MAYBE-NORMAL-CHARACTER
  4291.  
  4292.    If the visible cursor is on the command line, the binding to the last
  4293.    key pressed is executed.  Otherwise the command KEY-NOT-DEFINED is
  4294.    called.  Used by fileman-mode.
  4295.  
  4296. (command,menu): MENU menu_name
  4297.  
  4298.    Runs the menu specified.  If the menu returns a command to execute in
  4299.    RC, the command is executed.
  4300.  
  4301.    See also  LEVEL2-MENU, RETURN, MENU-FORMAT, FIND-MENU
  4302.  
  4303. (misc,menu): MENU-FORMAT
  4304.  
  4305.    All menus are stored in the file "slick.mnu".  You may change or add a
  4306.    menu by editing this file or by creating another menu file.  A menu can
  4307.    be called with the MENU command (Not to be confused with the F10 key
  4308.    which executes the EDIT-MENU command) followed by a menu name as
  4309.    argument.  To specify a menu that resides in an alternate menu file,
  4310.    append a '.' character followed by the file name without path or
  4311.    extension.  For example, "menu test.user" would execute the menu test
  4312.    contained in the file "user.mnu".  All menu files must be accessible by
  4313.    searching your PATH.  The command FIND-MENU (MENU, Search, "Find
  4314.    menu...") may be used to load the menu file and place the cursor on the
  4315.    specified menu.
  4316.  
  4317.    Format of a Menu
  4318.  
  4319.      The format of a menu looks like this:
  4320.  
  4321. :menu_name [horizontal]
  4322. window title text;window subtitle text
  4323. menu item   ;command-to-execite ; help-command-to-execute
  4324. menu item   ;command-to-execite ; help-command-to-execute
  4325. menu item   ;command-to-execite ; help-command-to-execute
  4326. ...
  4327.  
  4328.      A horizontal menu has the same format as the vertical menu described
  4329.      above except that the command-to-execute field may only be a MENU or
  4330.      LEVEL2-MENU call identifying a pop-down menu and the horizontal
  4331.      option must appear after the menu name.  The pop-down menus for a
  4332.      horizontal menu must reside in the same file as the horizontal menu.
  4333.  
  4334.    Menu Item
  4335.  
  4336.        menu item must have a letter or digit selection character.  The
  4337.        selection character is enclosed with the character '^'.  The menu
  4338.        item text may not contain semicolons or '^'.
  4339.  
  4340.    Command to Execute
  4341.  
  4342.        When the menu is displayed and the menu item is selected by the
  4343.        ENTER key or the selection character, the command-to-execute is
  4344.        executed as if executed on the command line.  The return code of
  4345.        the command-to-execute determines the action taken by the menu as
  4346.        follows:
  4347.  
  4348.    RC value                          Menu Action
  4349.    ------------------------------------------------------------------
  4350.       If numeric                 The menu remains on screen.
  4351.       If non-numeric             If the menu was called with the sticky
  4352.                                  menu option (see below) and the first
  4353.                                  word in RC is not E or EDIT, the RC code
  4354.                                  is executed as a command and the menu
  4355.                                  remains displayed. Otherwise, the menu is
  4356.                                  closed and RC is returned to the previous
  4357.                                  menu if any or executed..
  4358.  
  4359.    Usually the command-to-execute command is RETURN, MENU command, or
  4360.    QUERY command.  You need to understand these commands as well as
  4361.    commands you type on the command line to be able to write your own
  4362.    menus.
  4363.  
  4364.    Help Command to Execute
  4365.  
  4366.      When the F1 key is pressed from within a menu, the
  4367.      help-command-to-execute is executed as if it were typed on the command
  4368.      line.  Usually it invokes one of the commands POPUP-HELP or
  4369.      POPUP-MESSAGE.
  4370.  
  4371.      Typical help-command-to-execute       Action
  4372.      -------------------------------------------------------
  4373.       POPUP-MESSAGE message            Displays message word wrapped in a
  4374.                                        pop-up window.
  4375.       POPUP-HELP help_name help_type   Displays help item from "slick.doc"
  4376.                                        identified by help_name and help_type
  4377.                                        in a pop-up window.
  4378.  
  4379.      You may test these commands by executing them from the command line.
  4380.  
  4381. (built-in,display): MESSAGE string
  4382.  
  4383.    If the shell window is open, string is displayed in the shell window.
  4384.    Otherwise string is temporarily displayed on the message line.
  4385.    Message will disappear after a key is pressed.
  4386.  
  4387.    See also STICKY_MESSAGE, SHELL_STATE
  4388.  
  4389. (misc,help): MicroEdge Inc.
  4390.  
  4391.        Call or write to us for Technical support.
  4392.  
  4393.        MicroEdge Inc.             phone#: (703) 670-4575
  4394.        P.O. Box 2367
  4395.        Fairfax, VA, 22031
  4396.  
  4397.  
  4398.        Products
  4399.  
  4400.           SLICK Editor for DOS 2.x or higher and OS/2               $195
  4401.  
  4402.           SLICK MAKE  version 2.0                                   $99
  4403.               for DOS 2.x or higher and OS/2 Features C
  4404.               Preprocessing and in-line link response
  4405.               files.  Write ONE make description file
  4406.               that supports DOS or OS/2 executables,
  4407.               multiple compilers, and any memory model.
  4408.               Just like SLICK, SLICK MAKE can reduce
  4409.               its memory usage to 8k by swapping itself
  4410.               to EMS/extended memory and disk.
  4411.  
  4412. (built-in,file): MKDIR path
  4413.  
  4414.    Creates the directory specified by path.  If successful RC is set to
  4415.    zero.  Otherwise RC is set to one of the return codes in the file
  4416.    "rc.sh".
  4417.  
  4418. (command,window): MOVE-EDGE
  4419.  
  4420.    Moves the edge of a window.  The window edge to move is specified with
  4421.    the cursor keys. The new edge position is specified by moving
  4422.    the cursor to the new edge position and pressing ENTER.
  4423.  
  4424. (built-in,mark): MOVE_MARK [mark_id]
  4425.  
  4426.    Moves mark specified.  For block and character marks the text
  4427.    is inserted at the cursor position.  For line mark the lines are
  4428.    inserted after the current line.  Resulting mark is at destination.
  4429.  
  4430. (command,mark): MOVE-MARK
  4431.  
  4432.    Moves the visible mark.  For block and character marks the text is
  4433.    inserted at the cursor position.  In the case of a line mark the lines
  4434.    are inserted before or after the current line depending upon the line
  4435.    insert style (CONFIG, "Other options...", "Line insert style...").
  4436.    Lines are inserted after the current line by default.  Resulting mark
  4437.    is at destination.  Text may be marked with one of the commands
  4438.    MARK-CHAR (Alt-Z), MARK-LINE (Alt-L), or MARK-BLOCK (Alt-B).
  4439.  
  4440. (command,mark): MULT
  4441.  
  4442.    Multiplies adjacent lines of marked text and inserts result below the
  4443.    last line of the mark.  Accepts valid expression accepted by the MATH
  4444.    commands.  If no operator exists between two adjacent numbers, addition
  4445.    is assumed.
  4446.  
  4447.    See also MATH, MATHX, MATHO, MATHB, ADD
  4448.  
  4449. (command,file): NAME  [filename]
  4450.  
  4451.    Changes the name of the current buffer to filename.  If no filename is
  4452.    specified the current value is displayed on the command line for
  4453.    editing.
  4454.  
  4455. (built-in,name): NAME_CLASS(index)
  4456.  
  4457.    Returns whole number corresponding to name table index. If index
  4458.    is not an index to a valid name or name has no information, 0
  4459.    is returned.  SLICK stores help classes here which are used to
  4460.    subdivide the help names.
  4461.  
  4462.    See also  FIND_INDEX, NAME_MATCH, NAME_NAME, NAME_TYPE, NAME_INFO
  4463.              NAME_HELP, SET_NAME_HELP, FIND_LINK, CALL_LINK, INSERT_NAME,
  4464.              SET_NAME_INFO, SET_NAME_CLASS, DELETE_NAME
  4465.  
  4466. (built-in,name): NAME_HELP(index)
  4467.  
  4468.    Returns whole number corresponding to name table index. If index
  4469.    is not an index to a valid name or name has no information, 0
  4470.    is returned.  SLICK stores "buffer position pointers" here which
  4471.    are used similar to seek positions.
  4472.  
  4473.    Example
  4474.       load_files "slick.doc"           /* load the help doc file  */
  4475.       index= find_index("name-help")   /* Find the index for "name-help" */
  4476.       help_point= name_help(index)     /* get the buffer position pointer. */
  4477.       goto_point help_point            /* go there. */
  4478.  
  4479.    See also  FIND_INDEX, NAME_MATCH, NAME_NAME, NAME_TYPE, NAME_INFO
  4480.              SET_NAME_HELP, FIND_LINK, CALL_LINK, INSERT_NAME,
  4481.              SET_NAME_INFO, NAME_CLASS, SET_NAME_CLASS, DELETE_NAME
  4482.  
  4483. (built-in,name): NAME_INFO(index)
  4484.  
  4485.    Returns name information corresponding to name table index. If index
  4486.    is not an index to a valid name or name has no information, ''
  4487.    is returned. For commands, the name information is a list of the
  4488.    types of arguments the command accepts.
  4489.  
  4490.    Example
  4491.       index= find_index("repeat-search")
  4492.       message 'Information for repeat-search is 'name_info(index)
  4493.  
  4494.    See also  FIND_INDEX, NAME_MATCH, NAME_NAME, NAME_TYPE, NAME_HELP,
  4495.              SET_NAME_HELP, FIND_LINK, CALL_LINK, INSERT_NAME,
  4496.              SET_NAME_INFO, NAME_CLASS, SET_NAME_CLASS, DELETE_NAME
  4497.  
  4498. (command,keyboard): NAME-MACRO  [name]
  4499.  
  4500.    Gives the last keyboard macro defined the name specified.  The
  4501.    WRITE-STATE command may be used to save keyboard macros for the next
  4502.    session.  You may execute a keyboard macro by typing its name on the
  4503.    command line or binding it to a key.
  4504.  
  4505. (built-in,name): NAME_MACRO name,kbd_macro_string
  4506.  
  4507.    If name exists in the names table and has type COMMAND_TYPE or MACRO_TYPE,
  4508.    the type of name will become (MACRO_TYPE | INFO_TYPE) with information
  4509.    kbd_macro_string.  Upon successful completion RC is set to 0. Otherwise
  4510.    RC is set to INTERPRETER_OUT_OF_MEMORY_RC and message will get displayed
  4511.    after macro finished unless CLEAR_MESSAGE is called.
  4512.  
  4513.    Example
  4514.  
  4515.       name_macro "last-kbd-macro",get_macro()
  4516.  
  4517.    See also  NAME_MACRO, GET_MACRO, START_KBD_MACRO, END_KBD_MACRO
  4518.  
  4519. (built-in,name): NAME_MATCH(name_prefix,find_first[,name_t])
  4520.  
  4521.    Returns name table index of the name with prefix matching name_prefix
  4522.    and where (name_t & name_type(index)) is true. A non-zero value for
  4523.    find_first, begins a new search. If find_first is zero, the next
  4524.    matching index is returned. 0 is returned  if no match is found. Search
  4525.    is not case sensitive regardless of operating system.  Underscores in
  4526.    name_prefix are translated to dashes before search takes place.
  4527.  
  4528.    Example
  4529.  
  4530.       name_t= COMMAND_TYPE      /* COMMAND_TYPE is defined in "slick.sh" */
  4531.       name_prefix='p'           /* Find names that start with p */
  4532.       index= name_match(name_prefix,1,name_t)   /* Find first */
  4533.       loop
  4534.         if not index then  leave endif
  4535.         say 'name='name_name(index)
  4536.         index= name_match(name_prefix,0,name_t) /* Find next */
  4537.       endloop
  4538.       pause
  4539.  
  4540.    See also  NAMES, FIND_INDEX, BUF_MATCH, FILE_MATCH
  4541.  
  4542.  
  4543. (built-in,name): NAME_NAME(index)
  4544.  
  4545.    Returns name corresponding to name table index.  If index is not an
  4546.    index to a valid name, '' is returned.  Names are returned in lower
  4547.    case.
  4548.  
  4549.    Example
  4550.       index= name_match("repeat-se")
  4551.       message 'possible match of repeat-se is 'name_name(index)
  4552.  
  4553.    See also  FIND_INDEX, NAME_MATCH, NAME_TYPE, NAME_INFO, NAME_HELP,
  4554.              SET_NAME_HELP, FIND_LINK, CALL_LINK, INSERT_NAME,
  4555.              SET_NAME_INFO, NAME_CLASS, SET_NAME_CLASS, DELETE_NAME
  4556.  
  4557. (built-in,name): NAME_TYPE(index)
  4558.  
  4559.    Returns name type corresponding to name table index. If index is not
  4560.    an index to a valid name, 0 is returned.
  4561.  
  4562.    Example
  4563.       index= find_index("repeat-search")
  4564.       message 'repeat-search name type is 'name_type(index)
  4565.  
  4566.    See also  FIND_INDEX, NAME_MATCH, NAME_NAME, NAME_INFO, NAME_HELP,
  4567.              SET_NAME_HELP, FIND_LINK, CALL_LINK, INSERT_NAME,
  4568.              SET_NAME_INFO, NAME_CLASS, SET_NAME_CLASS, DELETE_NAME
  4569.  
  4570. (command,buffer): NEXT-BUFFER
  4571.  
  4572.    Switches to view of the next buffer within the current window.
  4573.  
  4574. (command,misc): NEXT-ERROR
  4575.  
  4576.    Finds next error in concurrent process buffer created by the
  4577.    START-PROCESS command.  Cursor is placed on line and column of file
  4578.    with error.
  4579.  
  4580.    Supported error message syntax
  4581.  
  4582.      Is described by the regular expression:
  4583.  
  4584.        ^\**(error(~.)|warning(~.)|)\** *{:q|:p}( +| *\(|\:){:d#}(,|\:|)
  4585.        ( *{:d#}|)(\)|) @\:
  4586.  
  4587.      In English expression terms:
  4588.  
  4589.    begin-line[stars]['error' not '.'|'warning' not '.'][stars][blanks]
  4590.    filename[[blanks|[blanks]'('|':']number[','|':'][blanks number][')']]
  4591.    [blanks]':'
  4592.  
  4593.      Here are some supported messages:
  4594.  
  4595.         filename line column: message          GREP.EXE has this syntax
  4596.         filename (line column): message
  4597.         filename (line, column): message
  4598.         filename (line) : message
  4599.         Error filename line: message
  4600.         Warning filename line: message
  4601.         "filename" line column: message
  4602.         "filename" (line column): message
  4603.         "filename" (line, column): message
  4604.         "filename" (line) : message
  4605.         Error "filename" line: message
  4606.         Warning "filename" line: message
  4607.         **Error** filename(100) message
  4608.         *Warning* filename(100) message
  4609.  
  4610.    See also  START-PROCESS, STOP-PROCESS, CURSOR-ERROR, EXIT-PROCESS,
  4611.              SET-NEXT-ERROR,RESET-NEXT-ERROR
  4612.  
  4613.  
  4614. (command,window): NEXT-GROUP
  4615.  
  4616.    Switches to next window group.
  4617.  
  4618.    For an explanation of how windows,views, and buffers are related,
  4619.    type "help windows-structure" on command line.
  4620.  
  4621.    See also  PREV-GROUP
  4622.  
  4623. (built-in,window): NEXT_GROUP
  4624.  
  4625.    Switches to next window group.  Currently there can only be two window
  4626.    groups.  The hidden window group holds buffers that are handled by
  4627.    SLICK macros and buffers that users don't wish to see.  The other
  4628.    window group holds buffers that the user does wish to see.  Each window
  4629.    group has a ring of windows.  Each window contains a ring of views.
  4630.    Each view is a position in a buffer.
  4631.  
  4632.    For an explanation of how windows,views, and buffers are related,
  4633.    type "help windows-structure" on command line.
  4634.  
  4635.    See also  PREV_GROUP
  4636.  
  4637. (built-in,window): NEXT_VIEW
  4638.  
  4639.    For an explanation of how windows,views, and buffers are related,
  4640.    type "help windows-structure" on command line.
  4641.  
  4642.    A view holds the information necessary for the editor to remember your
  4643.    location and scroll position in a buffer.  Each window has a ring of
  4644.    views to buffers.  When you have more than one window looking at the
  4645.    same buffer.  The windows have different views of that buffer.
  4646.    NEXT_VIEW switches to the next view in the current window.
  4647.  
  4648.    See also  GET_VIEW_ID, ACTIVATE_VIEW, PREV_VIEW, QUIT_VIEW,
  4649.              LOAD_FILES, NEXT_WINDOW, PREV_WINDOW
  4650.  
  4651. (command,window): NEXT-WINDOW
  4652.  
  4653.    Switches to next window.
  4654.  
  4655.    For an explanation of how windows,views, and buffers are related,
  4656.    type "help windows-structure" on command line.
  4657.  
  4658.    See also  PREV-WINDOW
  4659.  
  4660. (built-in,window: NEXT_WINDOW
  4661.  
  4662.    Switches to the next window of the active window group.
  4663.  
  4664.    For an explanation of how windows,views, and buffers are related,
  4665.    type "help windows-structure" on command line.
  4666.  
  4667.    See also  GET_VIEW_ID, ACTIVATE_VIEW, NEXT_VIEW, PREV_VIEW, QUIT_VIEW,
  4668.              LOAD_FILES, PREV_WINDOW
  4669.  
  4670. (misc,language): NO-CODE-SWAPPING
  4671.  
  4672.     When this key word is present in a SLICK macro module, SLICK will
  4673.     load this module from the state file SLICK.STA into memory when it is
  4674.     invoked and never allow it to be swapped out of memory.  This feature
  4675.     is a safety feature to make sure that some editing capabilities still
  4676.     exist when critical disk problems occur.
  4677.  
  4678. (command,keyboard): NORMAL-CHARACTER
  4679.  
  4680.    Insert or overwrites the last key pressed depending upon the insert
  4681.    state.
  4682.  
  4683. (command,misc): NOTHING
  4684.  
  4685.    Affects nothing
  4686.  
  4687. (misc,language): NUMBERS
  4688.  
  4689.    The SLICK language has support for floating point numbers and hex
  4690.    numbers.  The mantissa and exponent are limited to 9 digits.  When
  4691.    precision is lost, the result is rounded.  Overflow and underflow are
  4692.    detected.  Floating point numbers have the following syntax:
  4693.  
  4694.  
  4695.              [+|-] digits [.][digits][E[+|-]digits]
  4696.  
  4697.                           or
  4698.  
  4699.              [+|-] [.]digits[E[+|-]digits]
  4700.  
  4701.                         and hex numbers (like C)
  4702.  
  4703.                      0x hexdigits
  4704.  
  4705.    The leading sign may have blanks before and after.
  4706.  
  4707.    Example
  4708.  
  4709.       4
  4710.       ' + 4e2'
  4711.       4e2
  4712.       ' -4E-2'
  4713.       -4E-2
  4714.       0xff
  4715.       0xffffffff   /* In our implementation this is -1. */
  4716.                    /* When using the math commands, this is a */
  4717.                    /* floating point number which will cause */
  4718.                    /* errors when used with bitwise operators. */
  4719.                    /* The maximum "safe" hex number is */
  4720.                    /* 0x3b9ac9ff=999999999 */
  4721.  
  4722.       +999999999e+999999999  /* largest floating point number */
  4723.       -999999999e-999999999  /* smallest exponent with largest negative */
  4724.                              /* mantissa. */
  4725.  
  4726. (command,window): ONE-WINDOW
  4727.  
  4728.    Deletes all windows accept the current window which is zoomed.
  4729.  
  4730. (misc,language): OPERATORS
  4731.  
  4732.    An expression can have the following unary operators:
  4733.  
  4734.        NOT    logical not
  4735.        ~      bitwise complement
  4736.        -      Negation
  4737.        +      No change
  4738.  
  4739.    The binary operators for the SLICK language are listed below from
  4740.    lowest to highest precedence.  A comma after the operator indicates
  4741.    that the next operator is of the same precedence.
  4742.  
  4743.  
  4744.        and,    logical and.  If left hand expression is false, right hand
  4745.                expression is not evaluated.
  4746.        or      logical or.  If left hand expression is true, right hand
  4747.                expression is not evaluated.
  4748.        =,      If both expressions are numbers, a number comparison is
  4749.                performed.  Otherwise a string comparison is performed. In
  4750.                any case leading and trailing spaces and tabs are strip
  4751.                before the comparison is performed.
  4752.        >,      Greater than.  Handles numbers or strings. see = operator
  4753.        >=,     Greater than or equal.  Handles numbers or strings. See =
  4754.                operator.
  4755.        <,      Less than. Handles numbers or strings. See = operator.
  4756.        <=,     Less than or equal. Handles numbers or strings. See =
  4757.                operator.
  4758.        <>,     Not equal. Handles numbers or strings. See = operator.
  4759.  
  4760.        ==,     Exactly equal.  Always performs string comparison.
  4761.        /==,    Not exactly equal.  Always performs string comparison.
  4762.        <<=,    Exactly less than or equal.  Always performs string comparison.
  4763.        <<,     Exactly less than.  Always performs string comparison.
  4764.        >>=,    Exactly greater than or equal.  Always performs string
  4765.                comparison.
  4766.        >>      Exactly greater than.  Always performs string comparison.
  4767.        ||      Concatenation
  4768.        blank(s) Implied concatenation. Concatenates one blank between
  4769.                left and right expression.  Results are unpredictable if a
  4770.                comment exists between the left and right expression.
  4771.        &,      bitwise and
  4772.        |       bitwise or
  4773.        +,      addition
  4774.        -       subtraction
  4775.        *,      multiplication
  4776.        /,      division
  4777.        //,     remainder
  4778.        %       integer division
  4779.        **      power
  4780.  
  4781.    Note:  Expressions may extend across line boundaries, if the line ends
  4782.           in an operator.  Parameters passed to functions may extend
  4783.           across line boundaries if the line ends in a comma.
  4784.  
  4785.  
  4786.    Example
  4787.  
  4788.          1 2     =='1 2'
  4789.          4**2    =='16'
  4790.          5/2     =='2.5'
  4791.          5//2    =='1'
  4792.          5%2     =='2'
  4793.          5&2     =='0'
  4794.          5|2     =='7'
  4795.          (10<7)  =='0'
  4796.          (10<<7) =='1'
  4797.  
  4798.    See also  STRINGS
  4799.  
  4800. (command,mark): OVERLAY-BLOCK-MARK
  4801.  
  4802.    Overwrites visible block mark at cursor position.  No clipboard is
  4803.    created.  Resulting mark is at destination.  A block of text may be
  4804.    marked with the MARK-BLOCK command (Alt-B).
  4805.  
  4806. (built-in,mark): OVERLAY_BLOCK_MARK [mark_id]
  4807.  
  4808.    Overwrites block mark specified at cursor position.  No clipboard is
  4809.    created.  Resulting mark is at destination.
  4810.  
  4811. (command,buffer): PAGE
  4812.  
  4813.    Runs the external macro "page.s" which creates a copy of the current
  4814.    buffer, gives the copy the extension .prt, inserts page breaks and
  4815.    formats buffer for printing according to format options.  A pop-up
  4816.    dialog box is presented to you with the default format options.  The
  4817.    format options are:
  4818.  
  4819.  
  4820.        Header [Yes,No]                 If yes, prints buffer name as
  4821.                                        first line of page.
  4822.  
  4823.        Page number [Yes,No]            If yes, page number is printed
  4824.                                        at bottom of each page.
  4825.        Blank lines at top              Number of blank lines to print
  4826.                                        after header.
  4827.        Blank lines at bottom           Number of blank lines to print
  4828.                                        before page number.
  4829.        Lines per page                  Number of buffer lines to print
  4830.                                        on each page.  Must account for
  4831.                                        header lines and footer lines.
  4832.        Columns per line                Number of columns per line.  Lines
  4833.                                        longer than this column are split.
  4834.        Leading printer codes           Printer codes to be sent to printer
  4835.                                        before buffer.  Printer codes must
  4836.                                        be entered as a character string.
  4837.                                        To enter a control character, press
  4838.                                        Ctrl-Q, hold down the ALT key, type
  4839.                                        the number on the key pad, and lift
  4840.                                        the ALT key.
  4841.  
  4842.        Trailing printer codes          Printer codes to be sent to printer
  4843.                                        after buffer.
  4844.  
  4845.        Print device [PRN,LPT1,LPT2]    Default printer device used by
  4846.                                        PRINT commands.
  4847.  
  4848.    See also PRINT, PUT
  4849.  
  4850.  
  4851. (command,cursor): PAGE-DOWN
  4852.  
  4853.    Moves cursor to next page of text.
  4854.  
  4855.    See also  PAGE-UP
  4856.  
  4857. (built-in,cursor): PAGE_DOWN
  4858.  
  4859.    Moves text under the cursor ".window_height" -1 lines up.  If the
  4860.    bottom line of the buffer is reached and it is not visible, the cursor
  4861.    is placed at the last row of the window.  PAGE_DOWN is not affected by
  4862.    SCROLL_STYLE.  If bottom of hit is reached RC is set to
  4863.    BOTTOM_OF_FILE_RC, otherwise RC is set to 0.
  4864.  
  4865.  
  4866.    Example
  4867.        page_down
  4868.        if rc=BOTTOM_OF_FILE_RC then
  4869.           /* BOTTOM centers last line of buffer if scroll style is CENTER. */
  4870.           bottom
  4871.           message get_message(rc)
  4872.        endif
  4873.  
  4874.    See also  PAGE_UP, INTERNAL-VARIABLES
  4875.  
  4876. (command,cursor): PAGE-UP
  4877.  
  4878.    Moves cursor to previous page of text.
  4879.  
  4880.    See also  PAGE-DOWN
  4881.  
  4882. (built-in,cursor): PAGE_UP
  4883.  
  4884.    Moves text under the cursor ".window_height" -1 lines down.  If there
  4885.    are not enough lines left in the file to keep the cursor at the same
  4886.    row on the screen, the cursor row ".cursor_y" changes.  The top of line
  4887.    of the buffer will always be seen at ".cursor_y" = 0.  SCROLL_STYLE has
  4888.    no effect on PAGE_UP.  If top of buffer is hit RC is set to
  4889.    TOP_OF_FILE_RC, otherwise RC is set to 0.
  4890.  
  4891.    See also  PAGE_DOWN, INTERNAL-VARIABLES
  4892.  
  4893. (built-in,string): PARSE VALUE string WITH template
  4894.  
  4895.  
  4896.    Parses string as specified by template.
  4897.  
  4898.    Template may contain
  4899.  
  4900.      variable_name            Output variable
  4901.      .                        Null output variable
  4902.      nnn                      Number specifying new parse column
  4903.      +nnn                     Amount to increment parse column relative
  4904.                               to start of last string found or last
  4905.                               column setting.
  4906.      -nnn                     Amount to decrement parse column relative
  4907.                               to start of last string found or last
  4908.                               column setting.
  4909.      'text'[,search_options]  String constant to search for.  If found,
  4910.                               parse column becomes first character after
  4911.                               text.  Otherwise parse column becomes first
  4912.                               character after length of string being parsed.
  4913.                               search_options is an expression that may
  4914.                               evaluate to one or both the options 'r' and
  4915.                               'i'.  'r' specifies a regular expression
  4916.                               search. 'i' specifies a case insensitive
  4917.                               search.  For syntax of regular expression
  4918.                               see help on / command ("help /").
  4919.      (text)[,search_options]  String expression to search for.  If found,
  4920.                               parse column becomes first character after
  4921.                               text.  Otherwise parse column becomes first
  4922.                               character after length of string being parsed.
  4923.                               See above for a description of the search
  4924.                               options.
  4925.  
  4926.    Rules for parse column
  4927.  
  4928.      *  The parse column is initialized to column 1
  4929.      *  If a column or column increment specifies a column greater than the
  4930.         length of the string being parsed, the parse column is set to the
  4931.         length of the string being parsed plus one.
  4932.      *  if a column decrement specifies a column less than the length of the
  4933.         string being parsed, the parse column is set to column 1.
  4934.  
  4935.    Rules for setting output variables
  4936.  
  4937.      *  Output variables are set in groups.  An output variable group is
  4938.         defined to be consecutive variables with no search or column
  4939.         specifiers between them.
  4940.  
  4941.      *  Before variables of an output variable group can be set, the end
  4942.         parse column within the source string must be found.  In the case
  4943.         the end parse column is set by a search, the end parse column for
  4944.         this output variable group becomes the first character to the left
  4945.         of the text found.  In the case the end parse column is set by a
  4946.         column or column increment the end parse column becomes the first
  4947.         character to the left of the column.  The start parse column is
  4948.         the current parse column as specified by the template.
  4949.  
  4950.      *  A word parse of the text between the start and end columns is
  4951.         performed to set the variables in an output variable group if the
  4952.         group contains more that one variable.  Otherwise the one output
  4953.         variable is set to the text between the start and end columns of
  4954.         the source string.  Each variable set by a word parse will have
  4955.         no leading or trailing tabs/spaces except for the last output
  4956.         variable which is set to the rest of the sub-string.
  4957.  
  4958.      *  If the start column is greater than the end column the variables
  4959.         in the output group are set to null.
  4960.  
  4961.  
  4962.    Examples
  4963.       parse value '1 2 3' with a b c
  4964.       /* Results are  a=='1', b=='2', c=='3' */
  4965.  
  4966.       parse value '1 '\t' 2 '\t' 3' with a b c
  4967.       /* Results are  a=='1', b=='2', c=='3'.  Note that tab and space */
  4968.       /* characters are stripped. */
  4969.  
  4970.       parse value '1 2 3' with a . b
  4971.       /* Results are  a=='1', b=='3' */
  4972.  
  4973.       parse value 'xxx1 2 3yyy 4 5' with 'xxx' a b c 'yyy' d e
  4974.       /* Results are  a=='1', b=='2', c=='3', d=='4', e=='5' */
  4975.  
  4976.       parse value 'xxx1 2 3yyy 4 5' with 'xxx' a  'yyy' b
  4977.       /* Results are  a=='1 2 3', b==' 4 5' */
  4978.  
  4979.       parse value 'xxx1 2 3yyy 4 5' with 'xxx' +0 a  'yyy' +0 b
  4980.       /* Results are  a=='xxx1 2 3', b=='yyy 4 5' */
  4981.  
  4982.       parse value 'c/x/y' with  1 delim +1 s1 (delim) s2 (delim) options
  4983.       /* Results are delim=='/', s1=='x', s2=='y', options=='' */
  4984.  
  4985.  
  4986. (command,misc):  PASCAL-ENTER
  4987.  
  4988.    New binding of ENTER key when in PASCAL mode.  Handles syntax expansion
  4989.    and indenting for files with PAS extension.  See config menu to change
  4990.    syntax expansion/indenting options.
  4991.  
  4992. (command,misc):  PASCAL-MODE
  4993.  
  4994.    Activates PASCAL file editing mode.  The ENTER and SPACE BAR bindings
  4995.    are changed as well as the tab and margin settings.
  4996.  
  4997. (command,misc):  PASCAL-SPACE
  4998.  
  4999.    New binding of SPACE key when in PASCAL mode.  Handles syntax expansion
  5000.    and indenting for files with PAS extension.  See config menu to change
  5001.    syntax expansion/indenting options.
  5002.  
  5003. (built-in,file): PATH_SEARCH(filename [,env_var [,'P'|'M']]
  5004.  
  5005.    Searches the path specified for a file or program.  If found, the file
  5006.    name with path is returned.  First, the path given with filename is
  5007.    searched.  Then the directories specified by the environment variable
  5008.    env_var are searched.  env_var defaults to "PATH" if not specified.
  5009.    The third optional parameter specifies a program search.  'M' and 'P'
  5010.    both specify program search.  The 'M' option includes searching for .S
  5011.    and .SX files.  The search order for a program is:
  5012.  
  5013.        COM
  5014.        EXE
  5015.        S               (if M option specified)
  5016.        SX              (if M option specified)
  5017.        CMD or BAT      (CMD for OS/2 and BAT for DOS)
  5018.  
  5019.    There is one exception to the order above.  If a .SX file is found and
  5020.    then the source .CMD is found, the .CMD file is returned.  This
  5021.    simplifies the automatic make of macros since the source file is always
  5022.    found first and allows SLICK batch files to be found first.
  5023.  
  5024.    Example
  5025.  
  5026.       name=path_search('s','PATH','P')      /* Find s.exe */
  5027.       name=path_search('shell','PATH','M')  /* Find external shell */
  5028.       name=path_search('slick.sta')         /* Find state file */
  5029.  
  5030. (built-in,file): PATHLEN(filename)
  5031.  
  5032.    Returns length of the path in the string filename including trailing
  5033.    backslash.
  5034.  
  5035. (built-in,display): PAUSE
  5036.  
  5037.    Opens the shell window if it is not already open, displays the
  5038.    message 'Press any key to continue', and waits for a key to be pressed.
  5039.  
  5040. (built-in,misc): PEEK(seg ofs,count)
  5041.  
  5042.    Returns count bytes of memory specified by the pointer seg:ofs.
  5043.  
  5044.    See also  POKE, INT86X, VAR_OFS, VAR_SEG
  5045.  
  5046. (built-in,misc): POINT(['L'])
  5047.  
  5048.    Returns whole number with current block number and line number WITHIN
  5049.    block encoded.  The block number and the line number within the block
  5050.    are both 16 bits.  If the 'L' option is specified the current line (32
  5051.    bits) number is returned.  Unlike the internal variable ".line" which
  5052.    determines the current line number when it is not known, a line number
  5053.    of -1 is returned to indicate that the line number is not known.
  5054.  
  5055.    Example
  5056.      p=point()
  5057.      message 'block='(p%65536)' line number within block='p&(0xffff)
  5058.  
  5059.  
  5060.    See also  GOTO_POINT
  5061.  
  5062. (built-in,misc): POKE seg ofs,string
  5063.  
  5064.    Sets the memory specified by the pointer seg:ofs to string.
  5065.  
  5066.    See also  PEEK, INT86X, VAR_OFS, VAR_SEG
  5067.  
  5068. (command,help): POPUP-HELP [name [help_type]]
  5069.  
  5070.    Displays help for name of type help_type in a pop-up window.  For a list
  5071.    of possible help types, type "popup-help popup-help ?" on the command
  5072.    line.
  5073.  
  5074.    See also  HELP, HELP-CLASS, POPUP-MESSAGE
  5075.  
  5076. (command,help): POPUP-MESSAGE message_text
  5077.  
  5078.    Displays message_text in pop-up window.
  5079.  
  5080.    See also  HELP, HELP-CLASS, POPUP-HELP
  5081.  
  5082. (built-in,string): POS(needle[,haystack[,start[, options]]])
  5083.  
  5084.    Returns the position of needle in haystack.  If needle is not found, 0
  5085.    is returned.  start specifies the position at which the search should
  5086.    begin.  start defaults to 1.  Multiple options may be specified with
  5087.    the following meaning:
  5088.  
  5089.        'I'      Ignore case.
  5090.        'R'      Interpret search string needle as a regular expression.
  5091.                 See help on / command for syntax of regular expressions.
  5092.  
  5093.    Example
  5094.  
  5095.      pos('a','zzz')         == '0'
  5096.      pos('a','zzza')        == '4'
  5097.      pos('a','zzzA',1,'I')  == '4'
  5098.      pos('a','zzza',5)      == '0'
  5099.      pos('[a-z]','%$?a',1,'R')  == '4'
  5100.  
  5101.  
  5102.    Calling the POS function with one parameter allows you to retrieve
  5103.    match group information.  Specifying 'S' followed by a match group
  5104.    number 0-9 (i.e.  'S0') will return the start position of that match
  5105.    group.  1 is returned if that match group was not found.  If 'S' is not
  5106.    followed by a number, the start position of the entire string found is
  5107.    returned.  Specifying a match group number 0-9 will return the match
  5108.    length of that match group.  0 is returned if that match group was not
  5109.    found.  A value of '' will return the match length of the entire string
  5110.    found.
  5111.  
  5112.    Example
  5113.      get_line line
  5114.      word_sep='([~a-zA-Z0-9_$]|^|$)'
  5115.      i=pos(word_sep'{if|then|while}'word_sep,line,'','r')
  5116.      if not i then
  5117.         message 'Match not found'
  5118.         return(1)
  5119.      endif
  5120.      word=substr(line,pos('S0'),pos('0'))
  5121.  
  5122. (command,buffer): PREV-BUFFER
  5123.  
  5124.    Switches to view of the previous buffer within the current window.
  5125.  
  5126. (command,window): PREV-GROUP
  5127.  
  5128.    Switches to previous window group.
  5129.  
  5130.    For an explanation of how windows,views, and buffers are related,
  5131.    type "help windows-structure" on command line.
  5132.  
  5133.    See also  NEXT-GROUP
  5134.  
  5135. (built-in,window): PREV_GROUP
  5136.  
  5137.    Switches to previous window group.  Currently there can only be two
  5138.    window groups.  The hidden window group holds buffers that are handled
  5139.    by SLICK macros and buffers that users don't wish to see.  The other
  5140.    window group holds buffers that the user does wish to see.  Each window
  5141.    group has a ring of windows.  Each window contains a ring of views.
  5142.    Each view is a position in a buffer.
  5143.  
  5144.    For an explanation of how windows,views, and buffers are related,
  5145.    type "help windows-structure" on command line.
  5146.  
  5147.    See also NEXT_GROUP
  5148.  
  5149.  
  5150. (built-in,misc): PREV_INDEX([new_value])
  5151.  
  5152.    Returns index of previous command executed by a key or the built-in
  5153.    function CALL_KEY.  If new_value is given, the previous command index
  5154.    is set to new_value.
  5155.  
  5156.    See also  LAST_INDEX
  5157.  
  5158. (built-in,window): PREV_VIEW
  5159.  
  5160.    For an explanation of how windows,views, and buffers are related,
  5161.    type "help windows-structure" on command line.
  5162.  
  5163.    A view holds the information necessary for the editor to remember your
  5164.    location and scroll position in a buffer.  Each window has a ring of
  5165.    views to buffers.  When you have more than one window looking at the
  5166.    same buffer.  The windows have different views of that buffer.
  5167.    PREV_VIEW switches to the previous view in the current window.
  5168.  
  5169.    See also  GET_VIEW_ID, ACTIVATE_VIEW, NEXT_VIEW, QUIT_VIEW,
  5170.              LOAD_FILES, NEXT_WINDOW, PREV_WINDOW
  5171.  
  5172. (command,window): PREV-WINDOW
  5173.  
  5174.    Switches to previous window.
  5175.  
  5176.    For an explanation of how windows,views, and buffers are related,
  5177.    type "help windows-structure" on command line.
  5178.  
  5179.    See also  NEXT-WINDOW
  5180.  
  5181. (built-in,window): PREV_WINDOW
  5182.  
  5183.    For an explanation of how windows,views, and buffers are related,
  5184.    type "help windows-structure" on command line.
  5185.  
  5186.    Switches to the previous window of the active window group.
  5187.  
  5188.    See also  GET_VIEW_ID, ACTIVATE_VIEW, NEXT_VIEW, PREV_VIEW, QUIT_VIEW,
  5189.              LOAD_FILES, NEXT_WINDOW
  5190.  
  5191. (command,buffer): PRINT
  5192.  
  5193.    Prints the current buffer by saving the buffer to the default print
  5194.    device PRN.  The default print device name and options are accessible
  5195.    through the CONFIG menu (F5) under "Print options...".
  5196.  
  5197.    See also PUT, PAGE
  5198.  
  5199. (built-in,misc): PROCESS_INFO(['C'|'B'|'R'])
  5200.  
  5201.    This function returns information about the process running depending
  5202.    upon the input given as follows:
  5203.  
  5204.       INPUT                  OUTPUT
  5205.  
  5206.       no parameter    Returns 1 if the concurrent process is running.
  5207.                       Otherwise 0 is returned.
  5208.  
  5209.       'C'             Returns start column of process request for
  5210.                       input. If the current line is not reading
  5211.                       input for a concurrent process, 0 is
  5212.                       returned.
  5213.  
  5214.       'B'             Returns 1 if the current buffer has a
  5215.                       concurrent process. Otherwise 0 is returned.
  5216.  
  5217.       'R'             Returns 1 if the concurrent process buffer is
  5218.                       running.  Otherwise 0 is returned.  A delay is
  5219.                       performed and pending concurrent process
  5220.                       ouput is read into the concurrent process buffer.
  5221.  
  5222.  
  5223.    See also  CONCUR_SHELL, STOP_PROCESS
  5224.  
  5225. (command,mark): PUT filename | -p
  5226.  
  5227.    Writes marked text to filename specified.  The filename maybe a printer
  5228.    device name such as PRN, LPT1, or LPT2 to send the output to the
  5229.    printer.  The -p option selects the default printer device as the
  5230.    output file.  The default print device and options are accessible
  5231.    through the CONFIG menu (F5) under "Print options...".  Mark text first
  5232.    with one of the commands MARK-CHAR, MARK-LINE, or MARK-BLOCK.
  5233.  
  5234.    See also  MARK-CHAR, MARK-LINE, MARK-BLOCK, APPEND
  5235.  
  5236. (command,keyboard): QUERY  {options} prompt: [default_value]
  5237.  
  5238.    The QUERY command is used to prompt the user in a pop-up window for
  5239.    one or more arguments.  One of the options -x, -d, -di, or -vx must be
  5240.    specified for argument retrieval to be supported.  Argument retrieval
  5241.    is supported with the F9 and F10 keys.
  5242.  
  5243.    Even though the query command may be called from the command line, much
  5244.    of its function can not be utilized without calling it from within
  5245.    the macro language and passing it more than one argument.
  5246.  
  5247.  
  5248.      Return values
  5249.  
  5250.         number              Error code
  5251.  
  5252.         'nothing' or '0'    Simple query which uses -q option returns
  5253.                             the value 0 if -sticky option is specified.
  5254.                             Otherwise 'nothing'  is returned.
  5255.  
  5256.         'execute-query 'command query_view_id
  5257.                             Successful query returns query_view_id
  5258.                             containing users response.  The command
  5259.                             returned is the command specified by the -x,
  5260.                             -vx, or -d option.  Typically this string is
  5261.                             executed, causing the EXECUTE-QUERY command to
  5262.                             be called.  The EXECUTE-QUERY command calls
  5263.                             command with arguments contained in the buffer
  5264.                             corresponding to query_view_id and quits the
  5265.                             query_view_id buffer.  First response field is
  5266.                             at line number (.Noflines%2+1).  If the
  5267.                             -sticky option is specified, the
  5268.                             EXECUTE-QUERY command string is executed
  5269.                             and its RC code is returned.
  5270.  
  5271.  
  5272.  
  5273.  
  5274.      Argument number       Arguments 3-7 are optional.
  5275.  
  5276.         1                  Same as shown above.  This argument is ignored
  5277.                            if arg(3) or arg(7) are specified.
  5278.         3  menu_point      The position of a query menu in a menu
  5279.                            buffer as returned by the point() function.
  5280.                            The buffer with the menu must be active. See
  5281.                            query menu example below.
  5282.  
  5283.         4  help_text       Help text to be displayed when F1 is pressed.
  5284.                            If help_text starts with the character '.',
  5285.                            help_text is assumed to specify a help item in
  5286.                            "slick.doc".  For example a value of
  5287.                            ".write-state command" would bring up help for
  5288.                            the WRITE-STATE command when F1 is pressed.
  5289.  
  5290.         5  title_text      Title text to be displayed as buffer name for
  5291.                            window.
  5292.         6  subtitle_text   Subtitle text to be displayed as subtitle of
  5293.                            window.
  5294.         7  view_id         view_id of buffer with prompts and default
  5295.                            values already set up.
  5296.  
  5297.      options
  5298.         -q                 Quit results of query before returning.  Normally,
  5299.                            one view of the query buffer results are
  5300.                            returned. This option must be used for simple
  5301.                            queries which set universal variables. You
  5302.                            must use this option if you test the QUERY
  5303.                            command from the command line.  For example,
  5304.  
  5305.                               query('-q -y -v def-start-on-cmdline')
  5306.  
  5307.         -sticky            If the -sticky option is specified and a
  5308.                            command string is about to be returned, the
  5309.                            command string is executed.  The RC code of the
  5310.                            command string is returned.  This has the
  5311.                            effect of keeping the menu levels that called
  5312.                            the QUERY command from being exitted when the
  5313.                            ENTER key is pressed.
  5314.  
  5315.  
  5316.         -i completion_info Completion information.  May be any constant
  5317.                            listed in the file "slick.sh" with suffix
  5318.                            "_ARG". The suffix "_ARG" should not be given.
  5319.  
  5320.                               FILE        File name argument
  5321.                               BUFFER      Buffer name argument
  5322.                               CMDNMACRO   Command or Keyboard macro argument
  5323.                               COMMAND     Command argument
  5324.                               MACRO       Keyboard macro argument
  5325.                               MODULE      Slick module argument
  5326.                               PC          Procedure or command argument
  5327.                               PCB         Procedure, command, or built-in
  5328.                                           argument
  5329.                               PCB-TYPE    Proc,command, and built-in types
  5330.                               PROC        Procedure argument
  5331.                               VAR         Variable argument
  5332.                               ENV         Environment variable argument
  5333.                               MENU        Menu name argument
  5334.                               HELP        Help name argument
  5335.                               HELP-TYPE   Help type argument
  5336.                               HELP-CLASS  Help class argument
  5337.                               COLOR-FIELD Color field argument
  5338.  
  5339.         -p                 DO NOT get previous values from ".command" buffer
  5340.                            and DO NOT insert users response into ".command"
  5341.                            buffer.
  5342.         -x proc_name       Command to execute after query panel is filled
  5343.                            in.  proc_name is used to search for the previous
  5344.                            values of the query panel in the ".command" buffer.
  5345.                            If the -x option is not specified but the -d option
  5346.                            is specified, the -d command is used as the -x
  5347.                            proc_name.  For example,
  5348.  
  5349.                            query('-x tabs -d tabs Enter tabs:')
  5350.  
  5351.  
  5352.         -d command         Get default value by executing command with a null
  5353.                            argument.  The null argument may be changed with
  5354.                            the "-n char" option (See below).  For example,
  5355.                            query('-d tabs Enter tabs:') will cause the tabs
  5356.                            command to be executed with no argument which
  5357.                            places the current value on the command line.  This
  5358.                            command line value is used as the default value of
  5359.                            the prompt.
  5360.  
  5361.         -di command        Get default value by executing command with a null
  5362.                            argument unless previous input value can be
  5363.                            retrieved.
  5364.  
  5365.         -y                 Restrict user input to Y/N.  If -v option follows,
  5366.                            variable value is converted from 1/0 to Y/N.  If -v
  5367.                            option is specified users response of Y/N is
  5368.                            converted to 1/0 and placed in the variable upon
  5369.                            successful completion of fillin panel.  For
  5370.                            example,
  5371.  
  5372.                            query('-q -y -vx def-top-bottom-style '||
  5373.                                  'Preserve column position [Yes,No]:')
  5374.  
  5375.                            IMPORTANT: -y option must appear before -v or
  5376.                                       -vx options.
  5377.  
  5378.         -v variable        Get default value from variable.  On valid user
  5379.                            response variable is set to users response.
  5380.                            Don't forget to specify the -q option to quit
  5381.                            the query return buffer if you just want to set
  5382.                            the value of the variable.
  5383.         -vx variable       Get default value from variable and set
  5384.                            retrieve command (-x option) to "set-var
  5385.                            variable". On valid user response variable is
  5386.                            set to users response. Don't forget to specify
  5387.                            the -q option to quit the query return buffer
  5388.                            if you just want to set the value of the variable.
  5389.  
  5390.         -w                 Separate default value into several words.
  5391.  
  5392.         -c char-set        Restrict user input to character in char-set.  For
  5393.                            example "-c yn" restricts the users input to
  5394.                            words that start with y or n.
  5395.         -r n1,n2           Restrict user input to integer range n1..n2.
  5396.                            For example,
  5397.  
  5398.                            query('-q -r 0,999999999 '||
  5399.                                  '-vx def-read-ahead-lines '||
  5400.                                  'Read ahead lines:')
  5401.  
  5402.         -n char            Use char as the null argument for the -d
  5403.                            option. For example,
  5404.  
  5405.                            query("-n < -d load Load macro module:")
  5406.  
  5407.  
  5408.         -s subtitle_text:  Subtitle text for window.
  5409.         -t title_text:     Title text for window.
  5410.         -h help_text:      Help text displayed when F1 is pressed.  If
  5411.                            help_text starts with a ".", help text is assumed to
  5412.                            specify a help item in "slick.doc". For example,
  5413.                            "-h .tabs command:" specifies the help item
  5414.                            for the tabs command in "slick.doc".  If help_text
  5415.                            is not specified but either the -d or -x options
  5416.                            are specified, help on the command is assumed.
  5417.                            For example,
  5418.  
  5419.                            query('-d tabs Enter tabs:')
  5420.                                   is identical to
  5421.                            query('-d tabs -h .tabs command: Enter tabs:')
  5422.                                   is identical to
  5423.                            query('-d tabs Enter tabs:','','',
  5424.                                  '.tabs command')
  5425.  
  5426.         -e proc_name[:word]   Command or procedure to call to check input
  5427.                               field.  The first parameter passed to
  5428.                               proc_name is the users response for the
  5429.                               input field.  The second parameter will be
  5430.                               word if specified.  This function must
  5431.                               return 0 if user input values are O.K.
  5432.  
  5433.         -@                    Separate command line retrieval and query
  5434.                               argument retrieval.  Effects single
  5435.                               argument query only.
  5436.  
  5437.         - space string        When the '-' is followed by a space all
  5438.                               characters after the space are considered
  5439.                               part of the prompt.
  5440.  
  5441.  
  5442.    When the -x ,-d, -di, or -vx options are not given, the users response
  5443.    is not entered into the command retrieve buffer.
  5444.  
  5445.    Limitations:  default_value may not contain the ':' character.
  5446.  
  5447.  
  5448.    Examples
  5449.  
  5450.       /* Command line style.  You may invoke query from the command */
  5451.       /* line for testing purposes.  Note that in this case the -q */
  5452.       /* option is necessary. If not given, the hidden window group */
  5453.       /* would fill up with buffers containing the results of queries. */
  5454.       'query -q -d write-state save configuration to:'
  5455.  
  5456.       /* Read two input values. No retrieval. */
  5457.       status=query('-h Help text for prompts: '||
  5458.                    '-i FILE Enter file name::'||
  5459.                    '-i ENV Enter environment variable name:')
  5460.       if isnumber(status) then /* User abort or error? */
  5461.          return(status)
  5462.       endif
  5463.       parse value status with . . query_view_id
  5464.       get_view_id view_id
  5465.       activate_view query_view_id
  5466.       .line=.Noflines%2+1
  5467.       get_line file_name
  5468.       down;get_line env_name
  5469.       quit_view
  5470.       activate_view view_id
  5471.       messageNwait('file-name='file_name' env-name='env_name)
  5472.  
  5473.       /* Read/set variable input value and get tabs value.
  5474.       /* No retrieval (-p). */
  5475.       status=query('-p -h Help text for prompts: '||
  5476.                    '-v def-read-ahead-lines Read ahead line count::'||
  5477.                    '-d tabs -e check-tabs Enter tab stops:')
  5478.       if isnumber(status) then /* User abort or error? */
  5479.          return(status)
  5480.       endif
  5481.       parse value status with . . query_view_id
  5482.       get_view_id view_id
  5483.       activate_view query_view_id
  5484.       .line=.Noflines%2+1
  5485.       /* Skip parameter 1.  Variable has already been set. */
  5486.       down;get_line env_name
  5487.       quit_view
  5488.       activate_view view_id
  5489.       messageNwait('env-name='env_name)
  5490.  
  5491.       /* Read/set variable input values. No retrieval (-p). */
  5492.       status=query('-p -h Help text for prompts: '||
  5493.                    '-r 0,999999999 -v def-read-ahead-lines'||
  5494.                    ' Read ahead line count::'||
  5495.                    '-d tabs -e check-tabs Enter tab stops:')
  5496.       if isnumber(status) then /* User abort or error? */
  5497.          return(status)
  5498.       endif
  5499.       parse value status with . . query_view_id
  5500.       get_view_id view_id
  5501.       activate_view query_view_id
  5502.       .line=.Noflines%2+1
  5503.       get_line file_name
  5504.       down;get_line env_name
  5505.       quit_view
  5506.       activate_view view_id
  5507.       messageNwait('file-name='file_name' env-name='env_name)
  5508.  
  5509.  
  5510.    QUERY menus may be defined in SLICK.MNU as follows
  5511.  
  5512.       :menu_name query
  5513.       title;subtitle
  5514.       prompt
  5515.       prompt
  5516.       prompt
  5517.       ...
  5518.  
  5519.    Example
  5520.  
  5521.       :long_query query
  5522.       Fill in prompts;Enter=Select  Esc=Cancel  F1=Help
  5523.       -i FILE  -             Filename:
  5524.       -i ENV   - Environment variable:
  5525.       -i MACRO -       keyboard macro:
  5526.  
  5527.  
  5528.  
  5529. (command,buffer): Q,QUIT
  5530.  
  5531.    Removes the buffer from the active window group.  If the buffer is
  5532.    modified, you will be prompted whether you wish to throw away the
  5533.    changes.  If the buffer name starts with a '.' such as ".killed" or
  5534.    ".command" no prompt is displayed.  By convention, a buffer that starts
  5535.    with a dot is a temp file that is safe to remove.  When there are
  5536.    no more buffers in the current window group, the editor exits.  Otherwise
  5537.    the previous buffer becomes active.
  5538.  
  5539.  
  5540. (misc,language): QUIET_SHELL  command
  5541.  
  5542.    Normally, when an external program is executed, the screen is cleared.
  5543.    When the command is prefixed with the QUIET_SHELL primitive, the screen
  5544.    is not cleared.
  5545.  
  5546. (command,window): QUIT-VIEW
  5547.  
  5548.    Removes view of current buffer from active window.  No check is
  5549.    performed to see if buffer needs to be saved.
  5550.  
  5551.    For an explanation of how windows,views, and buffers are related, type
  5552.    "help windows-structure" on command line.
  5553.  
  5554. (built-in,window): QUIT_VIEW
  5555.  
  5556.    For an explanation of how windows,views, and buffers are related,
  5557.    type "help windows-structure" on command line.
  5558.  
  5559.    A view holds the information necessary for the editor to remember your
  5560.    location and scroll position in a buffer.  Each window has a ring of
  5561.    views to buffers.  When you have more than one window looking at the
  5562.    same buffer.  The windows have different views of that buffer.
  5563.    QUIT_VIEW removes the active view from the window view ring.  The
  5564.    previous view becomes the new in the active view.  When QUIT_VIEW is
  5565.    executed and only one view exists in the active window, the window is
  5566.    removed from the active window group.  If no more windows exist the
  5567.    active window group is removed.  The editor exits when the only window
  5568.    group left is the hidden window group.  The hidden window group holds
  5569.    the command retrieve file ".command".
  5570.  
  5571.    See also  GET_VIEW_ID, ACTIVATE_VIEW, NEXT_VIEW, PREV_VIEW,
  5572.              LOAD_FILES, NEXT_WINDOW, PREV_WINDOW
  5573.  
  5574. (built-in,keyboard): RAW_LASTKEY()
  5575.  
  5576.    Returns a system dependent string representation of the last key
  5577.    returned from GETKEY or TESTKEY.  For DOS and OS/2, a string of length
  5578.    two is returned.  The first character is the character code, and the
  5579.    second character is the scan code.  THIS FUNCTION WILL NOT RETURN KEYS
  5580.    FROM A KEYBOARD MACRO that is running.
  5581.  
  5582.    See also   GETKEY, TESTKEY, LASTKEY, CALL_KEY, KEY2NAME,
  5583.               KEY2INDEX, INDEX2KEY, LIST_BINDINGS, KEYTAB_INDEX,
  5584.               SET_KEYTAB_POINTER
  5585.  
  5586.  
  5587. (misc,language): RC
  5588.  
  5589.    The RC variable is a predefined UNIVERSAL (meaning accessible from all
  5590.    loaded modules) variable.  By convention, built-in functions that have
  5591.    error conditions, set the RC variable to correspond to the error.
  5592.    Built-in functions which do not return a value but do set RC, will have
  5593.    a pending message.  For example, the built-in functions MARK_LINE and
  5594.    INSERT_FILE_LIST have pending messages and ALLOC_MARK does not.  For a
  5595.    complete list of error codes, look in the file "rc.sh".
  5596.  
  5597.    Example
  5598.       unmark;copy_mark    /* Cause a pending message which will get */
  5599.                           /* displayed when the macro finishes. */
  5600.                           /* RC is set by COPY_MARK to          */
  5601.                           /* TEXT_NOT_MARKED_RC.                */
  5602.  
  5603. (command,file): READ-LIST filename
  5604.  
  5605.    Appends the list specified to the current file.  All columns are
  5606.    updated to the current file info.  Files read are typically in the file
  5607.    manager column format and can be written using WRITE-LIST, PUT, SAVE,
  5608.    or FILE commands.  A file list of absolute or relative file names
  5609.    starting in column one is accepted.
  5610.  
  5611. (command,mark): REFLOW-MARK
  5612.  
  5613.    Reflows the text within the visible mark according to the margin
  5614.    settings.  Character mark is not supported.
  5615.  
  5616.    See also  MARGINS, REFLOW-PARAGRAPH
  5617.  
  5618. (built-in,mark): REFLOW_MARK [mark_id]
  5619.  
  5620.    Reformats the mark specified according to the current margin settings.
  5621.    If the buffer containing the specified mark is active when this
  5622.    function is invoked, the resulting lines are inserted after the end of
  5623.    the mark.  Otherwise the resulting lines are inserted after the cursor.
  5624.    Character mark is not supported.
  5625.  
  5626.    See also   GET_REFLOW_POSITION
  5627.  
  5628. (command,misc): REFLOW-PARAGRAPH
  5629.  
  5630.    Reflows the text of the current paragraph according to the margin
  5631.    settings.  Paragraphs are assumed to be separated by at least one
  5632.    blank line.
  5633.  
  5634.    See also  MARGINS, REFLOW-MARK
  5635.  
  5636. (built-in,display): REFRESH
  5637.  
  5638.    Closes the shell window and updates those portions of the editor screen
  5639.    which need updating.
  5640.  
  5641. (built-in,file): RELATIVE(filename)
  5642.  
  5643.    Returns filename with relative path specification.
  5644.  
  5645.    Example
  5646.  
  5647.       /* Assuming current working directory is 'c:\slick' */
  5648.  
  5649.       relative('c:\slick\s.exe') == 's.exe'
  5650.       relative('c:\autoexec.bat')== 'c:\autoexec.bat'
  5651.  
  5652.    See also  ABSOLUTE
  5653.  
  5654. (command,search): REPEAT-SEARCH
  5655.  
  5656.    Repeats a search initiated by a search command in same direction and
  5657.    with the same search options.
  5658.  
  5659.    See also  /, C, I-SEARCH
  5660.  
  5661. (built-in,search): REPEAT_SEARCH [options [,start_col]]
  5662.  
  5663.    Repeats the last search.  Multiple search options may be specified
  5664.    which have the following meaning:
  5665.  
  5666.        '+'     Forward search
  5667.        '-'     Reverse search
  5668.        '<'     Place cursor at beginning of string found
  5669.        '>'     Place cursor after end of string found
  5670.        'E'     Case sensitive search
  5671.        'I'     Case insensitive search
  5672.        'M'     Search within visible mark.
  5673.        'R'     Search for regular expression
  5674.        'W'     Limits search to words.  Used to search and replace
  5675.                variable names. The default word characters are
  5676.                [A-Za-z0-9_$].
  5677.        'W=regular-expression'
  5678.                Specifies a word search and sets the default word
  5679.                characters to those matched by the regular-expression
  5680.                given.
  5681.  
  5682.    Any search option not specified takes on the same value as the last
  5683.    search executed.  The exact start column of the search may be specified
  5684.    by start_col.  If start_col is not given, searching continues so that
  5685.    the string found by the last search command is not found again.
  5686.  
  5687.    Example
  5688.  
  5689.        search  'def'
  5690.        loop
  5691.           if rc then leave endif
  5692.           if .col=1 then
  5693.              rc=0;leave   /* Found def in column 1 */
  5694.           endif
  5695.           repeat_search
  5696.        endloop
  5697.  
  5698.    See also    SEARCH, MARK_MATCH, MATCH_LENGTH, SEARCH_REPLACE,
  5699.                SAVE_SEARCH, RESTORE_SEARCH, SEARCH_CASE
  5700.  
  5701. (built-in,misc): REPLACE_LINE  line
  5702.  
  5703.    Sets the current line of the current buffer to line.
  5704.  
  5705.    See also  GET_LINE, INSERT_LINE, DELETE_LINE
  5706.  
  5707. (command,misc): RESET-NEXT-ERROR
  5708.  
  5709.    Sets the NEXT-ERROR commands start search position to the end of the
  5710.    compiler error message buffer.  For DOS, this command will quit the
  5711.    '$errors.tmp' file.  For OS/2, the NEXT-ERROR commands invisible mark
  5712.    is moved to the end of the concurrent process buffer called ".process".
  5713.  
  5714.    See also  SET-NEXT-ERROR
  5715.  
  5716. (command,misc): RESTORE
  5717.  
  5718.    Resumes the last edit session which was terminated by the XDOS or
  5719.    SAFE-EXIT command.  The SAFE-EXIT command will save the window/buffer
  5720.    configuration only if AUTO-RESTORE is set to on.  When AUTO-RESTORE is
  5721.    on and the editor is invoked with no file or command parameters, the
  5722.    RESTORE command is automatically invoked.  Use the AUTO-RESTORE command
  5723.    (CONFIG, "File load/save options...", "Auto restore") to change the
  5724.    auto-restore setting.  The files "$window.slk" and "$command.slk"
  5725.    contain the information necessary for the restore command to setup the
  5726.    window sizes and previous buffer positions.  The ".command" command
  5727.    retrieve buffer is initialized to the contents of the "$command.slk"
  5728.    file.
  5729.  
  5730.    See also  XDOS, AUTO-RESTORE, SAVE-WINDOW-CONFIG
  5731.  
  5732. (built-in,search): RESTORE_SEARCH search_string,flags,word_re
  5733.  
  5734.    Restores the current search data.  The built-in function SAVE_SEARCH
  5735.    may be called to return the current search data which is used by the
  5736.    built-in functions REPEAT_SEARCH, MARK_MATCH, and MATCH_LENGTH.  Flags
  5737.    is a number corresponding to the search option settings as follows:
  5738.  
  5739.               IGNORE_CASE_SEARCH                1
  5740.               MARK_SEARCH                       2
  5741.               POSITION_ON_LAST_CHAR_SEARCH      4
  5742.               REVERSE_SEARCH                    8
  5743.               RE_SEARCH                         16
  5744.               WORD_SEARCH                       32
  5745.  
  5746.    See also   REPEAT_SEARCH, MARK_MATCH, MATCH_LENGTH, SEARCH_REPLACE,
  5747.               SAVE_SEARCH, SEARCH, SEARCH_CASE
  5748.  
  5749. (built-in,misc): RESUME
  5750.  
  5751.    Returns execution to the statement after the last SUSPEND statement.
  5752.    This function is used in conjunction with SUSPEND to check for critical
  5753.    errors which halt the interpreter.  Critical errors which halt the
  5754.    interpreter automatically issue a RESUME.  If a SUSPEND was issued,
  5755.    the following statement receives control and can check the RC variable
  5756.    to determine the reason for the RESUME.  Before executing the RESUME
  5757.    statement you will want to set the RC variable to a positive value to
  5758.    distinguish your resume codes from internal error codes which are
  5759.    negative.
  5760.  
  5761.    Example
  5762.  
  5763.       suspend         /* rc is set to 0 by SUSPEND in first pass. */
  5764.       if rc then
  5765.         if rc=1 then  /* Normal return? */
  5766.            return(0)
  5767.         endif
  5768.         message 'Please specify floating point number'
  5769.         return(1)
  5770.       endif
  5771.       call arg(1)+1         /* If arg(1) not float, run time error */
  5772.                             /* will occur. */
  5773.       rc=1
  5774.       resume
  5775.  
  5776.    See also  SUSPEND
  5777.  
  5778. (command,cmdline): RETRIEVE-NEXT
  5779.  
  5780.    Moves the line position of the retrieve buffer ".command", one line
  5781.    down and places the contents of the line on the command line.  If the
  5782.    current line is the last line of the buffer, the cursor is placed on
  5783.    the first line and the contents of the first line are placed on the
  5784.    command line.  When a command is executed, the current line of the
  5785.    retrieve buffer becomes the last line.
  5786.  
  5787.    See also  RETRIEVE-PREV
  5788.  
  5789. (built-in,cmdline): RETRIEVE_NEXT
  5790.  
  5791.    Moves the line position of the retrieve buffer ".command", one line
  5792.    down and places the contents of the line on the command line.  If the
  5793.    current line is the last line of the buffer, the cursor is placed on
  5794.    the first line and the contents of the first line are placed on the
  5795.    command line.  When EXECUTE is issued, the current line of the retrieve
  5796.    buffer becomes the last line.
  5797.  
  5798.  
  5799.    See also  RETRIEVE_PREV
  5800.  
  5801. (command,cmdline): RETRIEVE-PREV
  5802.  
  5803.    Moves the line position of the retrieve buffer ".command", one line up
  5804.    and places the contents of the line on the command line.  If the
  5805.    current line is the first line of the buffer, the cursor is placed on
  5806.    the last line and the contents of the last line are placed on the
  5807.    command line.  When a command is executed, the current line of the
  5808.    retrieve buffer becomes the last line.  However, the first execution of
  5809.    RETRIEVE-PREV after the command is executed will place the contents of
  5810.    the last line on the command line and not move the line position.
  5811.  
  5812.  
  5813.    See also  RETRIEVE-NEXT
  5814.  
  5815. (built-in,cmdline): RETRIEVE_PREV
  5816.  
  5817.    Moves the line position of the retrieve buffer ".command", one line
  5818.    up and places the contents of the line on the command line.  If the
  5819.    current line is the first line of the buffer, the cursor is placed on
  5820.    the last line and the contents of the last line are placed on the
  5821.    command line.  When EXECUTE is issued, the current line of the retrieve
  5822.    buffer becomes the last line.  However, the first execution of
  5823.    RETRIEVE_PREV after EXECUTE is issued will place the contents of the
  5824.    last line on the command line and not move the line position.
  5825.  
  5826.  
  5827.    See also  RETRIEVE_NEXT
  5828.  
  5829. (command,misc): RETURN string
  5830.  
  5831.    Sets RC to string.  Used to return a command to be executed by the MENU
  5832.    command.
  5833.  
  5834.    See also  MENU
  5835.  
  5836. (built-in,misc): RETURN [expression]
  5837.  
  5838.     Returns expression to caller via RC or interpreter stack.
  5839.  
  5840.    Procedures that are defined by DEFC, DEFPROC, and DEFMAIN, require the
  5841.    expression parameter.  Procedures that are defined by DEFINIT and
  5842.    DEFLOAD may not have the expression parameter.  DEFMAIN returns its
  5843.    result in RC.  DEFPROC returns its result on the interpreter stack.
  5844.    Depending upon how a DEFC procedure is called, it may return the result
  5845.    either way.  Type "help defc" on command line and press ENTER for more
  5846.    information on DEFC.
  5847.  
  5848. (command,search): REVERSE-I-SEARCH
  5849.  
  5850.    Starts a reverse incremental search.  Searching takes place as
  5851.    characters are typed.  Press Ctrl-Break to terminate a long search.
  5852.    The following keys take on a different definition during an incremental
  5853.    search:
  5854.  
  5855.        Ctrl-R      Searches in reverse for next occurrence of search
  5856.                    string
  5857.        Ctrl-S      Searches forward for next occurrence of search
  5858.                    string
  5859.        Ctrl-T      Toggles regular expression pattern matching on/off. For
  5860.                    help on regular expressions, see / command.
  5861.        Ctrl-W      Toggles word searching on/off.  See the WORD-CHARS
  5862.                    command for changing the definition of a word.
  5863.  
  5864.  
  5865.    See also  I-SEARCH
  5866.  
  5867. (built-in,cursor): RIGHT
  5868.  
  5869.    Moves the text cursor one position to the right.  Command cursor is not
  5870.    affected.  When the right edge is hit, the text area is smooth
  5871.    scrolled or center scrolled.  See SCROLL_STYLE.
  5872.  
  5873.    See also  LEFT
  5874.  
  5875. (built-in,file): RMDIR path
  5876.  
  5877.    Removes directory specified by path.  If successful, RC is set to zero.
  5878.    Otherwise RC is set to one of the return codes in the file "rc.sh".
  5879.  
  5880. (command,keyboard): ROOT-KEYDEF
  5881.  
  5882.    Temporarily switches to fundamental mode for the next key press.  Useful
  5883.    for getting to a fundamental mode key binding when the current mode
  5884.    has changed the binding of that key.
  5885.  
  5886. (built-in,misc): RUBOUT
  5887.  
  5888.    Deletes character if any to left of text area cursor and moves cursor
  5889.    to left. When left edge is hit, text area is smooth scrolled or center
  5890.    scrolled.  See SCROLL_STYLE.
  5891.  
  5892. (command,misc): SAFE-EXIT
  5893.  
  5894.    Exits editor.  If any files need to be saved, the number of buffers
  5895.    which need to be saved is displayed and you are asked whether you want
  5896.    to exit any way.
  5897.  
  5898. (command,file): SAVE [command_line]
  5899.  
  5900.    Writes contents of the active buffer to the file name specified.  If no
  5901.    file name is specified, the current buffer name is used.  The
  5902.    SAVE-OPTIONS command may be used to specify default options for the
  5903.    SAVE command.  See option meanings below.
  5904.  
  5905.    command_line may contain an output filename and any of the
  5906.    following switches:
  5907.  
  5908.         + or -O         Overwrite destination switch (no backup). Useful
  5909.                         for writing a file to a device such as the
  5910.                         printer or saving disk space.  Default is off.
  5911.  
  5912.         + or -Z         Append end of file marker Ctrl-Z.  Default is on.
  5913.  
  5914.         + or -T         Compress saved file with tabs.  Quoted strings
  5915.                         are left unchanged.  Always uses tab
  5916.                         increments of 8.  Default is off.
  5917.  
  5918.         + or -E         Turn on/off expand tabs to spaces switch.  Default
  5919.                         is off.
  5920.  
  5921.  
  5922.         + or -B         Binary switch. Save file without carriage return,
  5923.                         line feeds, or end of file marker. Defaults to
  5924.                         off.
  5925.  
  5926.         + or -A         Convert dest filename to absolute.  Default is
  5927.                         on. This option is currently used to write files
  5928.                         to device names such as PRN.  For example,
  5929.                         "save +o -a +e prn" sends the current buffer
  5930.                         to the printer.
  5931.  
  5932.         +D,-D,+DK,-DK   These options specify the backup style.  The
  5933.                         default backup style is +D.  The backup styles
  5934.                         are:
  5935.  
  5936.  
  5937.           +D            Write backup files to a backup directory.  The
  5938.                         default backup directory is "\slick\backup\". You
  5939.                         may define an alterate backup directory by
  5940.                         defining an environment variable call
  5941.                         SLICKBACKUP.  The SLICKBACKUP environment variable
  5942.                         must not contain a drive specifier and must end
  5943.                         with a '\' character. The backup file gets the
  5944.                         same name part as the destination file. For
  5945.                         example, given the destination file
  5946.                         "c:\project\test.c", the backup  file will
  5947.                         be "c:\slick\backup\test.c". This option
  5948.                         is NOT recommended if you are running SLICK on
  5949.                         a NETWORK.
  5950.  
  5951.           -D            Write backup files to a directory derived from
  5952.                         concatenating a backup directory with
  5953.                         the path and name of the destination file. The
  5954.                         default backup directory is "\slick\backup\". You
  5955.                         may define an alterate backup directory by
  5956.                         defining an environment variable call
  5957.                         SLICKBACKUP.  The SLICKBACKUP environment variable
  5958.                         must not contain a drive specifier and must end
  5959.                         with a '\' character.  For example, given the
  5960.                         destination file "c:\project\test.C", the backup
  5961.                         file will be "c:\slick\backup\project\test.c".
  5962.                         For a network, you may need to create the directory
  5963.                         with appropriate access rights manually before
  5964.                         saving a file.
  5965.  
  5966.  
  5967.           +DK,-DK       Write backup files to a backup directory off
  5968.                         the same directory as the destination file.
  5969.                         +DK or -DK specifies this style.  For example, given
  5970.                         the destination file "c:\project\test.c", the backup
  5971.                         file will be "c:\project\backup\test.c".  Unlike the
  5972.                         other backup options, SLICK should have no problems
  5973.                         creating the BACKUP directory with the correct access
  5974.                         rights for a network.
  5975.  
  5976.  
  5977.    The internal variable .modify is turned off if the output filename is
  5978.    the same as the current file name.  If no filename is specified the
  5979.    current buffer name is used.
  5980.  
  5981.    Example
  5982.       save +O -A +E PRN      - save a file to the printer
  5983.  
  5984.    See also  FILE, PRINT
  5985.  
  5986. (command,file): SAVE-OPTIONS  +O|-O  +D|-D +Z|-Z +E|-E +S|-S
  5987.  
  5988.    The SAVE-OPTIONS command specifies the default options for the commands
  5989.    SAVE and FILE.  If you want different SAVE-OPTIONS for different
  5990.    disk drives, define an environment variable called SLICKSAVE and
  5991.    specify each drive followed by the options.  For example, "SET
  5992.    SLICKSAVE= a: +O b:+O" specifies no backup for floppy drives A and B.
  5993.  
  5994.    The option letters have the following meaning:
  5995.  
  5996.       + or -O        Overwrite destination.  When on, no backup of
  5997.                      destination file is created.  Normally a backup of
  5998.                      the destination file is created the first time the
  5999.                      destination file is overwritten.
  6000.  
  6001.       + or -Z        Add eof character.
  6002.       + or -E        Expand tabs to spaces.
  6003.       + or -S        Strip trailing spaces on each line.
  6004.       +D,-D,+DK,-DK  These options specify the backup style.  The
  6005.                      default backup style is +D.  The backup styles
  6006.                      are:
  6007.  
  6008.           +D         Write backup files to a backup directory.  The
  6009.                      default backup directory is "\slick\backup\". You
  6010.                      may define an alterate backup directory by
  6011.                      defining an environment variable call
  6012.                      SLICKBACKUP.  The SLICKBACKUP environment variable
  6013.                      must not contain a drive specifier and must end
  6014.                      with a '\' character. The backup file gets the
  6015.                      same name part as the destination file. For
  6016.                      example, given the destination file
  6017.                      "c:\project\test.c", the backup  file will
  6018.                      be "c:\slick\backup\test.c". This option
  6019.                      is NOT recommended if you are running SLICK on
  6020.                      a NETWORK.
  6021.  
  6022.           -D         Write backup files to a directory derived from
  6023.                      concatenating a backup directory with
  6024.                      the path and name of the destination file. The
  6025.                      default backup directory is "\slick\backup\". You
  6026.                      may define an alterate backup directory by
  6027.                      defining an environment variable call
  6028.                      SLICKBACKUP.  The SLICKBACKUP environment variable
  6029.                      must not contain a drive specifier and must end
  6030.                      with a '\' character.  For example, given the
  6031.                      destination file "c:\project\test.C", the backup
  6032.                      file will be "c:\slick\backup\project\test.c".
  6033.                      For a network, you may need to create the directory
  6034.                      with appropriate access rights manually before
  6035.                      saving a file.
  6036.           +DK,-DK    Write backup files to a backup directory off
  6037.                      the same directory as the destination file.
  6038.                      +DK or -DK specifies this style.  For example, given
  6039.                      the destination file "c:\project\test.c", the backup
  6040.                      file will be "c:\project\backup\test.c".  Unlike the
  6041.                      other backup options, SLICK should have no problems
  6042.                      creating the BACKUP directory with the correct access
  6043.                      rights for a network.
  6044.  
  6045.  
  6046. (built-in,search): SAVE_SEARCH  search_string,flags,word_re
  6047.  
  6048.    Saves the current search data.  The built-in function RESTORE_SEARCH is
  6049.    called with the same data to restore the search data which is used by
  6050.    the built-in functions REPEAT_SEARCH, MARK_MATCH, and MATCH_LENGTH.
  6051.    Flags is a number corresponding to the search option settings as
  6052.    follows:
  6053.  
  6054.               IGNORE_CASE_SEARCH                1
  6055.               MARK_SEARCH                       2
  6056.               POSITION_ON_LAST_CHAR_SEARCH      4
  6057.               REVERSE_SEARCH                    8
  6058.               RE_SEARCH                         16
  6059.               WORD_SEARCH                       32
  6060.  
  6061.    Example
  6062.       search 'test'
  6063.       save_search  string,options,word_re
  6064.       search 'xyz'
  6065.       if rc then
  6066.          messageNwait("Can't find xyz")
  6067.       endif
  6068.       restore_search  string,options,word_re
  6069.       repeat_search                  /* Repeats search for 'test' */
  6070.  
  6071.    See also   REPEAT_SEARCH, MARK_MATCH, MATCH_LENGTH, SEARCH_REPLACE,
  6072.               RESTORE_SEARCH, SEARCH, SEARCH_CASE
  6073.  
  6074. (command,misc): SAVE-WINDOW-CONFIG
  6075.  
  6076.    Saves the current edit session so that it may be resumed later by the
  6077.    RESTORE command.  Two files are created in the current directory called
  6078.    "$window.slk" and "$command.slk" which contain the window
  6079.    configuration, buffer positions, and command retrieve buffer.  Invoke
  6080.    SLICK with the "-r restore" parameters to restore the edit session.
  6081.    Typically this command is called by the XDOS command to save the window
  6082.    configuration, save buffer positions, save the command retrieve buffer,
  6083.    and exit the editor.
  6084.  
  6085.    See also   XDOS, RESTORE, AUTO-RESTORE
  6086.  
  6087. (command,display): SAY string
  6088.  
  6089.    Displays string in shell window and opens shell window if it is not
  6090.    already open.  Cursor is positioned on next line of screen.  Useful for
  6091.    testing the commands FOR-ALL, FOR-MARK, FOR-SELECT, and FOR-DIR.
  6092.  
  6093.    Example
  6094.  
  6095.       for-all say *L
  6096.  
  6097.    See also   SAYS, PAUSE, WRITE_XY, GET_CURSOR_XY, SET_CURSOR_XY,
  6098.               FOR-ALL, FOR-MARK, FOR-SELECT, FOR-DIR
  6099.  
  6100. (built-in,display): SAY string
  6101.  
  6102.    Displays string in shell window and opens shell window if it is not
  6103.    already open.  Cursor is positioned on next line of screen.  SAY does
  6104.    not return a value.  The following procedures open the shell window.
  6105.  
  6106.       expression (Where expression evaluates to program on disk), PAUSE,
  6107.       SAYS, SAY
  6108.  
  6109.    Normally opening the shell window will clear the screen and position
  6110.    the cursor at the top left (0,0) of the screen.  However, if the editor
  6111.    has not yet performed a full screen refresh, the screen will not be
  6112.    cleared.
  6113.  
  6114.    Example
  6115.  
  6116.      say 'Display this'
  6117.      say 'Now display this below'
  6118.      pause
  6119.  
  6120.    See also  SAYS, PAUSE, WRITE_XY, GET_CURSOR_XY, SET_CURSOR_XY,
  6121.              SHELL_STATE
  6122.  
  6123. (built-in,display): SAYS string
  6124.  
  6125.    Displays string in shell window and opens shell window if it is not
  6126.    already open.  Cursor is positioned after end of string.  SAYS does not
  6127.    return a value.  The following procedures open the shell window.
  6128.  
  6129.       expression (Where expression evaluates to program on disk), PAUSE,
  6130.       SAYS, SAY
  6131.  
  6132.    Normally opening the shell window will clear the screen and position
  6133.    the cursor at the top left (0,0) of screen.  However, if the editor has
  6134.    not yet performed a full screen refresh, the screen will not be
  6135.    cleared.
  6136.  
  6137.    Example
  6138.  
  6139.      says 'Display '
  6140.      says 'this'
  6141.      pause
  6142.  
  6143.    See also  SAY, PAUSE, WRITE_XY, GET_CURSOR_XY, SET_CURSOR_XY,
  6144.              SHELL_STATE
  6145.  
  6146. (built-in,display): SCREEN_HEIGHT()
  6147.  
  6148.    Returns number of character rows on physical display.
  6149.  
  6150. (built-in,display): SCREEN_WIDTH()
  6151.  
  6152.    Returns character columns of rows on physical display.
  6153.  
  6154. (command,cursor): SCROLL-DOWN
  6155.  
  6156.    Scrolls the text page one line up.
  6157.  
  6158. (command,cursor): SCROLL-LEFT
  6159.  
  6160.    Scrolls the text page one column to right.
  6161.  
  6162. (command,cursor): SCROLL-RIGHT
  6163.  
  6164.    Scrolls the text page one column to left.
  6165.  
  6166. (command,cursor): SCROLL-STYLE [C|S [number]]
  6167.  
  6168.    Sets scroll style to center or smooth scrolling.  If no argument is
  6169.    given, the current value is placed on the command line for editing.
  6170.    number specifies how close the cursor may get to the top or bottom
  6171.    of the window before scrolling occurs.
  6172.  
  6173.    Example
  6174.  
  6175.        C                Specifies center scrolling when top or bottom of
  6176.                         window is reached.
  6177.        C 0              Specifies center scrolling when top or bottom of
  6178.                         window is reached.
  6179.        C 3              Specifies center scrolling when cursor is within
  6180.                         3 lines of the top or bottom of the window.
  6181.        S 2              Specifies smooth scrolling when cursor is within
  6182.                         3 lines of the top or bottom of the window.
  6183.  
  6184. (built-in,cursor): SCROLL_STYLE  ['C'|'S' [number]]
  6185.  
  6186.    If the 'C' argument is specified the scroll style is set to center
  6187.    scrolling.  Otherwise it is set to smooth scrolling.  The scroll style
  6188.    affects the position of the cursor for primitives which cause the
  6189.    cursor to move to text that is not in view.  number specifies how close
  6190.    the cursor may get to the top or bottom of the window before
  6191.    scrolling occurs.  For the BOTTOM primitive, center scrolling style
  6192.    will also cause the bottom line of the buffer to be centered when the
  6193.    end of the bottom line is within view.  Scroll style affects:
  6194.  
  6195.      LEFT, RIGHT, UP, DOWN, RUBOUT, TAB, BACKTAB,
  6196.      COMMAND_LEFT, COMMAND_RIGHT, COMMAND_RUBOUT,
  6197.      SET_COMMAND, INSERT_LINE, KEYIN
  6198.  
  6199.    and any macro procedure or command which executes one of these
  6200.    primitives.
  6201.  
  6202. (command,cursor): SCROLL-UP
  6203.  
  6204.    Scrolls the text page one line down.
  6205.  
  6206. (built-in,search): SEARCH  search_string [,options[,
  6207.                            replace_string[, var Nofchanges]]]
  6208.  
  6209.    Searches for search_string specified.  If replace_string is specified a
  6210.    prompted search and replace is performed.  The number of changes is
  6211.    returned in the optional Nofchanges variable.  Press the Ctrl-Break key
  6212.    to terminate a long search.  Multiple search options having the
  6213.    following meaning may be specified:
  6214.  
  6215.        '+'     Forward search
  6216.        '-'     Reverse search
  6217.        '*'     Search and replace without prompting
  6218.        '<'     Place cursor at beginning of string found
  6219.        '>'     Place cursor after end of string found
  6220.        'E'     Case sensitive search
  6221.        'I'     Case insensitive search
  6222.        'M'     Search within visible mark.
  6223.        'R'     Interprets search_string to be a regular expression.
  6224.                replace_string may specify match groups with a backslash
  6225.                followed by a group number 0-9. Count the left braces '{'
  6226.                to determine a group number.  The first match group is
  6227.                "\0".  See / command for syntax of regular expression.
  6228.        'W'     Limits search to words.  Used to search and replace
  6229.                variable names. The default word characters are
  6230.                [A-Za-z0-9_$].
  6231.        'W=regular-expression'
  6232.                Specifies a word search and sets the default word
  6233.                characters to those matched by the regular-expression
  6234.                given.
  6235.  
  6236.    When case sensitivity options 'E' or 'I' are not specified, the default
  6237.    search case set by the SEARCH-CASE command is used.  The search_string
  6238.    is not interpreted as a regular expression unless the 'R' option is
  6239.    specified.
  6240.  
  6241.    Example
  6242.      /* Search and replace without prompting. */
  6243.      search  'pathsearch','*','path_search',Nofchanges
  6244.      messageNwait(Nofchanges' changes')
  6245.      /* Search and replace without prompting within the marked area. */
  6246.      search  'pathsearch','*M','path_search'
  6247.  
  6248.    See also   REPEAT_SEARCH, MARK_MATCH, MATCH_LENGTH, SEARCH_REPLACE,
  6249.               SAVE_SEARCH, RESTORE_SEARCH, SEARCH_CASE
  6250.  
  6251. (built-in,search): SEARCH_CASE(['E'|'I'])
  6252.  
  6253.    Sets the default search case sensitivity to exact or ignore case and
  6254.    returns current case sensitivity.  'E' specifies case sensitive
  6255.    searching by default.  'I' specifies case insensitive searching by
  6256.    default.  The built-in SEARCH command will default to this case unless
  6257.    the 'E' or 'I' is specified to override the default.  Execute the
  6258.    WRITE-STATE command to save the configuration.
  6259.  
  6260.    See also   REPEAT_SEARCH, MARK_MATCH, MATCH_LENGTH, SEARCH_REPLACE,
  6261.               SAVE_SEARCH, RESTORE_SEARCH, SEARCH
  6262.  
  6263. (command,search): SEARCH-CASE  [E|I]
  6264.  
  6265.    Sets the default search case sensitivity to exact or ignore case.  If
  6266.    no argument is given the current setting is displayed on the command
  6267.    line for editing.  'E' specifies case sensitive searching by default.
  6268.    'I' specifies case insensitive searching by default.  Execute the
  6269.    WRITE-STATE command to save the configuration.
  6270.  
  6271. (built-in,search): SEARCH_REPLACE  replace_string[,'R']
  6272.  
  6273.    Replaces the match found by the last SEARCH or REPEAT_SEARCH with
  6274.    replace_string. If the 'R' option is specified, a search for the next
  6275.    string is performed with the same options and direction specified by
  6276.    the last SEARCH or REPEAT_SEARCH call.
  6277.  
  6278.    See also   REPEAT_SEARCH, MARK_MATCH, MATCH_LENGTH, SEARCH,
  6279.               SAVE_SEARCH, RESTORE_SEARCH, SEARCH_CASE
  6280.  
  6281. (command,file): SELECT-ALL
  6282.  
  6283.    Places the character '>' in column one of all lines of the current
  6284.    buffer.  Used in fileman mode.
  6285.  
  6286.    See also  DIR, LIST
  6287.  
  6288. (command,file): SELECT-ATTR  [R|H|S|A|D]
  6289.  
  6290.    Places the character '>' in column one for all files that have the
  6291.    attribute(s) specified.  If more than one file attribute is given, they
  6292.    must appear in the same order as the attributes column with dashes
  6293.    present if necessary so that a column search match can be performed.
  6294.    Used in fileman mode.
  6295.  
  6296.    See also  DIR, LIST
  6297.  
  6298. (command,file): SELECT-EXT  extension
  6299.  
  6300.    Places the character '>' in column one for all files that have the
  6301.    extension specified.  Used in fileman mode.
  6302.  
  6303.    See also  DIR, LIST
  6304.  
  6305. (command,file): SELECT-MARK
  6306.  
  6307.    Places the character '>' in column one for all the marked lines.  Used
  6308.    in fileman mode.
  6309.  
  6310.    See also  DIR, LIST
  6311.  
  6312. (command,file): SELECT-REVERSE
  6313.  
  6314.    Places the character '>' in column one for each line of the current
  6315.    buffer which does not have a '>' in column one.  For each line of the
  6316.    current buffer which does have the character '>' in column, a space is
  6317.    entered in column one.  Used in fileman mode.
  6318.  
  6319.    See also  DIR, LIST
  6320.  
  6321. (command,misc): SET [env_var] [=] [value]
  6322.  
  6323.    If no arguments are given, a new buffer is created and the current
  6324.    environment is inserted.  The current value of a single environment
  6325.    variable may be retrieved by the name of the environment variable
  6326.    without the '=' or value parameter.  When running the SLICK shell, the
  6327.    current value of the environment variable is inserted into the
  6328.    '.command' retrieve buffer.  To remove an environment variable, specify
  6329.    the name of the environment variable followed by '=' and omit the value
  6330.    parameter.  To replace or insert a value for an environment variable
  6331.    specify all parameters.  'set ?' will list the names of the environment
  6332.    variables.
  6333.  
  6334. (built-in,cmdline): SET_COMMAND  command_text[,column[,leftedge[,prompt[,
  6335.                          popup_x[,popup_y[,popup_width[,popup_color]]]]]]]
  6336.  
  6337.    Be sure to look at the macro function GET_STRING (See module "get.s")
  6338.    and the QUERY command (see help on QUERY command) which allow a macro
  6339.    to read input from the user.
  6340.  
  6341.    SET_COMMAND changes current setting of the command line.  Text of
  6342.    command line is set to command_text.  The scroll position and cursor
  6343.    position are set to leftedge and column respectively.  If column is not
  6344.    within view of the given leftedge, the command text is smooth scrolled
  6345.    or center scrolled into view.  See SCROLL_STYLE.  Leftedge and Column
  6346.    have range 1..MAX_LINE.  If leftedge or column are out of range they
  6347.    are set to MAX_LINE.  The prompt parameter sets the command prompt.
  6348.    The prompt width is truncated if its length is greater than
  6349.    COMMAND_WIDTH -2.  Prompt may only be modified by the SET_COMMAND
  6350.    primitive.
  6351.  
  6352.    The parameters popup_x, popup_y,popup_width and popup_color are ignored
  6353.    if popup_x is less than zero.  Otherwise these parameters specify a
  6354.    pop-up command line.  Parameters popup_x and popup_y have range
  6355.    0..SCREEN_WIDTH()-2 and 0..SCREEN_HEIGHT() and specify the x and y
  6356.    screen position of the command line.  The popup_width parameter has
  6357.    range 1..SCREEN_WIDTH().  The popup_color parameter maybe any color
  6358.    constant from "colors.sh".  Pop-up command lines do not support the
  6359.    prompt parameter.
  6360.  
  6361.    Example
  6362.        command_text='dir '
  6363.        set_command command_text,text_col(command_text)+1
  6364.  
  6365.  
  6366.  
  6367.    See also  COMMAND_STATE, COMMAND_TOGGLE, COMMAND_LEFT, COMMAND_RIGHT,
  6368.              COMMAND_DELETE_CHAR, COMMAND_RUBOUT, EXECUTE, GET_COMMAND,
  6369.              QUERY
  6370.  
  6371. (built-in,display): SET_CURSOR_XY x,y
  6372.  
  6373.    Sets visible cursor coordinates to x and y.  x range is
  6374.    0..SCREEN_WIDTH()-1.  y range is 0..SCREEN_HEIGHT()-1.
  6375.  
  6376. (built-in,misc): SET_ENV name [,value]
  6377.  
  6378.    Assigns value to the environment variable name.  If value is not given,
  6379.    the environment variable is removed from the environment.  RC is set to
  6380.    '0' if successful otherwise RC is set to INTERPRETER_OUT_OF_MEMORY_RC.
  6381.  
  6382.    See also  ENV_MATCH, GET_ENV
  6383.  
  6384. (built-in,keyboard): SET_FKEYTEXT  string[,'S'|'H'|'O']
  6385.  
  6386.    Sets the value of the key table function key text corresponding to
  6387.    "root-keys".  Each key table has its own set of function key text which
  6388.    may be up to 160 characters long.  The options S, H, and O have the
  6389.    following meaning:
  6390.  
  6391.         S          -  Show fkeytext.  Message line and fkeytext line are
  6392.                       on different lines of the screen.
  6393.         H          -  Hide fkeytext.  One line of screen is used as
  6394.                       the message line.  fkeytext is not displayed.
  6395.         O          -  Messages temporarily overlaps the function key
  6396.                       text until a key is pressed.  "sticky messages"
  6397.                       (See STICKY_MESSAGE) do not go away
  6398.                       until another message is displayed.
  6399.  
  6400. (built-in,keyboard): SET_KEYTAB_INDEX keytab_index,key_index,index
  6401.  
  6402.    Binds key of key table specified to a command or key table.
  6403.  
  6404.    Example
  6405.      index=find_index('COMMAND-TOGGLE')
  6406.      root_keytab_index=find_index('default-keys',KEYTAB_TYPE)
  6407.      /* Bind the fundamental mode escape key to command toggle */
  6408.      /* root and mode key tables both point to the "default-keys" */
  6409.      /* key table when in fundamental mode. */
  6410.      set_keytab_index root_keytab_index,key2index(ESC),index
  6411.  
  6412. (built-in,keyboard): SET_KEYTAB_POINTER keytab_p,keytab_index
  6413.  
  6414.  
  6415.    Sets a key table pointer to point to a key table.  The name table
  6416.    entries "root-keys" and "mode-keys" are key table pointers.  They do
  6417.    not have key table space allocated to them.  Instead, they point to
  6418.    another key table entry such as "default-keys" or "fileman-keys".
  6419.  
  6420.    Example
  6421.      mode_keytab_p=find_index('mode-keys',KEYTAB_TYPE)
  6422.      keytab_index=find_index('default-keys',KEYTAB_TYPE)
  6423.      /* Set the mode keys to point to the fundamental key table. */
  6424.      set_keytab_pointer mode_keytab_p,keytab_index
  6425.  
  6426.  
  6427. (built-in,name): SET_NAME_CLASS index, class
  6428.  
  6429.    Replaces class, corresponding to name table index.  Class must be a
  6430.    whole number.  If index is not a valid index, the interpreter is
  6431.    halted.  Class may be changed for any name type except for modules and
  6432.    key tables.
  6433.  
  6434.    See also  FIND_INDEX, NAME_MATCH, NAME_NAME, NAME_TYPE, NAME_INFO
  6435.              NAME_HELP, SET_NAME_HELP, FIND_LINK, CALL_LINK, INSERT_NAME,
  6436.              SET_NAME_INFO, NAME_CLASS, DELETE_NAME
  6437.  
  6438. (built-in,name): SET_NAME_HELP index,whole_number
  6439.  
  6440.    Sets help number corresponding to name table index.  Usually
  6441.    whole_number is a buffer pointer into "slick.doc".  As soon as the
  6442.    buffer is modified all points to it are invalid.  When "slick.doc" is
  6443.    modified, all the buffer pointers are rebuilt.  If index is not a valid
  6444.    index, the interpreter is halted.
  6445.  
  6446.    Example
  6447.       load_files "slick.doc"
  6448.       search ' SET_NAME_HELP','e'     /* Exact case search. */
  6449.       get_line line
  6450.       parse value line with '(' type ',' class ')'
  6451.       index= find_index('set-name-help',eq_name2value(type,HELP_TYPES))
  6452.       if not index then  /* name not present */
  6453.         call insert_name('set-name-help',HELP_TYPE);
  6454.       endif
  6455.       set_name_help index,point()
  6456.       set_name_class,index,eq_name2value(class)
  6457.  
  6458.    See also  POINT, GOTO_POINT, NAME_HELP, NAME_CLASS
  6459.              SET_NAME_CLASS
  6460.  
  6461.  
  6462. (built-in,name): SET_NAME_INFO index, info
  6463.  
  6464.    Replace info, corresponding to name table index.  If index
  6465.    is not a valid index, the interpreter is halted.  Info may be changed
  6466.    for any name type.  Upon successful completion RC is set to 0.
  6467.    Otherwise RC is set to INTERPRETER_OUT_OF_MEMORY_RC and message will get
  6468.    displayed after macro finished unless CLEAR_MESSAGE is called.
  6469.  
  6470.    See also  FIND_INDEX, NAME_MATCH, NAME_NAME, NAME_TYPE, NAME_INFO
  6471.              NAME_HELP, SET_NAME_HELP, FIND_LINK, CALL_LINK, INSERT_NAME,
  6472.              NAME_CLASS, SET_NAME_CLASS, DELETE_NAME
  6473.  
  6474. (command,misc): SET-NEXT-ERROR
  6475.  
  6476.    Sets the NEXT-ERROR commands start search position to the cursor in the
  6477.    concurrent process buffer.  For DOS, this command is not useful since
  6478.    the cursor position in the '$errors.tmp' file is the same position used
  6479.    by the NEXT-ERROR command to start searching.  For OS/2, the NEXT-ERROR
  6480.    command keeps an invisible mark in the concurrent process buffer called
  6481.    ".process".
  6482.  
  6483.    See also  RESET-NEXT-ERROR, CURSOR-ERROR, NEXT-ERROR
  6484.  
  6485. (built-in,cursor): SET_SCROLL_POS left_edge,cursor_y
  6486.  
  6487.    Sets the left edge scroll position and the cursor y position for
  6488.    viewing the current line.  The current line is unchanged.  The
  6489.    internal-variable ".cursor_y" may also set the cursor y position
  6490.    however the current line will not remain the same.
  6491.  
  6492. (command,misc): SET-VAR  variable  [new_value]
  6493.  
  6494.    Retrieves or sets the value of a UNIVERSAL variable.  The value is
  6495.    retrieved if the new_value parameter is omitted.
  6496.  
  6497. (built-in,misc): SET_VAR index,value
  6498.  
  6499.    Sets the contents of the variable corresponding to the name table
  6500.    index given to value.
  6501.  
  6502.    Example
  6503.  
  6504.       /* VAR_TYPE is defined in "slick.sh" */
  6505.       index=find_index('rc',VAR_TYPE)
  6506.       set_var index,'anything'
  6507.       message 'rc='get_var(index)
  6508.  
  6509.    See also  GET_VAR
  6510.  
  6511. (command,misc): SETUPEXT
  6512.  
  6513.    The SETUPEXT command (CONFIG, "File extension setup...") runs the
  6514.    external macro "setupext.s".  A list of extensions are presented that
  6515.    already have setup information for mode name, tab options, word wrap
  6516.    options, compile command, begin/end pairs, and mode key table name.
  6517.    Files with extension not contained in the list get the fundamental
  6518.    extension setup values.  The setup information is activated when the
  6519.    buffer is loaded with the EDIT command.  The setup fields are:
  6520.  
  6521.       MODE NAME               Appears on far right of status line.  Helps
  6522.                               remind you what extension specific setup is
  6523.                               active for the current buffer.
  6524.       TABS                    Tab stops have the syntax:
  6525.  
  6526.                                  [+] t1 [+] t2 [+] t3 ... [+] t30
  6527.  
  6528.               Examples
  6529.  
  6530.                    1 4 7 10 13 16      - Creates tab stops 1 4 7 10 13 16
  6531.                    +3                  - Creates tab stops 1 4 7 ... 88
  6532.                    1 49 +3             - Creates tab stops 1 4 7 ... 49
  6533.                    1 49 +3 53 250 +4   - Creates tab stops 1 4 7 ... 49 53
  6534.                                          57 61 65 69 ... 101
  6535.                    10 +3               - Creates tab stops 10 13 16 ... 97
  6536.  
  6537.       MARGINS                 Syntax for margins:
  6538.  
  6539.                                    left right [new-paragraph]
  6540.  
  6541.                               The first line of a paragraph gets the
  6542.                               indent value specified by new-paragraph.
  6543.  
  6544.               Examples
  6545.  
  6546.                    5 70                - Set margins to 5 70 5
  6547.                    5 70 10             - Set margins to 5 70 10
  6548.  
  6549.       WORD WRAP [Yes,No]        If yes, the editor attempts to keep
  6550.                                 the cursor within the margins when
  6551.                                 entering text, moving the cursor, and
  6552.                                 deleting characters.
  6553.  
  6554.       JUSTIFY [Y,N,U]           Sets the space handling of the
  6555.                                 REFLOW-PARAGRAPH and REFLOW-MARK command.
  6556.                                 Options mean:
  6557.  
  6558.                                 Y   Left and right justify paragraphs.
  6559.                                 N   Respect spaces placed between words.
  6560.                                     Left justify only.
  6561.                                 U   Left justify paragraphs placing
  6562.                                     one space between words accept after
  6563.                                     the punctuation characters ".?!" which
  6564.                                     get two spaces.
  6565.  
  6566.                         IMPORTANT
  6567.                              If JUSTIFY is set to N, the save options
  6568.                              should be set to -S so that trailing spaces
  6569.                              are not stripped from the end of each line
  6570.                              when a file is saved.  See SAVE-OPTIONS
  6571.                              command.
  6572.  
  6573.  
  6574.  
  6575.  
  6576.       INDENT WITH TABS [Y,N]    Determines whether ENTER key command and
  6577.                                 paragraph reformat commands indent with
  6578.                                 spaces or tabs.  If you do not want your
  6579.                                 ENTER key to indent the cursor, use the
  6580.                                 AUTO-INDENT command.
  6581.  
  6582.       SHOW TABS [Y,N,E]         Determines whether tab characters are
  6583.                                 expanded to the appropriate number of
  6584.                                 spaces when displayed on screen.
  6585.  
  6586.             The option letters have the following meaning:
  6587.  
  6588.                  Y    Display tab characters without expanding them.
  6589.                  E    Expand tabs to spaces but display first character
  6590.                       as a tab character instead of a space.
  6591.                  N    Expand tabs to spaces.
  6592.  
  6593.  
  6594.       COMPILE COMMAND        A compile command for this file type which
  6595.                              gets invoked when the COMPILE command is
  6596.                              executed. If the compile command starts
  6597.                              with a number, this number is assumed to be
  6598.                              the amount of memory the compiler needs to
  6599.                              run.   A memory value of 0 specifies
  6600.                              that SLICK allocate as much memory as
  6601.                              possible. Parts of the buffer name may be
  6602.                              parsed into the compile command before it is
  6603.                              executed.  The rules for substituting parts
  6604.                              of buffer name into the compile command
  6605.                              are:
  6606.  
  6607.                                *      Buffer name
  6608.                                *p     Path of buffer name with backslash
  6609.                                *d     Drive with : of buffer name
  6610.                                *n     Buffer name without extension or path
  6611.                                *f     Buffer name without path
  6612.                                *e     Buffer name extension without dot
  6613.                                **     Star
  6614.  
  6615.                              Examples
  6616.  
  6617.                                 325 tcc *
  6618.                                 400 cl -c *
  6619.  
  6620.  
  6621.       BEGIN/END PAIRS        Languages such as MODULA, PASCAL and SLICK
  6622.                              which have BEGIN/END pairs can take advantage
  6623.                              of this feature.  You specify the pairs
  6624.                              similar to a regular expression.  When you
  6625.                              place the cursor on the begin or end keyword
  6626.                              of the pair, invoke the command
  6627.                              FIND-MATCHING-PAREN (initially bound to A-T)
  6628.                              to find the match of the pair. The examples
  6629.                              below illustrate the syntax for defining the
  6630.                              BEGIN/END pairs.
  6631.  
  6632.                              Note:  Begin/end pair matching is case
  6633.                                     sensitive by default. Append
  6634.                                     ";I" to ignore case.
  6635.  
  6636.              Example
  6637.  
  6638.  
  6639.                 (loop)|(endloop) (for)|(endfor) (do)|(end)
  6640.                 (while)|(endwhile) (if)|(endif);I
  6641.  
  6642.                                          These BEGIN/END pairs are
  6643.                                          for the SLICK language.  Each
  6644.                                          keyword must have parenthesis.
  6645.                                          The begin keyword is first
  6646.                                          followed by the '|' character
  6647.                                          followed by the end keyword.
  6648.  
  6649.                 (begin),(case)|(end);I   These BEGIN/END pairs are
  6650.                                          for the PASCAL language.
  6651.                                          The PASCAL language requires a
  6652.                                          more sophisticated expression.
  6653.                                          This expression indicates the
  6654.                                          keywords BEGIN or CASE start a
  6655.                                          block and the keyword END
  6656.                                          terminates the block.  Note that
  6657.                                          ',' is used instead of the '|'
  6658.                                          operator.
  6659.  
  6660.                 (#ifdef),(#ifndef),(#if)|(#endif)
  6661.                                          These BEGIN/END pairs are
  6662.                                          for the C language. The C
  6663.                                          language has the added
  6664.                                          complication that #if is a
  6665.                                          sub-string of #ifdef. Due
  6666.                                          to the implementation of
  6667.                                          begin/end matching, #ifdef must
  6668.                                          appear before #if.
  6669.  
  6670.       INCLUDE DIRECTORIES    Specifies the directories or environment
  6671.                              variable containing directories to search for
  6672.                              include files.  See CURSOR-ERROR command.  If
  6673.                              the string entered contains an '=' sign, it
  6674.                              is assumed to specify an environment
  6675.                              variable. If nothing is specified, 'INCLUDE='
  6676.                              is assumed.
  6677.  
  6678.                   Example
  6679.  
  6680.                      c:\include;c:\more      Look in these directories.
  6681.                      INCLUDE=                Look in directories specified
  6682.                                              by INCLUDE environment var.
  6683.  
  6684.       KEY TABLE NAME         Specifies name of a mode key table.  If the
  6685.                              key table does not exist it is created.  When
  6686.                              you switch to this mode, use the BIND-TO-KEY
  6687.                              command with the -m option to bind keys to
  6688.                              this mode key table.
  6689.  
  6690. (command,misc): SHELL
  6691.  
  6692.    Runs the SLICK shell.  The SLICK shell provides almost all the command
  6693.    line capabilities of the SLICK editor command line.  The internal
  6694.    commands E, EDIT, SET, and START are recognized.  If the command S is
  6695.    entered it is translated into the EDIT command.  Type EXIT or press an
  6696.    escape key to leave shell.  Editing a file will also exit the shell.
  6697.  
  6698. (built-in,misc): SHELL_STATE()
  6699.  
  6700.    Returns 1 if the shell window is open.  Otherwise zero is returned.
  6701.  
  6702. (command,mark): SHIFT-MARK-LEFT
  6703.  
  6704.    Deletes left edge of visible marked area.  Supports line and block
  6705.    marks only.
  6706.  
  6707. (built-in,mark): SHIFT_MARK_LEFT [mark_id]
  6708.  
  6709.    Deletes characters at left edge of marked area specified.  Supports
  6710.    line and block marks only.
  6711.  
  6712. (command,mark): SHIFT-MARK-RIGHT
  6713.  
  6714.    Inserts space character at left edge of visible marked area.  Supports
  6715.    line and block marks only.
  6716.  
  6717. (built-in,mark): SHIFT_MARK_RIGHT [mark_id]
  6718.  
  6719.    Inserts space character at left edge of marked area specified.
  6720.    Supports line and block marks only.
  6721.  
  6722. (built-in,mark): SHOW_MARK mark_id
  6723.  
  6724.    Makes the mark corresponding to mark_id visible.  If mark_id is not
  6725.    valid RC is set to INVALID_MARK_RC.  Currently only one mark may be
  6726.    showing at a time.
  6727.  
  6728. (command,display): SHOW-TABS [Y|N|E]
  6729.  
  6730.    Determines whether the current buffer expands tabs to spaces when
  6731.    displaying the buffer.  If no parameter is given, the current value is
  6732.    displayed.  The option letters have the following meaning:
  6733.  
  6734.        Y    Display tab characters without expanding them.
  6735.        E    Expand tabs to spaces but display first character
  6736.             as a tab character instead of a space.
  6737.        N    Expand tabs to spaces.
  6738.  
  6739.  
  6740.    Each buffer has its own show tabs setting.  To set the
  6741.    default show tabs style for specific file extensions, invoke the CONFIG
  6742.    menu (F5) and select "File extension setup...".
  6743.  
  6744. (built-in,keyboard): SIGNAL_HANDLER('B'[,index])
  6745.  
  6746.    Returns index of current signal handler for specified signal.
  6747.    Currently this function only supports the 'B'=Ctrl-Break signal.
  6748.    Specifying the index parameter will set the signal handler.  Valid
  6749.    values for index must be less than or equal to 0.  If index is 0, the
  6750.    default signal handler is used which halts SLICK batch/macros that are
  6751.    running.  If index is less than 0, the Ctrl-break signal is ignored.
  6752.    When this function is completed, index may correspond to a procedure to
  6753.    call.
  6754.  
  6755. (command,file): SIMPLE-COPY source_file dest_file
  6756.  
  6757.    Copies source_file to dest_file.  RC is set to the return code.  No
  6758.    message is displayed in the case of an error.  Used by file manager.
  6759.    Use the DOS copy command for copying files when not in the file
  6760.    manager.
  6761.  
  6762. (command,file): SIMPLE-MOVE source_file dest_file
  6763.  
  6764.    Moves source_file to dest_file.  RC is set to the return code.  No
  6765.    message is displayed in the case of an error.  Used by file manager.
  6766.  
  6767. (command,misc):  SLICK-ENTER
  6768.  
  6769.    New binding of ENTER key when in SLICK mode.  Handles syntax expansion
  6770.    and indenting for files with S, SH, or CMD extension.  See config menu
  6771.    to change syntax expansion and indenting options.
  6772.  
  6773. (command,misc):  SLICK-MODE
  6774.  
  6775.    Activates SLICK file editing mode.  The ENTER and SPACE BAR bindings
  6776.    are changed as well as the tab and margin settings.
  6777.  
  6778. (command,misc):  SLICK-SPACE
  6779.  
  6780.    New binding of SPACE key when in SLICK mode.  Handles syntax expansion
  6781.    and indenting for files with S, SH, or CMD extension.  See config menu
  6782.    to change syntax expansion/indenting options.
  6783.  
  6784. (command,buffer): SORT-BUFFER [options]
  6785.  
  6786.    Sorts the current buffer in ascending order or descending order in case
  6787.    sensitivity specified.  Sort defaults to ascending and case sensitive.
  6788.  
  6789.    Multiple options having the following meaning may be specified:
  6790.  
  6791.       A       Sort in ascending order
  6792.       D       Sort in descending order
  6793.       I       Case insensitive sort (Ignore case).
  6794.       E       Case sensitive sort (Exact case).
  6795.  
  6796.    Example
  6797.  
  6798.       sort-buffer         - Sort in ascending order and exact case.
  6799.       sort-buffer I       - Sort in ascending order and ignore case.
  6800.       sort-buffer DI      - Sort in descending order and ignore case.
  6801.  
  6802.    See also  SORT-ON-MARK, SORT-WITHIN-MARK
  6803.  
  6804. (built-in,mark): SORT_MARK [options[,mark_id]]
  6805.  
  6806.    Sorts the mark specified in ascending or descending order in case
  6807.    sensitivity specified.  Sorting defaults to ascending and case
  6808.    sensitive.  If the buffer containing the specified mark is active when
  6809.    this function is invoked, the resulting lines are inserted after the
  6810.    end of the mark.  Otherwise the resulting lines are inserted after the
  6811.    cursor.  Character mark is not supported.
  6812.  
  6813.    Multiple options having the following meaning may be specified:
  6814.  
  6815.       'A'       Sort in ascending order
  6816.       'D'       Sort in descending order
  6817.       'I'       Case insensitive sort (Ignore case).
  6818.       'E'       Case sensitive sort (Exact case).
  6819.  
  6820.    Example
  6821.  
  6822.       sort_mark           /* Sort in ascending order and exact case. */
  6823.       sort_mark 'I'       /* Sort in ascending order and ignore case. */
  6824.       sort_mark 'DI'      /* Sort in descending order and ignore case. */
  6825.  
  6826. (command,mark): SORT-ON-MARK [options]
  6827.  
  6828.    Sorts the marked text by comparing only the columns specified.  Sort
  6829.    may be in ascending or descending order and case sensitive or case
  6830.    insensitive.  Supports line and block marks only.  Sort defaults to
  6831.    ascending and case sensitive.
  6832.  
  6833.    Multiple options having the following meaning may be specified:
  6834.  
  6835.       A       Sort in ascending order
  6836.       D       Sort in descending order
  6837.       I       Case insensitive sort (Ignore case).
  6838.       E       Case sensitive sort (Exact case).
  6839.  
  6840.    Example
  6841.  
  6842.       sort-on-mark         - Sort in ascending order and exact case.
  6843.       sort-on-mark I       - Sort in ascending order and ignore case.
  6844.       sort-on-mark DI      - Sort in descending order and ignore case.
  6845.  
  6846.    See also  SORT-BUFFER, SORT-WITHIN-MARK
  6847.  
  6848. (command,mark): SORT-WITHIN-MARK [options]
  6849.  
  6850.    Sorts the text within the marked area in ascending order.  Sort may be
  6851.    in ascending or descending order and case sensitive or case
  6852.    insensitive.  Supports line and block marks only.  Sort defaults to
  6853.    ascending and case sensitive.
  6854.  
  6855.    Multiple options having the following meaning may be specified:
  6856.  
  6857.       A       Sort in ascending order
  6858.       D       Sort in descending order
  6859.       I       Case insensitive sort (Ignore case).
  6860.       E       Case sensitive sort (Exact case).
  6861.  
  6862.  
  6863.    Example
  6864.  
  6865.       sort-within-mark         - Sort in ascending order and exact case.
  6866.       sort-within-mark I       - Sort in ascending order and ignore case.
  6867.       sort-within-mark DI      - Sort in descending order and ignore case.
  6868.  
  6869.    See also  SORT-BUFFER, SORT-WITHIN-MARK
  6870.  
  6871. (command,file): SPILL-FILE-PATH [path]
  6872.  
  6873.    When path is given, the default spill file path is set to path.  If the
  6874.    spill file has already been created due to insufficient memory, this
  6875.    function has no effect on this session.  To get the current setting for
  6876.    the spill file path, specify no argument.  Issue the "write-state"
  6877.    command to save the spill file path for the next session.
  6878.  
  6879. (built-in,file): SPILL_FILE_PATH([path])
  6880.  
  6881.    Returns the default path for the editor spill file.  When path is
  6882.    given, the default spill file path is set to path.  If the spill file
  6883.    has already been created due to insufficient memory, this function has
  6884.    no effect on this session.  Issue the "write-state" command to save the
  6885.    spill file path for the next session.
  6886.  
  6887. (command,misc): SPLIT-LINE
  6888.  
  6889.    Splits the current line at the cursor position.  Enough spaces are
  6890.    appended to the beginning of the new line to align it with the first
  6891.    non blank character of the current line.
  6892.  
  6893. (command,window): SPLIT-WINDOW
  6894.  
  6895.    Splits the current window horizontally in half.
  6896.  
  6897.    See also  VERTICAL-SPLIT-WINDOW
  6898.  
  6899. (command,misc): ST [module_name]
  6900.  
  6901.    Compiles the module specified.  If no name is specified and the current
  6902.    buffer has the extension S or CMD, the current module is saved (if
  6903.    necessary) and compiled.
  6904.  
  6905. (command,misc): START ["message"] command
  6906.  
  6907.    Starts a new session setting the current directory to be the same as
  6908.    the current working directory and initializing the environment by
  6909.    executing the OS/2 batch file "OS2INIT.CMD" before executing the
  6910.    command specified.  This command supports OS/2 mode only.  If the first
  6911.    argument is a quoted string, the new session will have that title.
  6912.    Otherwise the session title will be the command.  The command given may
  6913.    be any internal or external command.
  6914.  
  6915.    Example
  6916.  
  6917.      start  list \         Start file manager in a new session
  6918.      start  shell          Start slick shell in a new session
  6919.      start  make           Start make program in a new session
  6920.      start "compiling project" make    Start make program in a new session
  6921.                                        with title "compiling project".
  6922.  
  6923. (command,keyboard): START-KBD-MACRO
  6924.  
  6925.    Starts a new keyboard macro definition.  All key strokes will be
  6926.    remembered until , KBD-MACRO-TOGGLE (Ctrl-R), KBD-MACRO-END-EXECUTE
  6927.    (Ctrl-T), or END-KBD-MACRO (Ctrl-X ')') is executed or the macro
  6928.    overflows the maximum size of 255 bytes.  Once key stroke recording
  6929.    stops, the keyboard macro is given the default name 'last-kbd-macro'.
  6930.  
  6931.    See also  END-KBD-MACRO, KBD-MACRO-TOGGLE, NAME-MACRO,
  6932.              KBD-MACRO-END-EXECUTE
  6933.  
  6934. (built-in,keyboard): START_KBD_MACRO
  6935.  
  6936.    Starts a new keyboard macro definition.  If GET_MACRO is called
  6937.    after START_KBD_MACRO is executed, RC will be zero and '' will be
  6938.    returned.  All key strokes will be remembered until END_KBD_MACRO
  6939.    is executed or the macro overflows the maximum size.
  6940.  
  6941.    See also  NAME_MACRO, GET_MACRO, END_KBD_MACRO.
  6942.  
  6943. (command,misc): START-PROCESS
  6944.  
  6945.    This functions supports OS/2 only.  Starts the OS/2 command processor
  6946.    CMD.EXE running in a newly created buffer.  The commands BOTH-UP,
  6947.    BOTH-DOWN, BOTH-RUBOUT, BOTH-KILL-LINE BOTH-NOSPLIT-INSERTLINE,
  6948.    BOTH-SPLIT-INSERTLINE, BOTH-MAYBE-SPLIT-INSERTLINE, BOTH-BEGIN-LINE,
  6949.    BOTH-BEGIN-LINE-TEXT-TOGGLE operate like the SLICK command line when
  6950.    prompted for input.  BOTH-UP and BOTH-DOWN support command retrieval in
  6951.    a new buffer called '.process-command'.  Each copy of the SLICK editor
  6952.    can run one concurrent session.  If two copies of the SLICK editor are
  6953.    running in the same session only one may have a concurrent session
  6954.    running because OS/2 only allows one process within a session to be the
  6955.    parent of another session.
  6956.  
  6957.    See also   STOP-PROCESS, NEXT-ERROR, EXIT-PROCESS, SET-NEXT-ERROR
  6958.               RESET-NEXT-ERROR, CURSOR-ERROR
  6959.  
  6960. (built-in,display): STICKY_MESSAGE string
  6961.  
  6962.    If the shell window is open, string is displayed in the shell window.
  6963.    Otherwise string is displayed on the message line.  Message will
  6964.    remain on the message line until another message is displayed.
  6965.  
  6966.    See also  MESSAGE
  6967.  
  6968. (built-in,misc): STOP
  6969.  
  6970.    Halts the command currently running.  If the command is an external
  6971.    command (extension '.s' or '.cmd'), the module is unloaded and the
  6972.    previous command is resumed.
  6973.  
  6974.  
  6975.    See also  EXIT, SUSPEND, RESUME
  6976.  
  6977. (command,misc): STOP-PROCESS
  6978.  
  6979.    Sends a Ctrl-Break signal to the concurrent session created by the
  6980.    START-PROCESS command.  This command supports OS/2 mode only.
  6981.  
  6982.    See also   START-PROCESS, NEXT-ERROR, EXIT-PROCESS, EXIT-PROCESS,
  6983.               SET-NEXT-ERROR, RESET-NEXT-ERROR, CURSOR-ERROR
  6984.  
  6985. (built-in,misc): STOP_PROCESS
  6986.  
  6987.    Sends a Ctrl-Break signal to the concurrent session created by the
  6988.    built-in function CONCUR_SHELL.
  6989.  
  6990.    See also   CONCUR_SHELL, PROCESS_INFO
  6991.  
  6992. (misc,language): STRINGS
  6993.  
  6994.    Strings may be in single or double quotes.  If single quotes are used,
  6995.    two single quotes consecutively represents one single quote character.
  6996.    If double quotes are used, two double quotes consecutively represents
  6997.    one double quote character.
  6998.  
  6999.    Example
  7000.        """"== '"'
  7001.        ''''== "'"
  7002.  
  7003.  
  7004.    A backslash (not inside quotes) followed by a character or a number has
  7005.    the the special meaning indicated below:
  7006.  
  7007.          \n         new line
  7008.          \r         carriage return
  7009.          \t         tab
  7010.          \b         backspace
  7011.          \f         Form feed
  7012.          \xdd       Hex character code dd
  7013.          \ddd       Decimal character code ddd
  7014.  
  7015.    Quoted strings adjacent to escape sequences are read (lexed) as one
  7016.    string.  No concat is performed.
  7017.  
  7018.    Example
  7019.       \n==\10
  7020.       \r==\xd
  7021.       \r==\x0d
  7022.       '1'\50 + '1'\49== '23'  /* 12 + 11=='23', not 1||(2+1)||1=='131'*/
  7023.  
  7024. (built-in,string): STRIP(string[,ltb,[strip_char]])
  7025.  
  7026.    Strips string of leading and/or trailing strip_char.  If strip_char
  7027.    is not given, tabs and spaces are stripped.  ltb may be one of 3
  7028.    values with the following meaning:
  7029.  
  7030.       'L'     -   remove leading strip_char
  7031.       'T'     -   remove trailing strip_char
  7032.       'B'     -   remove leading and trailing strip_char.
  7033.  
  7034.    By default, leading and trailing tabs and blanks are removed.
  7035.  
  7036.      strip(' abc ','L')             == 'abc '
  7037.      strip(' abc ','T')             == ' abc'
  7038.      strip('    abc     ')          == 'abc'
  7039.      strip('  '\t'abc '\t)          == 'abc'
  7040.      strip('  '\t'abc '\t,'L')      == 'abc '\t
  7041.      strip('  '\t'abc '\t,'B',' ')  == \t'abc '\t
  7042.  
  7043. (command,file): SUBCOPY source_file dest_directory
  7044.  
  7045.    Copies the source_file to dest_directory concatenated to
  7046.    path_no_drive(source_file).  Preserves directory structure.
  7047.    Destination directory is created if it does not exist.  Disk is
  7048.    formatted if necessary.  Handles errors necessary for backing up a
  7049.    file.  Used in fileman mode.
  7050.  
  7051. (built-in,string): SUBSTR(string,start[,length[,pad]])
  7052.  
  7053.    Returns length characters of string beginning at start.  By default,
  7054.    length defaults to rest of string. If length is greater than length of
  7055.    string, the return string is padded with blanks or pad character if
  7056.    specified.  start must be a positive whole number.
  7057.  
  7058.    Example
  7059.  
  7060.      substr('test',2)          == 'est'
  7061.      substr('test',1,5)        == 'test '
  7062.      substr('',1,5,'*')        == '*****'
  7063.      substr('test',2,4)        == 'est '
  7064.  
  7065. (misc,help): SUMMARY-OF-KEYS
  7066.  
  7067. Notation   C-, A-, and S-  abbreviate   Ctrl-,Shift-, and Alt-
  7068.  
  7069. Inserting text
  7070.   Ins,C-O  Insert/overwrite toggle    C-X tab  Move text tab
  7071.   Enter    Insert a line              C-Q      Quote next character typed
  7072.   A-N      Insert buffer name         A-S      Split line at cursor
  7073.  
  7074. Deleting text
  7075.   Del,C-D      Delete char under cursor   C-E   Cut to end line(s)
  7076.   Backspace    Delete char before cursor  A-W   Cut word(s)
  7077.   C-Backspace  Cut line(s)                A-J   Join line to cursor
  7078.  
  7079. File and buffers
  7080.    F2,C-X C-S  Save current buffer         C-X C-B   List buffers
  7081.    F3,C-X 'K'  Quit current buffer         F8,C-B    Next buffer
  7082.    F4          Save & Quit current buffer  A-F8,C-V  Previous buffer
  7083.    F7, C-X 'F' Edit a file or find buffer  C-X 'B'   Find buffer
  7084.  
  7085. Clipboard
  7086.    A-V         Copy mark to clipboard    C-Backspace  Cut line(s)
  7087.    C-X C-W     Copy word to clipboard    C-E          Cut to end line(s)
  7088.    C-X C-Y     Paste any clipboard       A-W          Cut word(s)
  7089.    C-Y         Paste last clipboard      A-K          Cut mark
  7090.    A-V         Copy to clipboard
  7091.  
  7092. Mark
  7093.    A-B   Mark block/column         S-F7  Shift mark left
  7094.    A-L   Mark line                 S-F8  Shift mark right
  7095.    A-Z   Mark character/stream     C-F3  Upcase mark
  7096.    A-U   Unmark                    C-F4  Lowcase mark
  7097.    A-C   Copy Mark                 A-A   Move/overlay block
  7098.    A-K   Cut mark                  A-O   Overlay block mark
  7099.    A-M   Move mark                 A-E   Go to end of mark
  7100.    A-F   Fill mark                 A-Y   Go to beginning of mark
  7101.    C-X C-P  Reflow mark            A-=   Execute commands in mark
  7102.  
  7103. Compiling and programming support
  7104.    A-F5      Make project             C-C       Stop concurrent process
  7105.    A-F6      Compile current buffer   C-X C-M   Start concurrent process
  7106.    A-F10,C-X C-N  Next error          C-H       Find tag or proc
  7107.    C-X C-L  Make and load current macro buffer
  7108.  
  7109. Searching
  7110.   C-F       Repeat last search
  7111.   C-S       Incremental search    C-X C-R   Reverse increment search
  7112.   C-Break   Stops search or search and replace.
  7113.  
  7114. Windowing
  7115.    A-F1      Change window           C-X '2'  Split window horizontally
  7116.    A-F2      Move window edge        C-W,C-X 'O'  Next window
  7117.    A-F3      Create window edge      C-Z,C-X '1'  One window
  7118.    A-F4      Delete window edge
  7119.  
  7120. Macros
  7121.    C-R      Start/end kbd macro def.          C-X 'E'  Run last kbd macro
  7122.    C-T      Terminate & run last kbd macro    C-X '('  Start kbd macro
  7123.    C-X C-L  Make and load current buffer      C-X ')'  End kbd macro
  7124.    C-Break  Halts SLICK macros that do not
  7125.             handle the break signal.
  7126.  
  7127. Cursor movement
  7128.    Left arrow,C-J   Cursor left       PgUp,C-P  Page up
  7129.    Right arrow,C-L  Cursor right      PgDn,C-N  Page down
  7130.    Up arrow,C-I     Cursor up         C-Left    Previous word
  7131.    Down arrow,C-K   Cursor down       C-Right   Next word
  7132.    C-Home,C-X C-U   Top of buffer     C-PgUp    Top of window
  7133.    C-End,C-X C-J    Bottom of buffer  C-PgDn    Bottom of window
  7134.    Home, C-U        Begin line        Tab       Next tab stop
  7135.    End,C-M          End line          S-Tab     Previous tab stop
  7136.  
  7137. Command line
  7138.    Esc,C-A   Cursor to command line toggle   A-N       Insert buffer name
  7139.    Up arrow    Retrieve previous command     C-Right   Next word
  7140.    Down arrow  Retrieve next command         C-Left    Previous word
  7141.    ' '        Complete argument              C-F1      Upcase word
  7142.    '?'        List arguments                 C-F2      Lowcase Word
  7143.    Ins,C-O    Insert/overwrite toggle        C-F5      Capitalize word
  7144.    C-Q        Quote next character           A-W       Cut word(s)
  7145.    C-X C-W    Copy word to clipboard         C-E       Cut to end line(s)
  7146.    C-Y        Past last clipboard            C-Backspace  Cut line(s)
  7147.    C-X C-Y    Paste any clipboard
  7148.  
  7149. Miscellaneous
  7150.    A-X,C-X C-C  Safe exit            S-F1   Scroll up
  7151.    Esc,C-G      Cancel               S-F2   Scroll down
  7152.    F1    Help for mode or context    S-F3   Scroll left
  7153.    F5    Configuration menu          S-F4   Scroll right
  7154.    F9    Restore current line        S-F5   Center line
  7155.    F10   Main menu for mode          C-F1   Upcase word
  7156.    A-S   Split line                  C-F2   Lowcase word
  7157.    A-J   Join line                   C-X C-E  Slick shell
  7158.    A-P   Reflow paragraph            C-X C-X  Nothing
  7159.    A-R   Fundamental mode for next   C-F5     Capitalize word
  7160.          key press
  7161.  
  7162. (built-in,misc): SUSPEND
  7163.  
  7164.    Pushes a new level for a signal handler.  After a SUSPEND has been
  7165.    executed, errors which halt the interpreter will set the variable RC to
  7166.    the error code and RESUME execution at the first statement after
  7167.    SUSPEND.  The RESUME function restores the interpreter stack and code
  7168.    position to the state it was in after the last SUSPEND was executed.
  7169.    Be sure to execute RESUME to restore the previous signal handler.
  7170.  
  7171.    Example
  7172.       suspend
  7173.       if rc then
  7174.          if rc<0 then
  7175.             message get_message(rc)
  7176.             return(rc)
  7177.          endif
  7178.          return(0)
  7179.       endif
  7180.       i=arg(1)+1     /* Handle invalid number argument */
  7181.       message 'i='i
  7182.       rc=1;resume
  7183.  
  7184.  
  7185.    See also  SIGNAL_HANDLER
  7186.  
  7187. (command,misc): SYNTAX-INDENT  tab_amount
  7188.  
  7189.    Sets 30 tab stops in increments of the tab amount specified for all
  7190.    modes except fundamental, fileman, and assembly
  7191.  
  7192. (built-in,cursor): TAB
  7193.  
  7194.    Places cursor at next tab stop if any.  If column is not in view,
  7195.    column is center scrolled or smooth scrolled into view.  See
  7196.    SCROLL_STYLE.  Each buffer has its own tab stops.
  7197.  
  7198.    See also  BACK_TAB, INTERNAL-VARIABLES, TABS, SETUPEXT
  7199.  
  7200. (command,file): TAB-EXT [file_extensions]
  7201.  
  7202.    Specifies the file extensions which should have spaces compressed with
  7203.    tab characters when the SAVE command is executed.  Files saved with
  7204.    tabs (especially assembler files) take up less disk space than files
  7205.    saved with out tabs.  Tab compression increases the save time by about
  7206.    15%.  Tab compression of a line stops when a quote is seen.  Lines that
  7207.    are part of a line continuation from the previous line (last character
  7208.    of line is '\\') are not tabbed.  The editor does not expand tabs when
  7209.    loading unless the load options contain the +E option (See LOAD-OPTIONS
  7210.    command).  Indexed files such as "slick.doc" and "slick.mnu" may not be
  7211.    saved with tabs.
  7212.  
  7213.    Example
  7214.  
  7215.       tab-ext  .asm             -  Compress assembler files with tabs
  7216.  
  7217.  
  7218. (command,misc): TABS  [+] t1 [+] t2 [+] t3 ... [+] t30
  7219.  
  7220.    Sets up to 30 tab stops in increasing order.  The commands BOTH-TAB and
  7221.    BOTH-BACKTAB may be used to move between tab stops.  The '+' symbol is
  7222.    used to set tabs according to an increment value.
  7223.  
  7224.    Example
  7225.  
  7226.       tabs 1 4 7 10 13 16      - Creates tab stops 1 4 7 10 13 16
  7227.       tabs +3                  - Creates tab stops 1 4 7 ... 88
  7228.       tabs 1 49 +3             - Creates tab stops 1 4 7 ... 49
  7229.       tabs 1 49 +3 53 250 +4   - Creates tab stops 1 4 7 ... 49 53 57 61
  7230.                                  65 69 ... 101
  7231.       tabs 10 +3               - Creates tab stops 10 13 16 ... 97
  7232.  
  7233.  
  7234.    See also  BOTH-TAB, BOTH-BACKTAB, BOTH-MOVE-TEXT-TAB
  7235.  
  7236. (built-in,keyboard): TESTKEY([options])
  7237.  
  7238.      options  defaults to '' and may be 'R' and/or 'K' and/or 'C'
  7239.  
  7240.           'R'          -  Specifies no screen refresh
  7241.           'K'          -  Physical keyboard is tested and not
  7242.                           a keyboard macro that is running.
  7243.           'C'          -  Limit refresh to command line only.  Used by
  7244.                           GET_STRING macro function to refresh text
  7245.                           in popup command line.
  7246.  
  7247.    Tests to see if a key is available.  If a key is ready, a string
  7248.    representation of the key is returned.  If no key is available, '' is
  7249.    returned.  For ASCII keys a string of length 1 is returned except for
  7250.    C_ENTER, C_BACKSPACE, ENTER, TAB, BACKSPACE, and ESC.  For these
  7251.    special keys and extended keys like A_L, a string of length 2 is
  7252.    returned.  This separation allows the control keys C_J, C_H, C_M, and
  7253.    C_I to have a different binding from the keys listed above.  This
  7254.    function will test keys from a keyboard macro that is running unless
  7255.    option 'K' is specified.  If 'R' and 'C' options are not given, the
  7256.    screen is refreshed and the shell window is closed.  The shell window
  7257.    is opened when an external program is executed or by the built-in
  7258.    primitives SAY, SAYS, and PAUSE.
  7259.  
  7260.  
  7261.    See also   GETKEY, TESTKEY, LASTKEY, RAW_LASTKEY, CALL_KEY,
  7262.               KEY2NAME, KEY2INDEX, INDEX2KEY, LIST_BINDINGS,
  7263.               KEYTAB_INDEX, SET_KEYTAB_POINTER
  7264.  
  7265. (built-in,string): TEXT_COL(string[,column[, 'P'|'T'|'L'|'I']])
  7266.  
  7267.  
  7268.    column does not have a default value
  7269.    third parameter defaults to 'L'
  7270.  
  7271.    Converts an imaginary column position to a physical string column
  7272.    position and visa versa.  The input and output values are described
  7273.    by the table below:
  7274.  
  7275.       Third param.      Input column          Output column
  7276.  
  7277.          'P'            imaginary             Physical
  7278.          'T'            imaginary             Physical. Position
  7279.                                               is negated if the
  7280.                                               imaginary column input
  7281.                                               corresponds to the middle
  7282.                                               of a tab character.
  7283.          'L'            Doesn't matter        Imaginary length of string.
  7284.          'I'            Physical              Imaginary
  7285.  
  7286.  
  7287.          start
  7288.  
  7289.    The input column is returned if input column is less than or equal to
  7290.    zero and third parameter is not 'L'.
  7291.  
  7292.    We use the term imaginary to describe column positions which correspond
  7293.    to a string as displayed on your screen.  Strings containing tab
  7294.    characters are expanded before displayed.  Hence, the need arises for a
  7295.    differentiation between physical and imaginary positions.  A physical
  7296.    position corresponds to a character in string.  The characters are
  7297.    numbered one to the length of string.  An imaginary position
  7298.    corresponds to a position in a string once tabs have been expanded.
  7299.  
  7300.  
  7301.    Example   (Assume tabs are  1 9 17 25 33 41 ... (increments of 8))
  7302.  
  7303.       text_col('abc'\t'def'\t'ghi')        == 19
  7304.       text_col('abc'\t'def'\t'ghi',12,'P') == 8
  7305.       text_col('abc'\t'def'\t'ghi',13,'P') == 8
  7306.       text_col('abc'\t'def'\t'ghi',12,'T') == 8
  7307.       text_col('abc'\t'def'\t'ghi',13,'T') == -8
  7308.       text_col('abc'\t'def'\t'ghi',8,'I')  == 12
  7309.       text_col('abc'\t'def'\t'ghi',-1,'P') == -1
  7310.       text_col('abc'\t'def'\t'ghi',0,'P')  == 0
  7311.       text_col('abc'\t'def'\t'ghi',0,'I')  == 0
  7312.  
  7313.    see also  EXPAND_TABS
  7314.  
  7315. (built-in,cursor): TOP
  7316.  
  7317.    Places cursor at first line and first column of buffer
  7318.  
  7319.    See also  BOTTOM
  7320.  
  7321. (command,cursor): TOP-OF-BUFFER
  7322.  
  7323.    Places cursor at first line and first column of buffer.  If the
  7324.    "Preserve column on top/bottom..." option is set to "Y", the cursor is
  7325.    placed on the first line of the buffer and the column position is
  7326.    unchanged.  Executing this command when the cursor is already on the
  7327.    first line of the buffer will move the cursor to the first column of
  7328.    the first line.  The "Preserve column on top/bottom..." option is
  7329.    accessible through the CONFIG menu (F5) under "Other options...".
  7330.  
  7331.    See also  BOTTOM-OF-BUFFER
  7332.  
  7333. (command,cursor): TOP-OF-WINDOW
  7334.  
  7335.    Places cursor at top of window.
  7336.  
  7337.    See also  BOTTOM-OF-WINDOW
  7338.  
  7339. (built-in,misc):  TRACE
  7340.  
  7341.    Reserved word.
  7342.  
  7343. (built-in,string): TRANSLATE(string[,output_table[,input_table[,pad]]])
  7344.  
  7345.    Translates characters in string that are in the input_table to the
  7346.    corresponding character in the output table.  If the length of
  7347.    input_table is greater than the length of output_table, output_table is
  7348.    padded with the pad character given.  Pad character defaults to ''.  If
  7349.    output_table is not given, string is converted to upper case.
  7350.  
  7351.    Example
  7352.  
  7353.      translate('bottom_of_window','-','_')    =='bottom-of-window'
  7354.      translate('bottom_of_window','','_','*') =='bottom*of*window'
  7355.      translate('bottom_of_window')            =='BOTTOM_OF_WINDOW'
  7356.  
  7357. (command,keyboard): UNBIND-KEY  [-r | -m]
  7358.  
  7359.    Unbinds the next key you press.  Normally a mode key table binding
  7360.    takes precedence over a root key table binding.  When the mode key
  7361.    table has no binding for the key, the root key table binding is
  7362.    selected to be unbound.  The -r and -m options may be used to select
  7363.    key bindings to the root or mode key table.
  7364.  
  7365.    See also  BIND-TO-KEY
  7366.  
  7367. (command,misc): UNDO-LINE
  7368.  
  7369.    Restores the current line to its original value before the cursor moved
  7370.    onto it.
  7371.  
  7372. (built-in,misc): UNDO_LINE
  7373.  
  7374.    Restores the current line to its original value before the cursor moved
  7375.    onto it.
  7376.  
  7377. (command,mark): UNINDENT-MARK
  7378.  
  7379.    Deletes the characters in marked area before the first tab stop not
  7380.    equal to one.  A check is performed to insure that the characters
  7381.    deleted are space or tab characters.  Supports line mark only.  Lines
  7382.    of text may be marked with the MARK-LINE command (Alt-L).
  7383.  
  7384.  
  7385.    See also INDENT-MARK
  7386.  
  7387. (misc,language): UNIVERSAL
  7388.  
  7389.    Declares a variable of the scope "universal".  Universal
  7390.    variables may be access by any module currently loaded and may be saved
  7391.    from session to session by the WRITE-STATE command.
  7392.  
  7393.    Syntax
  7394.  
  7395.       UNIVERSAL
  7396.          variable [= initial_expression] [',']
  7397.          variable [= initial_expression] [',']
  7398.          ....
  7399.  
  7400.    The comma is used to declare universal variables on one line.
  7401.  
  7402.    If a loaded module which declares a new universal variable its initial
  7403.    value is set to the value initial_expression.  If initial_expression is
  7404.    not given a new universal variable is initialized to ''.
  7405.  
  7406. (command,file): UNLIST-ALL
  7407.  
  7408.    Deletes all lines of the current buffer.  The lines may be retrieved
  7409.    with the command BOTH-YANK.  If the visible mark is not in the current
  7410.    buffer it is preserved.  Used in fileman mode
  7411.  
  7412. (command,file): UNLIST-ATTR  R|H|S|A|D
  7413.  
  7414.    Deletes lines of files with the specified attribute(s).  If more than
  7415.    one file attribute is given, they must appear in the same order as the
  7416.    attributes column with dashes present if necessary so that a column
  7417.    search can be performed.  Used in fileman mode
  7418.  
  7419. (command,file): UNLIST-EXT  extension
  7420.  
  7421.    Deletes lines of files with the specified extension.  Used in
  7422.    fileman mode.
  7423.  
  7424. (command,file): UNLIST-SEARCH  search_string
  7425.  
  7426.    Prompted search and delete line.  Used in fileman mode.
  7427.  
  7428. (command,file): UNLIST-SELECT
  7429.  
  7430.    Lines beginning with the character '>' are deleted.  Used in fileman
  7431.    mode.
  7432.  
  7433. (command,misc): UNLOAD module_names
  7434.  
  7435.    Unloads modules specified.  If the module is currently running it may
  7436.    not be unloaded.  Do not specify a path for module_names.
  7437.  
  7438.    See also  LOAD
  7439.  
  7440. (command,mark): UNMARK
  7441.  
  7442.    Clears the visible mark.
  7443.  
  7444. (built-in,mark): UNMARK [mark_id]
  7445.  
  7446.    Clears mark specified.
  7447.  
  7448. (built-in,cursor): UP [number|[, stop_column]]
  7449.  
  7450.    Moves cursor number of lines up.  If number is not given a value of '1'
  7451.    is used.  If line is not in view, line is center scrolled or smooth
  7452.    scrolled into view.  See SCROLL_STYLE.  If top of buffer is hit RC is
  7453.    set to TOP_OF_FILE_RC.  Otherwise, RC is set to 0.  Use the
  7454.    "window_overlap" flags with the LIST_OVERLAP (in "slick.sh") flag to
  7455.    automate display of a bounce bar.  If stop_column is specified, the UP
  7456.    primitive stops when a line of length greater than or equal to
  7457.    stop_column is reached or until number of lines are scrolled.
  7458.    Parameter two is useful for detecting lines that are too long to be
  7459.    printed on a printer.
  7460.  
  7461.    Example
  7462.  
  7463.        up
  7464.        if rc=TOP_OF_FILE_RC then
  7465.           message get_message(rc)
  7466.        endif
  7467.  
  7468.    See also  UP, DOWN
  7469.  
  7470. (built-in,string): UPCASE(string)
  7471.  
  7472.    Returns string converted to upper case.
  7473.  
  7474.    Example
  7475.  
  7476.      upcase('ABc') == 'ABC'
  7477.      upcase('abc') == 'ABC'
  7478.  
  7479.    See also  UPCASE
  7480.  
  7481. (command,mark): UPCASE-MARK
  7482.  
  7483.    Translates characters within visible mark into upper case.  Text may be
  7484.    marked with one of the commands MARK-CHAR (Alt-Z), MARK-LINE (Alt-L),
  7485.    or MARK-BLOCK (Alt-B).
  7486.  
  7487.    See also  LOWCASE-MARK
  7488.  
  7489. (built-in,misc): VAR_OFS(var name)
  7490.  
  7491.    Returns a handle to the variable name in the form '&nnnn' where nnnn is
  7492.    the handle of the variable.  The built-in function INT86X translates
  7493.    strings of the form '&nnnn' into the physical offset of the variable.
  7494.  
  7495.    See also  VAR_SEG, INT86X, PEEK, POKE
  7496.  
  7497. (built-in,misc): VAR_SEG(var name)
  7498.  
  7499.    Returns a handle to the variable name in the form '$nnnn' where nnnn is
  7500.    the handle of the variable.  The built-in function INT86X translates
  7501.    strings of the form '$nnnn' into the physical segment of the variable.
  7502.  
  7503.    See also  VAR_OFS, INT86X, PEEK, POKE
  7504.  
  7505. (built-in,string): VERIFY(string,reference[,option[,start]])
  7506.  
  7507.    option defaults to ''
  7508.    start defaults to  1
  7509.  
  7510.    If option =='', this function returns the first character position in
  7511.    string which is not one of the characters in reference.  If string is
  7512.    only composed of characters from reference, then 0 is returned.
  7513.  
  7514.    If option == 'M' , this function returns the first character position
  7515.    in string which matches one of the characters in reference.  If no
  7516.    characters in reference match a character in string, 0 is returned.
  7517.  
  7518.    Example
  7519.  
  7520.          verify("test.*","*?",'M')  ==6
  7521.          verify("?*st.*","*?",'M',3)==6
  7522.          verify("?*st.*","*?")      ==3
  7523.  
  7524. (command,misc): VERSION
  7525.  
  7526.    Displays version of editor.
  7527.  
  7528. (command,window): VERTICAL-SPLIT-WINDOW
  7529.  
  7530.    Splits the current window vertically in half.
  7531.  
  7532.    See also  SPLIT-WINDOW
  7533.  
  7534. (command,keyboard): WHAT-IS
  7535.  
  7536.    Displays help for the command that is bound to the next key you press.
  7537.  
  7538. (command,keyboard): WHERE-IS command
  7539.  
  7540.    Displays key(s) that are bound to command.
  7541.  
  7542. (built-in,display): WINDOW   'O'|'C'|'F'|'H'
  7543.  
  7544.   The options have the following meaning:
  7545.     'O'     Open window.  Refreshes current window, clears
  7546.             all other refresh areas except the message line, and
  7547.             saves text underneath window.  This primitive is used
  7548.             to speed up display of popdown menus from a horizontal
  7549.             menu.
  7550.     'C'     Close window.  Restores text underneath window, and
  7551.             clears all other refresh areas except the message
  7552.             line.  This primitive is used to speed up display of
  7553.             popdown menus from a horizontal menu.
  7554.     'F'     Frees memory allocated by 'O' option.  The 'C' close window
  7555.             option automatically frees the memory as well.
  7556.     'H'     Update horizontal menu line.  and clears all other refresh
  7557.             areas except the message line.
  7558.  
  7559.  
  7560. (command,window): WINDOW-BORDER  1|2|3|4
  7561.  
  7562.     Sets the window border characters.  1=┼, 2=╬, 3=╪, 4=╫
  7563.  
  7564. (misc,language): WINDOWS-STRUCTURE
  7565.  
  7566.    This help item describes the internal data structure the editor uses to
  7567.    keep track of windows,buffer positions, and buffer data.  You need not
  7568.    read this unless you want to write a SLICK language macro which
  7569.    manipulates windows, views, and buffers.
  7570.  
  7571.    This is a picture of the windows structure with 3 windows and 4
  7572.    buffers.  The 2 buffers in window group g0 are ".killed" and
  7573.    ".command".  The active window group is g1.  The two windows w1 and w2
  7574.    are being displayed on the screen.
  7575.  
  7576.  
  7577.        {g0}════[w0]                             Symbols
  7578.         ║       ║                                  {}    window group
  7579.         ║      <v0>══<v1>                          []    window
  7580.         ║       │     │                            <>    view
  7581. You     ║       v     v                            ()    buffer
  7582. are     ║      (b0)  (b1)                          ══    Points both ways
  7583. Here-> {g1}════[w1]═══════════[w2]                 ─>    Points one way
  7584.                 ║              ║
  7585.                <v2>══<v3>     <v4>══<v5>
  7586.                 │     │        │     │
  7587.                 │     v        │     │
  7588.                 │    (b3)<─────┘     │
  7589.                 v                    │
  7590.                (b2)<─────────────────┘            "tiled windowing"
  7591.  
  7592.    The screen is showing view2 of buffer2 in window1 and view4 of buffer3
  7593.    in window2.  A window group contains a ring of one or more windows.
  7594.    Each window contains a ring of one or more views.  Each view points to
  7595.    a buffer.  NEXT_GROUP and PREV_GROUP move around the window group ring.
  7596.    NEXT_WINDOW and PREV_WINDOW move around the active window ring.
  7597.    NEXT_VIEW and PREV_VIEW move around the active view ring.  The built-in
  7598.    function LOAD_FILES handles all inserting of views, windows, and
  7599.    buffers.  QUIT_VIEW deletes the active view of the active buffer.
  7600.  
  7601.    Below is a description of the contents of each structure.  A dot
  7602.    indicates the field can be accessed as an internal variable.
  7603.  
  7604.    A group contains the following fields:
  7605.  
  7606.        window_p             pointer to active window
  7607.        next_group_p         pointer to next group     (NEXT_GROUP)
  7608.        prev_group_p         pointer to previous group (PREV_GROUP)
  7609.  
  7610.    A window contains the following fields:
  7611.  
  7612.       .window_x,.window_y           Top left coordinates of window
  7613.       .window_height,.window_width  Height and width of window
  7614.       .buf_name_color               For a complete list of window
  7615.       .mono_buf_name_color          color fields see
  7616.       ...                           "internal-variables"
  7617.       .cursor_color
  7618.       .mono_cursor_color
  7619.       .window_style           Determines window border
  7620.                                style and corner characters
  7621.                                to be used.  There is further
  7622.                                explanation below.
  7623.       .window_overlap         Indicates whether this window
  7624.                                overlaps any other window
  7625.       .window_x               The top left x position of
  7626.                                window (0..screen_width()-2)
  7627.       .window_y               The top left y position of
  7628.                                window (0..screen_height()-3)
  7629.       .window_height          Window height
  7630.                                (1..screen_height()-2)
  7631.       .window_width           Window width
  7632.                                (2..screen_width())
  7633.       .subtitle               Window subtitle
  7634.       .group_id               Group the window belongs to
  7635.       view_p                  Pointer to active view
  7636.       next_window_p           Pointer to next window    (NEXT_WINDOW)
  7637.       prev_window_p           Pointer to previous window(PREV_WINDOW)
  7638.  
  7639.    A view contains the following fields:
  7640.  
  7641.       block,line within block   Accessible via POINT and GOTO_POINT.
  7642.       .line                   Line number of current line.
  7643.       .col                    Column position within
  7644.                               current line. 1..255
  7645.       .left_edge              Column scroll position
  7646.                               0..255-1
  7647.       .cursor_x               Text cursor x position
  7648.                               0.. .window_width-1
  7649.       .cursor_y               Text cursor y position
  7650.                               0.. .window_height-1
  7651.       .window_id              Window id
  7652.       .buf_id                 buffer id
  7653.       next_view_p             Pointer to next view     (NEXT_VIEW)
  7654.       prev_view_p             Pointer to previous view (PREV_VIEW)
  7655.  
  7656.    A buffer contains the following fields:
  7657.  
  7658.       .buf_name               Name of buffer
  7659.       .Noflines               Number of lines in file
  7660.       .modify                 Non zero indicates buffer
  7661.                               has been modified
  7662.       .margins                String containing left,right
  7663.                               and new paragraph margins.
  7664.                               1..254
  7665.       .tabs                   String containing up to 30
  7666.                               tab stops.
  7667.       .Nofviews               Number of views of the buffer
  7668.       .mode_name              Name of current mode
  7669.       buffer variables        Contents of variables defined by
  7670.                               the BUFFER primitive.
  7671.  
  7672.    Some fields that don't help explain the windows structure have been
  7673.    left out.
  7674.  
  7675.  
  7676. (command,cursor): WORD-CHARS [characters]
  7677.  
  7678.    Allows you to specify the characters in a word.  These characters
  7679.    affect word commands such as BOTH-NEXT-WORD or BOTH-PREV-WORD and the
  7680.    characters used for word searching.
  7681.  
  7682. (command,misc): WORD-WRAP [Y|N]
  7683.  
  7684.    If yes, the editor attempts to keep the cursor within the margins when
  7685.    entering text, moving the cursor, and deleting characters.  The
  7686.    WORD-WRAP command only affects the current buffer.  To set the default
  7687.    word-wrap style for specific file extensions, invoke the CONFIG menu
  7688.    (F5) and select "File extension setup...".
  7689.  
  7690.    See also  FORMAT-SPACES
  7691.  
  7692. (built-in,file): WRITE_FILE [command_line]
  7693.  
  7694.    Writes current buffer to file name specified.  If no name is specified,
  7695.    the buffer name is used.
  7696.  
  7697.    command_line may contain an output filename and any of the
  7698.    following switches:
  7699.  
  7700.         + or -E         Turn on/off expand tabs to spaces switch.  Default
  7701.                         is off.
  7702.  
  7703.         + or -S         Strip trailing spaces on each line. Default is on.
  7704.  
  7705.         + or -B         Binary switch. Default is off. Save file without
  7706.                         carriage return, line feeds, or end of file
  7707.                         marker.
  7708.  
  7709.         + or -O         Overwrite destination switch (no backup).
  7710.                         Default is off.  Useful for writing a file
  7711.                         to a device such as the printer.
  7712.  
  7713.         + or -T         Compress saved file with tab increments of 8
  7714.                         switch.  Default is off.
  7715.  
  7716.         + or -Z         Add end of file marker Ctrl-Z switch. Default is
  7717.                         off.
  7718.  
  7719.         + or -A         Convert dest filename to absolute.  Default is
  7720.                         on. This option is currently used to write files
  7721.                         to device names such as PRN.  For example,
  7722.                         "write_file +o -a +e prn" sends the current buffer
  7723.                         to the printer.
  7724.  
  7725.         +D,-D,+DK,-DK   These options specify the backup style.  The
  7726.                         default backup style is +D.  The backup styles
  7727.                         are:
  7728.  
  7729.              +D         Write backup files to a backup directory.  The
  7730.                         default backup directory is "\slick\backup\". You
  7731.                         may define an alterate backup directory by
  7732.                         defining an environment variable call
  7733.                         SLICKBACKUP.  The SLICKBACKUP environment variable
  7734.                         must not contain a drive specifier and must end
  7735.                         with a '\' character. The backup file gets the
  7736.                         same name part as the destination file. For
  7737.                         example, given the destination file
  7738.                         "c:\project\test.c", the backup  file will
  7739.                         be "c:\slick\backup\test.c". This option
  7740.                         is NOT recommended if you are running SLICK on
  7741.                         a NETWORK.
  7742.  
  7743.              -D         Write backup files to a directory derived from
  7744.                         concatenating a backup directory with
  7745.                         the path and name of the destination file. The
  7746.                         default backup directory is "\slick\backup\". You
  7747.                         may define an alterate backup directory by
  7748.                         defining an environment variable call
  7749.                         SLICKBACKUP.  The SLICKBACKUP environment variable
  7750.                         must not contain a drive specifier and must end
  7751.                         with a '\' character.  For example, given the
  7752.                         destination file "c:\project\test.C", the backup
  7753.                         file will be "c:\slick\backup\project\test.c".
  7754.                         For a network, you may need to create the directory
  7755.                         with appropriate access rights manually before
  7756.                         saving a file.
  7757.  
  7758.  
  7759.              +DK,-DK    Write backup files to a backup directory off
  7760.                         the same directory as the destination file.
  7761.                         +DK or -DK specifies this style.  For example, given
  7762.                         the destination file "c:\project\test.c", the backup
  7763.                         file will be "c:\project\backup\test.c".  Unlike the
  7764.                         other backup options, SLICK should have no problems
  7765.                         creating the BACKUP directory with the correct access
  7766.                         rights for a network.
  7767.  
  7768.    The internal variable .modify is turned off if the output filename is
  7769.    the same as the current file name.
  7770.  
  7771.    Example
  7772.  
  7773.       /* Save the current file. */
  7774.       write_file
  7775.       /* Write current file to printer. */
  7776.       write_file '+o -a +e prn'
  7777.  
  7778.  
  7779. (command,file): WRITE-LIST [filename]
  7780.  
  7781.  
  7782.    Writes the selected files to filename.  If filename is not specified
  7783.    you are prompted for a filename.  The WRITE-LIST command may be used to
  7784.    create a list of filenames for the MAKE-TAGS command.  The SAVE command
  7785.    is the fastest way to save a file manager list.  However, its format is
  7786.    not accepted by the MAKE-TAGS command and may not be accepted by other
  7787.    programs.  Used in fileman mode.
  7788.  
  7789.    See also  READ-LIST
  7790.  
  7791. (command,misc): WRITE-STATE filename
  7792.  
  7793.    Saves macro module(s), name table, key table(s), global/universal
  7794.    variable value(s), and editor options to filename.  Upon return RC is
  7795.    set to the return code.  If RC is non-zero, an error message will get
  7796.    displayed after the macro finished unless CLEAR_MESSAGE is called.
  7797.    When the editor is invoked, it searches for the state file "slick.sta".
  7798.    First the directory from which the editor was loaded is searched and
  7799.    then the path directories are searched.  The editor will not search for
  7800.    a state file if the editor is invoked with the '-x' option in the
  7801.    command line.  State files (.sta) or normal pcode files (.sx) may be
  7802.    specified with the -x option.
  7803.  
  7804.    Example
  7805.  
  7806.      write-state  slick.sta
  7807.  
  7808.    See also  RC, CLEAR_MESSAGE, WRITE_STATE
  7809.  
  7810. (built-in,misc): WRITE_STATE filename
  7811.  
  7812.    Saves macro module(s), name table, key table(s), global/universal
  7813.    variable value(s), and editor options to filename.  Upon return RC is
  7814.    set to the return code.  If RC is non-zero, an error message will get
  7815.    displayed after the macro finished unless CLEAR_MESSAGE is called.
  7816.    When the editor is invoked, it searches for the state file "slick.sta".
  7817.    First the directory from which the editor was loaded is searched and
  7818.    then the PATH directories are searched.  The editor will not search for
  7819.    a state file if the editor is invoked with the '-x' option in the
  7820.    command line.  State files (.sta) or normal pcode files (.sx) may be
  7821.    specified with the -x option.
  7822.  
  7823.    Example
  7824.  
  7825.      write_state  'rich.sta'
  7826.      /* now the editor may be invoked with "s -xrich.sta". */
  7827.  
  7828.    See also  RC, CLEAR_MESSAGE
  7829.  
  7830. (built-in,display): WRITE_XY string,x,y [,color]
  7831.  
  7832.    Writes string in color to screen position specified.  Shell window is
  7833.    not opened.  x range is 0..SCREEN_WIDTH()-1.  y range is
  7834.    0..SCREEN_WIDTH()-1.  Color constants are listed in the file
  7835.    "colors.sh".
  7836.  
  7837. (built-in,misc): XCOM [command]
  7838.  
  7839.    Executes the external command or program specified by-passing an
  7840.    internal command search for the command. XCOM is an internal command.
  7841.  
  7842.    Example
  7843.  
  7844.       defc color  (COLOR_FIELD_ARG)
  7845.         /* if xcom did not prefix this command, this would cause */
  7846.         /* infinite recursion */
  7847.         'xcom color 'arg(1)
  7848.  
  7849. (command,misc): XDOS [-e] [command]
  7850.  
  7851.    For DOS, the command XDOS allows you to allocate all but approximately
  7852.    10k of memory to any external program.  Before the command is executed,
  7853.    the editor swaps almost all of itself to disk or EMS memory to run the
  7854.    command specified.  SLICK will automatically use EMS memory if you have
  7855.    an EMS driver installed.  If you want SLICK to used extended memory,
  7856.    invoke SLICK with the -Y option (See help on INVOCATION).  If you do
  7857.    not specify a command parameter to the XDOS command, SLICK will save
  7858.    the window configuration, buffer positions, the command retrieve
  7859.    buffer, and exit.  Later you can return to the same directory and
  7860.    resume editing the same files by invoking SLICK with the "-r restore"
  7861.    parameters.  Two files are created in the current directory called
  7862.    "$window.slk" and "$command.slk" which contain the window
  7863.    configuration, buffer positions, and command retrieve buffer.  Specify
  7864.    the -e parameter if you want the standard output of the command to be
  7865.    processed as error messages.  See help on NEXT-ERROR command for format
  7866.    of error messages recognized.
  7867.  
  7868.    See also  DOS, AUTO-RESTORE
  7869.  
  7870. (command,misc): XNEXT-ERROR
  7871.  
  7872.    Reads the "$errors.tmp" file and finds next error.  Cursor is placed on
  7873.    the line and column of the file with error.  This command is not useful
  7874.    for OS/2 and is normally invoked by the DOS batch program "slk.bat".
  7875.    See help on the NEXT-ERROR command for a description of the error
  7876.    message format.
  7877.  
  7878.    See also  COMPILE, NEXT-ERROR, MAKE-PROJECT
  7879.  
  7880.