[wiki] [sites] st copyurl - Add 0.6-diff and update git-diff || FRIGN

From: <git_AT_suckless.org>
Date: Thu, 17 Sep 2015 16:08:35 +0200

commit 84c3ddbe328da7c344cc01d10f6e72f38d0f1c12
Author: FRIGN <dev_AT_frign.de>
Date: Thu Sep 17 16:07:28 2015 +0200

    st copyurl - Add 0.6-diff and update git-diff
    
    This forced me to modify the logic inside copyurl().
    If it detects a unicode-char, it just skips the line, as we assume
    no unicode-chars inside the URL.

diff --git a/st.suckless.org/patches/copyurl.md b/st.suckless.org/patches/copyurl.md
index 1c17364..893d798 100644
--- a/st.suckless.org/patches/copyurl.md
+++ b/st.suckless.org/patches/copyurl.md
_AT_@ -4,17 +4,23 @@ copyurl
 Description
 -----------
 
-Select and copy the last URL in the display. Multiple invocations cycle through
-the available URLs.
+Select and copy the last URL displayed with MOD+l.
+Multiple invocations cycle through the available URLs.
+
+Notes
+-----
+
+URLs spanning multiple lines are not handled and only the first
+URL on each line is selected.
 
 Download
 --------
 
-* [st-git-20141017-copyurl.diff](st-git-20141017-copyurl.diff)
-* [st-git-20150601-copyurl.diff](st-git-20150601-copyurl.diff)
+ * [st-0.6-copyurl.diff](st-0.6-copyurl.diff)
+ * [st-git-20150917-copyurl.diff](st-git-20150917-copyurl.diff)
 
-Author
-------
+Authors
+-------
 
  * Brandon Mulcahy - brandon_AT_jangler.info
- * FRIGN - dev_AT_frign.de (git port)
+ * Laslo Hunhold - dev_AT_frign.de (st-0.6, st-git-20150917 port)
diff --git a/st.suckless.org/patches/st-0.6-copyurl.diff b/st.suckless.org/patches/st-0.6-copyurl.diff
new file mode 100644
index 0000000..2415f46
--- /dev/null
+++ b/st.suckless.org/patches/st-0.6-copyurl.diff
_AT_@ -0,0 +1,88 @@
+diff --git a/config.def.h b/config.def.h
+index 64e75b8..c3d4e88 100644
+--- a/config.def.h
++++ b/config.def.h
+_AT_@ -128,6 +128,7 @@ static Shortcut shortcuts[] = {
+ { MODKEY|ShiftMask, XK_C, clipcopy, {.i = 0} },
+ { MODKEY|ShiftMask, XK_V, 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 b89d094..dafd5ba 100644
+--- a/st.c
++++ b/st.c
+_AT_@ -332,6 +332,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"
+_AT_@ -4080,3 +4081,63 @@ 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-._~:/?#_AT_!$&'*+,;=%";
++
++ 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] = '
Received on Thu Sep 17 2015 - 16:08:35 CEST

This archive was generated by hypermail 2.3.0 : Thu Sep 17 2015 - 16:12:11 CEST