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