diff options
author | B. Watson <yalhcru@gmail.com> | 2020-07-05 21:03:38 -0400 |
---|---|---|
committer | B. Watson <yalhcru@gmail.com> | 2020-07-05 21:03:38 -0400 |
commit | 94ea7a8cd41b5b0cebf2606f4319ca5050e80520 (patch) | |
tree | 703f962eb3713871172e766565e4fa35b599b800 /vipaste | |
parent | 135b6988a809f22a633d9a90273cd6447cfa85be (diff) | |
download | misc-scripts-94ea7a8cd41b5b0cebf2606f4319ca5050e80520.tar.gz |
Add some new stuff
Diffstat (limited to 'vipaste')
-rwxr-xr-x | vipaste | 53 |
1 files changed, 53 insertions, 0 deletions
@@ -0,0 +1,53 @@ +#!/bin/bash + +usage() { + cat <<EOF +$SELF - edit X11 selection buffer + +Usage: $SELF [-n] + +Loads the current contents of the X11 selection (copy/paste) buffer +into an editor. After editing & exiting the editor, the results are +copied back into the selection buffer, for pasting elsewhere. + +The last line (only line, for 1-line selections) will have its newline +removed, if there is one. + +If the file is empty after editing, or if the editor exits with +non-zero (error) status, the selection buffer won't be altered. + +To start with an empty buffer rather than the current selection, use +the -n option. + +The editor to be run is set via VISUAL in the environment. If it's not +set, EDITOR is used if set. If neither is set, vi is used. If you're +going to run this without a terminal (e.g. using xbindkeys or a "Run +Program" dialog), you'll want to set VISUAL to something that doesn't +require a terminal (e.g. a GUI editor like gvim or gedit). + +Requires xsel and perl on the PATH. + +Written by B. Watson <yalhcru@gmail.com> and released under the WTFPL. +EOF + exit $1 +} + +set -e + +SELF="$( basename $0 )" +CMD="xsel -o" + +[ "$1" = "--help" ] && usage 0 +[ "$1" = "-n" ] && CMD=":" && shift +[ "$1" != "" ] && usage 1 + +TMPFILE="$( mktemp -t $SELF.XXXXXX )" +trap "rm -f \"$TMPFILE\"" EXIT + +$CMD > "$TMPFILE" +${VISUAL:-${EDITOR:-vi}} "$TMPFILE" + +# remove the newline(s) from the end of the file +perl -i -0777 -pe 's/\n*$//' "$TMPFILE" + +[ -s "$TMPFILE" ] && xsel -i < "$TMPFILE" |