This prevents me from forgetting to save files:
declare-option str-list buffers_modified_false
declare-option str-list buffers_modified_true
hook -group kakrc global BufWritePost .* %{
set-option global buffers_modified_false
set-option global buffers_modified_true
eval -buffer * %{
set-option -add global "buffers_modified_%val{modified}" %val{bufname}
}
try %{
evaluate-commands -draft %{
buffer-next %opt{buffers_modified_true} # buffer-next fails if given any arguments, i.e. if buffers_modified_true is nonempty
}
echo
} catch %{
echo -markup "{Information}WARNING: unsaved buffers: %opt{buffers_modified_true}"
}
}
Every time I save a file, this hook makes a list of saved buffers and a list of unsaved buffers. If there are any unsaved buffers, it prints a warning.
To check whether a list is empty, I pass it as the argument list to buffer-next
which requires 0 arguments to not fail.