Insert a separator every three digits when outputting numbers. Allow
the user to choose the separator by customizing
`notmuch-decimal-separator'. Widen the space allocated for message
counts accordingly.
---
 emacs/notmuch-hello.el |   38 +++++++++++++++++++++++++++++++-------
 1 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index bf49bb1..a6e8a47 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -91,6 +91,13 @@ So:
          (integer :tag "Number of characters")
          (float :tag "Fraction of window")))

+(defcustom notmuch-decimal-separator ","
+  "The string used as a decimal separator.
+
+Typically \",\" in the US and UK and \".\" in Europe."
+  :group 'notmuch
+  :type 'string)
+
 (defvar notmuch-hello-url "http://notmuchmail.org";
   "The `notmuch' web site.")

@@ -103,6 +110,17 @@ So:
         notmuch-recent-searches-max)
       (setq notmuch-hello-recent-searches (butlast 
notmuch-hello-recent-searches))))

+(defun notmuch-hello-nice-number (n)
+  (let (result)
+    (while (> n 0)
+      (push (% n 1000) result)
+      (setq n (/ n 1000)))
+    (apply #'concat
+     (number-to-string (car result))
+     (mapcar (lambda (elem)
+             (format "%s%03d" notmuch-decimal-separator elem))
+            (cdr result)))))
+
 (defun notmuch-hello-trim (search)
   "Trim whitespace."
   (if (string-match "^[[:space:]]*\\(.*[^[:space:]]\\)[[:space:]]*$" search)
@@ -180,9 +198,9 @@ should be. Returns a cons cell `(tags-per-line width)'."
          ((integerp notmuch-column-control)
           (max 1
                (/ (- (window-width) notmuch-hello-indent)
-                  ;; Count is 7 wide (6 digits plus space), 1 for the space
+                  ;; Count is 9 wide (8 digits plus space), 1 for the space
                   ;; after the name.
-                  (+ 7 1 (max notmuch-column-control widest)))))
+                  (+ 9 1 (max notmuch-column-control widest)))))

          ((floatp notmuch-column-control)
           (let* ((available-width (- (window-width) notmuch-hello-indent))
@@ -192,12 +210,15 @@ should be. Returns a cons cell `(tags-per-line width)'."
          (t
           (max 1
                (/ (- (window-width) notmuch-hello-indent)
-                  ;; Count is 7 wide (6 digits plus space), 1 for the space
+                  ;; Count is 9 wide (8 digits plus space), 1 for the space
                   ;; after the name.
-                  (+ 7 1 widest)))))))
+                  (+ 9 1 widest)))))))

     (cons tags-per-line (/ (- (window-width) notmuch-hello-indent
-                             (* tags-per-line (+ 7 1)))
+                             ;; Count is 9 wide (8 digits plus
+                             ;; space), 1 for the space after the
+                             ;; name.
+                             (* tags-per-line (+ 9 1)))
                           tags-per-line))))

 (defun notmuch-hello-insert-tags (tag-alist widest target)
@@ -218,7 +239,9 @@ should be. Returns a cons cell `(tags-per-line width)'."
              (let* ((name (car elem))
                     (query (cdr elem))
                     (formatted-name (format "%s " name)))
-               (widget-insert (format "%6s " (notmuch-saved-search-count 
query)))
+               (widget-insert (format "%8s "
+                                      (notmuch-hello-nice-number
+                                       (string-to-number 
(notmuch-saved-search-count query)))))
                (if (string= formatted-name target)
                    (setq found-target-pos (point-marker)))
                (widget-create 'push-button
@@ -323,7 +346,8 @@ should be. Returns a cons cell `(tags-per-line width)'."
                     :notify (lambda (&rest ignore)
                               (notmuch-hello-update))
                     :help-echo "Refresh"
-                    (car (process-lines notmuch-command "count")))
+                    (notmuch-hello-nice-number
+                     (string-to-number (car (process-lines notmuch-command 
"count")))))
       (widget-insert " messages (that's not much mail).\n"))

     (let ((found-target-pos nil)
-- 
1.7.0

Reply via email to