From fb2e0aad62a9497f048247d536ce8212e1b77bb1 Mon Sep 17 00:00:00 2001 From: jao Date: Fri, 10 Jul 2020 03:00:40 +0100 Subject: maildir tweaks --- net/jao-maildir.el | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) (limited to 'net/jao-maildir.el') diff --git a/net/jao-maildir.el b/net/jao-maildir.el index 2c4d67c..8b0f6c9 100644 --- a/net/jao-maildir.el +++ b/net/jao-maildir.el @@ -1,6 +1,6 @@ ;; jao-maildir.el -- Utilities for reading maildirs -*- lexical-binding: t; -*- -;; Copyright (c) 2019 jao +;; Copyright (c) 2019, 2020 jao ;; Author: jao ;; Start date: Sun Dec 01, 2019 15:48 @@ -30,15 +30,40 @@ (defvar jao-maildirs nil) (defvar jao-maildir-counts nil) (defvar jao-maildir-debug-p nil) +(defvar jao-maildir-echo-p t) (defun jao-maildir--maildir-new (mbox) (expand-file-name "new" mbox)) (defun jao-maildir--maildir-new-count (mbox) (- (length (directory-files (jao-maildir--maildir-new mbox))) 2)) +;;;###autoload (defun jao-maildir-counts () - (mapcar (lambda (mbox) (cons mbox (jao-maildir--maildir-new-count mbox))) - jao-maildirs)) + (setq jao-maildir-counts + (mapcar (lambda (mbox) + (cons mbox (jao-maildir--maildir-new-count mbox))) + jao-maildirs))) + +(defvar jao-maildir-tracked-maildirs) +(defvar jao-maildir-mode-line-string "") + +(defun jao-maildir--update-mode-line-string () + (let ((total 0) + (counts)) + (dolist (c jao-maildir-counts) + (when (> (cdr c) 0) + (let* ((m (car c)) + (n (cdr c)) + (a (cdr (assoc m jao-maildir-tracked-maildirs)))) + (when (null a) (setq total (+ n total))) + (when a (push (format "%s%s" a n) counts))))) + (let ((total (if (> total 0) (format " %d " total) " ")) + (s (propertize (mapconcat 'identity counts " ") + 'face 'font-lock-function-name-face))) + (setq jao-maildir-mode-line-string (format "%s%s" total s)) + (when (and jao-maildir-echo-p (not (string-empty-p s))) + (message "%s" s)) + (force-mode-line-update t)))) (defvar jao-maildir--watches nil) @@ -48,7 +73,7 @@ (defun jao-maildir--log-watch (mbox e) (when jao-maildir-debug-p - (message "watch: %s: %s" mbox e))) + (message "[%s] watch: %s: %s" (current-time-string) mbox e))) (defun jao-maildir--watcher (mbox cb) (lambda (e) @@ -56,6 +81,8 @@ (when (memq (cadr e) '(created deleted)) (setcdr (assoc mbox jao-maildir-counts) (jao-maildir--maildir-new-count mbox)) + ;; (jao-maildir-counts) + (jao-maildir--update-mode-line-string) (when cb (funcall cb mbox))))) (defun jao-maildir--setup-watches (cb) @@ -67,9 +94,11 @@ (jao-maildir--watcher mbox cb))) jao-maildirs))) +;;;###autoload (defun jao-maildir-setup (maildirs &optional cb) (setq jao-maildirs maildirs) (setq jao-maildir-counts (jao-maildir-counts)) + (add-to-list 'global-mode-string 'jao-maildir-mode-line-string t) (jao-maildir--setup-watches cb)) -- cgit v1.2.3