commit 962c164647e3ed8e12e151e0a2c79763f39b932d
parent bdc9c8e7c85ac7f19ca19fde0fc5e54c8532a36d
Author: Brandon Mulcahy <brandon@jangler.info>
Date: Sun, 19 Oct 2014 19:44:17 -0400
Move copyurl diff off-site
Diffstat:
2 files changed, 1 insertion(+), 99 deletions(-)
diff --git a/st.suckless.org/patches/copyurl.md b/st.suckless.org/patches/copyurl.md
@@ -10,7 +10,7 @@ the available URLs.
Download
--------
-* [st-git-copyurl.diff](st-git-copyurl.diff)
+* [st-git-copyurl.diff](http://jangler.info/code/st-git-copyurl.diff)
Author
------
diff --git a/st.suckless.org/patches/st-git-copyurl.diff b/st.suckless.org/patches/st-git-copyurl.diff
@@ -1,98 +0,0 @@
-From 3aa97780747496b08ec2057266a0a030737cf153 Mon Sep 17 00:00:00 2001
-From: Brandon Mulcahy <brandon@jangler.info>
-Date: Fri, 17 Oct 2014 00:27:46 -0400
-Subject: [PATCH] copyurl patch
-
-Select and copy the last URL in the display. Multiple invocations cycle through
-the available URLs.
----
- config.def.h | 1 +
- st.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 57 insertions(+)
-
-diff --git a/config.def.h b/config.def.h
-index 1667ed6..be25f2a 100644
---- a/config.def.h
-+++ b/config.def.h
-@@ -120,6 +120,7 @@ static Shortcut shortcuts[] = {
- { ShiftMask, XK_Insert, selpaste, {.i = 0} },
- { MODKEY|ShiftMask, XK_Insert, clippaste, {.i = 0} },
- { MODKEY, XK_Num_Lock, numlock, {.i = 0} },
-+ { MODKEY, XK_l, copyurl, {.i = 0} },
- };
-
- /*
-diff --git a/st.c b/st.c
-index bcf96e9..50065e9 100644
---- a/st.c
-+++ b/st.c
-@@ -323,6 +323,7 @@ static void xzoomreset(const Arg *);
- static void printsel(const Arg *);
- static void printscreen(const Arg *) ;
- static void toggleprinter(const Arg *);
-+static void copyurl(const Arg *);
-
- /* Config.h for applying patches and the configuration. */
- #include "config.h"
-@@ -3989,3 +3990,58 @@ run:
- return 0;
- }
-
-+/* 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 = startrow = (sel.ob.x >= 0 && sel.nb.y > 0) ? sel.nb.y-1 : term.row-1;
-+
-+ /* find the start of the last url before selection */
-+ do {
-+ for (i = 0; i < term.col; ++i)
-+ linestr[i] = term.line[row][i].c[0];
-+ linestr[term.col] = '\0';
-+ if ((match = strstr(linestr, "http://"))
-+ || (match = strstr(linestr, "https://")))
-+ break;
-+ if (--row < 0)
-+ row = term.row-1;
-+ } while (row != startrow);
-+
-+ if (match) {
-+ /* must happen before trim */
-+ selclear(NULL);
-+ 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);
-+ selcopy();
-+ }
-+
-+ free(linestr);
-+}
---
-2.1.2
-