diff --git a/config.def.h b/config.def.h index 8f060bf..3e71954 100644 --- a/config.def.h +++ b/config.def.h @@ -8,6 +8,18 @@ static char *font = "FiraCode Nerd Font:size=10"; static int borderpx = 2; + +static char *externaleditcmd[] = { "/bin/sh", "-c", + "tmpfile=$(mktemp /tmp/st-edit.XXXXXX)\n" + "trap 'rm \"$tmpfile\"' 0 1 15\n" + "cat > \"$tmpfile\"\n" + "st -e vis \"$tmpfile\"\n", + NULL}; + +static char *externalcopycmd[] = { "/bin/sh", "-c", + "sed 's/[ \t][ \t]*/\\n/g' | tac | awk '!x[$0]++' | dmenu -l 10 -w $WINDOWID | tr --delete '\\n' | vis-clipboard --copy", + NULL}; + /* * What program is execed by st depends of these precedence rules: * 1: program passed with -e @@ -199,6 +211,8 @@ static Shortcut shortcuts[] = { { TERMMOD, XK_C, clipcopy, {.i = 0} }, { TERMMOD, XK_V, clippaste, {.i = 0} }, { TERMMOD, XK_Y, selpaste, {.i = 0} }, + { TERMMOD, XK_E, externalpipe, { .v = externaleditcmd } }, + { TERMMOD, XK_K, externalpipe, { .v = externalcopycmd } }, { ShiftMask, XK_Insert, selpaste, {.i = 0} }, { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, { ShiftMask, XK_Page_Up, kscrollup, {.i = -1} },