diff --git a/config.def.h b/config.def.h index 06772fe..a1b9bd9 100644 --- a/config.def.h +++ b/config.def.h @@ -216,7 +216,6 @@ static Shortcut shortcuts[] = { { TERMMOD, XK_Y, selpaste, {.i = 0} }, { ShiftMask, XK_Insert, selpaste, {.i = 0} }, { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, - { MODKEY, XK_l, copyurl, {.i = 0} }, { ShiftMask, XK_Page_Up, kscrollup, {.i = -1} }, { ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} }, }; diff --git a/st.c b/st.c index f08e043..afb862b 100644 --- a/st.c +++ b/st.c @@ -159,11 +159,6 @@ typedef struct { int narg; /* nb of args */ } STREscape; -typedef struct { - int state; - size_t length; -} URLdfa; - static void execsh(char *, char **); static void stty(char **); static void sigchld(int); @@ -213,7 +208,6 @@ static void tdefutf8(char); static int32_t tdefcolor(const int *, int *, int); static void tdeftran(char); static void tstrsequence(uchar); -static int daddch(URLdfa *, char); static void drawregion(int, int, int, int); @@ -2743,90 +2737,3 @@ redraw(void) tfulldirt(); draw(); } - -int -daddch(URLdfa *dfa, char c) -{ - /* () and [] can appear in urls, but excluding them here will reduce false - * positives when figuring out where a given url ends. - */ - static const char URLCHARS[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789-._~:/?#@!$&'*+,;=%"; - static const char RPFX[] = "//:sptth"; - - if (!strchr(URLCHARS, c)) { - dfa->length = 0; - dfa->state = 0; - - return 0; - } - - dfa->length++; - - if (dfa->state == 2 && c == '/') { - dfa->state = 0; - } else if (dfa->state == 3 && c == 'p') { - dfa->state++; - } else if (c != RPFX[dfa->state]) { - dfa->state = 0; - return 0; - } - - if (dfa->state++ == 7) { - dfa->state = 0; - return 1; - } - - return 0; -} - -/* -** Select and copy the previous url on screen (do nothing if there's no url). -*/ -void -copyurl(const Arg *arg) { - int row = 0, /* row of current URL */ - col = 0, /* column of current URL start */ - colend = 0, /* column of last occurrence */ - passes = 0; /* how many rows have been scanned */ - - const char *c = NULL, - *match = NULL; - URLdfa dfa = { 0 }; - - row = (sel.ob.x >= 0 && sel.nb.y > 0) ? sel.nb.y : term.bot; - LIMIT(row, term.top, term.bot); - - colend = (sel.ob.x >= 0 && sel.nb.y > 0) ? sel.nb.x : term.col; - LIMIT(colend, 0, term.col); - - /* - ** Scan from (term.row - 1,term.col - 1) to (0,0) and find - ** next occurrance of a URL - */ - for (passes = 0; passes < term.row; passes++) { - /* Read in each column of every row until - ** we hit previous occurrence of URL - */ - for (col = colend; col--;) - if (daddch(&dfa, term.line[row][col].u < 128 ? term.line[row][col].u : ' ')) - break; - - if (col >= 0) - break; - - if (--row < 0) - row = term.row - 1; - - colend = term.col; - } - - if (passes < term.row) { - selstart(col, row, 0); - selextend((col + dfa.length - 1) % term.col, row + (col + dfa.length - 1) / term.col, SEL_REGULAR, 0); - selextend((col + dfa.length - 1) % term.col, row + (col + dfa.length - 1) / term.col, SEL_REGULAR, 1); - xsetsel(getsel()); - xclipcopy(); - } -} diff --git a/st.h b/st.h index bb2caa8..78762a2 100644 --- a/st.h +++ b/st.h @@ -87,7 +87,6 @@ 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);