tmux-fingers/scripts/utils.sh

161 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
#TODO split all this crap in lib/ folder
function array_join() {
local IFS="$1"; shift; echo "$*";
}
function ord() {
LC_CTYPE=C printf '%d' "'$1"
}
function chr() {
[ "$1" -lt 256 ] || return 1
printf "\\$(printf '%03o' "$1")"
}
function is_between() {
local value=$1
local lower=$2
local upper=$3
if [[ $value -ge $lower ]] && [[ $value -le $upper ]]; then
echo 1
else
echo 0
fi
}
A_CODE=$(ord "a")
Z_CODE=$(ord "z")
CAPITAL_A_CODE=$(ord "A")
CAPITAL_Z_CODE=$(ord "Z")
function is_letter() {
echo $(is_between $(ord $1) $A_CODE $Z_CODE)
}
function is_capital_letter() {
echo $(is_between $(ord $1) $CAPITAL_A_CODE $CAPITAL_Z_CODE)
}
function is_alpha() {
if [[ $(is_letter $1) == "1" ]] || [[ $(is_capital_letter $1) == "1" ]]; then
echo 1
else
echo 0
fi
}
function str_to_ascii() {
local input=$1
local output=''
for (( i=0; i<${#input}; i++ )); do
output="${output}$(ord "${input:$i:1}") "
done
echo "${output// $//}"
}
function display_message() {
local original_display_time=$(tmux show-option -gqv display-time)
tmux set-option -g display-time $2
tmux display-message "$1"
tmux set-option -g display-time $original_display_time
}
function revert_to_original_pane() {
local current_pane_id=$1
local fingers_pane_id=$2
local fingers_window_id=$3
local last_pane_id=$4
local pane_was_zoomed=$5
tmux swap-pane -s "$current_pane_id" -t "$fingers_pane_id"
tmux kill-window -t "$fingers_window_id"
[[ $pane_was_zoomed == "1" ]] && zoom_pane "$current_pane_id"
if [[ ! -z "$last_pane_id" ]]; then
tmux select-pane -t "$last_pane_id"
tmux select-pane -t "$current_pane_id"
fi
}
function pane_exec() {
local pane_id=$1
local pane_command=$2
tmux send-keys -t $pane_id " $pane_command"
tmux send-keys -t $pane_id Enter
}
function fingers_tmp() {
local tmp_path=$(mktemp "${TMPDIR:-/tmp}/tmux-fingers.XXXXXXXX")
chmod 600 "$tmp_path"
echo "$tmp_path"
}
function clear_screen() {
local fingers_pane_id=$1
clear
tmux clearhist -t $fingers_pane_id
}
function current_shell() {
echo "$SHELL" | grep -o "\w*$"
}
function init_pane_cmd() {
init_bash="bash --norc --noprofile"
if [[ $(current_shell) == "fish" ]]; then
set_env="set -x HISTFILE /dev/null; "
else
set_env="HISTFILE=/dev/null "
fi
echo "$set_env $init_bash"
}
function tmux_list_vi_copy_keys() {
output=$(tmux list-keys -t vi-copy 2> /dev/null)
if [[ -z $output ]]; then
output=$(tmux list-keys -Tcopy-mode-vi)
fi
echo "$output"
}
function is_dir_empty() {
local dir_path="$1"
if [[ $(ls -1 "$dir_path" | wc -l) -gt 0 ]]; then
echo 0
else
echo 1
fi
}
function resolve_path() {
local path=$1
if [[ "$OSTYPE" == "darwin"* ]]; then
echo "$(stat -f "%N" "$path")"
else
echo "$(readlink -f "$path")"
fi
}
function program_exists() {
local prog="$1"
which "$prog" &> /dev/null
if [[ $? == "0" ]]; then
echo "1"
else
echo "0"
fi
}