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