unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: David Edmondson <dme@dme.org>
To: notmuch@notmuchmail.org
Subject: [PATCH 11/13] emacs: Pretty print the numbers of matching messages.
Date: Wed, 19 May 2010 08:03:38 +0100	[thread overview]
Message-ID: <1274252620-1249-12-git-send-email-dme@dme.org> (raw)
In-Reply-To: <1274252620-1249-1-git-send-email-dme@dme.org>

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 538785f..7ade0eb 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.1

  parent reply	other threads:[~2010-05-19  8:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-19  7:03 patches for 0.4 David Edmondson
2010-05-19  7:03 ` [PATCH 01/13] emacs: Usability improvements for `notmuch-hello' David Edmondson
2010-05-19  7:03 ` [PATCH 02/13] notmuch: Fix off-by-one errors if a header is >200 characters long David Edmondson
2010-05-19  7:03 ` [PATCH 03/13] emacs: Adjust comment to avoid confusing font-lock David Edmondson
2010-05-19  7:03 ` [PATCH 04/13] emacs: Display non-matching authors with a different face David Edmondson
2010-05-19  7:03 ` [PATCH 05/13] emacs: Set the `face' property rather than `font-lock-face' David Edmondson
2010-05-19  7:03 ` [PATCH 06/13] emacs: Allow control over faces for search mode columns David Edmondson
2010-05-19  7:03 ` [PATCH 07/13] emacs: Allow tuning of the tag/saved search layout David Edmondson
2010-05-19  7:03 ` [PATCH 08/13] emacs: Reuse rather than reinvent message header filtering David Edmondson
2010-05-19  7:03 ` [PATCH 09/13] emacs: Avoid runtime use of `cl' David Edmondson
2010-05-19  7:03 ` [PATCH 10/13] emacs: In search mode, truncate authors using invisible text David Edmondson
2010-06-04  2:13   ` Carl Worth
2010-05-19  7:03 ` David Edmondson [this message]
2010-05-19  7:03 ` [PATCH 12/13] emacs: Tags should be shown with `notmuch-tag-face' David Edmondson
2010-05-19  7:03 ` [PATCH 13/13] emacs: Allow the display of absolute dates in the header line David Edmondson
2010-06-04  2:20 ` patches for 0.4 Carl Worth
2010-06-07 13:51   ` David Edmondson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1274252620-1249-12-git-send-email-dme@dme.org \
    --to=dme@dme.org \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).