summaryrefslogtreecommitdiff
path: root/patches/st-copyurl-20190202-0.8.1.diff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/st-copyurl-20190202-0.8.1.diff')
-rw-r--r--patches/st-copyurl-20190202-0.8.1.diff109
1 files changed, 0 insertions, 109 deletions
diff --git a/patches/st-copyurl-20190202-0.8.1.diff b/patches/st-copyurl-20190202-0.8.1.diff
deleted file mode 100644
index 8d6782b..0000000
--- a/patches/st-copyurl-20190202-0.8.1.diff
+++ /dev/null
@@ -1,109 +0,0 @@
-From be408247f1c1ff8ccf7ab128b126f54d19bd4392 Mon Sep 17 00:00:00 2001
-From: Michael Buch <michaelbuch12@gmail.com>
-Date: Sat, 2 Feb 2019 14:20:52 +0000
-Subject: [PATCH] Port the copyurl patch to the 0.8.1 st release. Mainly fix
- usage of depracted selcopy
-
----
- config.def.h | 1 +
- st.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++
- st.h | 1 +
- 3 files changed, 64 insertions(+)
-
-diff --git a/config.def.h b/config.def.h
-index 82b1b09..cbe923e 100644
---- a/config.def.h
-+++ b/config.def.h
-@@ -178,6 +178,7 @@ static Shortcut shortcuts[] = {
- { TERMMOD, XK_Y, selpaste, {.i = 0} },
- { TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
- { TERMMOD, XK_I, iso14755, {.i = 0} },
-+ { MODKEY, XK_l, copyurl, {.i = 0} },
- };
-
- /*
-diff --git a/st.c b/st.c
-index 46c954b..476eb31 100644
---- a/st.c
-+++ b/st.c
-@@ -2616,3 +2616,65 @@ redraw(void)
- tfulldirt();
- draw();
- }
-+
-+/* select and copy the previous url on screen (do nothing if there's no url).
-+ * known bug: doesn't handle urls that span multiple lines (wontfix)
-+ * known bug: only finds first url on line (mightfix)
-+ */
-+void
-+copyurl(const Arg *arg) {
-+ /* () and [] can appear in urls, but excluding them here will reduce false
-+ * positives when figuring out where a given url ends.
-+ */
-+ static char URLCHARS[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-+ "abcdefghijklmnopqrstuvwxyz"
-+ "0123456789-._~:/?#@!$&'*+,;=%";
-+
-+ int i, row, startrow;
-+ char *linestr = calloc(sizeof(char), term.col+1); /* assume ascii */
-+ char *c, *match = NULL;
-+
-+ row = (sel.ob.x >= 0 && sel.nb.y > 0) ? sel.nb.y-1 : term.bot;
-+ LIMIT(row, term.top, term.bot);
-+ startrow = row;
-+
-+ /* find the start of the last url before selection */
-+ do {
-+ for (i = 0; i < term.col; ++i) {
-+ if (term.line[row][i].u > 127) /* assume ascii */
-+ continue;
-+ linestr[i] = term.line[row][i].u;
-+ }
-+ linestr[term.col] = '\0';
-+ if ((match = strstr(linestr, "http://"))
-+ || (match = strstr(linestr, "https://")))
-+ break;
-+ if (--row < term.top)
-+ row = term.bot;
-+ } while (row != startrow);
-+
-+ if (match) {
-+ /* must happen before trim */
-+ selclear();
-+ sel.ob.x = strlen(linestr) - strlen(match);
-+
-+ /* trim the rest of the line from the url match */
-+ for (c = match; *c != '\0'; ++c)
-+ if (!strchr(URLCHARS, *c)) {
-+ *c = '\0';
-+ break;
-+ }
-+
-+ /* select and copy */
-+ sel.mode = 1;
-+ sel.type = SEL_REGULAR;
-+ sel.oe.x = sel.ob.x + strlen(match)-1;
-+ sel.ob.y = sel.oe.y = row;
-+ selnormalize();
-+ tsetdirt(sel.nb.y, sel.ne.y);
-+ xsetsel(getsel());
-+ xclipcopy();
-+ }
-+
-+ free(linestr);
-+}
-diff --git a/st.h b/st.h
-index dac64d8..5a58f8f 100644
---- a/st.h
-+++ b/st.h
-@@ -85,6 +85,7 @@ void printscreen(const Arg *);
- void printsel(const Arg *);
- void sendbreak(const Arg *);
- void toggleprinter(const Arg *);
-+void copyurl(const Arg *);
-
- int tattrset(int);
- void tnew(int, int);
---
-2.20.1
-