summaryrefslogtreecommitdiff
path: root/patches/dmenu-separator-20210904-d78ff08.diff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/dmenu-separator-20210904-d78ff08.diff')
-rw-r--r--patches/dmenu-separator-20210904-d78ff08.diff101
1 files changed, 0 insertions, 101 deletions
diff --git a/patches/dmenu-separator-20210904-d78ff08.diff b/patches/dmenu-separator-20210904-d78ff08.diff
deleted file mode 100644
index be30420..0000000
--- a/patches/dmenu-separator-20210904-d78ff08.diff
+++ /dev/null
@@ -1,101 +0,0 @@
-diff --git a/dmenu.1 b/dmenu.1
-index 323f93c..d511148 100644
---- a/dmenu.1
-+++ b/dmenu.1
-@@ -22,6 +22,10 @@ dmenu \- dynamic menu
- .IR color ]
- .RB [ \-w
- .IR windowid ]
-+.RB [ \-d
-+.IR separator ]
-+.RB [ \-D
-+.IR separator ]
- .P
- .BR dmenu_run " ..."
- .SH DESCRIPTION
-@@ -80,6 +84,14 @@ prints version information to stdout, then exits.
- .TP
- .BI \-w " windowid"
- embed into windowid.
-+.TP
-+.BI \-d " separator"
-+separate the input into two halves on the first occurrence of the given charcter.
-+Display only the first half in dmenu and print the second half to stdout upon selection.
-+Appending '|' to the separator reverses the display/printing order.
-+.TP
-+.BI \-D " separator"
-+same as \-d but separate based on the last occurrence.
- .SH USAGE
- dmenu is completely controlled by the keyboard. Items are selected using the
- arrow keys, page up, page down, home, and end.
-diff --git a/dmenu.c b/dmenu.c
-index 98507d9..82227c8 100644
---- a/dmenu.c
-+++ b/dmenu.c
-@@ -30,12 +30,16 @@ enum { SchemeNorm, SchemeSel, SchemeOut, SchemeLast }; /* color schemes */
-
- struct item {
- char *text;
-+ char *text_output;
- struct item *left, *right;
- int out;
- };
-
- static char text[BUFSIZ] = "";
- static char *embed;
-+static char separator;
-+static int separator_greedy;
-+static int separator_reverse;
- static int bh, mw, mh;
- static int inputw = 0, promptw;
- static int lrpad; /* sum of left and right padding */
-@@ -473,7 +477,7 @@ insert:
- break;
- case XK_Return:
- case XK_KP_Enter:
-- puts((sel && !(ev->state & ShiftMask)) ? sel->text : text);
-+ puts((sel && !(ev->state & ShiftMask)) ? sel->text_output : text);
- if (!(ev->state & ControlMask)) {
- cleanup();
- exit(0);
-@@ -545,6 +549,18 @@ readstdin(void)
- *p = '\0';
- if (!(items[i].text = strdup(buf)))
- die("cannot strdup %u bytes:", strlen(buf) + 1);
-+ if (separator && (p = separator_greedy ?
-+ strrchr(items[i].text, separator) : strchr(items[i].text, separator))) {
-+ *p = '\0';
-+ items[i].text_output = ++p;
-+ } else {
-+ items[i].text_output = items[i].text;
-+ }
-+ if (separator_reverse) {
-+ p = items[i].text;
-+ items[i].text = items[i].text_output;
-+ items[i].text_output = p;
-+ }
- items[i].out = 0;
- drw_font_getexts(drw->fonts, buf, strlen(buf), &tmpmax, NULL);
- if (tmpmax > inputw) {
-@@ -701,7 +717,8 @@ static void
- usage(void)
- {
- fputs("usage: dmenu [-bfiv] [-l lines] [-p prompt] [-fn font] [-m monitor]\n"
-- " [-nb color] [-nf color] [-sb color] [-sf color] [-w windowid]\n", stderr);
-+ " [-nb color] [-nf color] [-sb color] [-sf color] [-w windowid]\n"
-+ " [-d separator] [-D separator]\n", stderr);
- exit(1);
- }
-
-@@ -744,6 +761,11 @@ main(int argc, char *argv[])
- colors[SchemeSel][ColFg] = argv[++i];
- else if (!strcmp(argv[i], "-w")) /* embedding window id */
- embed = argv[++i];
-+ else if (!strcmp(argv[i], "-d") || /* field separator */
-+ (separator_greedy = !strcmp(argv[i], "-D"))) {
-+ separator = argv[++i][0];
-+ separator_reverse = argv[i][1] == '|';
-+ }
- else
- usage();
-