]> Sergey Matveev's repositories - dotfiles.git/commitdiff
path-extractor popup
authorSergey Matveev <stargrave@stargrave.org>
Tue, 2 Feb 2021 18:26:20 +0000 (21:26 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Tue, 2 Feb 2021 18:30:03 +0000 (21:30 +0300)
bin/bin/path-extractor.zsh [new file with mode: 0755]
bin/bin/tmux-path-extractor.sh [new file with mode: 0755]
tmux/.tmux.conf

diff --git a/bin/bin/path-extractor.zsh b/bin/bin/path-extractor.zsh
new file mode 100755 (executable)
index 0000000..2a93173
--- /dev/null
@@ -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 (executable)
index 0000000..2e2e385
--- /dev/null
@@ -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
index a4698f6e51c611e3145ae7b9eeea180aa24a71ae..d25d9c7b510285aa63b0fa2bf79ba49f83f1194e 100644 (file)
@@ -46,7 +46,7 @@ bind-key u {
     capture-pane -J
     save-buffer /tmp/tmux-buffer
     delete-buffer
     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 {
 }
 
 bind-key y {
@@ -56,6 +56,13 @@ bind-key y {
     split-window 'vim -c "set listchars=" -c "match ExtraWhitespace //" /tmp/tmux-buffer'
 }
 
     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
 bind-key Y {
     capture-pane -J -S - -E -
     save-buffer /tmp/tmux-buffer