xref: /freebsd/contrib/less/option.h (revision a0b9e2e854027e6ff61fb075a1309dbc71c42b54)
1 /*
2  * Copyright (C) 1984-2020  Mark Nudelman
3  *
4  * You may distribute under the terms of either the GNU General Public
5  * License or the Less License, as specified in the README file.
6  *
7  * For more information, see the README file.
8  */
9 
10 
11 #define	END_OPTION_STRING	('$')
12 
13 /*
14  * Types of options.
15  */
16 #define	BOOL		01	/* Boolean option: 0 or 1 */
17 #define	TRIPLE		02	/* Triple-valued option: 0, 1 or 2 */
18 #define	NUMBER		04	/* Numeric option */
19 #define	STRING		010	/* String-valued option */
20 #define	NOVAR		020	/* No associated variable */
21 #define	REPAINT		040	/* Repaint screen after toggling option */
22 #define	NO_TOGGLE	0100	/* Option cannot be toggled with "-" cmd */
23 #define	HL_REPAINT	0200	/* Repaint hilites after toggling option */
24 #define	NO_QUERY	0400	/* Option cannot be queried with "_" cmd */
25 #define	INIT_HANDLER	01000	/* Call option handler function at startup */
26 
27 #define	OTYPE		(BOOL|TRIPLE|NUMBER|STRING|NOVAR)
28 
29 #define OLETTER_NONE    '\1'     /* Invalid option letter */
30 
31 /*
32  * Argument to a handling function tells what type of activity:
33  */
34 #define	INIT	0	/* Initialization (from command line) */
35 #define	QUERY	1	/* Query (from _ or - command) */
36 #define	TOGGLE	2	/* Change value (from - command) */
37 
38 /* Flag to toggle_option to specify how to "toggle" */
39 #define	OPT_NO_TOGGLE	0
40 #define	OPT_TOGGLE	1
41 #define	OPT_UNSET	2
42 #define	OPT_SET		3
43 #define OPT_NO_PROMPT	0100
44 
45 /* Error code from findopt_name */
46 #define OPT_AMBIG       1
47 
48 struct optname
49 {
50 	char *oname;            /* Long (GNU-style) option name */
51 	struct optname *onext;  /* List of synonymous option names */
52 };
53 
54 #define OPTNAME_MAX	32	/* Max length of long option name */
55 
56 struct loption
57 {
58 	char oletter;		/* The controlling letter (a-z) */
59 	struct optname *onames; /* Long (GNU-style) option name */
60 	int otype;		/* Type of the option */
61 	int odefault;		/* Default value */
62 	int *ovar;		/* Pointer to the associated variable */
63 	void (*ofunc) LESSPARAMS ((int, char*)); /* Pointer to special handling function */
64 	char *odesc[3];		/* Description of each value */
65 };
66 
67