mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-22 19:08:09 +01:00
emacs: Pretty print the numbers of matching messages.
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.
This commit is contained in:
parent
9ccd978665
commit
636925b40b
1 changed files with 31 additions and 7 deletions
|
@ -91,6 +91,13 @@ So:
|
||||||
(integer :tag "Number of characters")
|
(integer :tag "Number of characters")
|
||||||
(float :tag "Fraction of window")))
|
(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"
|
(defvar notmuch-hello-url "http://notmuchmail.org"
|
||||||
"The `notmuch' web site.")
|
"The `notmuch' web site.")
|
||||||
|
|
||||||
|
@ -103,6 +110,17 @@ So:
|
||||||
notmuch-recent-searches-max)
|
notmuch-recent-searches-max)
|
||||||
(setq notmuch-hello-recent-searches (butlast notmuch-hello-recent-searches))))
|
(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)
|
(defun notmuch-hello-trim (search)
|
||||||
"Trim whitespace."
|
"Trim whitespace."
|
||||||
(if (string-match "^[[:space:]]*\\(.*[^[:space:]]\\)[[:space:]]*$" search)
|
(if (string-match "^[[:space:]]*\\(.*[^[:space:]]\\)[[:space:]]*$" search)
|
||||||
|
@ -175,9 +193,9 @@ should be. Returns a cons cell `(tags-per-line width)'."
|
||||||
((integerp notmuch-column-control)
|
((integerp notmuch-column-control)
|
||||||
(max 1
|
(max 1
|
||||||
(/ (- (window-width) notmuch-hello-indent)
|
(/ (- (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.
|
;; after the name.
|
||||||
(+ 7 1 (max notmuch-column-control widest)))))
|
(+ 9 1 (max notmuch-column-control widest)))))
|
||||||
|
|
||||||
((floatp notmuch-column-control)
|
((floatp notmuch-column-control)
|
||||||
(let* ((available-width (- (window-width) notmuch-hello-indent))
|
(let* ((available-width (- (window-width) notmuch-hello-indent))
|
||||||
|
@ -187,12 +205,15 @@ should be. Returns a cons cell `(tags-per-line width)'."
|
||||||
(t
|
(t
|
||||||
(max 1
|
(max 1
|
||||||
(/ (- (window-width) notmuch-hello-indent)
|
(/ (- (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.
|
;; after the name.
|
||||||
(+ 7 1 widest)))))))
|
(+ 9 1 widest)))))))
|
||||||
|
|
||||||
(cons tags-per-line (/ (- (window-width) notmuch-hello-indent
|
(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))))
|
tags-per-line))))
|
||||||
|
|
||||||
(defun notmuch-hello-insert-tags (tag-alist widest target)
|
(defun notmuch-hello-insert-tags (tag-alist widest target)
|
||||||
|
@ -213,7 +234,9 @@ should be. Returns a cons cell `(tags-per-line width)'."
|
||||||
(let* ((name (car elem))
|
(let* ((name (car elem))
|
||||||
(query (cdr elem))
|
(query (cdr elem))
|
||||||
(formatted-name (format "%s " name)))
|
(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)
|
(if (string= formatted-name target)
|
||||||
(setq found-target-pos (point-marker)))
|
(setq found-target-pos (point-marker)))
|
||||||
(widget-create 'push-button
|
(widget-create 'push-button
|
||||||
|
@ -353,7 +376,8 @@ Complete list of currently available key bindings:
|
||||||
:notify (lambda (&rest ignore)
|
:notify (lambda (&rest ignore)
|
||||||
(notmuch-hello-update))
|
(notmuch-hello-update))
|
||||||
:help-echo "Refresh"
|
: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"))
|
(widget-insert " messages (that's not much mail).\n"))
|
||||||
|
|
||||||
(let ((found-target-pos nil)
|
(let ((found-target-pos nil)
|
||||||
|
|
Loading…
Reference in a new issue