summaryrefslogtreecommitdiffhomepage
path: root/lib/eos/jao-dirmon.el
diff options
context:
space:
mode:
Diffstat (limited to 'lib/eos/jao-dirmon.el')
-rw-r--r--lib/eos/jao-dirmon.el26
1 files changed, 20 insertions, 6 deletions
diff --git a/lib/eos/jao-dirmon.el b/lib/eos/jao-dirmon.el
index 4fb8609..9d748d1 100644
--- a/lib/eos/jao-dirmon.el
+++ b/lib/eos/jao-dirmon.el
@@ -34,13 +34,29 @@
(defun jao-dirmon-sizes ()
(mapcar (lambda (f)
- (let ((x (split-string (jao-shell-string "du -s" f))))
+ (let ((x (split-string (jao-shell-string "du -BM -s" f))))
(cons (cadr x) (string-to-number (car x)))))
(jao-dirmon-dirs)))
-(defvar jao-dirmon-threshold 100000)
+(defvar jao-dirmon-threshold 100)
(defvar jao-dirmon-last-delta nil)
+(defun jao-dirmon--show-deltas (old current deltas)
+ (with-temp-buffer
+ (insert "High deltas since " (car old) "\n\n")
+ (dolist (d (seq-sort-by #'cdr #'> deltas))
+ (insert (format "- %s: %s Mb\n" (car d) (cdr d))))
+ (insert "\n\nSizeable dirs\n\n")
+ (let ((threshold (* 10 jao-dirmon-threshold)))
+ (dolist (c (seq-take-while (lambda (x) (> (cdr x) threshold))
+ (seq-sort-by #'cdr #'> current)))
+ (insert (format "- %s: %s Mb\n" (car c) (cdr c)))))
+ (beginning-of-buffer)
+ (pop-to-buffer (current-buffer) nil t)
+ (when (y-or-n-p "Save current state?")
+ (setf (multisession-value jao-dirmon-last)
+ (cons (current-time-string) current)))))
+
;;;###autoload
(defun jao-dirmon-report ()
(interactive)
@@ -49,12 +65,10 @@
(high ()))
(dolist (c current)
(let ((d (- (cdr c) (alist-get (car c) old 0 nil #'string=))))
- (when (> d jao-dirmon-threshold)
+ (when (> (abs d) jao-dirmon-threshold)
(push c high))))
(setq jao-dirmon-last-delta high)
- (let ((prompt (format"High deltas: %s. Save state?" high)))
- (when (y-or-n-p prompt)
- (setf (multisession-value jao-dirmon-last) current)))
+ (jao-dirmon--show-deltas old current jao-dirmon-last-delta)
jao-dirmon-last-delta))
(provide 'jao-dirmon)