X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=emacs%2Fnotmuch-hello.el;h=13583877a604464fd88b5f5bb18ec828de61ed64;hb=6039864ed5019d2ea367d4deceb0a10f664ba29d;hp=1b59ef19941656a30d468ce8e848ac5107c5f980;hpb=18d41192d2cf0c71045c2f6420eb2311553f58b4;p=notmuch diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el index 1b59ef19..13583877 100644 --- a/emacs/notmuch-hello.el +++ b/emacs/notmuch-hello.el @@ -118,23 +118,24 @@ (+ (/ dividend divisor) (if (> (% dividend divisor) 0) 1 0))) -(defun notmuch-hello-reflect (list width) - "Reflect a `width' wide matrix represented by `list' along the +(defun notmuch-hello-reflect-generate-row (ncols nrows row list) + (let ((len (length list))) + (loop for col from 0 to (- ncols 1) + collect (let ((offset (+ (* nrows col) row))) + (if (< offset len) + (nth offset list) + ;; Don't forget to insert an empty slot in the + ;; output matrix if there is no corresponding + ;; value in the input matrix. + nil))))) + +(defun notmuch-hello-reflect (list ncols) + "Reflect a `ncols' wide matrix represented by `list' along the diagonal." ;; Not very lispy... - (let* ((len (length list)) - (nrows (notmuch-hello-roundup len width))) + (let ((nrows (notmuch-hello-roundup (length list) ncols))) (loop for row from 0 to (- nrows 1) - append (loop for col from 0 to (- width 1) - ;; How could we calculate the offset just once - ;; per inner-loop? - if (< (+ (* nrows col) row) len) - collect (nth (+ (* nrows col) row) list) - else - ;; Don't forget to insert an empty slot in the - ;; output matrix if there is no corresponding - ;; value in the input matrix. - collect nil)))) + append (notmuch-hello-reflect-generate-row ncols nrows row list)))) (defun notmuch-hello-widget-search (widget &rest ignore) (notmuch-search (widget-get widget @@ -179,10 +180,10 @@ diagonal." ;; 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")))) + (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 @@ -272,7 +273,7 @@ diagonal." (notmuch-hello-update)) :help-echo "Refresh" (car (process-lines notmuch-command "count"))) - (widget-insert " messages (that's not much mail).\n\n")) + (widget-insert " messages (that's not much mail).\n")) (let ((found-target-pos nil) (final-target-pos nil)) @@ -291,7 +292,7 @@ diagonal." (widest (max saved-widest alltags-widest))) (when saved-alist - (widget-insert "Saved searches: ") + (widget-insert "\nSaved searches: ") (widget-create 'push-button :notify (lambda (&rest ignore) (customize-variable 'notmuch-saved-searches)) @@ -304,18 +305,16 @@ diagonal." (setq final-target-pos found-target-pos)) (indent-rigidly start (point) notmuch-hello-indent))) - (let ((start (point))) - (widget-insert "\nSearch: ") - (setq notmuch-hello-search-bar-marker (point-marker)) - (widget-create 'editable-field - ;; Leave some space at the start and end of the - ;; search boxes. - :size (max 8 (- (window-width) (* 2 notmuch-hello-indent) - (length "Search: "))) - :action (lambda (widget &rest ignore) - (notmuch-hello-search (widget-value widget)))) - (widget-insert "\n") - (indent-rigidly start (point) notmuch-hello-indent)) + (widget-insert "\nSearch: ") + (setq notmuch-hello-search-bar-marker (point-marker)) + (widget-create 'editable-field + ;; Leave some space at the start and end of the + ;; search boxes. + :size (max 8 (- (window-width) notmuch-hello-indent + (length "Search: "))) + :action (lambda (widget &rest ignore) + (notmuch-hello-search (widget-value widget)))) + (widget-insert "\n") (when notmuch-hello-recent-searches (widget-insert "\nRecent searches: ") @@ -407,9 +406,13 @@ diagonal." (widget-setup) - (goto-char final-target-pos) - (if (not (widget-at)) - (widget-forward 1))))) + (when final-target-pos + (goto-char final-target-pos) + (unless (widget-at) + (widget-forward 1))) + + (unless (widget-at) + (notmuch-hello-goto-search))))) ;;;###autoload (defun notmuch-folder ()