/*
 *	JOE options
 *	Copyright
 *		(C) 1992 Joseph H. Allen;
 *
 *	This file is part of JOE (Joe's Own Editor)
 */

extern OPTIONS pdefault;
extern OPTIONS fdefault;

extern const char *aborthint;
extern const char *helphint;

/* Set local options depending on file name and contents */
void setopt(B *b, const char *name);

/* Set a global or local option:
 * 's' is option name
 * 'arg' is a possible argument string (taken only if option has an arg)
 * 'options' points to options structure to modify (can be NULL).
 * 'set'==0: set only in 'options' if it's given.
 * 'set'!=0: set global variable option.
 * return value: no. of fields taken (1 or 2), or 0 if option not found.
 *
 * So this function is used both to set options, and to parse over options
 * without setting them.
 *
 * These combinations are used:
 *
 * glopt(name,arg,NULL,1): set global variable option
 * glopt(name,arg,NULL,0): parse over option
 * glopt(name,arg,options,0): set file local option
 * glopt(name,arg,&fdefault,1): set default file options
 * glopt(name,arg,options,1): set file local option
 */

int glopt(char *s, char *arg, OPTIONS *options, int set);

/* Option setting user command */
int umode(W *w, int k);

/* Update options */
void lazy_opts(B *b, OPTIONS *o);

/* Commands which just convert an option into text and type it in */
int ucharset(W *w, int k);
int ulanguage(W *w, int k);

/* Get current value of an option (ON / OFF) */
const char *get_status(BW *bw, char *s);

extern OPTIONS *options_list;

void cmd_help(int type);

char **find_configs(char **, const char *, const char *);
