Sometimes I want to type something like "xterm -e top" in "exec" menu,
and feel the need for tab completion.

Not sure about the FALLTHROUGH thing, though.

Index: menu.c
===================================================================
RCS file: /cvs/xenocara/app/cwm/menu.c,v
retrieving revision 1.33
diff -u -p -u -r1.33 menu.c
--- menu.c      8 Sep 2011 12:00:50 -0000       1.33
+++ menu.c      19 Jan 2012 20:58:45 -0000
@@ -37,7 +37,7 @@
 enum ctltype {
        CTL_NONE = -1,
        CTL_ERASEONE = 0, CTL_WIPE, CTL_UP, CTL_DOWN, CTL_RETURN,
-       CTL_ABORT, CTL_ALL
+       CTL_TAB, CTL_ABORT, CTL_ALL
 };
 
 struct menu_ctx {
@@ -254,6 +254,14 @@ menu_handle_key(XEvent *e, struct menu_c
                mc->searchstr[0] = '\0';
                mc->changed = 1;
                break;
+       case CTL_TAB:
+               if ((mi = TAILQ_FIRST(resultq)) != NULL) {
+                       (void)strlcpy(mc->searchstr,
+                               mi->text, sizeof(mc->searchstr));
+                       mc->changed = 1;
+                       break;
+               }
+               /* FALLTHROUGH */
        case CTL_ALL:
                mc->list = !mc->list;
                break;
@@ -475,6 +483,9 @@ menu_keycode(KeyCode kc, u_int state, en
                break;
        case XK_Return:
                *ctl = CTL_RETURN;
+               break;
+       case XK_Tab:
+               *ctl = CTL_TAB;
                break;
        case XK_Up:
                *ctl = CTL_UP;

-- 
Alexander Polakov | plhk.ru

Reply via email to