/*1* Copyright (C) 1984-2025 Mark Nudelman2*3* You may distribute under the terms of either the GNU General Public4* License or the Less License, as specified in the README file.5*6* For more information, see the README file.7*/8910#define END_OPTION_STRING ('$')1112/*13* Types of options.14*/15#define O_BOOL 01 /* Boolean option: 0 or 1 */16#define O_TRIPLE 02 /* Triple-valued option: 0, 1 or 2 */17#define O_NUMBER 04 /* Numeric option */18#define O_STRING 010 /* String-valued option */19#define O_NOVAR 020 /* No associated variable */20#define O_REPAINT 040 /* Repaint screen after toggling option */21#define O_NO_TOGGLE 0100 /* Option cannot be toggled with "-" cmd */22#define O_HL_REPAINT 0200 /* Repaint hilites after toggling option */23#define O_NO_QUERY 0400 /* Option cannot be queried with "_" cmd */24#define O_INIT_HANDLER 01000 /* Call option handler function at startup */25#define O_UNSUPPORTED 02000 /* Option is unsupported via LESS_UNSUPPORT */2627#define OTYPE (O_BOOL|O_TRIPLE|O_NUMBER|O_STRING|O_NOVAR)2829#define OLETTER_NONE '\1' /* Invalid option letter */3031/*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) */3738/* Flag to toggle_option to specify how to "toggle" */39#define OPT_NO_TOGGLE 040#define OPT_TOGGLE 141#define OPT_UNSET 242#define OPT_SET 343#define OPT_NO_PROMPT 01004445/* Error code from findopt_name */46#define OPT_AMBIG 14748struct optname49{50constant char *oname; /* Long (GNU-style) option name */51struct optname *onext; /* List of synonymous option names */52};5354#define OPTNAME_MAX 32 /* Max length of long option name */5556struct loption57{58char oletter; /* The controlling letter (a-z) */59struct optname *onames; /* Long (GNU-style) option name */60int otype; /* Type of the option */61int odefault; /* Default value */62int *ovar; /* Pointer to the associated variable */63void (*ofunc)(int, constant char*); /* Pointer to special handling function */64constant char *odesc[3]; /* Description of each value */65};66676869