=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-display-menu.c,v retrieving revision 1.37 retrieving revision 1.38 diff -c -r1.37 -r1.38 *** src/usr.bin/tmux/cmd-display-menu.c 2021/10/25 09:38:36 1.37 --- src/usr.bin/tmux/cmd-display-menu.c 2023/01/20 21:36:00 1.38 *************** *** 1,4 **** ! /* $OpenBSD: cmd-display-menu.c,v 1.37 2021/10/25 09:38:36 nicm Exp $ */ /* * Copyright (c) 2019 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: cmd-display-menu.c,v 1.38 2023/01/20 21:36:00 nicm Exp $ */ /* * Copyright (c) 2019 Nicholas Marriott *************** *** 39,47 **** .name = "display-menu", .alias = "menu", ! .args = { "c:t:OT:x:y:", 1, -1, cmd_display_menu_args_parse }, ! .usage = "[-O] [-c target-client] " CMD_TARGET_PANE_USAGE " [-T title] " ! "[-x position] [-y position] name key command ...", .target = { 't', CMD_FIND_PANE, 0 }, --- 39,48 ---- .name = "display-menu", .alias = "menu", ! .args = { "c:t:S:OT:x:y:", 1, -1, cmd_display_menu_args_parse }, ! .usage = "[-O] [-c target-client] [-S starting-choice] " ! CMD_TARGET_PANE_USAGE " [-T title] [-x position] " ! "[-y position] name key command ...", .target = { 't', CMD_FIND_PANE, 0 }, *************** *** 288,300 **** struct menu *menu = NULL; struct menu_item menu_item; const char *key, *name; ! char *title; ! int flags = 0; u_int px, py, i, count = args_count(args); if (tc->overlay_draw != NULL) return (CMD_RETURN_NORMAL); if (args_has(args, 'T')) title = format_single_from_target(item, args_get(args, 'T')); else --- 289,315 ---- struct menu *menu = NULL; struct menu_item menu_item; const char *key, *name; ! char *title, *cause; ! int flags = 0, starting_choice = 0; u_int px, py, i, count = args_count(args); if (tc->overlay_draw != NULL) return (CMD_RETURN_NORMAL); + if (args_has(args, 'S')) { + if (strcmp(args_get(args, 'S'), "-") == 0) + starting_choice = -1; + else { + starting_choice = args_strtonum(args, 'S', 0, UINT_MAX, + &cause); + if (cause != NULL) { + cmdq_error(item, "starting choice %s", cause); + free(cause); + return (CMD_RETURN_ERROR); + } + } + } + if (args_has(args, 'T')) title = format_single_from_target(item, args_get(args, 'T')); else *************** *** 341,348 **** flags |= MENU_STAYOPEN; if (!event->m.valid) flags |= MENU_NOMOUSE; ! if (menu_display(menu, flags, item, px, py, tc, target, NULL, ! NULL) != 0) return (CMD_RETURN_NORMAL); return (CMD_RETURN_WAIT); } --- 356,363 ---- flags |= MENU_STAYOPEN; if (!event->m.valid) flags |= MENU_NOMOUSE; ! if (menu_display(menu, flags, starting_choice, item, px, py, tc, target, ! NULL, NULL) != 0) return (CMD_RETURN_NORMAL); return (CMD_RETURN_WAIT); }