static void _owl_keymap_format_with_parents(const owl_keymap *km, owl_fmtext *fm) { while (km) { _owl_keymap_format_bindings(km, fm); km = km->parent; if (km) { owl_fmtext_append_bold(fm, "\nInherited from "); owl_fmtext_append_bold(fm, km->name); owl_fmtext_append_bold(fm, ":\n\n"); } } }
void owl_variable_get_help(const owl_variable *v, owl_fmtext *fm) { char *tostring; const char *default_str; owl_fmtext_append_bold(fm, "OWL VARIABLE\n\n"); owl_fmtext_append_normal(fm, OWL_TABSTR); owl_fmtext_append_normal(fm, owl_variable_get_name(v)); owl_fmtext_append_normal(fm, " - "); owl_fmtext_append_normal(fm, owl_variable_get_summary(v)); owl_fmtext_append_normal(fm, "\n\n"); owl_fmtext_append_normal(fm, "Current: "); tostring = owl_variable_get_tostring(v); owl_fmtext_append_normal(fm, (tostring ? tostring : "<null>")); g_free(tostring); owl_fmtext_append_normal(fm, "\n\n"); default_str = owl_variable_get_default_tostring(v); owl_fmtext_append_normal(fm, "Default: "); owl_fmtext_append_normal(fm, (default_str ? default_str : "<null>")); owl_fmtext_append_normal(fm, "\n\n"); owl_fmtext_append_normal(fm, "Valid Settings: "); owl_fmtext_append_normal(fm, owl_variable_get_validsettings(v)); owl_fmtext_append_normal(fm, "\n\n"); if (v->description && *v->description) { owl_fmtext_append_normal(fm, "Description:\n"); owl_fmtext_append_normal(fm, owl_variable_get_description(v)); owl_fmtext_append_normal(fm, "\n\n"); } }
/* Appends details about the keymap to fm */ void owl_keymap_get_details(const owl_keymap *km, owl_fmtext *fm, int recurse) { owl_fmtext_append_bold(fm, "KEYMAP - "); owl_fmtext_append_bold(fm, km->name); owl_fmtext_append_normal(fm, "\n"); if (km->desc) { owl_fmtext_append_normal(fm, OWL_TABSTR "Purpose: "); owl_fmtext_append_normal(fm, km->desc); owl_fmtext_append_normal(fm, "\n"); } if (km->parent) { owl_fmtext_append_normal(fm, OWL_TABSTR "Has parent: "); owl_fmtext_append_normal(fm, km->parent->name); owl_fmtext_append_normal(fm, "\n"); } owl_fmtext_append_normal(fm, "\n"); if (km->default_fn) { owl_fmtext_append_normal(fm, OWL_TABSTR "Has a default keypress handler (default_fn).\n"); } if (km->prealways_fn) { owl_fmtext_append_normal(fm, OWL_TABSTR "Executes a function (prealways_fn) on every keypress.\n"); } if (km->postalways_fn) { owl_fmtext_append_normal(fm, OWL_TABSTR "Executes a function (postalways_fn) after handling every keypress.\n"); } owl_fmtext_append_bold(fm, "\nKey bindings:\n\n"); if (recurse) { _owl_keymap_format_with_parents(km, fm); } else { _owl_keymap_format_bindings(km, fm); } }
void owl_variable_get_help(owl_vardict *d, char *name, owl_fmtext *fm) { char buff[1024]; int bufflen = 1023; owl_variable *v; if (!name || (v = owl_dict_find_element(d, name)) == NULL || !v->get_fn) { owl_fmtext_append_normal(fm, "No such variable...\n"); return; } owl_fmtext_append_bold(fm, "OWL VARIABLE\n\n"); owl_fmtext_append_normal(fm, OWL_TABSTR); owl_fmtext_append_normal(fm, name); owl_fmtext_append_normal(fm, " - "); owl_fmtext_append_normal(fm, v->summary); owl_fmtext_append_normal(fm, "\n\n"); owl_fmtext_append_normal(fm, "Current: "); owl_variable_get_tostring(d, name, buff, bufflen); owl_fmtext_append_normal(fm, buff); owl_fmtext_append_normal(fm, "\n\n"); if (v->type == OWL_VARIABLE_INT || v->type == OWL_VARIABLE_BOOL) { v->get_tostring_fn(v, buff, bufflen, &(v->ival_default)); } else { v->get_tostring_fn(v, buff, bufflen, v->pval_default); } owl_fmtext_append_normal(fm, "Default: "); owl_fmtext_append_normal(fm, buff); owl_fmtext_append_normal(fm, "\n\n"); owl_fmtext_append_normal(fm, "Valid Settings: "); owl_fmtext_append_normal(fm, owl_variable_get_validsettings(v)); owl_fmtext_append_normal(fm, "\n\n"); if (v->description && *v->description) { owl_fmtext_append_normal(fm, "Description:\n"); owl_fmtext_append_normal(fm, owl_variable_get_description(v)); owl_fmtext_append_normal(fm, "\n\n"); } }
void owl_cmd_get_help(const owl_cmddict *d, const char *name, owl_fmtext *fm) { const char *s; char *indent; owl_cmd *cmd; if (!name || (cmd = owl_dict_find_element(d, name)) == NULL) { owl_fmtext_append_bold(fm, "OWL HELP\n\n"); owl_fmtext_append_normal(fm, "No such command...\n"); return; } owl_fmtext_append_bold(fm, "OWL HELP\n\n"); owl_fmtext_append_bold(fm, "NAME\n\n"); owl_fmtext_append_normal(fm, OWL_TABSTR); owl_fmtext_append_normal(fm, cmd->name); if (cmd->summary && *cmd->summary) { owl_fmtext_append_normal(fm, " - "); owl_fmtext_append_normal(fm, cmd->summary); } owl_fmtext_append_normal(fm, "\n"); if (cmd->usage && *cmd->usage) { s = cmd->usage; indent = owl_text_indent(s, OWL_TAB, true); owl_fmtext_append_bold(fm, "\nSYNOPSIS\n"); owl_fmtext_append_normal(fm, indent); owl_fmtext_append_normal(fm, "\n"); g_free(indent); } else { owl_fmtext_append_bold(fm, "\nSYNOPSIS\n"); owl_fmtext_append_normal(fm, OWL_TABSTR); owl_fmtext_append_normal(fm, cmd->name); owl_fmtext_append_normal(fm, "\n"); } if (cmd->description && *cmd->description) { s = cmd->description; indent = owl_text_indent(s, OWL_TAB, true); owl_fmtext_append_bold(fm, "\nDESCRIPTION\n"); owl_fmtext_append_normal(fm, indent); owl_fmtext_append_normal(fm, "\n"); g_free(indent); } owl_fmtext_append_normal(fm, "\n\n"); }
void owl_help(void) { const owl_variable *v; owl_fmtext fm; const char *varname; GPtrArray *varnames; int i; owl_fmtext_init_null(&fm); owl_fmtext_append_bold (&fm, "OWL HELP\n\n"); owl_fmtext_append_normal (&fm, " If you're new to BarnOwl, the first thing you should type is\n\n" " :show quickstart\n\n" " For help on a specific command use 'help <command>'\n" " For information on advanced keys, use 'show keymaps'.\n" " For information on advanced commands, use 'show commands'.\n" " For information on variables, use 'show variables'.\n\n"); owl_fmtext_append_bold (&fm, " Basic Keys:\n" ); owl_fmtext_append_normal (&fm, " n Move to next non-deleted message\n" " p Move to previous non-deleted message\n" " C-n , down Move to next message\n" " C-p , up Move to previous message\n" " < , > Move to first, last message\n" " right , left Scroll screen left or right\n" " C-v Page down\n" " M-v Page up\n" " i Print more information about a message\n" " P Move to the next personal message\n" " M-P Move to the previous personal message\n" " C-space Move the mark (asterisk) to the current message\n" " C-x C-x Move the mark to the current message while moving to previous mark\n" "\n" " d Mark message for deletion\n" " u Undelete a message marked for deletion\n" " x Expunge deleted messages\n" " X Expunge deleted messages and switch to home view\n" " T Mark all 'trash' messages for deletion\n" " M-D Mark all messages in current view for deletion\n" " M-u Unmark all messages in the current view for deletion\n" "\n" " z Start a zwrite command\n" " a Start an aimwrite command\n" " r Reply to the current message\n" " R Reply to sender\n" " C-r Reply but allow editing of reply line\n" "\n" " M-n View zephyrs in selected conversation\n" " M-N View zephyrs in selected conversation of instance\n" " M-p View only personal zephyrs\n" " V Change to back to home view ('all' by default)\n" " v Start a view command\n" " ! Invert the current view\n" "\n" " l Print a zephyr/AIM buddy listing\n" " A Toggle away\n" " o Toggle one-line display mode\n" " w Open a URL in the current message\n" " C-l Refresh the screen\n" " C-z Suspend BarnOwl\n" " h Print this help message\n" " : , M-x Enter command mode\n" "\n" " / Forward search\n" " ? Reverse search\n" "\n\n" ); owl_fmtext_append_bold (&fm, " Basic Commands:\n" ); owl_fmtext_append_normal (&fm, " quit, exit Exit BarnOwl\n" " help Get help about commands\n" " show Show information about BarnOwl (see detailed help)\n" "\n" " zwrite Send a zephyr\n" " aimlogin Login to AIM\n" " aimwrite Send an AIM message\n" "\n" " addbuddy Add a zephyr or AIM buddy\n" " zaway Turn zaway on or off, or set the message\n" " zlocate Locate a user\n" " subscribe Subscribe to a zephyr class or instance\n" " unsubscribe Unsubscribe to a zephyr class or instance\n" " blist Print a list of zephyr and AIM buddies logged in\n" " search Search for a text string\n" "\n" " set Set a variable (see list below)\n" " print Print a variable's value (variables listed below)\n" " startup Set a command to be run at every BarnOwl startup\n" " unstartup Remove a command to be run at every BarnOwl startup\n" "\n" " getsubs Print a list of current subscriptions\n" " unsuball Unsubscribe from all zephyr classes\n" " load-subs Load zephyr subscriptions from a file\n" " zpunt Suppress messages from a zephyr triplet\n" " zlog Send a login or logout notification\n" " zlist Print a list of zephyr buddies logged in\n" " alist Print a list of AIM buddies logged in\n" " info Print detailed information about the current message\n" " filter Create a message filter\n" " view View messages matching a filter\n" " viewuser View messages to or from a particular user\n" " viewclass View messages to a particular class\n" " expunge Expunge messages marked for deletion\n" " bindkey Create a new key binding\n" " alias Create a command alias\n" " dump Dump messagelist as text to a file\n" "\n" " about Print information about BarnOwl\n" " status Print status information about the running BarnOwl\n" " version Print the version number of BarnOwl\n" "\n"); /* help for variables */ owl_fmtext_append_bold(&fm, "Variables:\n"); varnames = owl_variable_dict_get_names(owl_global_get_vardict(&g)); for (i = 0; i < varnames->len; i++) { varname = varnames->pdata[i]; if (varname && varname[0]!='_') { v = owl_variable_get_var(owl_global_get_vardict(&g), varname); owl_variable_describe(v, &fm); } } owl_ptr_array_free(varnames, g_free); owl_fmtext_append_normal(&fm, "\n"); owl_function_popless_fmtext(&fm); owl_fmtext_cleanup(&fm); }