2016-04-24 01:36:09 +02:00
#!/bin/bash
2016-04-26 21:44:18 +02:00
2016-04-30 01:26:43 +02:00
CURRENT_DIR = " $( cd " $( dirname " ${ BASH_SOURCE [0] } " ) " && pwd ) "
source $CURRENT_DIR /config.sh
source $CURRENT_DIR /actions.sh
2016-04-30 00:35:52 +02:00
2016-04-26 21:44:18 +02:00
#TODO move this out of here!
current_pane_id = $1
fingers_pane_id = $2
2016-04-30 01:03:45 +02:00
tmp_path = $3
2016-04-24 01:36:09 +02:00
ALPHABET = asdfqwertjkluiop
ALPHABET_SIZE = ${# ALPHABET }
HINTS = ( aa as ad af aq aw ae ar at aj ak al au ai ao ap sa ss sd sf sq sw se sr st sj sk sl su si so sp da ds dd df dq dw de dr dt dj dk dl du di do dp fa fs fd ff fq fw fe fr ft fj fk fl fu fi fo fp qa qs qd qf qq qw qe qr qt qj qk ql qu qi qo qp wa ws wd wf wq ww we wr wt wj e r t j k l u i o p)
2016-04-28 22:27:40 +02:00
function clear_screen( ) {
clear
tmux clearhist
}
2016-04-24 01:36:09 +02:00
function get_hint( ) {
echo ${ HINTS [ $1 ] }
}
function fancy( ) {
printf " \033[1;33m $1 \033[0m "
}
2016-04-28 22:27:40 +02:00
clear_screen
2016-04-24 01:36:09 +02:00
lines = ''
while read -r line
do
lines += " $line \n "
2016-04-26 21:44:18 +02:00
done < /dev/stdin
2016-04-24 01:36:09 +02:00
2016-04-30 00:35:52 +02:00
matches = ` echo -e $lines | ( grep -oniE " $PATTERNS " 2> /dev/null) | sort -u`
2016-04-24 01:36:09 +02:00
match_count = ` echo " $matches " | wc -l`
output = " $lines "
i = 0
match_lookup = ''
2016-04-26 21:44:18 +02:00
OLDIFS = $IFS
IFS = $( echo -en "\n\b" ) # wtf bash?
2016-04-24 01:36:09 +02:00
for match in $matches ; do
hint = ` get_hint $i `
linenumber = ` echo $match | cut -f1 -d:`
text = ` echo $match | cut -f2 -d:`
2016-04-28 22:27:40 +02:00
output = ` echo -ne " $output " | sed " ${ linenumber } s! $text ! $( fancy $text ) $( fancy " [ $hint ] " ) !g " `
2016-04-24 01:36:09 +02:00
match_lookup = " $match_lookup \n $hint : $text "
i = $(( $i + 1 ))
done
2016-04-26 21:44:18 +02:00
IFS = $OLDIFS
2016-04-24 01:36:09 +02:00
2016-04-28 22:27:40 +02:00
echo -ne " $output "
2016-04-24 01:36:09 +02:00
2016-04-26 21:44:18 +02:00
function handle_exit( ) {
tmux swap-pane -s $current_pane_id -t $fingers_pane_id
tmux kill-pane -t $fingers_pane_id
2016-04-30 01:03:45 +02:00
rm -rf $tmp_path
2016-04-26 21:44:18 +02:00
}
trap "handle_exit" EXIT
2016-04-24 01:36:09 +02:00
input = ''
2016-04-28 22:27:40 +02:00
while read -r -s -n1 char
2016-04-24 01:36:09 +02:00
do
input = " $input $char "
result = ` echo -e $match_lookup | grep " ^ $input : " | cut -f2 -d:`
2016-04-26 21:44:18 +02:00
tmux display-message " $input "
2016-04-24 01:36:09 +02:00
if [ [ ! -z $result ] ] ; then
2016-04-26 21:44:18 +02:00
clear
2016-04-28 22:27:40 +02:00
echo -n " $result "
2016-04-26 21:44:18 +02:00
2016-04-30 01:26:43 +02:00
start_copy_mode
top_of_buffer
start_of_line
start_selection
end_of_line
cursor_left
copy_selection
2016-04-26 21:44:18 +02:00
tmux swap-pane -s $current_pane_id -t $fingers_pane_id
tmux kill-pane -t $fingers_pane_id
2016-04-24 01:36:09 +02:00
exit 0
fi
2016-04-26 21:44:18 +02:00
done < /dev/tty