mu4e: add mu4e-headers-precise-alignment defcustom

Precise alignment is nice, but also noticeably slower than the
old (crude) alignment; so make it optional and turned off by default for
now.
This commit is contained in:
Dirk-Jan C. Binnema 2020-10-11 12:35:48 +03:00
parent 8ce966778a
commit 9bf32e720b
1 changed files with 23 additions and 2 deletions

View File

@ -107,6 +107,12 @@ vertical split-view."
:type 'integer :type 'integer
:group 'mu4e-headers) :group 'mu4e-headers)
(defcustom mu4e-headers-precise-alignment nil
"When set, use precise (but relatively slow) alignment for columns.
Otherwise, do it in a slightly inaccurate but faster way."
:type 'boolean
:group 'mu4e-headers)
(defcustom mu4e-headers-auto-update t (defcustom mu4e-headers-auto-update t
"Whether to automatically update the current headers buffer if an "Whether to automatically update the current headers buffer if an
indexing operation showed changes." indexing operation showed changes."
@ -681,9 +687,18 @@ found."
(:size (mu4e-display-size val)) (:size (mu4e-display-size val))
(t (mu4e~headers-custom-field-value msg field))))) (t (mu4e~headers-custom-field-value msg field)))))
(defun mu4e~headers-truncate-field (field val width)
(defun mu4e~headers-truncate-field-fast (val width)
"Truncate VAL to WIDTH. Fast and somewhat inaccurate."
(if width
(truncate-string-to-width val width 0 ?\s truncate-string-ellipsis)
val))
(defun mu4e~headers-truncate-field-precise (field val width)
"Return VAL truncated to one less than WIDTH, with a trailing "Return VAL truncated to one less than WIDTH, with a trailing
space propertized with a 'dislpay text property which expands to space propertized with a 'display text property which expands to
the correct column for display." the correct column for display."
(when width (when width
(let ((end-col (cl-loop for (f . w) in mu4e-headers-fields (let ((end-col (cl-loop for (f . w) in mu4e-headers-fields
@ -703,6 +718,12 @@ space propertized with a 'dislpay text property which expands to
val))) val)))
val) val)
(defsubst mu4e~headers-truncate-field (field val width)
"Truncate VAL to WIDTH."
(if mu4e-headers-precise-alignment
(mu4e~headers-truncate-field-precise field val width)
(mu4e~headers-truncate-field-fast val width)))
(defcustom mu4e-headers-field-properties-function nil (defcustom mu4e-headers-field-properties-function nil
"Function that specifies custom text properties for a header field. "Function that specifies custom text properties for a header field.