if (( ${#files[@]} )); then
snaps=($(ls -1avdr "${files[@]}" 2>/dev/null |head -n1 || : ))
fi
- now=$(date +%s)
+ now=$EPOCHSECONDS
maxtime=0
for s in ${snaps[@]}; do
file=${s##*/}
esac
fi
-
- if pgrep -G iank -u iank -f 'emacs --daemon' &>/dev/null; then
- emacsfiles="$(emacsclient --eval "$(cat /usr/local/bin/unsaved-buffers.el)"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//')"
- if [[ $emacsfiles ]]; then
- chars+=("$emacsfiles")
+ # We do this once every 5 minutes, since this is not a grave problem.
+ # For formatted elisp, see /b/ds/unsaved-buffers.el
+ elisp='(format "%s" (-reduce-from (lambda (acc buf) (let ((bpath (buffer-file-name buf))) (if (and bpath (buffer-modified-p buf)) (cons bpath acc ) acc))) nil (buffer-list)))'
+ if [[ ! $last_emacs_check || $emacsfiles ]] || (( last_emacs_check < EPOCHSECONDS - 300 )); then
+ if pgrep -G iank -u iank -f 'emacs --daemon' &>/dev/null; then
+ # i dun care if this fails
+ emacsfiles="$(timeout 1 emacsclient --eval "$elisp"| sed '/^"nil"$/d;s/^"(/E: /;s/)"$//' ||:)"
+ if [[ $emacsfiles ]]; then
+ chars+=("$emacsfiles")
+ fi
fi
+ last_emacs_check=$EPOCHSECONDS
fi
+
glob=(/nocow/btrfs-stale/*)
if [[ -e ${glob[0]} ]]; then
chars+=(STALE)
# shellcheck disable=SC2043
for _ in 1; do
if [[ -e $f ]]; then
- now=$(date +%s)
+ now=$EPOCHSECONDS
fsec=$(stat -c%Y $f)
# the / 60 makes it 0-59 seconds less strict, +1 to help make sure we
# dont have any false positives.