Changeset c82b055 for doc/advanced.txt


Ignore:
Timestamp:
Jul 26, 2003, 1:36:36 PM (21 years ago)
Author:
Erik Nygren <nygren@mit.edu>
Branches:
master, barnowl_perlaim, debian, owl, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
Children:
87c6ef1
Parents:
a7a42b9
Message:
Updated intro.txt and advanced.txt documents (still in progress).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/advanced.txt

    r675ce49 rc82b055  
    55
    66=========================
    7 Section X: CUSTOM FILTERS
    8 =========================
    9 
    10 
    11 ==========================
    12 Section X: THE CONFIG FILE
    13 ==========================
     7Section X: COMMAND ALISES
     8=========================
     9
     10[see Section 4 in intro.txt, which may want to be moved here]
    1411
    1512=======================
     
    1714=======================
    1815
    19 
    20 =========================
    21 Section X: COMMAND ALISES
    22 =========================
    23 
    24 
    25 =================
    26 Section X: STYLES
    27 =================
    28 
    29 
    30 - - - - - - - - - - - - - - - - - - - - - - - - - - -
    31 
     16[see Section 4 in intro.txt, which may want to be moved here]
     17
     18=========================
     19Section X: CUSTOM FILTERS
     20=========================
    3221
    3322For example, the following
     
    6958
    7059
    71 ==========================
    72 Section 6: THE CONFIG FILE
    73 ==========================
    74 
    75 *** WARNING: This interface may change substantially in the near future ***
    76 
    77 This file is interpreted by the perl interpreter.
    78 If you wish to execute an owl command use the
    79 function owl::command().  i.e.
    80 
    81      owl::command("set zsigproc \"/mit/kretch/bin/getzsig foo\"");
    82 
    83 will set the owl variable zsigproc.  Note that commands will currently
    84 be executed in order after the called configuration subroutine exits.
     60=========================================
     61Section 6: THE PERL EXTENSION CONFIG FILE
     62=========================================
     63
     64*** WARNING: This interface is still evolving and may change over time ***
     65
     66The ~/.owlconf file is interpreted by the perl interpreter.
     67You may specify an alternate file by running owl with "owl -c <configfile>".
    8568
    8669Subroutines created with the names below will be executed at the
     
    9174    owl::startup()     run when owl first starts
    9275    owl::shutdown()    run when owl exits
    93     owl::format_msg()  run when a new message arrives, the return
    94                           value is used to display the message on the
    95                           screen
     76    owl::format_msg()  run to format messages when using the perl style.
     77                       The return value is used to display the message on the
     78                       screen.
    9679    owl::receive_msg() run when a message is received, and after
    9780                       it has been added to the message list
    9881
    99 
    100 The following variables will be set each time a message is recevied:
    101 
    102     $owl::class, $owl::instance, $owl::recipient,
    103     $owl::sender, $owl::opcode, $owl::zsig,
    104     $owl::msg, $owl::time, $owl::host, @owl::fields, $owl::id
    105 
    106 The "appendtosepbar" variable may be set in owl::format_msg()
    107 to set text to be appended to sepbar that separates the received
    108 message list from the edit window.
     82It is possible to call back into owl and execute owl commands
     83from within these functions.  This is particularly useful
     84in owl::startup for setting up your initial owl environment.
     85If you wish to execute an owl command use the function owl::command().  i.e.
     86
     87     owl::command('set zsigproc "/mit/kretch/bin/getzsig foo"');
     88
     89will set the owl variable zsigproc to
     90the value "/mit/kretch/bin/getzsig foo".
     91Note that you will need to watch out for perl quoting issues.
     92[It may be worth talking about them a little here...]
     93
     94Both owl::format_msg and owl::receive_msg are passed perl owl::Message
     95objects which have methods for accessing the attributes of the message. 
     96
     97(Caveat: Note that these owl::Message objects are currently only
     98         snapshots of the message contents that are created as needed.  As
     99         such, there could be multiple owl::Message objects for the same owl
     100         message.  Use the msgid if you want to uniquely identify individual
     101         messages.)
     102
     103All owl::Message objects contain the following methods:
     104
     105    type      - returns the type of the message ("zephyr", "aim", "admin")
     106    direction - returns "in" or "out" for incoming or outgoing messages
     107    time      - returns a string of the time when the message showed up
     108    id        - returns a unique id for the message
     109    body      - returns the body text of the message
     110    sender    - returns the sender of the message
     111    recipient - returns the recipient of the message
     112    login     - returns either "login", "logout", or "none"
     113    is_login  - returns true if this is a login message
     114    is_logout - returns true if this is a logout message
     115    is_loginout - returns true if this is a login or logout message
     116    is_incoming - returns true if this is an incoming message
     117    is_outgoing - returns true if this is an outgoing message
     118    is_deleted  - returns true if this message is marked for deletion
     119    is_<type>   - returns true if the message is of type <type> (eg, is_zephyr)
     120    delete      - marks the message for deletion
     121    undelete    - unmarks the message from deletion
     122    pretty_sender - returns a cleaned up version of the sender
     123
     124The following owl::Message methods are only applicable to
     125various message types:
     126
     127    header      - returns the admin message header line  (admin)
     128    is_personal - returns true if this is a personal message (aim,zephyr)
     129    is_private  - returns true if this was a private message (zephyr)
     130    login_tty   - returns the login tty for login messages (zephyr)
     131    login_host  - returns the login host for login messages (zephyr)
     132    zwriteline  - returns the zwrite command line for outgoing zephyrs (zephyr)
     133    zsig        - returns the zsig (zephyr)
     134    is_ping     - returns true if this was a zephyr ping (zephyr)
     135    is_mail     - returns true if this was a new mail notification (zephyr)
     136    class       - returns the zephyr class (zephyr)
     137    instance    - returns the zephyr instance (zephyr)
     138    realm       - returns the zephyr realm (zephyr)
     139    opcode      - returns the zephyr opcode (zephyr)
     140    hostname    - returns the zephyr sender's hostname (zephyr)
     141    fields      - returns the zephyr fields as a perl list (zephyr)
     142    auth        - returns whether this zephyr was authentic (zephyr)
     143
     144An example formatting function that formats messages so that they only
     145list the direction, sender, and time would be:
     146
     147    sub owl::format_msg {
     148        my ($m) = @_;    # assigns the message object passed
     149                         # to this function to $m
     150        return sprintf "[direction=%s] from sender %s at %s\n",
     151                       $m->direction,
     152                       $m->sender,
     153                       $m->time;
     154    }
     155
     156In the above, $m is the owl::Message object and
     157its methods are called with $m->METHODNAME.
     158
     159An example receiver function that tags all zephyr pings for
     160deletion would be:
     161
     162    sub owl::receive_msg {
     163        my ($m) = @_;    # assigns the message object passed
     164                         # to this function to $m
     165        if ($m->is_zephyr and $m->is_ping) {
     166           $m->delete();
     167        }
     168    }
     169
     170
     171=================
     172Section X: STYLES
     173=================
     174
     175
     176
     177
     178
     179========================================
     180Section 7: PERL COMMANDS FROM WITHIN OWL
     181========================================
     182
     183Perl code may be executed from within owl with:
     184
     185  perl <perlcode>
     186
     187If you use pperl instead of perl, the return value
     188of the perl command will be displayed in a pop-up window.
     189This is particularly useful within key bindings
     190and aliases.  For example:
     191
     192  alias finger pperl $x=owl::getcurmsg()->hostname; `finger \@$x`;
     193
     194Will cause the "finger" command to be used to finger at the host
     195where the current message came from.  You can then bind this
     196to the "f" key with:
     197
     198   bindkey recv f command finger
     199
     200See the section above for detailss of commands and functions
     201that are available from within the perl interpreter.
Note: See TracChangeset for help on using the changeset viewer.