[PATCH] emacs: Pretty print the numbers of matching messages.

2010-06-03 Thread Carl Worth
On Tue,  4 May 2010 14:44:39 +0100, David Edmondson  wrote:
> 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.

Committed. Thanks.

-Carl
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 



Re: [PATCH] emacs: Pretty print the numbers of matching messages.

2010-06-03 Thread Carl Worth
On Tue,  4 May 2010 14:44:39 +0100, David Edmondson d...@dme.org wrote:
 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.

Committed. Thanks.

-Carl


pgpADQCCbLTU7.pgp
Description: PGP signature
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH] emacs: Pretty print the numbers of matching messages.

2010-05-04 Thread David Edmondson
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 ( 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



[PATCH] emacs: Pretty print the numbers of matching messages.

2010-05-04 Thread David Edmondson
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

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch