dotfiles/.config/kak/autoload/title.kak

78 lines
2.7 KiB
Text

# TODO: make the operation async!
# Is there something we can do with global vs. window scoped title?
declare-option -docstring %{
Format string passed to printf for the bufferlist.
It should be set in the global scope.
It receives two string arguments, where the first is the buffer index,
and the second is the buffer name.
Default: '[%s %s]'
} str bar_active_fmt '[%s %s]'
declare-option -docstring %{
Format string passed to printf for the bufferlist.
It should be set in the global scope.
It receives two string arguments, where the first is the buffer index,
and the second is the buffer name.
Default: '[%s %s]+'
} str bar_active_modified_fmt '[%s %s]+'
declare-option -docstring %{
Format string passed to printf for the bufferlist.
It should be set in the global scope.
It receives two string arguments, where the first is the buffer index,
and the second is the buffer name.
Default: '%s %s'
} str bar_inactive_fmt '%s %s'
declare-option -docstring %{
Format string passed to printf for the bufferlist.
It should be set in the global scope.
It receives two string arguments, where the first is the buffer index,
and the second is the buffer name.
Default: '%s %s+'
} str bar_inactive_modified_fmt '%s %s+'
define-command -hidden bar-buflist %{
nop %sh{
{
list=''
index=0
while read buf; do
if [ "$buf" = '*debug*' ]; then
continue
fi
index=$((index + 1))
if [ "$buf" = "$kak_bufname" ]; then
if [ "$kak_modified" = "true" ]; then
cur=$(printf "$kak_opt_bar_active_modified_fmt" "$index" "$buf")
else
cur=$(printf "$kak_opt_bar_active_fmt" "$index" "$buf")
fi
else
cur=$(printf "$kak_opt_bar_inactive_fmt" "$index" "$buf")
fi
list="$list $cur"
done <<EOF
$(printf '%s\n' "$kak_buflist" | awk '{gsub(/\*[^*]+\*|[^[:space:]]+/,"&\n"); print}')
EOF
title="$list - $kak_client@[$kak_session]"
notify-send "runs"
# printf "eval -verbatim set-option -add global ui_options %%{terminal_title=%s}; info runs" "$title" | kak -p ${kak_session}
printf "eval -try-client '%s' -verbatim set-option -add global ui_options %%{terminal_title=%s}\n" "$kak_client" "$title" | kak -p ${kak_session}
printf "info runs" | kak -p ${kak_session}
} > /dev/null 2>&1 < /dev/null &
}
}
hook global WinDisplay .* bar-buflist
hook global FocusIn .* bar-buflist
# hook global FocusOut .* bar-buflist
hook global WinCreate .* bar-buflist
hook global BufWritePost .* bar-buflist
hook global ModeChange .* bar-buflist
hook global NormalIdle .* bar-buflist