$Id$ 1.2.6 Started adding code for newmsgproc. It doesn't fully work yet! Don't use it. Added search, '/' and '?' to basic help. Will attempt to keep the current message as close as possible to the previous current message after an expunge. "set " and "unset " now work for boolean variables. Fixed a bug in owl_function_calculate_topmsg_normal that caused a segfault Fixed some typos in the intro doc 1.2.5 Patch to fix memory bug in replying to CC messages If we're on Athena and have static krb (or other) libraries, use them Added "athstatic" program to the release, which handles the above Cast to an int for isspace, to make gcc -Wall quiet Added 'zlist' and 'l' to basic help. 1.2.4 'zlog in' will now take an optional thrid argument to set the 'tty' variable before setting the zlocation There is now a 'zlist' command that acts like 'znol -l' 'l' is bound to 'zlist' Fixed memory leak uninitialzed memory read in fmtext viewwin will now say "End" instead of "More" when at the end Added a debugging message indicating the result of topmsg calculations You can now use %me% in filters The built-in personal filter is updated to do so Fixed a bug in moving the pointer after an expunge Fixed up the normal scrolling code. Now it should always land on a message, but it's still not optimal. Added the variable 'smartstrip' which will strip kerberos instances out for the 'reply' command. Added -R/usr/athena/lib to the build for Athena Started updating the intro document Small changes to help / about The 'subscribe' and 'unsubscribe' commands (and their aliases) now update .zephyr.subs by default. If either is given the '-t' (for "temporary") option the .zephyr.subs will not be updated Turned off beeping for hitting the top or bottom of the list of messages Made daemon.webzephyr a special case for smartstrip Added 'out' as a default filter for outgoing messages 1.2.3 Added filters "ping", "auto" and "login" by default. Added "body" as a valid field to match on in a filter. Temporary fix to bug where C-SPACE would cause the key handler to lock up. Messages now have a direciton (in, out or none). Filters can match on this direction Outbound messages are no longer type 'admin' but are of the appropriate message type (i.e. 'zephyr') and are direction 'out'. Smartnarrow now works on outgoing messages 'info' updated to show more information for admin and outgoing messages Renamed pretty_sender to short_zuser and renamed long_sender to long_zuser Moved zsig generation to the zwrite object Print the zsig used for outgoing messages The tty variable now controls the zephyr location tty name 1.2.2 Added the 'search' command. '/' is a keybinding for 'search' '?' is a keybinding for 'search -r' Fixed stristr, which was completely broken renamed owl_fmtext_ztext_stylestrip to owl_function_ztext_styletsrip and put it in functions.c Attempts to stay near the current message when switching views. When switching from an empty view to one we've previously been in, the new current message position will attempt to be close to the current position from the last time we visited that view. Fixed bug in readconfig.c that prevented building under perl 5.005. Switched "C-x C-x" to only "startcommand quit" 'getsubs' prints closer to the order you sub in. Modified the behavior of last so that "> >" will clear the screen. The new behavior of last is: Moves the pointer to the last message in the view. If we are already at the last message in the view, blanks the screen and moves just past the end of the view so that new messages will appear starting at the top of the screen. Fixed a typo in the help for smartzpunt. Fixed functions to handle curmsg being past the end of the view. 1.2.1 New framework for command handling. New framework for keymap handling. Added commands for everything that is bound to a key (do 'show commands' to get the full list). Added 'multi' and '(' commands to allow multiple commands to be specified on a line. Added user keybindings with bindkey command. Added command aliases (eg, "alias foo bar"). Added undelete command that parallels the delete command. Added additional options to delete command. The reply command now takes arguments. Added 'edit:insert-text' command. Added 'show zpunts' to show active punt filters. Added 'show variable ' and 'show variables'. Added 'show command ' and 'show commands'. Added 'show keymap ' and 'show keymaps'. Added 'M-u' to undelete all messages in current view. Fixed dotsend so that the zephyr will still send if there is whitespace after the dot but not on the same line. This should resolve an issue where dotsend wouldn't work if you'd gone up and edited a zephyr. Bug in page down fixed C-t will transpose characters Fix the scrolling bug where we would sometimes fail to scroll the screen down, leaving the current message off the bottom of the screen. Refixed 'login or login' typo in help Fixed M-u description Removed 'first' and 'last' from basic command help Added M-N to basic key help Added M-D, M-u to basic key help Fixed a quoting problem in configure.in Changed top of help to use 'show' instead of M-x Fixed a bug in the summary field for user-created aliases Added "reply zaway" which sends a zaway response to the current msg. Added "edit:delete-prev-word" command and bound M-BACKSPACE to it. Some buffer overruns fixed Variables now have a summary and a long description. Only the summary is shown with help. The long description is shown with "show variable foo". Added a 'scrollmode' variable which determines how the screen will scroll as the cursor moves. The default behaves identically to previous versions of owl. The following modes are supported: normal - This is the owl default. Scrolling happens when it needs to, and an attempt is made to keep the current message roughly near the middle of the screen. (default) top - The current message will always be the the top message displayed. neartop - The current message will be one down from the top message displayed, where possible. center - An attempt is made to keep the current message near the center of the screen. paged - The top message displayed only changes when user moves the cursor to the top or bottom of the screen. When it moves, the screen will be paged up or down and the cursor will be near the top or the bottom. pagedcenter - The top message displayed only changes when user moves the cursor to the top or bottom of the screen. When it moves, the screen will be paged up or down and the cursor will be near the center. Added owl_sprintf which returns the formatted string, or NULL. The caller must free this string. This will allocate enough memory and thus avoid potential some buffer overrun situations. Simple implementation of 'zwrite -m' (doesn't yet log an outgoing message as having been sent.) The "Not logged in or subscribing to messages" error now includes the name of the recipient. The "disable-ctrl-d" variable may also be set to "middle" which will result in ctrl-d only sending at the end of the message. This is now the default. This also added a command "editmulti:done-or-delete". Fixed a bug in the "reply -e" command. Always clear the command buffer before executing the command. (So that interactive commands can sanely do start-command.) Fixed preservation of e->dotsend across owl_editwin_clear(). Added history for multiline edit windows (eg, for zephyr composition). The M-n and M-p keys will cycle through the history ring. In particular, it is now possible to edit the command line of a zephyr being composed: C-c it and restart it and then M-p to get the aborted composition back. Added owl::send_zwrite(command, message) to the perl glue to allow for the direct sending of multi-line messages. For example: owl::send_zwrite("-c foo -i bar", "hello"); Changed owl_fmtext_print_plain to return an alloc'd string to avoid buffer overrun risks. Added owl::ztext_stylestrip("...") function to perlglue which returns the ztext with formatting stripped out. Added colorztext variable which can be used to disable @color() strings arriving in messages after it is set. (Currently, changing its value won't reformat messages). Outgoing zephyr logging now obeys the logpath variable. The '~' character in logpath and classlogpath now gets replaced with the user's home directory. Added simple implementation of smartnarrow-to-admin that creates a "type-admin" autofilter. This was done mostly so that M-C-n and M-C-p do something sane on admin messages. Added opera to the allowed options to the webbrowser variable. Fixed some buffer overruns in the "reply" command. When repying to "all" on a message that begins with "CC:" (eg, sent with "zwrite -C", the reply line will be constructed from the sender and the usernames on the CC: line of the message being replied to. There is no such thing as C-R, so left C-r as it is but added: M-r --- edit reply to all M-R --- edit reply to sender Added RCS Id strings to all files. 'show keymaps' shows details of all keymaps after summary list. Added --no-move option to delete command. In particular, delete-and-always-move-down may now be implemented with '( delete --no-move ; next --skip-deleted )'. Folded the nextmsg and prevmsg commands and functions together into one command which takes arguments. Added '--filter ' option (eg, for next_personal), '--skip-deleted' option, and '--last-if-none'/'--first-if-none' options. Help updated accordingly. In particular, the 'personal' filter is now used for 'next personal'. Added --smart-filter and --smart-filter-instance options to the next and prev commands. Updated examples/owlconf.erik with the above. Made owl_function_fast*filt return a string and not do the narrowing, to make it more general. Added a smartfilter command that creates a filter based on the current message and returns the name of the filter. Added M-C-n and M-C-p keybindings to "move to next message matching current" and "move to previous message matching current" Added variables edit:maxfillcols and edit:maxwrapcols which will limit how wide editing paragraphs may get before they get wrapped. This is a max and may be narrower depending on the current size of the window. If 0, the max is unlimited. Default is 70 columns for edit:maxfillcols and unlimited for edit:maxwrapcols. Added smartzpunt command with key binding of "C-x k". This starts a zpunt command filled in with the proposed zpunt. Fixed a memory reference bug in delete and undelete commands. Added support for perl to call directly back into owl. Changed the implementation of owl::command("...") to immediately call back into owl. This allows perl to get the return value of strings returned by owl commands. Added the getview command which returns the name of the current view's filter. Added the getvar command which returns the value of a variable. Added an example to examples/owlconf.erik which uses TAB to narrow and restore the view. Added an example to examples/owlconf.erik which uses M-c to color messages matching the current one green. Integrated change to fix problem with popup blinking on new zephyrs. C-l and resizes will now refresh an open viewwin (eg, help). Updated doc/code.txt to include info about filters, commands, contexts, and keybindings. Exec commands cleaned up to not have buffer-size limitations and to not mess up spaces. exec also returns a string of the output now. Integrated changes from 1.1.3, and added docs for "zlocate -d" and new show commands. Show with arguments produces help on show. Fix a bug in readconfig caught by efence (where we'd try to read before the beginning of a string if it was empty). The perl command doesn't do makemsg directly, but instead returns the string and it will get printed if it was run interactively. 1.1.3 'show subs' and 'show subscriptions' are now the same as 'getsubs' zlocate now takes an optional -d argument 'show terminal' / 'show term' '>' / last doesn't set the last message at the top of the screen now implemented _followlast as an unsupported feature include 'default' in the 'show colors' list added help for 'zpunt' and 'zunpunt' changed the bug address in the startup message can now do 'show status' can now do 'show version' 'status' / 'show status' includes the owl version number now 'show terminal' includes whether the terminal can change colors fixed off by one bugs in paging / scrolling viewwin don't downcase the sender when getting the log name for personals support @owl::fields as well as @fields downcase class/inst filter names in auto filters 1.1.2 Fixed memory mishandling bug Fixed bug in redfining the filter attached to the current view M-n will narrow to message, instance on non-personal, class MESSAGE messages M-N behavies like M-n except that on class messages it narrows to class and instance line wrap earlier, to account for tabbing fixed typo in help 'status' command now displays info on terminal color support zephyr @ formatting is now case independant added support for color terminals zephyr @color(foo) now works 'D' for deleted messages is now not bold, unless it's the current message F1 displays the help screen added filter colors added the 'colorview' command added the 'show colors' command users who don't have a .zephyr.subs get a simpler format for incoming messages If colors are available 'show filters' will show a filter in the color associated with it. Added the zpunt and zunpunt commands Lines in the subs file starting with '-' are zpunted Include login/logout messages in auto user filters 'V' changes to the home view ('all' by default) 1.1.1 Fixed perl, aperl, and pperl commands to deal with quoting and spaces in a saner manner. Removed all owl_get_* methods for booleans and switched cases where they were used to owl_is_* Changes to owlconf.erik to use some new features. Increased the size of the help buffer (as it was overflowing and truncating the help message). Variables prefixed with a _ are not shown in help or by printallvars (and prefixed Not Yet Implemented variables with this). Fix typo in help include stdio.h in functions.c remove stale "q to quit" from bottom of info message fix downward scrolling more than a page use authentication for zlocate, by default fixed buffer over run in info command on long messages call 'perl ' from Makefile to avoid hardcoding perl paths in Makefile don't build owl_prototypes.h unless necessary store the time for admin messages display admin message time in 'info' command fixed an editwin M-> last character bug 1.1 reply is a normal function now 'R' does reply to sender 'T' tells you how many messages were marked for deletion local realm removed from login / logout messages added command history better runtime / starttime reporting in 'status' command leave the pointer near the current message after expunge C-l recenters editwin implemented zlocate @italic works the same as @i on reply only quote class / instance when necessary C-r allows you to edit the reply line don't use unecessary options in reply line display 'info' errors in msgwin, not popup impelemnted aexec, pexec commands the zsig now goes through ztext formatting messages have id numbers now 'info' prints the msgid added the 'filter' command added the 'view' command added the 'show filter' command added the 'viewclass' (and 'vc') commands added the 'viewuser' (and 'vu') commands M-n will filter to the current class or user 'v' starts a view command M-D will delete all messages in current view added the 'delete' (and 'del') command load-subs with no argument loads the default subs file '' is now when the *current* message is truncated the reply-lockout filter (with default) specifices messages that cannot be replied to. in the configfile owl::receive_msg is run whenever a message is received added the beep command added the contributors file declare ZGetSubscriptions and ZGetLocations since the includes don't seem to fixed bug in displaying last line in popwin if no final '\n' 'T' uses the 'trash' filter now zaway_msg, zaway_msg_default and zaway are all user variables now. zsig variable overrides zsigproc If there's no appendtosepbar don't interfear with the sepbar Changed: owl_message_get_numlines will return 0 of m is NULL Added login messages to messages marked by owl_function_delete_automsgs Added owl_function_delete_by_id(id) which acts independent of view Added "-id " option to delete command Fixed an arg checking bug in delete command Added owl::id to perl namespace with message id Fixed a memory corruption bug in readconfig.c (where right after the strdup to "out", we'd strcat a \n onto the end. This would be triggered whenever owl::format_msg returned a string not ending in a newline Added 'X' keybinding which expunges and then switches to a view defined by the variable "view_home" which defaults to "all" Consolidated readconfig.c somewhat to remove duplication. owl_config_execute now returns a string. Added an example config file that does vt-style formatting. (examples/owlconf.vtformat) Added the 'perl', 'aperl', and 'pperl' commands which will evaluate perl expressions. Fixed bug where pclose zsigproc would cause zombies Can set zsigproc or zsig to "" to disable Added support for multiple browsers (galeon and none were added). Configure with the "webbrowser" variable. Changing typewinsize height triggers resize event. Added zsig variable which will be used if no zsigproc and non-empty. Added "make test" rule to Makefile which will run regression tests, and added regression testing framework to tester Fixed codelist.pl to ignore static declarations. Added dict.c which contains string->ptr dictionary routines and the owl_dict type. These include regression tests. Overhaul/rewrite of variable handling. Variables are now managed in an owl_vardict (in g.vars) which contains a dictionary of owl_variable's. Each owl_variable has dispatch functions for validating values, setting it and getting it, and for setting it to and from string values. The variable.c file contains the list of variables. Stubs for the owl_global__get functions and friends are generated from variable.c by stubgen.pl. The help.c messages for variables now calls into variable.c so all information about most variables is in one place. Cleaned out code from global.c and command.c that was made obselete by variable overhaul. The set command now takes a -q option to not log a message. Fixed a bug where set and print with no arguments would print "Undefined variable" in addition to running owl_function_printallvars. debug is now a variable that can be turned on and off. Fixed mail,inbox message parsing in examples/owlconf.erik Made zaway_msg and zaway_msg_default into variables Changed owl_function_makemsg and owl_function_debugmsg to use varargs (ie, so they can now take a format string with args). Don't allow " and \ characters in URLs with the "w" command. Removed lots of build warnings. Popwins are wider by default so help messages fit better. Added an atokenize_free function. Fixes to work with an older version of libzephyr. Added dependencies on header files to Makefile.in Added pageup and pagedown key bindings to message list Added pageup and pagedown to viewwin Added configfile section to doc/intro.txt (from example config file) Added appendtosepbar variable which may contain text which will be appended to the sepbar. This allows the configfile to put information about pings and logins into the sepbar. (It may be worth also providing a variable which enables this by default, but for now this allows for experimenting with what works well.) Added doc/code.txt which gives a brief overview of the code. Added tags makefile rule and added TAGS to distclean rule. 1.0.1 fix frees in loadsubs and loadloginsubs don't return in owl_free 1.0 'print' and 'set' with no arguments prints all variables Added the 'unsubscribe' and 'unsub' command Renamed the 'unsub' command to 'unsuball' Added the 'getsubs' command which is like zctl ret Fixed bug in logging messages sent to more than one recipient Support '-C', '-O', and '-n' options to zwrite Fixed bug in owl_editwin_delete_char when there are no later chars after the cursor Make "more" and "truncated" work in the status bar enable printing of zsigproc and loginsubs variables only allow message scrolling if the message is actually off the screen 'T' will mark all automated message for deletion 'P' will go to the next personal message 'M-P' will go to the previous personal message replying to a login message goes to the user now added a status command added the intro doc to the release fixed off by one bug in viewwin added complete online help pass $owl::realm in configfile fixed editwin wordwrapping on the last line fixed editwin problem with key_right past the last char print an error and quit if the configfile can't be parsed got rid of owl_mainwin_calculate_topmsg fixed off by one error in calculating topmsg upwards you can now reply to an admin message don't display an error about keypress on window resize 0.11 fixed bug in viewing messages longer than the screen indicate in the sepbar if there is a non zero vert offset send on '.' on a line by itself added disable-ctrl-d variable fixed bug where C-k did not delete the last \n in the buffer make non-character meta keys work use ZSendNotice instead of ZSendList implemented <, >, M-< and M-> in viewwin removed the spaces at the bottom of viewwin added 'about' command fixed bug using 'M' with no current message changed message object to use char *'s to save on memory change malloc, realloc, strdup and free to use owl hooks so that debugging can be added 0.10.1 fixed a trailing space bug in the parser impelemented the "burning ears" feature have admin messages do ztext parsing fixed bug in reporting which M- key was pressed C-g will now cancel commands like C-c 0.10 implemented owl_function_full_redisplay(). C-l uses owl_function_full_redisplay(). when a popwin exists to a full redisplay. (fixes bug) improved the owl_editwin_process_char logic removed all unnecessary wrefresh's and replaced with wnoutrefesh owl_editwin_redisplay now takes an argument to optionally doupdate() improved the cut-and-paste speed by not doing a usleep the first time through the loop after getting a keypress. nuked typwin.c and associated stuff. It's useless now. added viewwin code for paging windows curly braces work for zephyr formatting @i in zephyr formatting will be displayed as underlined text turned off idlok implemented viewwin implemented viewwi in popwin for pageable popwins help, info now use pageable popwins bound 'M' to bring the current message up in a popwin return, space bar, 'b' and backspace now scroll within a message turned off resize message C-v and M-v page the main window implemented owl_message_is_mail some build cleanup 0.9 added owl_message_is_personal and have things use it added owl_message_is_private fixed 'print personalbell' and have 'set personalbell' print a message bold only on message_is_personal display the realm if not local implemented M-f, M-b, M-d, M-<, M-> in editwin implemnted word wrapping in editwin implemented M-q (paragraph-fill) in editwin fixed bug that caused owl to segfault logging a 'weird' class M-x is a keysym for ':' added smart bolding and userclue fixed a bug causing pings to beep even if rxping is off 0.8.1 fixed bug in logging code 0.8 implemented personal logging implemented class logging implemented resize of typewin fixed the backspace problem -v command line option prints the version number 0.7 load-subs will report error opening file skip comment lines in loadsubs and loadloginsubs changed internal references to rxping and txping fix replying to a blank instance added subscribe command subscribe to login messages from .anyone by default 'loginsubs' variarble controlls automated login messages redisplay the editwin after a resize leave the cursor in the editwin if active fix problems in the build system added displayoutgoing variable temporarily removed error printing for zlog in / out 0.61 fixed bug in "message sent to " for zwrite 0.6 help updated zaway key set to caps A support zephyring other realms rxping variable for receiving pings txping variable for sending pings function in place to resize typwin C-l to refresh personal bell variable beta message now an admin message 0.5 Added the debug command and flag Fixed bug in printing fields in info command Added owl_fmtext_append_ztext and use it Better formating for pings and login zephyrs make tester depends on proto