From 62bccf2a97581ed475dd46068621d0dffa21d5c9 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Tue, 2 Feb 2021 21:26:20 +0300 Subject: [PATCH] path-extractor popup --- bin/bin/path-extractor.zsh | 28 ++++++++++++++++++++++++++++ bin/bin/tmux-path-extractor.sh | 10 ++++++++++ tmux/.tmux.conf | 9 ++++++++- 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100755 bin/bin/path-extractor.zsh create mode 100755 bin/bin/tmux-path-extractor.sh diff --git a/bin/bin/path-extractor.zsh b/bin/bin/path-extractor.zsh new file mode 100755 index 0000000..2a93173 --- /dev/null +++ b/bin/bin/path-extractor.zsh @@ -0,0 +1,28 @@ +#!/bin/zsh + +exec >&2 +fns=() +toprint=() +typeset -A seen +ctr=0 +path-extractor | while read fn ; do + [[ $seen[$fn] -eq 1 ]] && continue + seen+=($fn 1) + fns+=($fn) + toprint+=(`printf "%X:%s" $ctr "${fn}"`) + ctr=$(( $ctr + 1 )) +done +[[ $ctr -le 20 ]] && print -C 1 $toprint || print -c $toprint +print -n "> " +read choice < /dev/tty +if [[ "$choice" = "*" ]]; then + buf=$fns +else + buf=() + for c in ${=choice} ; do + fn=$fns[$(( 1 + 16#$c ))] + buf+=($fn) + done +fi +print $buf +print -n $buf | xclip -in -selection clipboard diff --git a/bin/bin/tmux-path-extractor.sh b/bin/bin/tmux-path-extractor.sh new file mode 100755 index 0000000..2e2e385 --- /dev/null +++ b/bin/bin/tmux-path-extractor.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +tmux has-session -t path-extractor && tmux kill-session -t path-extractor || : +tmux new-session -d -s path-extractor " + ~/bin/path-extractor.zsh < /tmp/tmux-buffer + tmux detach + sleep 20 +" +tmux set-option -t path-extractor status off +exec tmux attach-session -t path-extractor diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf index a4698f6..d25d9c7 100644 --- a/tmux/.tmux.conf +++ b/tmux/.tmux.conf @@ -46,7 +46,7 @@ bind-key u { capture-pane -J save-buffer /tmp/tmux-buffer delete-buffer - display-popup -EK -w 100% -R "urlview /tmp/tmux-buffer" + display-popup -KE -w 100% -R "urlview /tmp/tmux-buffer" } bind-key y { @@ -56,6 +56,13 @@ bind-key y { split-window 'vim -c "set listchars=" -c "match ExtraWhitespace //" /tmp/tmux-buffer' } +bind-key o { + capture-pane -J + save-buffer /tmp/tmux-buffer + delete-buffer + display-popup -KE -w 100% -R "~/bin/tmux-path-extractor.sh" +} + bind-key Y { capture-pane -J -S - -E - save-buffer /tmp/tmux-buffer -- 2.44.0