mirror of
https://github.com/tmux/tmux.git
synced 2025-09-01 20:57:00 +00:00
Improve command prompt completion:
- Show a menu with completions if there are multiple. - Don't complete argument stuff (options, layouts) at start of text. - For -t and -s, if there is no : then complete sessions but if there is a :, show a menu of all windows in the session rather than trying to complete the window name which is a bit useless if there are duplicates.
This commit is contained in:
35
menu.c
35
menu.c
@ -240,6 +240,16 @@ menu_key_cb(struct client *c, struct key_event *event)
|
||||
} while ((name == NULL || *name == '-') && md->choice != old);
|
||||
c->flags |= CLIENT_REDRAWOVERLAY;
|
||||
return (0);
|
||||
case KEYC_BSPACE:
|
||||
if (~md->flags & MENU_TAB)
|
||||
break;
|
||||
return (1);
|
||||
case '\011': /* Tab */
|
||||
if (~md->flags & MENU_TAB)
|
||||
break;
|
||||
if (md->choice == count - 1)
|
||||
return (1);
|
||||
/* FALLTHROUGH */
|
||||
case KEYC_DOWN:
|
||||
case 'j':
|
||||
if (old == -1)
|
||||
@ -253,6 +263,31 @@ menu_key_cb(struct client *c, struct key_event *event)
|
||||
} while ((name == NULL || *name == '-') && md->choice != old);
|
||||
c->flags |= CLIENT_REDRAWOVERLAY;
|
||||
return (0);
|
||||
case 'g':
|
||||
case KEYC_PPAGE:
|
||||
case '\002': /* C-b */
|
||||
if (md->choice > 5)
|
||||
md->choice -= 5;
|
||||
else
|
||||
md->choice = 0;
|
||||
while (md->choice != count && (name == NULL || *name == '-'))
|
||||
md->choice++;
|
||||
if (md->choice == count)
|
||||
md->choice = -1;
|
||||
c->flags |= CLIENT_REDRAWOVERLAY;
|
||||
break;
|
||||
case 'G':
|
||||
case KEYC_NPAGE:
|
||||
if (md->choice > count - 6)
|
||||
md->choice = count - 1;
|
||||
else
|
||||
md->choice += 5;
|
||||
while (md->choice != -1 && (name == NULL || *name == '-'))
|
||||
md->choice--;
|
||||
c->flags |= CLIENT_REDRAWOVERLAY;
|
||||
break;
|
||||
case '\006': /* C-f */
|
||||
break;
|
||||
case '\r':
|
||||
goto chosen;
|
||||
case '\033': /* Escape */
|
||||
|
Reference in New Issue
Block a user