Here’s an example.
- Open a new terminal and run
sh followname.sh - Open a new terminal and run
kak -n -e "source followname.kak" - Type
:edit some_file<ret>and seesome_filebeing renamed assome_file.renamed_by_followname
followname.kak
hook g BufCreate ".*" %{
echo -to-file "followname.fifo" -quoting "shell" "your_followname_message_type" "%val{session}" "%val{bufname}"
}
followname.sh
set -e
mkfifo "followname.fifo" "followname.kak_buflist.fifo" "followname.kak_client_list.fifo"
trap "rm -vf 'followname.fifo' 'followname.kak_buflist.fifo' 'followname.kak_client_list.fifo'" EXIT
echo "followname.fifo created"
echo "followname.kak_buflist.fifo created"
echo "followname.kak_client_list.fifo created"
echo "followname started"
while :
do
echo "waiting for message..."
eval set -- "$(cat 'followname.fifo')"
message_type=$1
case "$message_type" in
"your_followname_message_type")
kak_session=$2
kak_bufname=$3
echo "your request is: 'your_followname_message_type'"
echo "got '$kak_session' as session name"
echo "got '$kak_bufname' as buffer name"
printf "echo -end-of-line -to-file '%s' -quoting 'shell' -- %%val{buflist}; echo -end-of-line -to-file '%s' -quoting 'shell' -- %%val{client_list}" "followname.kak_buflist.fifo" "followname.kak_client_list.fifo" |
kak -p "$kak_session"
echo "your buffer list is:"
cat "followname.kak_buflist.fifo"
echo "your client list is:"
cat "followname.kak_client_list.fifo"
printf "eval -buffer '%s' -verbatim rename-buffer -- '%s'" "$kak_bufname" "$kak_bufname.renamed_by_followname" |
kak -p "$kak_session"
printf "old_name=%s\\nnew_name=%s\\n" "$kak_bufname" "$kak_bufname.renamed_by_followname"
;;
*)
echo "Unknown request: '$message_type'"
;;
esac
done