xref: /minix3/external/bsd/tmux/dist/options-table.c (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc /* Id */
2eda6f593SDavid van Moolenbroek 
3eda6f593SDavid van Moolenbroek /*
4eda6f593SDavid van Moolenbroek  * Copyright (c) 2011 Nicholas Marriott <nicm@users.sourceforge.net>
5eda6f593SDavid van Moolenbroek  *
6eda6f593SDavid van Moolenbroek  * Permission to use, copy, modify, and distribute this software for any
7eda6f593SDavid van Moolenbroek  * purpose with or without fee is hereby granted, provided that the above
8eda6f593SDavid van Moolenbroek  * copyright notice and this permission notice appear in all copies.
9eda6f593SDavid van Moolenbroek  *
10eda6f593SDavid van Moolenbroek  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11eda6f593SDavid van Moolenbroek  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12eda6f593SDavid van Moolenbroek  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13eda6f593SDavid van Moolenbroek  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14eda6f593SDavid van Moolenbroek  * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
15eda6f593SDavid van Moolenbroek  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
16eda6f593SDavid van Moolenbroek  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17eda6f593SDavid van Moolenbroek  */
18eda6f593SDavid van Moolenbroek 
19eda6f593SDavid van Moolenbroek #include <sys/types.h>
20eda6f593SDavid van Moolenbroek 
21eda6f593SDavid van Moolenbroek #include <string.h>
22eda6f593SDavid van Moolenbroek 
23eda6f593SDavid van Moolenbroek #include "tmux.h"
24eda6f593SDavid van Moolenbroek 
25eda6f593SDavid van Moolenbroek /*
26eda6f593SDavid van Moolenbroek  * This file has a tables with all the server, session and window
27eda6f593SDavid van Moolenbroek  * options. These tables are the master copy of the options with their real
28eda6f593SDavid van Moolenbroek  * (user-visible) types, range limits and default values. At start these are
29eda6f593SDavid van Moolenbroek  * copied into the runtime global options trees (which only has number and
30eda6f593SDavid van Moolenbroek  * string types). These tables are then used to loop up the real type when
31eda6f593SDavid van Moolenbroek  * the user sets an option or its value needs to be shown.
32eda6f593SDavid van Moolenbroek  */
33eda6f593SDavid van Moolenbroek 
34eda6f593SDavid van Moolenbroek /* Choice option type lists. */
35eda6f593SDavid van Moolenbroek const char *options_table_mode_keys_list[] = {
36eda6f593SDavid van Moolenbroek 	"emacs", "vi", NULL
37eda6f593SDavid van Moolenbroek };
38*0a6a1f1dSLionel Sambuc const char *options_table_mode_mouse_list[] = {
39*0a6a1f1dSLionel Sambuc 	"off", "on", "copy-mode", NULL
40*0a6a1f1dSLionel Sambuc };
41eda6f593SDavid van Moolenbroek const char *options_table_clock_mode_style_list[] = {
42eda6f593SDavid van Moolenbroek 	"12", "24", NULL
43eda6f593SDavid van Moolenbroek };
44eda6f593SDavid van Moolenbroek const char *options_table_status_keys_list[] = {
45eda6f593SDavid van Moolenbroek 	"emacs", "vi", NULL
46eda6f593SDavid van Moolenbroek };
47eda6f593SDavid van Moolenbroek const char *options_table_status_justify_list[] = {
48eda6f593SDavid van Moolenbroek 	"left", "centre", "right", NULL
49eda6f593SDavid van Moolenbroek };
50*0a6a1f1dSLionel Sambuc const char *options_table_status_position_list[] = {
51*0a6a1f1dSLionel Sambuc 	"top", "bottom", NULL
52*0a6a1f1dSLionel Sambuc };
53eda6f593SDavid van Moolenbroek const char *options_table_bell_action_list[] = {
54eda6f593SDavid van Moolenbroek 	"none", "any", "current", NULL
55eda6f593SDavid van Moolenbroek };
56eda6f593SDavid van Moolenbroek 
57eda6f593SDavid van Moolenbroek /* Server options. */
58eda6f593SDavid van Moolenbroek const struct options_table_entry server_options_table[] = {
59eda6f593SDavid van Moolenbroek 	{ .name = "buffer-limit",
60eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
61eda6f593SDavid van Moolenbroek 	  .minimum = 1,
62eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
63eda6f593SDavid van Moolenbroek 	  .default_num = 20
64eda6f593SDavid van Moolenbroek 	},
65eda6f593SDavid van Moolenbroek 
66eda6f593SDavid van Moolenbroek 	{ .name = "escape-time",
67eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
68eda6f593SDavid van Moolenbroek 	  .minimum = 0,
69eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
70eda6f593SDavid van Moolenbroek 	  .default_num = 500
71eda6f593SDavid van Moolenbroek 	},
72eda6f593SDavid van Moolenbroek 
73eda6f593SDavid van Moolenbroek 	{ .name = "exit-unattached",
74eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
75eda6f593SDavid van Moolenbroek 	  .default_num = 0
76eda6f593SDavid van Moolenbroek 	},
77eda6f593SDavid van Moolenbroek 
78*0a6a1f1dSLionel Sambuc 	{ .name = "focus-events",
79*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_FLAG,
80*0a6a1f1dSLionel Sambuc 	  .default_num = 0
81*0a6a1f1dSLionel Sambuc 	},
82*0a6a1f1dSLionel Sambuc 
83eda6f593SDavid van Moolenbroek 	{ .name = "quiet",
84eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
85eda6f593SDavid van Moolenbroek 	  .default_num = 0 /* overridden in main() */
86eda6f593SDavid van Moolenbroek 	},
87eda6f593SDavid van Moolenbroek 
88eda6f593SDavid van Moolenbroek 	{ .name = "set-clipboard",
89eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
90eda6f593SDavid van Moolenbroek 	  .default_num = 1
91eda6f593SDavid van Moolenbroek 	},
92eda6f593SDavid van Moolenbroek 
93eda6f593SDavid van Moolenbroek 	{ .name = NULL }
94eda6f593SDavid van Moolenbroek };
95eda6f593SDavid van Moolenbroek 
96eda6f593SDavid van Moolenbroek /* Session options. */
97eda6f593SDavid van Moolenbroek const struct options_table_entry session_options_table[] = {
98*0a6a1f1dSLionel Sambuc 	{ .name = "assume-paste-time",
99*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_NUMBER,
100*0a6a1f1dSLionel Sambuc 	  .minimum = 0,
101*0a6a1f1dSLionel Sambuc 	  .maximum = INT_MAX,
102*0a6a1f1dSLionel Sambuc 	  .default_num = 1,
103*0a6a1f1dSLionel Sambuc 	},
104*0a6a1f1dSLionel Sambuc 
105eda6f593SDavid van Moolenbroek 	{ .name = "base-index",
106eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
107eda6f593SDavid van Moolenbroek 	  .minimum = 0,
108eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
109eda6f593SDavid van Moolenbroek 	  .default_num = 0
110eda6f593SDavid van Moolenbroek 	},
111eda6f593SDavid van Moolenbroek 
112eda6f593SDavid van Moolenbroek 	{ .name = "bell-action",
113eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_CHOICE,
114eda6f593SDavid van Moolenbroek 	  .choices = options_table_bell_action_list,
115eda6f593SDavid van Moolenbroek 	  .default_num = BELL_ANY
116eda6f593SDavid van Moolenbroek 	},
117eda6f593SDavid van Moolenbroek 
118eda6f593SDavid van Moolenbroek 	{ .name = "bell-on-alert",
119eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
120eda6f593SDavid van Moolenbroek 	  .default_num = 0
121eda6f593SDavid van Moolenbroek 	},
122eda6f593SDavid van Moolenbroek 
123eda6f593SDavid van Moolenbroek 	{ .name = "default-command",
124eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
125eda6f593SDavid van Moolenbroek 	  .default_str = ""
126eda6f593SDavid van Moolenbroek 	},
127eda6f593SDavid van Moolenbroek 
128eda6f593SDavid van Moolenbroek 	{ .name = "default-shell",
129eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
130eda6f593SDavid van Moolenbroek 	  .default_str = _PATH_BSHELL
131eda6f593SDavid van Moolenbroek 	},
132eda6f593SDavid van Moolenbroek 
133eda6f593SDavid van Moolenbroek 	{ .name = "default-terminal",
134eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
135eda6f593SDavid van Moolenbroek 	  .default_str = "screen"
136eda6f593SDavid van Moolenbroek 	},
137eda6f593SDavid van Moolenbroek 
138eda6f593SDavid van Moolenbroek 	{ .name = "destroy-unattached",
139eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
140eda6f593SDavid van Moolenbroek 	  .default_num = 0
141eda6f593SDavid van Moolenbroek 	},
142eda6f593SDavid van Moolenbroek 
143eda6f593SDavid van Moolenbroek 	{ .name = "detach-on-destroy",
144eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
145eda6f593SDavid van Moolenbroek 	  .default_num = 1
146eda6f593SDavid van Moolenbroek 	},
147eda6f593SDavid van Moolenbroek 
148eda6f593SDavid van Moolenbroek 	{ .name = "display-panes-active-colour",
149eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
150eda6f593SDavid van Moolenbroek 	  .default_num = 1
151eda6f593SDavid van Moolenbroek 	},
152eda6f593SDavid van Moolenbroek 
153eda6f593SDavid van Moolenbroek 	{ .name = "display-panes-colour",
154eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
155eda6f593SDavid van Moolenbroek 	  .default_num = 4
156eda6f593SDavid van Moolenbroek 	},
157eda6f593SDavid van Moolenbroek 
158eda6f593SDavid van Moolenbroek 	{ .name = "display-panes-time",
159eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
160eda6f593SDavid van Moolenbroek 	  .minimum = 1,
161eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
162eda6f593SDavid van Moolenbroek 	  .default_num = 1000
163eda6f593SDavid van Moolenbroek 	},
164eda6f593SDavid van Moolenbroek 
165eda6f593SDavid van Moolenbroek 	{ .name = "display-time",
166eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
167eda6f593SDavid van Moolenbroek 	  .minimum = 1,
168eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
169eda6f593SDavid van Moolenbroek 	  .default_num = 750
170eda6f593SDavid van Moolenbroek 	},
171eda6f593SDavid van Moolenbroek 
172eda6f593SDavid van Moolenbroek 	{ .name = "history-limit",
173eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
174eda6f593SDavid van Moolenbroek 	  .minimum = 0,
175eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
176eda6f593SDavid van Moolenbroek 	  .default_num = 2000
177eda6f593SDavid van Moolenbroek 	},
178eda6f593SDavid van Moolenbroek 
179eda6f593SDavid van Moolenbroek 	{ .name = "lock-after-time",
180eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
181eda6f593SDavid van Moolenbroek 	  .minimum = 0,
182eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
183eda6f593SDavid van Moolenbroek 	  .default_num = 0
184eda6f593SDavid van Moolenbroek 	},
185eda6f593SDavid van Moolenbroek 
186eda6f593SDavid van Moolenbroek 	{ .name = "lock-command",
187eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
188eda6f593SDavid van Moolenbroek 	  .default_str = "lock -np"
189eda6f593SDavid van Moolenbroek 	},
190eda6f593SDavid van Moolenbroek 
191eda6f593SDavid van Moolenbroek 	{ .name = "lock-server",
192eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
193eda6f593SDavid van Moolenbroek 	  .default_num = 1
194eda6f593SDavid van Moolenbroek 	},
195eda6f593SDavid van Moolenbroek 
196eda6f593SDavid van Moolenbroek 	{ .name = "message-attr",
197eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_ATTRIBUTES,
198*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
199*0a6a1f1dSLionel Sambuc 	  .style = "message-style"
200eda6f593SDavid van Moolenbroek 	},
201eda6f593SDavid van Moolenbroek 
202eda6f593SDavid van Moolenbroek 	{ .name = "message-bg",
203eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
204*0a6a1f1dSLionel Sambuc 	  .default_num = 3,
205*0a6a1f1dSLionel Sambuc 	  .style = "message-style"
206*0a6a1f1dSLionel Sambuc 	},
207*0a6a1f1dSLionel Sambuc 
208*0a6a1f1dSLionel Sambuc 	{ .name = "message-command-attr",
209*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_ATTRIBUTES,
210*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
211*0a6a1f1dSLionel Sambuc 	  .style = "message-command-style"
212*0a6a1f1dSLionel Sambuc 	},
213*0a6a1f1dSLionel Sambuc 
214*0a6a1f1dSLionel Sambuc 	{ .name = "message-command-bg",
215*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_COLOUR,
216*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
217*0a6a1f1dSLionel Sambuc 	  .style = "message-command-style"
218*0a6a1f1dSLionel Sambuc 	},
219*0a6a1f1dSLionel Sambuc 
220*0a6a1f1dSLionel Sambuc 	{ .name = "message-command-fg",
221*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_COLOUR,
222*0a6a1f1dSLionel Sambuc 	  .default_num = 3,
223*0a6a1f1dSLionel Sambuc 	  .style = "message-command-style"
224*0a6a1f1dSLionel Sambuc 	},
225*0a6a1f1dSLionel Sambuc 
226*0a6a1f1dSLionel Sambuc 	{ .name = "message-command-style",
227*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
228*0a6a1f1dSLionel Sambuc 	  .default_str = "bg=black,fg=yellow"
229eda6f593SDavid van Moolenbroek 	},
230eda6f593SDavid van Moolenbroek 
231eda6f593SDavid van Moolenbroek 	{ .name = "message-fg",
232eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
233*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
234*0a6a1f1dSLionel Sambuc 	  .style = "message-style"
235eda6f593SDavid van Moolenbroek 	},
236eda6f593SDavid van Moolenbroek 
237eda6f593SDavid van Moolenbroek 	{ .name = "message-limit",
238eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
239eda6f593SDavid van Moolenbroek 	  .minimum = 0,
240eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
241eda6f593SDavid van Moolenbroek 	  .default_num = 20
242eda6f593SDavid van Moolenbroek 	},
243eda6f593SDavid van Moolenbroek 
244*0a6a1f1dSLionel Sambuc 	{ .name = "message-style",
245*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
246*0a6a1f1dSLionel Sambuc 	  .default_str = "bg=yellow,fg=black"
247*0a6a1f1dSLionel Sambuc 	},
248*0a6a1f1dSLionel Sambuc 
249eda6f593SDavid van Moolenbroek 	{ .name = "mouse-resize-pane",
250eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
251eda6f593SDavid van Moolenbroek 	  .default_num = 0
252eda6f593SDavid van Moolenbroek 	},
253eda6f593SDavid van Moolenbroek 
254eda6f593SDavid van Moolenbroek 	{ .name = "mouse-select-pane",
255eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
256eda6f593SDavid van Moolenbroek 	  .default_num = 0
257eda6f593SDavid van Moolenbroek 	},
258eda6f593SDavid van Moolenbroek 
259eda6f593SDavid van Moolenbroek 	{ .name = "mouse-select-window",
260eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
261eda6f593SDavid van Moolenbroek 	  .default_num = 0
262eda6f593SDavid van Moolenbroek 	},
263eda6f593SDavid van Moolenbroek 
264eda6f593SDavid van Moolenbroek 	{ .name = "mouse-utf8",
265eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
266eda6f593SDavid van Moolenbroek 	  .default_num = 0
267eda6f593SDavid van Moolenbroek 	},
268eda6f593SDavid van Moolenbroek 
269eda6f593SDavid van Moolenbroek 	{ .name = "pane-active-border-bg",
270eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
271*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
272*0a6a1f1dSLionel Sambuc 	  .style = "pane-active-border-style"
273eda6f593SDavid van Moolenbroek 	},
274eda6f593SDavid van Moolenbroek 
275eda6f593SDavid van Moolenbroek 	{ .name = "pane-active-border-fg",
276eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
277*0a6a1f1dSLionel Sambuc 	  .default_num = 2,
278*0a6a1f1dSLionel Sambuc 	  .style = "pane-active-border-style"
279*0a6a1f1dSLionel Sambuc 	},
280*0a6a1f1dSLionel Sambuc 
281*0a6a1f1dSLionel Sambuc 	{ .name = "pane-active-border-style",
282*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
283*0a6a1f1dSLionel Sambuc 	  .default_str = "fg=green"
284eda6f593SDavid van Moolenbroek 	},
285eda6f593SDavid van Moolenbroek 
286eda6f593SDavid van Moolenbroek 	{ .name = "pane-border-bg",
287eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
288*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
289*0a6a1f1dSLionel Sambuc 	  .style = "pane-border-style"
290eda6f593SDavid van Moolenbroek 	},
291eda6f593SDavid van Moolenbroek 
292eda6f593SDavid van Moolenbroek 	{ .name = "pane-border-fg",
293eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
294*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
295*0a6a1f1dSLionel Sambuc 	  .style = "pane-border-style"
296*0a6a1f1dSLionel Sambuc 	},
297*0a6a1f1dSLionel Sambuc 
298*0a6a1f1dSLionel Sambuc 	{ .name = "pane-border-style",
299*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
300*0a6a1f1dSLionel Sambuc 	  .default_str = "default"
301eda6f593SDavid van Moolenbroek 	},
302eda6f593SDavid van Moolenbroek 
303eda6f593SDavid van Moolenbroek 	{ .name = "prefix",
304*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_KEY,
305*0a6a1f1dSLionel Sambuc 	  .default_num = '\002',
306*0a6a1f1dSLionel Sambuc 	},
307*0a6a1f1dSLionel Sambuc 
308*0a6a1f1dSLionel Sambuc 	{ .name = "prefix2",
309*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_KEY,
310*0a6a1f1dSLionel Sambuc 	  .default_num = KEYC_NONE,
311*0a6a1f1dSLionel Sambuc 	},
312*0a6a1f1dSLionel Sambuc 
313*0a6a1f1dSLionel Sambuc 	{ .name = "renumber-windows",
314*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_FLAG,
315*0a6a1f1dSLionel Sambuc 	  .default_num = 0
316eda6f593SDavid van Moolenbroek 	},
317eda6f593SDavid van Moolenbroek 
318eda6f593SDavid van Moolenbroek 	{ .name = "repeat-time",
319eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
320eda6f593SDavid van Moolenbroek 	  .minimum = 0,
321eda6f593SDavid van Moolenbroek 	  .maximum = SHRT_MAX,
322eda6f593SDavid van Moolenbroek 	  .default_num = 500
323eda6f593SDavid van Moolenbroek 	},
324eda6f593SDavid van Moolenbroek 
325eda6f593SDavid van Moolenbroek 	{ .name = "set-remain-on-exit",
326eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
327eda6f593SDavid van Moolenbroek 	  .default_num = 0
328eda6f593SDavid van Moolenbroek 	},
329eda6f593SDavid van Moolenbroek 
330eda6f593SDavid van Moolenbroek 	{ .name = "set-titles",
331eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
332eda6f593SDavid van Moolenbroek 	  .default_num = 0
333eda6f593SDavid van Moolenbroek 	},
334eda6f593SDavid van Moolenbroek 
335eda6f593SDavid van Moolenbroek 	{ .name = "set-titles-string",
336eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
337eda6f593SDavid van Moolenbroek 	  .default_str = "#S:#I:#W - \"#T\""
338eda6f593SDavid van Moolenbroek 	},
339eda6f593SDavid van Moolenbroek 
340eda6f593SDavid van Moolenbroek 	{ .name = "status",
341eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
342eda6f593SDavid van Moolenbroek 	  .default_num = 1
343eda6f593SDavid van Moolenbroek 	},
344eda6f593SDavid van Moolenbroek 
345eda6f593SDavid van Moolenbroek 	{ .name = "status-attr",
346eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_ATTRIBUTES,
347*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
348*0a6a1f1dSLionel Sambuc 	  .style = "status-style"
349eda6f593SDavid van Moolenbroek 	},
350eda6f593SDavid van Moolenbroek 
351eda6f593SDavid van Moolenbroek 	{ .name = "status-bg",
352eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
353*0a6a1f1dSLionel Sambuc 	  .default_num = 2,
354*0a6a1f1dSLionel Sambuc 	  .style = "status-style"
355eda6f593SDavid van Moolenbroek 	},
356eda6f593SDavid van Moolenbroek 
357eda6f593SDavid van Moolenbroek 	{ .name = "status-fg",
358eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
359*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
360*0a6a1f1dSLionel Sambuc 	  .style = "status-style"
361eda6f593SDavid van Moolenbroek 	},
362eda6f593SDavid van Moolenbroek 
363eda6f593SDavid van Moolenbroek 	{ .name = "status-interval",
364eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
365eda6f593SDavid van Moolenbroek 	  .minimum = 0,
366eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
367eda6f593SDavid van Moolenbroek 	  .default_num = 15
368eda6f593SDavid van Moolenbroek 	},
369eda6f593SDavid van Moolenbroek 
370eda6f593SDavid van Moolenbroek 	{ .name = "status-justify",
371eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_CHOICE,
372eda6f593SDavid van Moolenbroek 	  .choices = options_table_status_justify_list,
373eda6f593SDavid van Moolenbroek 	  .default_num = 0
374eda6f593SDavid van Moolenbroek 	},
375eda6f593SDavid van Moolenbroek 
376eda6f593SDavid van Moolenbroek 	{ .name = "status-keys",
377eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_CHOICE,
378eda6f593SDavid van Moolenbroek 	  .choices = options_table_status_keys_list,
379eda6f593SDavid van Moolenbroek 	  .default_num = MODEKEY_EMACS
380eda6f593SDavid van Moolenbroek 	},
381eda6f593SDavid van Moolenbroek 
382eda6f593SDavid van Moolenbroek 	{ .name = "status-left",
383eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
384eda6f593SDavid van Moolenbroek 	  .default_str = "[#S]"
385eda6f593SDavid van Moolenbroek 	},
386eda6f593SDavid van Moolenbroek 
387eda6f593SDavid van Moolenbroek 	{ .name = "status-left-attr",
388eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_ATTRIBUTES,
389*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
390*0a6a1f1dSLionel Sambuc 	  .style = "status-left-style"
391eda6f593SDavid van Moolenbroek 	},
392eda6f593SDavid van Moolenbroek 
393eda6f593SDavid van Moolenbroek 	{ .name = "status-left-bg",
394eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
395*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
396*0a6a1f1dSLionel Sambuc 	  .style = "status-left-style"
397eda6f593SDavid van Moolenbroek 	},
398eda6f593SDavid van Moolenbroek 
399eda6f593SDavid van Moolenbroek 	{ .name = "status-left-fg",
400eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
401*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
402*0a6a1f1dSLionel Sambuc 	  .style = "status-left-style"
403eda6f593SDavid van Moolenbroek 	},
404eda6f593SDavid van Moolenbroek 
405eda6f593SDavid van Moolenbroek 	{ .name = "status-left-length",
406eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
407eda6f593SDavid van Moolenbroek 	  .minimum = 0,
408eda6f593SDavid van Moolenbroek 	  .maximum = SHRT_MAX,
409eda6f593SDavid van Moolenbroek 	  .default_num = 10
410eda6f593SDavid van Moolenbroek 	},
411eda6f593SDavid van Moolenbroek 
412*0a6a1f1dSLionel Sambuc 	{ .name = "status-left-style",
413*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
414*0a6a1f1dSLionel Sambuc 	  .default_str = "default"
415*0a6a1f1dSLionel Sambuc 	},
416*0a6a1f1dSLionel Sambuc 
417*0a6a1f1dSLionel Sambuc 	{ .name = "status-position",
418*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_CHOICE,
419*0a6a1f1dSLionel Sambuc 	  .choices = options_table_status_position_list,
420*0a6a1f1dSLionel Sambuc 	  .default_num = 1
421*0a6a1f1dSLionel Sambuc 	},
422*0a6a1f1dSLionel Sambuc 
423eda6f593SDavid van Moolenbroek 	{ .name = "status-right",
424eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
425*0a6a1f1dSLionel Sambuc 	  .default_str = "\"#{=22:pane_title}\" %H:%M %d-%b-%y"
426eda6f593SDavid van Moolenbroek 	},
427eda6f593SDavid van Moolenbroek 
428eda6f593SDavid van Moolenbroek 	{ .name = "status-right-attr",
429eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_ATTRIBUTES,
430*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
431*0a6a1f1dSLionel Sambuc 	  .style = "status-right-style"
432eda6f593SDavid van Moolenbroek 	},
433eda6f593SDavid van Moolenbroek 
434eda6f593SDavid van Moolenbroek 	{ .name = "status-right-bg",
435eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
436*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
437*0a6a1f1dSLionel Sambuc 	  .style = "status-right-style"
438eda6f593SDavid van Moolenbroek 	},
439eda6f593SDavid van Moolenbroek 
440eda6f593SDavid van Moolenbroek 	{ .name = "status-right-fg",
441eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
442*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
443*0a6a1f1dSLionel Sambuc 	  .style = "status-right-style"
444eda6f593SDavid van Moolenbroek 	},
445eda6f593SDavid van Moolenbroek 
446eda6f593SDavid van Moolenbroek 	{ .name = "status-right-length",
447eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
448eda6f593SDavid van Moolenbroek 	  .minimum = 0,
449eda6f593SDavid van Moolenbroek 	  .maximum = SHRT_MAX,
450eda6f593SDavid van Moolenbroek 	  .default_num = 40
451eda6f593SDavid van Moolenbroek 	},
452eda6f593SDavid van Moolenbroek 
453*0a6a1f1dSLionel Sambuc 	{ .name = "status-right-style",
454*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
455*0a6a1f1dSLionel Sambuc 	  .default_str = "default"
456*0a6a1f1dSLionel Sambuc 	},
457*0a6a1f1dSLionel Sambuc 
458*0a6a1f1dSLionel Sambuc 	{ .name = "status-style",
459*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
460*0a6a1f1dSLionel Sambuc 	  .default_str = "bg=green,fg=black"
461*0a6a1f1dSLionel Sambuc 	},
462*0a6a1f1dSLionel Sambuc 
463eda6f593SDavid van Moolenbroek 	{ .name = "status-utf8",
464eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
465eda6f593SDavid van Moolenbroek 	  .default_num = 0 /* overridden in main() */
466eda6f593SDavid van Moolenbroek 	},
467eda6f593SDavid van Moolenbroek 
468eda6f593SDavid van Moolenbroek 	{ .name = "terminal-overrides",
469eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
470*0a6a1f1dSLionel Sambuc 	  .default_str = "*256col*:colors=256"
471eda6f593SDavid van Moolenbroek 	                 ",xterm*:XT:Ms=\\E]52;%p1%s;%p2%s\\007"
472*0a6a1f1dSLionel Sambuc 	                 ":Cs=\\E]12;%p1%s\\007:Cr=\\E]112\\007"
473*0a6a1f1dSLionel Sambuc 			 ":Ss=\\E[%p1%d q:Se=\\E[2 q,screen*:XT"
474eda6f593SDavid van Moolenbroek 	},
475eda6f593SDavid van Moolenbroek 
476eda6f593SDavid van Moolenbroek 	{ .name = "update-environment",
477eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
478eda6f593SDavid van Moolenbroek 	  .default_str = "DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID "
479eda6f593SDavid van Moolenbroek 	                 "SSH_CONNECTION WINDOWID XAUTHORITY"
480eda6f593SDavid van Moolenbroek 
481eda6f593SDavid van Moolenbroek 	},
482eda6f593SDavid van Moolenbroek 
483eda6f593SDavid van Moolenbroek 	{ .name = "visual-activity",
484eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
485eda6f593SDavid van Moolenbroek 	  .default_num = 0
486eda6f593SDavid van Moolenbroek 	},
487eda6f593SDavid van Moolenbroek 
488eda6f593SDavid van Moolenbroek 	{ .name = "visual-bell",
489eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
490eda6f593SDavid van Moolenbroek 	  .default_num = 0
491eda6f593SDavid van Moolenbroek 	},
492eda6f593SDavid van Moolenbroek 
493eda6f593SDavid van Moolenbroek 	{ .name = "visual-content",
494eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
495eda6f593SDavid van Moolenbroek 	  .default_num = 0
496eda6f593SDavid van Moolenbroek 	},
497eda6f593SDavid van Moolenbroek 
498eda6f593SDavid van Moolenbroek 	{ .name = "visual-silence",
499eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
500eda6f593SDavid van Moolenbroek 	  .default_num = 0
501eda6f593SDavid van Moolenbroek 	},
502eda6f593SDavid van Moolenbroek 
503*0a6a1f1dSLionel Sambuc 	{ .name = "word-separators",
504*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STRING,
505*0a6a1f1dSLionel Sambuc 	  .default_str = " -_@"
506*0a6a1f1dSLionel Sambuc 	},
507*0a6a1f1dSLionel Sambuc 
508eda6f593SDavid van Moolenbroek 	{ .name = NULL }
509eda6f593SDavid van Moolenbroek };
510eda6f593SDavid van Moolenbroek 
511eda6f593SDavid van Moolenbroek /* Window options. */
512eda6f593SDavid van Moolenbroek const struct options_table_entry window_options_table[] = {
513eda6f593SDavid van Moolenbroek 	{ .name = "aggressive-resize",
514eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
515eda6f593SDavid van Moolenbroek 	  .default_num = 0
516eda6f593SDavid van Moolenbroek 	},
517eda6f593SDavid van Moolenbroek 
518*0a6a1f1dSLionel Sambuc 	{ .name = "allow-rename",
519*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_FLAG,
520*0a6a1f1dSLionel Sambuc 	  .default_num = 1
521*0a6a1f1dSLionel Sambuc 	},
522*0a6a1f1dSLionel Sambuc 
523eda6f593SDavid van Moolenbroek 	{ .name = "alternate-screen",
524eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
525eda6f593SDavid van Moolenbroek 	  .default_num = 1
526eda6f593SDavid van Moolenbroek 	},
527eda6f593SDavid van Moolenbroek 
528eda6f593SDavid van Moolenbroek 	{ .name = "automatic-rename",
529eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
530eda6f593SDavid van Moolenbroek 	  .default_num = 1
531eda6f593SDavid van Moolenbroek 	},
532eda6f593SDavid van Moolenbroek 
533*0a6a1f1dSLionel Sambuc 	{ .name = "automatic-rename-format",
534*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STRING,
535*0a6a1f1dSLionel Sambuc 	  .default_str = "#{?pane_in_mode,[tmux],#{pane_current_command}}#{?pane_dead,[dead],}"
536*0a6a1f1dSLionel Sambuc 	},
537*0a6a1f1dSLionel Sambuc 
538*0a6a1f1dSLionel Sambuc 	{ .name = "c0-change-trigger",
539*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_NUMBER,
540*0a6a1f1dSLionel Sambuc 	  .default_num = 250,
541*0a6a1f1dSLionel Sambuc 	  .minimum = 0,
542*0a6a1f1dSLionel Sambuc 	  .maximum = USHRT_MAX
543*0a6a1f1dSLionel Sambuc 	},
544*0a6a1f1dSLionel Sambuc 
545*0a6a1f1dSLionel Sambuc 	{ .name = "c0-change-interval",
546*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_NUMBER,
547*0a6a1f1dSLionel Sambuc 	  .default_num = 100,
548*0a6a1f1dSLionel Sambuc 	  .minimum = 1,
549*0a6a1f1dSLionel Sambuc 	  .maximum = USHRT_MAX
550*0a6a1f1dSLionel Sambuc 	},
551*0a6a1f1dSLionel Sambuc 
552eda6f593SDavid van Moolenbroek 	{ .name = "clock-mode-colour",
553eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
554eda6f593SDavid van Moolenbroek 	  .default_num = 4
555eda6f593SDavid van Moolenbroek 	},
556eda6f593SDavid van Moolenbroek 
557eda6f593SDavid van Moolenbroek 	{ .name = "clock-mode-style",
558eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_CHOICE,
559eda6f593SDavid van Moolenbroek 	  .choices = options_table_clock_mode_style_list,
560eda6f593SDavid van Moolenbroek 	  .default_num = 1
561eda6f593SDavid van Moolenbroek 	},
562eda6f593SDavid van Moolenbroek 
563eda6f593SDavid van Moolenbroek 	{ .name = "force-height",
564eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
565eda6f593SDavid van Moolenbroek 	  .minimum = 0,
566eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
567eda6f593SDavid van Moolenbroek 	  .default_num = 0
568eda6f593SDavid van Moolenbroek 	},
569eda6f593SDavid van Moolenbroek 
570eda6f593SDavid van Moolenbroek 	{ .name = "force-width",
571eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
572eda6f593SDavid van Moolenbroek 	  .minimum = 0,
573eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
574eda6f593SDavid van Moolenbroek 	  .default_num = 0
575eda6f593SDavid van Moolenbroek 	},
576eda6f593SDavid van Moolenbroek 
577eda6f593SDavid van Moolenbroek 	{ .name = "main-pane-height",
578eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
579eda6f593SDavid van Moolenbroek 	  .minimum = 1,
580eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
581eda6f593SDavid van Moolenbroek 	  .default_num = 24
582eda6f593SDavid van Moolenbroek 	},
583eda6f593SDavid van Moolenbroek 
584eda6f593SDavid van Moolenbroek 	{ .name = "main-pane-width",
585eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
586eda6f593SDavid van Moolenbroek 	  .minimum = 1,
587eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
588eda6f593SDavid van Moolenbroek 	  .default_num = 80
589eda6f593SDavid van Moolenbroek 	},
590eda6f593SDavid van Moolenbroek 
591eda6f593SDavid van Moolenbroek 	{ .name = "mode-attr",
592eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_ATTRIBUTES,
593*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
594*0a6a1f1dSLionel Sambuc 	  .style = "mode-style"
595eda6f593SDavid van Moolenbroek 	},
596eda6f593SDavid van Moolenbroek 
597eda6f593SDavid van Moolenbroek 	{ .name = "mode-bg",
598eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
599*0a6a1f1dSLionel Sambuc 	  .default_num = 3,
600*0a6a1f1dSLionel Sambuc 	  .style = "mode-style"
601eda6f593SDavid van Moolenbroek 	},
602eda6f593SDavid van Moolenbroek 
603eda6f593SDavid van Moolenbroek 	{ .name = "mode-fg",
604eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
605*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
606*0a6a1f1dSLionel Sambuc 	  .style = "mode-style"
607eda6f593SDavid van Moolenbroek 	},
608eda6f593SDavid van Moolenbroek 
609eda6f593SDavid van Moolenbroek 	{ .name = "mode-keys",
610eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_CHOICE,
611eda6f593SDavid van Moolenbroek 	  .choices = options_table_mode_keys_list,
612eda6f593SDavid van Moolenbroek 	  .default_num = MODEKEY_EMACS
613eda6f593SDavid van Moolenbroek 	},
614eda6f593SDavid van Moolenbroek 
615eda6f593SDavid van Moolenbroek 	{ .name = "mode-mouse",
616*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_CHOICE,
617*0a6a1f1dSLionel Sambuc 	  .choices = options_table_mode_mouse_list,
618eda6f593SDavid van Moolenbroek 	  .default_num = 0
619eda6f593SDavid van Moolenbroek 	},
620eda6f593SDavid van Moolenbroek 
621*0a6a1f1dSLionel Sambuc 	{ .name = "mode-style",
622*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
623*0a6a1f1dSLionel Sambuc 	  .default_str = "bg=yellow,fg=black"
624*0a6a1f1dSLionel Sambuc 	},
625*0a6a1f1dSLionel Sambuc 
626eda6f593SDavid van Moolenbroek 	{ .name = "monitor-activity",
627eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
628eda6f593SDavid van Moolenbroek 	  .default_num = 0
629eda6f593SDavid van Moolenbroek 	},
630eda6f593SDavid van Moolenbroek 
631eda6f593SDavid van Moolenbroek 	{ .name = "monitor-content",
632eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
633eda6f593SDavid van Moolenbroek 	  .default_str = ""
634eda6f593SDavid van Moolenbroek 	},
635eda6f593SDavid van Moolenbroek 
636eda6f593SDavid van Moolenbroek 	{ .name = "monitor-silence",
637eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
638eda6f593SDavid van Moolenbroek 	  .minimum = 0,
639eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
640eda6f593SDavid van Moolenbroek 	  .default_num = 0
641eda6f593SDavid van Moolenbroek 	},
642eda6f593SDavid van Moolenbroek 
643eda6f593SDavid van Moolenbroek 	{ .name = "other-pane-height",
644eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
645eda6f593SDavid van Moolenbroek 	  .minimum = 0,
646eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
647eda6f593SDavid van Moolenbroek 	  .default_num = 0
648eda6f593SDavid van Moolenbroek 	},
649eda6f593SDavid van Moolenbroek 
650eda6f593SDavid van Moolenbroek 	{ .name = "other-pane-width",
651eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_NUMBER,
652eda6f593SDavid van Moolenbroek 	  .minimum = 0,
653eda6f593SDavid van Moolenbroek 	  .maximum = INT_MAX,
654eda6f593SDavid van Moolenbroek 	  .default_num = 0
655eda6f593SDavid van Moolenbroek 	},
656eda6f593SDavid van Moolenbroek 
657*0a6a1f1dSLionel Sambuc 	{ .name = "pane-base-index",
658*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_NUMBER,
659*0a6a1f1dSLionel Sambuc 	  .minimum = 0,
660*0a6a1f1dSLionel Sambuc 	  .maximum = USHRT_MAX,
661*0a6a1f1dSLionel Sambuc 	  .default_num = 0
662*0a6a1f1dSLionel Sambuc 	},
663*0a6a1f1dSLionel Sambuc 
664eda6f593SDavid van Moolenbroek 	{ .name = "remain-on-exit",
665eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
666eda6f593SDavid van Moolenbroek 	  .default_num = 0
667eda6f593SDavid van Moolenbroek 	},
668eda6f593SDavid van Moolenbroek 
669eda6f593SDavid van Moolenbroek 	{ .name = "synchronize-panes",
670eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
671eda6f593SDavid van Moolenbroek 	  .default_num = 0
672eda6f593SDavid van Moolenbroek 	},
673eda6f593SDavid van Moolenbroek 
674eda6f593SDavid van Moolenbroek 	{ .name = "utf8",
675eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
676eda6f593SDavid van Moolenbroek 	  .default_num = 0 /* overridden in main() */
677eda6f593SDavid van Moolenbroek 	},
678eda6f593SDavid van Moolenbroek 
679*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-activity-attr",
680eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_ATTRIBUTES,
681*0a6a1f1dSLionel Sambuc 	  .default_num = GRID_ATTR_REVERSE,
682*0a6a1f1dSLionel Sambuc 	  .style = "window-status-activity-style"
683eda6f593SDavid van Moolenbroek 	},
684eda6f593SDavid van Moolenbroek 
685*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-activity-bg",
686eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
687*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
688*0a6a1f1dSLionel Sambuc 	  .style = "window-status-activity-style"
689eda6f593SDavid van Moolenbroek 	},
690eda6f593SDavid van Moolenbroek 
691*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-activity-fg",
692eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
693*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
694*0a6a1f1dSLionel Sambuc 	  .style = "window-status-activity-style"
695*0a6a1f1dSLionel Sambuc 	},
696*0a6a1f1dSLionel Sambuc 
697*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-activity-style",
698*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
699*0a6a1f1dSLionel Sambuc 	  .default_str = "reverse"
700eda6f593SDavid van Moolenbroek 	},
701eda6f593SDavid van Moolenbroek 
702eda6f593SDavid van Moolenbroek 	{ .name = "window-status-attr",
703eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_ATTRIBUTES,
704*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
705*0a6a1f1dSLionel Sambuc 	  .style = "window-status-style"
706*0a6a1f1dSLionel Sambuc 	},
707*0a6a1f1dSLionel Sambuc 
708*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-bell-attr",
709*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_ATTRIBUTES,
710*0a6a1f1dSLionel Sambuc 	  .default_num = GRID_ATTR_REVERSE,
711*0a6a1f1dSLionel Sambuc 	  .style = "window-status-bell-style"
712*0a6a1f1dSLionel Sambuc 	},
713*0a6a1f1dSLionel Sambuc 
714*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-bell-bg",
715*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_COLOUR,
716*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
717*0a6a1f1dSLionel Sambuc 	  .style = "window-status-bell-style"
718*0a6a1f1dSLionel Sambuc 	},
719*0a6a1f1dSLionel Sambuc 
720*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-bell-fg",
721*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_COLOUR,
722*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
723*0a6a1f1dSLionel Sambuc 	  .style = "window-status-bell-style"
724*0a6a1f1dSLionel Sambuc 	},
725*0a6a1f1dSLionel Sambuc 
726*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-bell-style",
727*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
728*0a6a1f1dSLionel Sambuc 	  .default_str = "reverse"
729eda6f593SDavid van Moolenbroek 	},
730eda6f593SDavid van Moolenbroek 
731eda6f593SDavid van Moolenbroek 	{ .name = "window-status-bg",
732eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
733*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
734*0a6a1f1dSLionel Sambuc 	  .style = "window-status-style"
735*0a6a1f1dSLionel Sambuc 	},
736*0a6a1f1dSLionel Sambuc 
737*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-content-attr",
738*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_ATTRIBUTES,
739*0a6a1f1dSLionel Sambuc 	  .default_num = GRID_ATTR_REVERSE,
740*0a6a1f1dSLionel Sambuc 	  .style = "window-status-content-style"
741*0a6a1f1dSLionel Sambuc 	},
742*0a6a1f1dSLionel Sambuc 
743*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-content-bg",
744*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_COLOUR,
745*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
746*0a6a1f1dSLionel Sambuc 	  .style = "window-status-content-style"
747*0a6a1f1dSLionel Sambuc 	},
748*0a6a1f1dSLionel Sambuc 
749*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-content-fg",
750*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_COLOUR,
751*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
752*0a6a1f1dSLionel Sambuc 	  .style = "window-status-content-style"
753*0a6a1f1dSLionel Sambuc 	},
754*0a6a1f1dSLionel Sambuc 
755*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-content-style",
756*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
757*0a6a1f1dSLionel Sambuc 	  .default_str = "reverse"
758eda6f593SDavid van Moolenbroek 	},
759eda6f593SDavid van Moolenbroek 
760eda6f593SDavid van Moolenbroek 	{ .name = "window-status-current-attr",
761eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_ATTRIBUTES,
762*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
763*0a6a1f1dSLionel Sambuc 	  .style = "window-status-current-style"
764eda6f593SDavid van Moolenbroek 	},
765eda6f593SDavid van Moolenbroek 
766eda6f593SDavid van Moolenbroek 	{ .name = "window-status-current-bg",
767eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
768*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
769*0a6a1f1dSLionel Sambuc 	  .style = "window-status-current-style"
770eda6f593SDavid van Moolenbroek 	},
771eda6f593SDavid van Moolenbroek 
772eda6f593SDavid van Moolenbroek 	{ .name = "window-status-current-fg",
773eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
774*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
775*0a6a1f1dSLionel Sambuc 	  .style = "window-status-current-style"
776eda6f593SDavid van Moolenbroek 	},
777eda6f593SDavid van Moolenbroek 
778eda6f593SDavid van Moolenbroek 	{ .name = "window-status-current-format",
779eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
780eda6f593SDavid van Moolenbroek 	  .default_str = "#I:#W#F"
781eda6f593SDavid van Moolenbroek 	},
782eda6f593SDavid van Moolenbroek 
783*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-current-style",
784*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
785*0a6a1f1dSLionel Sambuc 	  .default_str = "default"
786*0a6a1f1dSLionel Sambuc 	},
787*0a6a1f1dSLionel Sambuc 
788eda6f593SDavid van Moolenbroek 	{ .name = "window-status-fg",
789eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_COLOUR,
790*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
791*0a6a1f1dSLionel Sambuc 	  .style = "window-status-style"
792eda6f593SDavid van Moolenbroek 	},
793eda6f593SDavid van Moolenbroek 
794eda6f593SDavid van Moolenbroek 	{ .name = "window-status-format",
795eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
796eda6f593SDavid van Moolenbroek 	  .default_str = "#I:#W#F"
797eda6f593SDavid van Moolenbroek 	},
798eda6f593SDavid van Moolenbroek 
799*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-last-attr",
800*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_ATTRIBUTES,
801*0a6a1f1dSLionel Sambuc 	  .default_num = 0,
802*0a6a1f1dSLionel Sambuc 	  .style = "window-status-last-style"
803*0a6a1f1dSLionel Sambuc 	},
804*0a6a1f1dSLionel Sambuc 
805*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-last-bg",
806*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_COLOUR,
807*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
808*0a6a1f1dSLionel Sambuc 	  .style = "window-status-last-style"
809*0a6a1f1dSLionel Sambuc 	},
810*0a6a1f1dSLionel Sambuc 
811*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-last-fg",
812*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_COLOUR,
813*0a6a1f1dSLionel Sambuc 	  .default_num = 8,
814*0a6a1f1dSLionel Sambuc 	  .style = "window-status-last-style"
815*0a6a1f1dSLionel Sambuc 	},
816*0a6a1f1dSLionel Sambuc 
817*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-last-style",
818*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
819*0a6a1f1dSLionel Sambuc 	  .default_str = "default"
820*0a6a1f1dSLionel Sambuc 	},
821*0a6a1f1dSLionel Sambuc 
822*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-separator",
823eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_STRING,
824*0a6a1f1dSLionel Sambuc 	  .default_str = " "
825*0a6a1f1dSLionel Sambuc 	},
826*0a6a1f1dSLionel Sambuc 
827*0a6a1f1dSLionel Sambuc 	{ .name = "window-status-style",
828*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_STYLE,
829*0a6a1f1dSLionel Sambuc 	  .default_str = "default"
830*0a6a1f1dSLionel Sambuc 	},
831*0a6a1f1dSLionel Sambuc 
832*0a6a1f1dSLionel Sambuc 	{ .name = "wrap-search",
833*0a6a1f1dSLionel Sambuc 	  .type = OPTIONS_TABLE_FLAG,
834*0a6a1f1dSLionel Sambuc 	  .default_num = 1
835eda6f593SDavid van Moolenbroek 	},
836eda6f593SDavid van Moolenbroek 
837eda6f593SDavid van Moolenbroek 	{ .name = "xterm-keys",
838eda6f593SDavid van Moolenbroek 	  .type = OPTIONS_TABLE_FLAG,
839eda6f593SDavid van Moolenbroek 	  .default_num = 0
840eda6f593SDavid van Moolenbroek 	},
841eda6f593SDavid van Moolenbroek 
842eda6f593SDavid van Moolenbroek 	{ .name = NULL }
843eda6f593SDavid van Moolenbroek };
844eda6f593SDavid van Moolenbroek 
845eda6f593SDavid van Moolenbroek /* Populate an options tree from a table. */
846eda6f593SDavid van Moolenbroek void
options_table_populate_tree(const struct options_table_entry * table,struct options * oo)847eda6f593SDavid van Moolenbroek options_table_populate_tree(
848eda6f593SDavid van Moolenbroek     const struct options_table_entry *table, struct options *oo)
849eda6f593SDavid van Moolenbroek {
850eda6f593SDavid van Moolenbroek 	const struct options_table_entry	*oe;
851eda6f593SDavid van Moolenbroek 
852eda6f593SDavid van Moolenbroek 	for (oe = table; oe->name != NULL; oe++) {
853*0a6a1f1dSLionel Sambuc 		switch (oe->type) {
854*0a6a1f1dSLionel Sambuc 		case OPTIONS_TABLE_STRING:
855eda6f593SDavid van Moolenbroek 			options_set_string(oo, oe->name, "%s", oe->default_str);
856*0a6a1f1dSLionel Sambuc 			break;
857*0a6a1f1dSLionel Sambuc 		case OPTIONS_TABLE_STYLE:
858*0a6a1f1dSLionel Sambuc 			options_set_style(oo, oe->name, oe->default_str, 0);
859*0a6a1f1dSLionel Sambuc 			break;
860*0a6a1f1dSLionel Sambuc 		default:
861eda6f593SDavid van Moolenbroek 			options_set_number(oo, oe->name, oe->default_num);
862*0a6a1f1dSLionel Sambuc 			break;
863*0a6a1f1dSLionel Sambuc 		}
864eda6f593SDavid van Moolenbroek 	}
865eda6f593SDavid van Moolenbroek }
866eda6f593SDavid van Moolenbroek 
867eda6f593SDavid van Moolenbroek /* Print an option using its type from the table. */
868eda6f593SDavid van Moolenbroek const char *
options_table_print_entry(const struct options_table_entry * oe,struct options_entry * o,int no_quotes)869*0a6a1f1dSLionel Sambuc options_table_print_entry(const struct options_table_entry *oe,
870*0a6a1f1dSLionel Sambuc     struct options_entry *o, int no_quotes)
871eda6f593SDavid van Moolenbroek {
872eda6f593SDavid van Moolenbroek 	static char	 out[BUFSIZ];
873eda6f593SDavid van Moolenbroek 	const char	*s;
874eda6f593SDavid van Moolenbroek 
875eda6f593SDavid van Moolenbroek 	*out = '\0';
876eda6f593SDavid van Moolenbroek 	switch (oe->type) {
877eda6f593SDavid van Moolenbroek 	case OPTIONS_TABLE_STRING:
878*0a6a1f1dSLionel Sambuc 		if (no_quotes)
879*0a6a1f1dSLionel Sambuc 			xsnprintf(out, sizeof out, "%s", o->str);
880*0a6a1f1dSLionel Sambuc 		else
881eda6f593SDavid van Moolenbroek 			xsnprintf(out, sizeof out, "\"%s\"", o->str);
882eda6f593SDavid van Moolenbroek 		break;
883eda6f593SDavid van Moolenbroek 	case OPTIONS_TABLE_NUMBER:
884eda6f593SDavid van Moolenbroek 		xsnprintf(out, sizeof out, "%lld", o->num);
885eda6f593SDavid van Moolenbroek 		break;
886*0a6a1f1dSLionel Sambuc 	case OPTIONS_TABLE_KEY:
887*0a6a1f1dSLionel Sambuc 		xsnprintf(out, sizeof out, "%s",
888*0a6a1f1dSLionel Sambuc 		    key_string_lookup_key(o->num));
889eda6f593SDavid van Moolenbroek 		break;
890eda6f593SDavid van Moolenbroek 	case OPTIONS_TABLE_COLOUR:
891eda6f593SDavid van Moolenbroek 		s = colour_tostring(o->num);
892eda6f593SDavid van Moolenbroek 		xsnprintf(out, sizeof out, "%s", s);
893eda6f593SDavid van Moolenbroek 		break;
894eda6f593SDavid van Moolenbroek 	case OPTIONS_TABLE_ATTRIBUTES:
895eda6f593SDavid van Moolenbroek 		s = attributes_tostring(o->num);
896eda6f593SDavid van Moolenbroek 		xsnprintf(out, sizeof out, "%s", s);
897eda6f593SDavid van Moolenbroek 		break;
898eda6f593SDavid van Moolenbroek 	case OPTIONS_TABLE_FLAG:
899eda6f593SDavid van Moolenbroek 		if (o->num)
900eda6f593SDavid van Moolenbroek 			strlcpy(out, "on", sizeof out);
901eda6f593SDavid van Moolenbroek 		else
902eda6f593SDavid van Moolenbroek 			strlcpy(out, "off", sizeof out);
903eda6f593SDavid van Moolenbroek 		break;
904eda6f593SDavid van Moolenbroek 	case OPTIONS_TABLE_CHOICE:
905eda6f593SDavid van Moolenbroek 		s = oe->choices[o->num];
906eda6f593SDavid van Moolenbroek 		xsnprintf(out, sizeof out, "%s", s);
907eda6f593SDavid van Moolenbroek 		break;
908*0a6a1f1dSLionel Sambuc 	case OPTIONS_TABLE_STYLE:
909*0a6a1f1dSLionel Sambuc 		s = style_tostring(&o->style);
910*0a6a1f1dSLionel Sambuc 		xsnprintf(out, sizeof out, "%s", s);
911*0a6a1f1dSLionel Sambuc 		break;
912eda6f593SDavid van Moolenbroek 	}
913eda6f593SDavid van Moolenbroek 	return (out);
914eda6f593SDavid van Moolenbroek }
915*0a6a1f1dSLionel Sambuc 
916*0a6a1f1dSLionel Sambuc /* Find an option. */
917*0a6a1f1dSLionel Sambuc int
options_table_find(const char * optstr,const struct options_table_entry ** table,const struct options_table_entry ** oe)918*0a6a1f1dSLionel Sambuc options_table_find(
919*0a6a1f1dSLionel Sambuc     const char *optstr, const struct options_table_entry **table,
920*0a6a1f1dSLionel Sambuc     const struct options_table_entry **oe)
921*0a6a1f1dSLionel Sambuc {
922*0a6a1f1dSLionel Sambuc 	static const struct options_table_entry	*tables[] = {
923*0a6a1f1dSLionel Sambuc 		server_options_table,
924*0a6a1f1dSLionel Sambuc 		window_options_table,
925*0a6a1f1dSLionel Sambuc 		session_options_table
926*0a6a1f1dSLionel Sambuc 	};
927*0a6a1f1dSLionel Sambuc 	const struct options_table_entry	*oe_loop;
928*0a6a1f1dSLionel Sambuc 	u_int					 i;
929*0a6a1f1dSLionel Sambuc 
930*0a6a1f1dSLionel Sambuc 	for (i = 0; i < nitems(tables); i++) {
931*0a6a1f1dSLionel Sambuc 		for (oe_loop = tables[i]; oe_loop->name != NULL; oe_loop++) {
932*0a6a1f1dSLionel Sambuc 			if (strncmp(oe_loop->name, optstr, strlen(optstr)) != 0)
933*0a6a1f1dSLionel Sambuc 				continue;
934*0a6a1f1dSLionel Sambuc 
935*0a6a1f1dSLionel Sambuc 			/* If already found, ambiguous. */
936*0a6a1f1dSLionel Sambuc 			if (*oe != NULL)
937*0a6a1f1dSLionel Sambuc 				return (-1);
938*0a6a1f1dSLionel Sambuc 			*oe = oe_loop;
939*0a6a1f1dSLionel Sambuc 			*table = tables[i];
940*0a6a1f1dSLionel Sambuc 
941*0a6a1f1dSLionel Sambuc 			/* Bail now if an exact match. */
942*0a6a1f1dSLionel Sambuc 			if (strcmp((*oe)->name, optstr) == 0)
943*0a6a1f1dSLionel Sambuc 				break;
944*0a6a1f1dSLionel Sambuc 		}
945*0a6a1f1dSLionel Sambuc 	}
946*0a6a1f1dSLionel Sambuc 	return (0);
947*0a6a1f1dSLionel Sambuc }
948