From: David Edmondson <dme@dme.org>
To: notmuch@notmuchmail.org
Subject: [PATCH 07/13] emacs: Allow tuning of the tag/saved search layout.
Date: Wed, 19 May 2010 08:03:34 +0100 [thread overview]
Message-ID: <1274252620-1249-8-git-send-email-dme@dme.org> (raw)
In-Reply-To: <1274252620-1249-1-git-send-email-dme@dme.org>
Add `notmuch-column-control', which has three potential sets of
values:
- t: automatically calculate the number of columns per line based on
the tags to be shown and the window width,
- an integer: a lower bound on the number of characters that will be
used to display each column,
- a float: a fraction of the window width that is the lower bound on
the number of characters that should be used for each column.
So:
- if you would like two columns of tags, set this to 0.5.
- if you would like a single column of tags, set this to 1.0.
- if you would like tags to be 30 characters wide, set this to
30.
- if you don't want to worry about all of this nonsense, leave
this set to `t'.
---
emacs/notmuch-hello.el | 63 +++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 57 insertions(+), 6 deletions(-)
diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index 1358387..acf40bc 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -65,6 +65,32 @@
"Background colour for the notmuch logo."
:group 'notmuch)
+(defcustom notmuch-column-control t
+ "Controls the number of columns for saved searches/tags in notmuch view.
+
+This variable has three potential sets of values:
+
+- t: automatically calculate the number of columns possible based
+ on the tags to be shown and the window width,
+- an integer: a lower bound on the number of characters that will
+ be used to display each column,
+- a float: a fraction of the window width that is the lower bound
+ on the number of characters that should be used for each
+ column.
+
+So:
+- if you would like two columns of tags, set this to 0.5.
+- if you would like a single column of tags, set this to 1.0.
+- if you would like tags to be 30 characters wide, set this to
+ 30.
+- if you don't want to worry about all of this nonsense, leave
+ this set to `t'."
+ :group 'notmuch
+ :type '(choice
+ (const :tag "Automatically calculated" t)
+ (integer :tag "Number of characters")
+ (float :tag "Fraction of window")))
+
(defvar notmuch-hello-url "http://notmuchmail.org"
"The `notmuch' web site.")
@@ -146,13 +172,38 @@ diagonal."
(defun notmuch-saved-search-count (search)
(car (process-lines notmuch-command "count" search)))
+(defun notmuch-hello-tags-per-line (widest)
+ "Determine how many tags to show per line and how wide they
+should be. Returns a cons cell `(tags-per-line width)'."
+ (let ((tags-per-line
+ (cond
+ ((integerp notmuch-column-control)
+ (max 1
+ (/ (- (window-width) notmuch-hello-indent)
+ ;; Count is 7 wide (6 digits plus space), 1 for the space
+ ;; after the name.
+ (+ 7 1 (max notmuch-column-control widest)))))
+
+ ((floatp notmuch-column-control)
+ (let* ((available-width (- (window-width) notmuch-hello-indent))
+ (proposed-width (max (* available-width notmuch-column-control) widest)))
+ (floor available-width proposed-width)))
+
+ (t
+ (max 1
+ (/ (- (window-width) notmuch-hello-indent)
+ ;; Count is 7 wide (6 digits plus space), 1 for the space
+ ;; after the name.
+ (+ 7 1 widest)))))))
+
+ (cons tags-per-line (/ (- (window-width) notmuch-hello-indent
+ (* tags-per-line (+ 7 1)))
+ tags-per-line))))
+
(defun notmuch-hello-insert-tags (tag-alist widest target)
- (let* ((tags-per-line (max 1
- (/ (- (window-width) notmuch-hello-indent)
- ;; Count is 7 wide (6 digits plus
- ;; space), 1 for the space after the
- ;; name.
- (+ 7 1 widest))))
+ (let* ((tags-and-width (notmuch-hello-tags-per-line widest))
+ (tags-per-line (car tags-and-width))
+ (widest (cdr tags-and-width))
(count 0)
(reordered-list (notmuch-hello-reflect tag-alist tags-per-line))
;; Hack the display of the buttons used.
--
1.7.1
next prev parent reply other threads:[~2010-05-19 8:55 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 ` David Edmondson [this message]
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 ` [PATCH 11/13] emacs: Pretty print the numbers of matching messages David Edmondson
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-8-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).