all repos — st @ 78f8843bc7d6dc731f23d5ff3a8536fdcc5e4be6

st (suckless terminal) config

Add sequence for printing the current selection

This is very usefull in order to can select what is sent
to the plumber.
Roberto E. Vargas Caballero k0ga@shike2.com
commit

78f8843bc7d6dc731f23d5ff3a8536fdcc5e4be6

parent

96c230e476a4fb446a8fa8d651c88fda32cd5427

2 files changed, 30 insertions(+), 3 deletions(-)

jump to
M config.def.hconfig.def.h

@@ -109,6 +109,7 @@ static Shortcut shortcuts[] = {

/* mask keysym function argument */ { ControlMask, XK_Print, toggleprinter, {.i = 0} }, { ShiftMask, XK_Print, printscreen, {.i = 0} }, + { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, { MODKEY|ShiftMask, XK_Prior, xzoom, {.i = +1} }, { MODKEY|ShiftMask, XK_Next, xzoom, {.i = -1} }, { ShiftMask, XK_Insert, selpaste, {.i = 0} },
M st.cst.c

@@ -314,6 +314,7 @@ static void clippaste(const Arg *);

static void numlock(const Arg *); static void selpaste(const Arg *); static void xzoom(const Arg *); +static void printsel(const Arg *); static void printscreen(const Arg *) ; static void toggleprinter(const Arg *);

@@ -359,6 +360,7 @@ static void strreset(void);

static int tattrset(int); static void tprinter(char *s, size_t len); +static void tdumpsel(void); static void tdumpline(int); static void tdump(void); static void tclearregion(int, int, int, int);

@@ -435,6 +437,7 @@

static void selinit(void); static void selsort(void); static inline bool selected(int, int); +static char *getsel(void); static void selcopy(void); static void selscroll(int, int); static void selsnap(int, int *, int *, int);

@@ -955,8 +958,8 @@ sel.tclick1 = now;

} } -void -selcopy(void) { +char * +getsel(void) { char *str, *ptr; int x, y, bufsize, size, i, ex; Glyph *gp, *last;

@@ -1015,7 +1018,12 @@ }

} *ptr = 0; } - xsetsel(str); + return str; +} + +void +selcopy(void) { + xsetsel(getsel()); } void

@@ -1994,6 +2002,9 @@ break;

case 1: tdumpline(term.c.y); break; + case 2: + tdumpsel(); + break; case 4: term.mode &= ~MODE_PRINT; break;

@@ -2292,6 +2303,21 @@

void printscreen(const Arg *arg) { tdump(); +} + +void +printsel(const Arg *arg) { + tdumpsel(); +} + +void +tdumpsel(void) +{ + char *ptr; + + ptr = getsel(); + tprinter(ptr, strlen(ptr)); + free(ptr); } void