emacs: Fix column alignment in `notmuch-hello-insert-tags'

Re-working the saved search/tag insertion to buttonize only the name
of the saved search/tag plus one space broke the calculation of how
much filler is required to complete the column, resulting in lines
wider than the window.
This commit is contained in:
David Edmondson 2010-04-27 08:00:44 +01:00 committed by Carl Worth
parent c210d5632e
commit 1e18711543

View file

@ -148,8 +148,9 @@ diagonal."
(defun notmuch-hello-insert-tags (tag-alist widest target) (defun notmuch-hello-insert-tags (tag-alist widest target)
(let* ((tags-per-line (max 1 (let* ((tags-per-line (max 1
(/ (- (window-width) notmuch-hello-indent) (/ (- (window-width) notmuch-hello-indent)
;; Count is 7 wide, 1 for the space ;; Count is 7 wide (6 digits plus
;; after the name. ;; space), 1 for the space after the
;; name.
(+ 7 1 widest)))) (+ 7 1 widest))))
(count 0) (count 0)
(reordered-list (notmuch-hello-reflect tag-alist tags-per-line)) (reordered-list (notmuch-hello-reflect tag-alist tags-per-line))
@ -159,21 +160,30 @@ diagonal."
(found-target-pos nil)) (found-target-pos nil))
;; dme: It feels as though there should be a better way to ;; dme: It feels as though there should be a better way to
;; implement this loop than using an incrementing counter. ;; implement this loop than using an incrementing counter.
(loop for elem in reordered-list (mapc (lambda (elem)
do (progn ;; (not elem) indicates an empty slot in the matrix.
;; (not elem) indicates an empty slot in the matrix. (when elem
(when elem (let* ((name (car elem))
(widget-insert (format "%6s " (notmuch-saved-search-count (cdr elem)))) (query (cdr elem))
(if (string= (format "%s " (car elem)) target) (formatted-name (format "%s " name)))
(setq found-target-pos (point-marker))) (widget-insert (format "%6s " (notmuch-saved-search-count query)))
(widget-create 'push-button (if (string= formatted-name target)
:notify #'notmuch-hello-widget-search (setq found-target-pos (point-marker)))
:notmuch-search-terms (cdr elem) (widget-create 'push-button
(format "%s " (car elem))) :notify #'notmuch-hello-widget-search
(insert (make-string (1+ (- widest (length (car elem)))) ? ))) :notmuch-search-terms query
(setq count (1+ count)) formatted-name)
(if (eq (% count tags-per-line) 0) ;; Insert enough space to consume the rest of the
(widget-insert "\n")))) ;; column. Because the button for the name is `(1+
;; (length name))' long (due to the trailing space) we
;; can just insert `(- widest (length name))' spaces -
;; the column separator is included in the button if
;; `(equal widest (length name)'.
(widget-insert (make-string (- widest (length name)) ? )))
(setq count (1+ count))
(if (eq (% count tags-per-line) 0)
(widget-insert "\n"))))
reordered-list)
;; If the last line was not full (and hence did not include a ;; If the last line was not full (and hence did not include a
;; carriage return), insert one now. ;; carriage return), insert one now.