tweaks to fingers-copy-command
* Exports variables so they can be referenced in tmux.conf * Run fingers-copy-command after swapping pane so they are run in current pane context. * Fixes heredoc string bug ( fixes #63 )
This commit is contained in:
parent
af0ffbb055
commit
3a12a8d42a
16
README.md
16
README.md
|
@ -129,8 +129,10 @@ invoking the plugin.
|
||||||
|
|
||||||
`default: NONE`
|
`default: NONE`
|
||||||
|
|
||||||
By default **tmux-fingers** will just yank matches using tmux clipboard ( or
|
By default **tmux-fingers** will just yank matches using tmux clipboard. For
|
||||||
[tmux-yank](https://github.com/tmux-plugins/tmux-yank) if present ).
|
system clipboard integration you'll also need to install
|
||||||
|
[tmux-yank](https://github.com/tmux-plugins/tmux-yank).
|
||||||
|
|
||||||
|
|
||||||
If you still want to set your own custom command you can do so like this:
|
If you still want to set your own custom command you can do so like this:
|
||||||
|
|
||||||
|
@ -140,8 +142,8 @@ set -g @fingers-copy-command 'xclip -selection clipboard'
|
||||||
|
|
||||||
This command will also receive the following:
|
This command will also receive the following:
|
||||||
|
|
||||||
* `IS_UPPERCASE`: environment variable set to `1` or `0` depending on how the hint was introduced.
|
* `IS_UPPERCASE`: environment variable set to `1` or `0` depending on how the hint was introduced.
|
||||||
* `HINT`: environment variable the selected letter hint itself ( ex: `q`, `as`, etc... ).
|
* `HINT`: environment variable the selected letter hint itself ( ex: `q`, `as`, etc... ).
|
||||||
* `stdin`: copied text will be piped to `@fingers-copy-command`.
|
* `stdin`: copied text will be piped to `@fingers-copy-command`.
|
||||||
|
|
||||||
## @fingers-copy-command-uppercase
|
## @fingers-copy-command-uppercase
|
||||||
|
@ -157,6 +159,12 @@ For example, this open links in browser when holding <kbd>SHIFT</kbd> while sele
|
||||||
set -g @fingers-copy-command-uppercase 'xargs xdg-open'
|
set -g @fingers-copy-command-uppercase 'xargs xdg-open'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Or, for automatically pasting:
|
||||||
|
|
||||||
|
```
|
||||||
|
set -g @fingers-copy-command-uppercase 'tmux paste-buffer'
|
||||||
|
```
|
||||||
|
|
||||||
## @fingers-compact-hints
|
## @fingers-compact-hints
|
||||||
|
|
||||||
`default: 1`
|
`default: 1`
|
||||||
|
|
|
@ -20,6 +20,12 @@ original_rename_setting=$6
|
||||||
|
|
||||||
BACKSPACE=$'\177'
|
BACKSPACE=$'\177'
|
||||||
|
|
||||||
|
if [[ "$OSTYPE" == "linux-gnu" ]]; then
|
||||||
|
EXEC_PREFIX="nohup"
|
||||||
|
else
|
||||||
|
EXEC_PREFIX=""
|
||||||
|
fi
|
||||||
|
|
||||||
# TODO not sure this is truly working
|
# TODO not sure this is truly working
|
||||||
function force_dim_support() {
|
function force_dim_support() {
|
||||||
tmux set -sa terminal-overrides ",*:dim=\\E[2m"
|
tmux set -sa terminal-overrides ",*:dim=\\E[2m"
|
||||||
|
@ -41,7 +47,6 @@ function zoom_pane() {
|
||||||
|
|
||||||
function revert_to_original_pane() {
|
function revert_to_original_pane() {
|
||||||
tmux swap-pane -s "$current_pane_id" -t "$fingers_pane_id"
|
tmux swap-pane -s "$current_pane_id" -t "$fingers_pane_id"
|
||||||
tmux kill-window -t "$fingers_window_id"
|
|
||||||
tmux set-window-option automatic-rename "$original_rename_setting"
|
tmux set-window-option automatic-rename "$original_rename_setting"
|
||||||
|
|
||||||
if [[ ! -z "$last_pane_id" ]]; then
|
if [[ ! -z "$last_pane_id" ]]; then
|
||||||
|
@ -50,6 +55,7 @@ function revert_to_original_pane() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[[ $pane_was_zoomed == "1" ]] && zoom_pane "$current_pane_id"
|
[[ $pane_was_zoomed == "1" ]] && zoom_pane "$current_pane_id"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function handle_exit() {
|
function handle_exit() {
|
||||||
|
@ -116,30 +122,25 @@ function copy_result() {
|
||||||
|
|
||||||
tmux set-buffer "$result"
|
tmux set-buffer "$result"
|
||||||
|
|
||||||
if [[ "$OSTYPE" == "linux-gnu" ]]; then
|
if [[ $HAS_TMUX_YANK = 1 ]]; then
|
||||||
exec_prefix="nohup"
|
tmux run-shell -b "printf \"$result\" | $EXEC_PREFIX $tmux_yank_copy_command"
|
||||||
else
|
|
||||||
exec_prefix=""
|
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function run_fingers_copy_command() {
|
||||||
|
local result="$1"
|
||||||
|
local hint="$2"
|
||||||
|
|
||||||
is_uppercase=$(echo "$input" | grep -E '^[a-z]+$' &> /dev/null; echo $?)
|
is_uppercase=$(echo "$input" | grep -E '^[a-z]+$' &> /dev/null; echo $?)
|
||||||
|
|
||||||
copy_command_parameters=<<-EOS
|
|
||||||
printf \"$result\" |
|
|
||||||
IS_UPPERCASE=$is_uppercase
|
|
||||||
HINT=$hint
|
|
||||||
CURRENT_PANE_ID=$current_pane_id
|
|
||||||
$exec_prefix
|
|
||||||
EOS
|
|
||||||
|
|
||||||
if [[ $is_uppercase == "1" ]] && [ ! -z "$FINGERS_COPY_COMMAND_UPPERCASE" ]; then
|
if [[ $is_uppercase == "1" ]] && [ ! -z "$FINGERS_COPY_COMMAND_UPPERCASE" ]; then
|
||||||
tmux run-shell -b "$copy_command_parameters $FINGERS_COPY_COMMAND_UPPERCASE"
|
command_to_run="$FINGERS_COPY_COMMAND_UPPERCASE"
|
||||||
elif [ ! -z "$FINGERS_COPY_COMMAND" ]; then
|
elif [ ! -z "$FINGERS_COPY_COMMAND" ]; then
|
||||||
tmux run-shell -b "$copy_command_parameters $FINGERS_COPY_COMMAND"
|
command_to_run="$FINGERS_COPY_COMMAND"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $HAS_TMUX_YANK = 1 ]]; then
|
if [[ ! -z "$command_to_run" ]]; then
|
||||||
tmux run-shell -b "printf \"$result\" | $exec_prefix $tmux_yank_copy_command"
|
tmux run-shell -b "export IS_UPPERCASE=\"$is_uppercase\" HINT=\"$hint\" && printf \"$result\" | $EXEC_PREFIX $command_to_run"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,8 +199,7 @@ while read -rsn1 char; do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
copy_result "$result" "$input"
|
copy_result "$result" "$input"
|
||||||
|
|
||||||
revert_to_original_pane
|
revert_to_original_pane
|
||||||
|
run_fingers_copy_command "$result" "$input"
|
||||||
exit 0
|
tmux kill-window -t "$fingers_window_id"
|
||||||
done < /dev/tty
|
done < /dev/tty
|
||||||
|
|
Loading…
Reference in New Issue