TYPES / CLASSES / SOURCE FILES ------------------------------ commands: Dispatching for commands and handling of their arguments. (Commands are the interface exported to the user.) Many commands tend to be backed by functions. editwin: Text editing window (both multiline and single line). Sometimes also referred to as typewin. filter: filterelement: fmtext: Formatted text routines (handles things like @i{foo}) functions: Where most features are implemented. Users should always interact with functions through commands. global: Global state and variables and toplevel objects. owl.h defines "g" as a singleton instance of owl_global. help: Help strings for commands and key bindings keys: Key bindings for mainwin and edit windows list: Simple list abstraction. (Uses realloc to resize the list.) logging: Interface to incoming / outgoing zephyr logging. mainwin: Window that displays the list of messages. (Sometimes also referred to as recwin.) message: Abstraction to messages. Currently, messages are either of type zephyr or of type admin. messagelist: List of messages. owl.c: main() and signal handlers and other initial setup. Also contains the main loop, which is roughly: - handle scheduled resizes, and anything that might result - while zephyrs are pending, grab incoming zephyrs and handle them (which includes formatting them with either perl extension or default formatter as part of owl_message_create_from_zephyr). - updates mainwin display if there are new zephyrs - displays and updates popwins and the terminal as necessary - sends characters to the popwin, recwin/mainwin, or typewin/editwin owl.h: Prototypes for all types, as well as global constants. owl_prototypes.h: Autogenerated prototypes for all functions. Created by codelist.pl. popwin: Modal pop-up window container. Usually contains a viewwin for read-only scrolling text. readconfig: Perl extension interface. text: Text formatting utilities (ie, indenting, truncating, etc) util: Misc utility functions that don't fit anywhere yet: - sepbar rendering - tokenizing and parsing utilities - downstr - stristr - owl_malloc/free/realloc variable: Interface to setting and getting variables. Current variable types include bool, int, string, and other. There's also an enum type which is variant of int. Variables can be created and customized here as well. varstubs.c: Autogenerated headers for accessing global variables view: viewwin: Read-only scrolling text displayed in a modal popwin. zephyr: Routines for interfacing to zephyr. zwrite: Outgoing zephyrs. Sends pings on creation, handles command arguments, etc. =========================================================================== MISC THINGS ----------- userclue: right now userclue is just used to decide if you sub to classes other than the default. If you don't it doesn't bother making your personal messages bold since there's no point in making every message bold. =========================================================================== Conventions and Design Criteria ------------------------------- There are no hard rules for memory allocation. In general I have the caller allocate memory for objects themselves and any memory the object creates gets freed with object_free(). Functions should document if the caller needs to free something, and this should be the exception to the rule. Owl should be generally useful out-of-the-box without extensive configuration, for most people's needs. People shouldn't have to spend days tweaking with config files before being happy switching to it.