home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 April / PCO_04_97.ISO / filesbbs / os2 / slrn0931.arj / SLRN0931.ZIP / doc / README.macros < prev    next >
Encoding:
Text File  |  1997-02-24  |  26.3 KB  |  797 lines

  1. -*- mode: text; mode: fold; -*-
  2. The purpose of this note is to provide some instructions on extending
  3. the newsreader in its macro language.  It consists of two parts: an
  4. overview of macros and the reference manual for slrn intrinsic
  5. functions.
  6.  
  7. {{{ Introduction 
  8.  
  9. The present implementation does not provide many hooks into the
  10. newsreader.  More capabilities will be added in subsequent releases.
  11.       
  12. When slrn is started, it reads the .slrnrc user initialization file.
  13. That file may contain the `interpret' command which causes the
  14. newsreader to load a specified S-Lang script, e.g.,
  15.  
  16.     interpret ".slrn.sl"
  17.  
  18. The script file must obey the syntax of the S-Lang language.  See
  19. slang/doc/slang.tex for information about the syntax.  This
  20. distribution includes a file called `slrn.sl' which contains examples
  21. of functions described in this document.
  22.  
  23. This macro file can define hooks that the newsreader will call, new
  24. functions with keybindings, etc...  
  25.  
  26.  
  27. ---------------------------------------------------------------------------
  28. Defining Key Macros
  29. ---------------------------------------------------------------------------
  30.  
  31.     Although one is able to bind keys to specific functions via lines
  32.     of the form
  33.     
  34.          setkey group "refresh_groups"  "G"
  35.      
  36.     in the .slrnrc file, it is not possible to defined more
  37.     complicated actions in this manner.  However, macros can be
  38.     defined by using a S-Lang script.  For example, the
  39.     `refresh_groups' internal function refreshes the newsgroups but it
  40.     does not cause the cursor to move to the top of the newsgroup
  41.     list.  On the other hand, the internal function `bob' moves to the
  42.     top of the list but it does not refresh the groups.  One can
  43.     define a S-Lang function to perform both actions:
  44.     
  45.          define refresh_groups_bob ()
  46.      {
  47.          call ("refresh_groups");
  48.          call ("bob");
  49.      }
  50.      
  51.     and bind it to a key:
  52.     
  53.          definekey ("refresh_groups_bob", "g", "group");
  54.      
  55.     Note: It is not yet possible to write this as:
  56.     
  57.         define refresh_groups_bob ()
  58.     {
  59.         refresh_groups ();
  60.         bob ();
  61.     }
  62.  
  63.     This restriction will be lifted in the future.
  64.     
  65.     The `definekey' function takes 3 arguments:
  66.     
  67.          function to execute
  68.      keybinding
  69.      keymap name   ("article" or "group")
  70.      
  71.     Here is another macro that may be used in article mode.  It
  72.     performs a regular expression search for subjects.
  73.     
  74.     variable Last_Search_Str = "";
  75.     define re_subject_search_forward ()
  76.     {
  77.        variable str;
  78.        
  79.        ERROR_BLOCK
  80.          {
  81.            () = header_up (1);
  82.          }
  83.     
  84.        !if (header_down (1)) return;
  85.     
  86.        str = read_mini ("Subject re-search fwd", Last_Search_Str, "");
  87.     
  88.        !if (strlen (str))
  89.          return;
  90.     
  91.        Last_Search_Str = str;
  92.        !if (re_fsearch_subject (str))
  93.          error ("Not found.");
  94.     }
  95.     
  96.     To bind it to, e.g., `s' in the article keymap, use:
  97.    
  98.     definekey ("re_subject_search_forward", "s", "article");
  99.     
  100.  
  101.     Some slrn keyboard functions require a ``prefix argument''.
  102.     Many people find the use of prefix arguments somewhat strange.
  103.     For example, instead of typing `ESC 1 ESC p' to reconstruct a thread,
  104.     one can simply use the function:
  105.     
  106.         define my_recreate_thread ()
  107.     {
  108.         set_prefix_argument (1);
  109.         call ("get_parent_header");
  110.     }
  111.     
  112.    Here is a function that pipes the current article to a
  113.    command called `most' (a paging program similar to more/less):
  114.    
  115.         define pipe_to_most ()
  116.     {
  117.         pipe_article ("most");
  118.     }
  119.     definekey ("pipe_to_most", "&", "article");
  120.  
  121.    Here it has been bound to the `&' key.  Most likely one will want
  122.    to pipe the article to a shell script for further processing.
  123.    
  124.    Finally, some of the built-in keyboard functions will prompt for a
  125.    string.  For example, in article mode, pressing the `:' key will
  126.    prompt for an filename.  The function `set_input_string' may be
  127.    used to provide a response to such a prompt, e.g.,
  128.    
  129.       % The `:' command will prompt for a filename.
  130.       set_input_string ("/tmp/decoded");
  131.       call ("decode");
  132.  
  133.    
  134. ---------------------------------------------------------------------------
  135. Hooks
  136. ---------------------------------------------------------------------------
  137.    
  138. Currently, the newsreader
  139. recognizes the following hooks:
  140.  
  141.    startup_hook
  142.       This hook is called right after the newsreader is initialized
  143.       and immediately before checking for news.  This hook allows
  144.       the user to set variables on a server by server basis.
  145.       
  146.       Here is an example:
  147.       
  148.          define startup_hook ()
  149.      {
  150.        !if (strcmp (server_name (), "uhog"))
  151.          {
  152.            set_integer_variable ("lines_per_update", 20);
  153.            set_integer_variable ("read_active", 0);
  154.          }
  155.      }
  156.  
  157.       It simply sets the `lines_per_update' variable to 20 and turns
  158.       off reading of the active file if the servername is `uhog' (it
  159.       is a slow server).
  160.  
  161.    group_mode_hook
  162.       This hook is called after checking for news and immediately
  163.       before entering the main keyboard loop.
  164.       
  165.    article_mode_hook
  166.       This hook is called immediately before going into article mode.
  167.       One can set variables based on the group name.  For example,
  168.       
  169.       define article_mode_hook ()
  170.       {
  171.          variable sorting_method = 7;
  172.      variable author_display = 2;
  173.          variable signature_file = ".signature";
  174.      
  175.          if (is_substr (current_newsgroup (), "binaries")
  176.          or is_substr (current_newsgroup (), "pictures"))
  177.        {
  178.           sorting_method = 3;
  179.           author_display = 0;
  180.        }
  181.  
  182.      if (strncmp (current_newsgroup (), "comp.", 5))
  183.        signature_file = ".nerd-signature";
  184.        
  185.      set_integer_variable ("sorting_method", sorting_method);
  186.      set_integer_variable ("author_display", author_display);
  187.      set_string_variable ("signature", signature_file);
  188.       }
  189.       
  190.      changes the `sorting_method' and `author_display' variables to
  191.      something more appropriate for newgroups which contain encoded
  192.      articles.
  193.      
  194.    header_number_hook
  195.      If defined, this function will be called after selecting a header
  196.      via a header number.
  197.  
  198. }}}
  199.  
  200. ---------------------------------------------------------------------------
  201. Command Reference
  202. ---------------------------------------------------------------------------
  203. The above examples used ``intrinsic'' functions such as `call',
  204. `set_integer_variable', etc.  This section describes all slrn
  205. intrinsic functions that are available via the interpreter.  The code
  206. S-Lang langauge includes many others such as `strcmp' and `is_substr'
  207. which are not described here.
  208.  
  209.  
  210. ---------------------------------------------------------------------------
  211.  article_as_string
  212.    Prototype: String article_as_string ();
  213.    
  214.    This function will return the entire contents of the current
  215.    article as a string.
  216.    
  217.    See Also:
  218.  
  219. ---------------------------------------------------------------------------
  220.  call
  221.    Prototype: Void call (String fun);
  222.    
  223.    This function is used to execute an interactive slrn internal
  224.    function.  Such functions are used with `setkey' statements in the
  225.    .slrnrc startup files.
  226.    
  227.    See Also: definekey, undefinekey, set_prefix_argument
  228.  
  229. ---------------------------------------------------------------------------
  230.  collapse_thread
  231.    Prototype: Void collapse_thread ();
  232.    
  233.    This function may be used to collapse the current thread.
  234.    
  235.    See Also: uncollapse_thread, collapse_threads, is_thread_collapsed
  236.  
  237. ---------------------------------------------------------------------------
  238.  collapse_threads
  239.    Prototype: Void collapse_threads ();
  240.    
  241.    This function will collapse all threads in the current newsgroup. 
  242.    
  243.    See also: uncollapse_threads
  244.  
  245. ---------------------------------------------------------------------------
  246.  current_newsgroup
  247.    Prototype: String current_newsgroup ();
  248.    
  249.    This function returns the name of the current newsgroup.
  250.    
  251.    See Also: server_name
  252.  
  253. ---------------------------------------------------------------------------
  254.  definekey
  255.    Prototype: definekey (String fun, String key, String km);
  256.    
  257.    This function is used to bind a key sequence specified by `key' to
  258.    a function `fun' in the keymap `km'.  Here `fun' can be any
  259.    predefined slang function that takes 0 arguments and returns void.
  260.    The parameter `km' must be either "article", "group", or "readline".
  261.    
  262.    See Also: undefinekey, call, set_prefix_argument
  263.  
  264. ---------------------------------------------------------------------------
  265.  error
  266.    Prototype: Void error (String s);
  267.    
  268.    This function generates a S-Lang error and displays a message given
  269.    by `s'.
  270.    
  271.    See Also: message
  272.  
  273. ---------------------------------------------------------------------------
  274.  extract_article_header
  275.    Prototype: String extract_article_header (String h);
  276.  
  277.    This function returns the article header line specified by the
  278.    header keyword `h'.  If the header does not exist, it returns the
  279.    empty string.
  280.    
  281.    See Also: is_article_visible
  282.    
  283. ---------------------------------------------------------------------------
  284.  get_group_flags
  285.    Prototype: Integer get_group_flags ();
  286.  
  287.    This function returns the flags associated with the current
  288.    newsgroup.  This integer is a bitmapped value whose bits are
  289.    defined by the following constants:
  290.  
  291.      GROUP_UNSUBSCRIBED   : set if the group is unsubscribed
  292.      GROUP_NEW_GROUP_FLAG : set if the group is new
  293.  
  294.    See Also: get_header_flags, set_group_flags, current_newsgroup
  295.    
  296. ---------------------------------------------------------------------------
  297.  get_header_flags
  298.    Prototype: Integer get_header_flags ();
  299.    
  300.    This functions returns the flags for the current header.  This
  301.    integer is a bitmapped value whose bits are defined by the following 
  302.    constants:
  303.    
  304.       HEADER_READ : set if header is marked as read
  305.       HEADER_TAGGED : set if header has `*' tag
  306.       HEADER_HIGH_SCORE : set if header has high score
  307.       HEADER_LOW_SCORE : set if header has low score
  308.    
  309.    See also: set_header_flags
  310.  
  311. ---------------------------------------------------------------------------
  312.  get_header_tag_number
  313.    Prototype: Integer get_header_tag_number ();
  314.    
  315.    This function returns the value of the numerical tag associated
  316.    with the current header.  If the header has no numerical tag, zero
  317.    is returned.
  318.    
  319.    See Also:
  320.  
  321. ---------------------------------------------------------------------------
  322.  get_select_box_response
  323.    Prototype: Integer get_select_box_response (title, item_1, ..., n_items);
  324.    
  325.    This function pops a selection box and queries the user for a
  326.    response.  An integer is returned which indicates the user's choice.
  327.    For example:
  328.    
  329.        variable rsp = get_select_box_response (
  330.                          "Pick a number:",
  331.              "one", "two", "three", "four", 
  332.              4);
  333.        
  334.        message (Sprintf ("You chose %d", rsp, 1));
  335.        
  336.    See also: read_mini, message, get_yes_no_cancel
  337.  
  338. ---------------------------------------------------------------------------
  339.  get_variable_value
  340.    Prototype: Value get_variable_value (String v);
  341.    
  342.    This function returns the value of an internal variable specified
  343.    by `v'.  Here `v' must be one of the variable names that can be
  344.    used in .slrnrc `set' commands.  The type of the object returned will
  345.    depend upon the type of the object `v' represents.
  346.    
  347.    See Also: set_integer_variable, set_string_variable
  348.  
  349. ---------------------------------------------------------------------------
  350.  get_yes_no_cancel
  351.    Prototype: Integer get_yes_no_cancel (str);
  352.    
  353.    This function displays `str' in the minibuffer after concatenating
  354.    "? [Y]-es, N-o, C-ancel" to it.  It then awaits user input and
  355.    returns:
  356.    
  357.         1 if yes
  358.     0 if no
  359.        -1 if cancel
  360.        
  361.    Note:  if a `%' character is to appear, it must be doubled.
  362.    
  363.    See also: get_select_box_response, getkey, read_mini
  364. ---------------------------------------------------------------------------
  365.  getkey
  366.    Prototype: Integer getkey ();
  367.    
  368.    Read a character from the terminal and returns its value.
  369.    
  370.    Note: Function and arrow keys usually return more than one character.
  371.    
  372.    See Also: ungetkey, input_pending, read_mini
  373.  
  374. ---------------------------------------------------------------------------
  375.  goto_num_tagged_header
  376.    Prototype: Integer goto_num_tagged_header (Integer n);
  377.    
  378.    This function causes the header with numerical tag `n' to become the
  379.    current header.  It returns 1 upon success or 0 upon failure.
  380.    
  381.    See also: header_down, get_header_flags, call
  382.  
  383. ---------------------------------------------------------------------------
  384.  group_down_n
  385.    Prototype: Integer group_down_n (Integer n);
  386.    
  387.    This function moves the current group pointer down `n' groups and
  388.    returns the actual number moved.
  389.    
  390.    See Also: group_up_n, group_search, current_newsgroup
  391.    
  392. ---------------------------------------------------------------------------
  393.  group_search
  394.    Prototype: Integer group_search (String name);
  395.    
  396.    This function searches for a newsgroup containing the string
  397.    `name'.  It also searches newsgroup descriptions.  A non-zero value
  398.    is returned upon success or zero upon failure.
  399.    
  400.    Note: This search may wrap.
  401.    
  402.    See Also: select_group, current_newsgroup
  403.    
  404. ---------------------------------------------------------------------------
  405.  group_unread
  406.    Prototype: Integer group_unread ();
  407.    
  408.    This function returns the number of unread articles in the current
  409.    newsgroup.
  410.    
  411.    See Also: select_group, current_newsgroup, is_group_mode
  412. ---------------------------------------------------------------------------
  413.  group_up_n
  414.    Prototype: Integer group_up_n (Integer n);
  415.    
  416.    This function moves the current group pointer up `n' groups and
  417.    returns the actual number moved.
  418.    
  419.    See Also: group_down_n, group_search, current_newsgroup
  420.    
  421. ---------------------------------------------------------------------------
  422.  header_down
  423.    Prototype: Integer header_down (Integer n);
  424.  
  425.    The function moves the current position down `n' headers.  It
  426.    returns the number that was actually moved.
  427.  
  428.    See also: header_up
  429.  
  430. ---------------------------------------------------------------------------
  431.  header_next_unread
  432.    Prototype: Intger header_next_unread ();
  433.    
  434.    Goto next unread header.  The function returns one upon success or
  435.    zero upon failure.
  436.    
  437.    See Also: header_down
  438.  
  439. ---------------------------------------------------------------------------
  440.  header_up
  441.    Prototype: header_up ();
  442.    
  443.    The function moves the current position up `n' headers.  It
  444.    returns the number that was actually moved.
  445.  
  446.    See also: header_down
  447.  
  448. ---------------------------------------------------------------------------
  449.  input_pending
  450.    Prototype: Integer input_pending (Integer tsecs);
  451.    
  452.    This function checks for keyboard input.  Its argument specifies
  453.    the number of tenths of a second to wait.  It returns 0 if no input
  454.    is available or a non-sero value if input is available.
  455.    
  456.    See Also: getkey, ungetkey
  457.  
  458. ---------------------------------------------------------------------------
  459.  is_article_visible
  460.    Prototype: Integer is_article_visible ();
  461.    
  462.    This function returns information about whether or not the article
  463.    associated with the current header is visible in a window.
  464.    Specifically, it returns:
  465.    
  466.       0  : if the article window is hidden
  467.       1  : if the article window is showing but the current header
  468.              does not refer to the article
  469.       3  : if the article window contains the current header article
  470.       
  471.    See Also: call
  472.    
  473. ---------------------------------------------------------------------------
  474.  is_group_mode
  475.    Prototype: Integer is_group_mode ();
  476.    
  477.    This function returns non-zero if the current mode is group-mode.
  478.    
  479.    See Also:
  480.    
  481. ---------------------------------------------------------------------------
  482.  is_thread_collapsed
  483.    Prototype: Integer is_thread_collapsed ();
  484.    
  485.    If the current header is the start of a collapsed thread, this
  486.    function will return a non-zero value.  If the thread is expanded,
  487.    zero will be returned.
  488.    
  489.    See Also: collapse_thread
  490.  
  491. ---------------------------------------------------------------------------
  492.  make_home_filename
  493.    Prototype: String make_home_filename (name);
  494.    
  495.    This function returns the complete filename associated with a file
  496.    called `name' located in the user's home directory.
  497.  
  498.    See Also: read_mini
  499.  
  500. ---------------------------------------------------------------------------
  501.  message
  502.    Prototype: Void message (String m);
  503.    
  504.    The `message' function displays the string `m'.
  505.    
  506.    See Also: error, get_select_box_response
  507.  
  508. ---------------------------------------------------------------------------
  509.  next_tagged_header
  510.    Prototype: Integer next_tagged_header ();
  511.    
  512.    This function moves the current header position to the next `*'
  513.    tagged header.  It returns non-zero upon success or zero upon
  514.    failure.
  515.    
  516.    See also: prev_tagged_header, goto_num_tagged_header, header_up, header_down
  517.  
  518. ---------------------------------------------------------------------------
  519.  pipe_article
  520.    Prototype: Void pipe_article (String cmd);
  521.    
  522.    This function may be used to pipe the current article to the command
  523.    given by the `cmd' argument.
  524.    
  525.    See Also: `read_mini'
  526.  
  527. ---------------------------------------------------------------------------
  528.  prev_tagged_header
  529.    Prototype: Integer prev_tagged_header ();
  530.    
  531.    
  532.    This function moves the current header position to the previous `*'
  533.    tagged header.  It returns non-zero upon success or zero upon
  534.    failure.
  535.    
  536.    
  537.    See also: next_tagged_header, goto_num_tagged_header, header_up, header_down
  538.  
  539. ---------------------------------------------------------------------------
  540.  quit
  541.    Prototype: Void quit (Integer exit_status);
  542.    
  543.    This function will cause the newsreader to exit with exit status
  544.    specified by `exit_status'.
  545.    
  546.    See Also: call
  547.  
  548. ---------------------------------------------------------------------------
  549.  re_bsearch_author
  550.    Prototype: Integer re_bsearch_author (String regexp);
  551.  
  552.    Search backward for header whose author matches regular expression
  553.    `regexp'. If successful, it returns 1 and the current header is set
  554.    to the matching header.  It returns 0 upon failure.
  555.  
  556.    See also: re_fsearch_author, re_fsearch_subject
  557.  
  558. ---------------------------------------------------------------------------
  559.  re_bsearch_subject
  560.    Prototype: Integer re_bsearch_subject (String regexp);
  561.  
  562.    Search backward for header whose subject matches regular expression
  563.    `regexp'. If successful, it returns 1 and the current header is set
  564.    to the matching header.  It returns 0 upon failure.
  565.  
  566.    See also: re_fsearch_author, re_bsearch_subject
  567.  
  568. ---------------------------------------------------------------------------
  569.  re_fsearch_author
  570.    Prototype: Integer re_bsearch_author (String regexp);
  571.  
  572.    Search forward for header whose author matches regular expression
  573.    `regexp'. If successful, it returns 1 and the current header is set
  574.    to the matching header.  It returns 0 upon failure.
  575.  
  576.    See also: re_bsearch_author, re_fsearch_subject
  577.  
  578. ---------------------------------------------------------------------------
  579.  re_fsearch_subject
  580.    Prototype: Integer re_fsearch_subject (String regexp);
  581.  
  582.    Search forward for header whose subject matches regular expression
  583.    `regexp'. If successful, it returns 1 and the current header is set
  584.    to the matching header.  It returns 0 upon failure.
  585.  
  586.    See also: re_fsearch_author, re_bsearch_subject
  587.  
  588. ---------------------------------------------------------------------------
  589.  re_search_article
  590.    Prototype: Integer re_search_article (String pat);
  591.  
  592.    This function searches forward in the article associated with the
  593.    currently selected header for a string matching the regular
  594.    expression given by the parameter `pat'.  It returns 0 if no
  595.    matching line is found.   Otherwise, it returns 1 and the matching
  596.    line will be left on the stack as a string.
  597.    
  598.    See also: search_article
  599.  
  600. ---------------------------------------------------------------------------
  601.  read_mini
  602.    Prototype: String read_mini (String p, String dflt, String init);
  603.    
  604.    This function will prompt the user for a string value using prompt
  605.    `p'.  The second parameter `dfl' is used to specify the default value.
  606.    If the final parameter is not the empty string (""), it will be
  607.    made available to the user for editing.
  608.    
  609.    See Also: read_mini_no_echo, getkey, set_input_string
  610.  
  611. ---------------------------------------------------------------------------
  612.  read_mini_no_echo
  613.    Prototype: String read_mini_no_echo (String p, String dflt, String init);
  614.    
  615.    This function performs the same purpose as `read_mini' except it
  616.    does not echo the entered text to the screen.
  617.    
  618.    See Also: read_mini, getkey, set_input_string
  619.    
  620. ---------------------------------------------------------------------------
  621.  save_current_article
  622.    Prototype: Integer save_current_article (String filename);
  623.    
  624.    This function saves the currently selected article to a file
  625.    specified by `filename'.  It returns 0 upon success or -1 upon
  626.    failure.
  627.    
  628.    Note: This function always creates a new file.
  629.     
  630.    See Also:
  631.    
  632. ---------------------------------------------------------------------------
  633.  search_article
  634.    Prototype: Integre search_article (String str);
  635.  
  636.    This function searches forward in the article associated with the
  637.    currently selected header for the string given by the parameter
  638.    `str'.  It returns 0 if no matching line is found.  Otherwise, it
  639.    returns 1 and the matching line will be left on the stack as a
  640.    string.
  641.  
  642.    See also: re_search_article
  643.  
  644. ---------------------------------------------------------------------------
  645.  select_group
  646.    Prototype: Integer select_group ();
  647.    
  648.    This function may be used to select the current group.  It returns
  649.    0 upon success or -1 upon failure.  It can fail if the group has no
  650.    articles.
  651.    
  652.    See Also: current_newsgroup
  653.    
  654. ---------------------------------------------------------------------------
  655.  server_name
  656.    Prototype: String server_name ();
  657.    
  658.    The `server_name' function returns the name of the current server.
  659.    
  660.    See Also: current_newsgroup
  661.  
  662. ---------------------------------------------------------------------------
  663.  set_article_window_size
  664.    Prototype: Void set_article_window_size (Integer nrows);
  665.    
  666.    The `set_article_window_size' may be used to set the height of the
  667.    article window.  The variable `SCREEN_HEIGHT' may be used to
  668.    facilitate this.
  669.  
  670.    See Also:
  671.  
  672. ---------------------------------------------------------------------------
  673.  set_group_flags
  674.    Prototype: Void set_group_flags (Integer flags);
  675.    
  676.    This function may be used to set the flags associated with the
  677.    current newsgroup.
  678.    
  679.    See Also: get_group_flags
  680.       
  681. ---------------------------------------------------------------------------
  682.  set_header_flags
  683.    Prototype: Void set_header_flags (Integer flags);
  684.    
  685.    This function may be used to set the flags associated with the
  686.    currently selected header.  See the description for the
  687.    `get_header_flags' function for more information.
  688.    
  689.    See also: get_header_flags
  690.  
  691. ---------------------------------------------------------------------------
  692.  set_input_string
  693.    Prototype: Void set_input_string (String val);
  694.    
  695.    This function may be used to set the string that will be returned
  696.    by the next prompt for input in the minibuffer.  One can set the
  697.    value returned for the next n prompts by separating the values by
  698.    \n characters.  For example,
  699.    
  700.        variable a, b;
  701.        set_input_string ("Apple\nOrange");
  702.        a = read_mini ("Enter Fruit", "", "");
  703.        b = read_mini ("Enter another Fruit", "", "");
  704.        
  705.    will result in `a' having the value `Apple' and `b' having the
  706.    value `Orange'.
  707.    
  708.    See Also: read_min
  709.  
  710. ---------------------------------------------------------------------------
  711.  set_integer_variable
  712.    Prototype: Void set_integer_variable (String name, Integer v);
  713.    
  714.    This function may be used to set the value of the internal integer
  715.    variable specified by `name' to value `v'.  `name' must be an integer
  716.    variable name allowed in .slrnrc `set' commands.
  717.    
  718.    See Also: set_string_variable, get_variable_value
  719.  
  720. ---------------------------------------------------------------------------
  721.  set_prefix_argument
  722.    Prototype: Void set_prefix_argument (Integer val);
  723.    
  724.    The `set_prefix_argument' function may be used to set the prefix 
  725.    argument to `val'.  It is mainly used immediately before `calling'
  726.    internal functions which take prefix arguments.
  727.    
  728.    See Also: `call'
  729.  
  730. ---------------------------------------------------------------------------
  731.  set_string_variable
  732.    Prototype: Void set_string_variable (String name, String v);
  733.    
  734.    This function may be used to set the value of the internal string
  735.    variable specified by `name' to value `v'.  `name' must be a string
  736.    variable name allowed in .slrnrc `set' commands.
  737.    
  738.    See Also: set_integer_variable, get_variable_value
  739.  
  740. ---------------------------------------------------------------------------
  741.  thread_size
  742.    Prototype: Integer thread_size ();
  743.    
  744.    This function returns the number of articles in the current thread
  745.    or subthread.
  746.    
  747.    See Also:
  748.  
  749. ---------------------------------------------------------------------------
  750.  uncollapse_thread
  751.    Prototype: Void uncollapse_thread ();
  752.    
  753.    This function may be used to uncollapse the current thread.
  754.    
  755.    See Also: thread_size, collapse_thread, is_thread_collapsed
  756.  
  757. ---------------------------------------------------------------------------
  758.  uncollapse_threads
  759.    Prototype: Void uncollapse_threads ();
  760.    
  761.    This function uncollapses all threads.  This is usually necessary
  762.    if one wants to use the header movement functions to access hidden
  763.    headers.
  764.    
  765.    See also: collapse_threads
  766.  
  767. ---------------------------------------------------------------------------
  768.  undefinekey
  769.    Prototype: Void undefinekey (String key, String map);
  770.    
  771.    This function undefineds a key sequence specified by `key' from
  772.    keymap `map'.
  773.    
  774.    See Also: definekey
  775.  
  776. ---------------------------------------------------------------------------
  777.  update
  778.    Prototype: update ();
  779.    
  780.    This function may be used to force the display to be updated.
  781.    
  782.    See also: message
  783.  
  784. ---------------------------------------------------------------------------
  785.  ungetkey
  786.    Prototype: Void ungetkey (Integer ch);
  787.  
  788.    This function pushes the character `ch' back upon the input stream
  789.    such that the next call to `getkey' will return it.  It is possible
  790.    to push several characters back.
  791.    
  792.    See Also: getkey
  793.  
  794. ---------------------------------------------------------------------------
  795.  
  796.  
  797.