dmenu-printindex-5.0.diff - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
dmenu-printindex-5.0.diff (2374B) | |
--- | |
1 From e5a1ce7fca66c1d991f41df421bb7f1a4a3a8c45 Mon Sep 17 00:00:00 2001 | |
2 From: Jackson Abascal <[email protected]> | |
3 Date: Mon, 26 Apr 2021 15:39:29 -0400 | |
4 Subject: [PATCH] gives dmenu the ability to print the index of matched t… | |
5 instead of the text itself | |
6 | |
7 --- | |
8 dmenu.1 | 3 +++ | |
9 dmenu.c | 13 +++++++++++-- | |
10 2 files changed, 14 insertions(+), 2 deletions(-) | |
11 | |
12 diff --git a/dmenu.1 b/dmenu.1 | |
13 index 323f93c..b3c5f13 100644 | |
14 --- a/dmenu.1 | |
15 +++ b/dmenu.1 | |
16 @@ -47,6 +47,9 @@ is faster, but will lock up X until stdin reaches end\… | |
17 .B \-i | |
18 dmenu matches menu items case insensitively. | |
19 .TP | |
20 +.B \-ix | |
21 +dmenu prints the index of matched text instead of the text itself. | |
22 +.TP | |
23 .BI \-l " lines" | |
24 dmenu lists items vertically, with the given number of lines. | |
25 .TP | |
26 diff --git a/dmenu.c b/dmenu.c | |
27 index 65f25ce..172a2b4 100644 | |
28 --- a/dmenu.c | |
29 +++ b/dmenu.c | |
30 @@ -32,6 +32,7 @@ struct item { | |
31 char *text; | |
32 struct item *left, *right; | |
33 int out; | |
34 + int index; | |
35 }; | |
36 | |
37 static char text[BUFSIZ] = ""; | |
38 @@ -44,6 +45,7 @@ static struct item *items = NULL; | |
39 static struct item *matches, *matchend; | |
40 static struct item *prev, *curr, *next, *sel; | |
41 static int mon = -1, screen; | |
42 +static int print_index = 0; | |
43 | |
44 static Atom clip, utf8; | |
45 static Display *dpy; | |
46 @@ -464,7 +466,11 @@ insert: | |
47 break; | |
48 case XK_Return: | |
49 case XK_KP_Enter: | |
50 - puts((sel && !(ev->state & ShiftMask)) ? sel->text : te… | |
51 + if (print_index) | |
52 + printf("%d\n", (sel && !(ev->state & ShiftMask)… | |
53 + else | |
54 + puts((sel && !(ev->state & ShiftMask)) ? sel->t… | |
55 + | |
56 if (!(ev->state & ControlMask)) { | |
57 cleanup(); | |
58 exit(0); | |
59 @@ -535,6 +541,7 @@ readstdin(void) | |
60 if (!(items[i].text = strdup(buf))) | |
61 die("cannot strdup %u bytes:", strlen(buf) + 1); | |
62 items[i].out = 0; | |
63 + items[i].index = i; | |
64 drw_font_getexts(drw->fonts, buf, strlen(buf), &tmpmax,… | |
65 if (tmpmax > inputw) { | |
66 inputw = tmpmax; | |
67 @@ -712,7 +719,9 @@ main(int argc, char *argv[]) | |
68 else if (!strcmp(argv[i], "-i")) { /* case-insensitive … | |
69 fstrncmp = strncasecmp; | |
70 fstrstr = cistrstr; | |
71 - } else if (i + 1 == argc) | |
72 + } else if (!strcmp(argv[i], "-ix")) /* adds ability to… | |
73 + print_index = 1; | |
74 + else if (i + 1 == argc) | |
75 usage(); | |
76 /* these options take one argument */ | |
77 else if (!strcmp(argv[i], "-l")) /* number of lines i… | |
78 -- | |
79 2.31.1 | |
80 |