--- dmenu.1 | 4 ++++ dmenu.c | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/dmenu.1 b/dmenu.1 index 2897ab1..3b527c1 100644 --- a/dmenu.1 +++ b/dmenu.1 _AT_@ -41,6 +41,10 @@ which lists programs in the user's $PATH and runs the result in their $SHELL. .B \-b dmenu appears at the bottom of the screen. .TP +.B \-a +When only one entry matches the current query, print the matching value to +stdout, and exit immediately. +.TP .B \-f dmenu grabs the keyboard before reading stdin. This is faster, but will lock up X until stdin reaches end\-of\-file. diff --git a/dmenu.c b/dmenu.c index 94c70de..89fd130 100644 --- a/dmenu.c +++ b/dmenu.c _AT_@ -55,6 +55,7 @@ static Item *prev, *curr, *next, *sel; static Window win; static XIC xic; static int mon = -1; +static Bool print_if_unambiguous = False; #include "config.h" _AT_@ -72,6 +73,8 @@ main(int argc, char *argv[]) { puts("dmenu-"VERSION", © 2006-2014 dmenu engineers, see LICENSE for details"); exit(EXIT_SUCCESS); } + else if(!strcmp(argv[i], "-a")) /* print selection if query is unambiguous */ + print_if_unambiguous = True; else if(!strcmp(argv[i], "-b")) /* appears at the bottom of the screen */ topbar = False; else if(!strcmp(argv[i], "-f")) /* grabs keyboard before reading stdin */ _AT_@ -302,6 +305,8 @@ keypress(XKeyEvent *ev) { default: if(!iscntrl(*buf)) insert(buf, len); + if(print_if_unambiguous && matches && !matches->right) + goto print_selection; break; case XK_Delete: if(text[cursor] == '\0') _AT_@ -367,6 +372,7 @@ keypress(XKeyEvent *ev) { break; case XK_Return: case XK_KP_Enter: +print_selection: puts((sel && !(ev->state & ShiftMask)) ? sel->text : text); if(!(ev->state & ControlMask)) exit(EXIT_SUCCESS); _AT_@ -621,6 +627,6 @@ setup(void) { void usage(void) { fputs("usage: dmenu [-b] [-f] [-i] [-l lines] [-p prompt] [-fn font] [-m monitor]\n" - " [-nb color] [-nf color] [-sb color] [-sf color] [-v]\n", stderr); + " [-nb color] [-nf color] [-sb color] [-sf color] [-v] [-a]\n", stderr); exit(EXIT_FAILURE); } -- 1.7.10.4 --vtzGhvizbBRQ85DL--Received on Mon Sep 17 2001 - 00:00:00 CEST
This archive was generated by hypermail 2.3.0 : Sun Apr 12 2015 - 21:00:04 CEST