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
next prev 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).