[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 29fae93d1c: Add support for column background colors in vtable
From: |
Lars Ingebrigtsen |
Subject: |
master 29fae93d1c: Add support for column background colors in vtable |
Date: |
Wed, 13 Apr 2022 10:26:07 -0400 (EDT) |
branch: master
commit 29fae93d1c480cc69406a19ab9ef69d84ef8142f
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Add support for column background colors in vtable
* doc/misc/vtable.texi (Making A Table): Document it.
* lisp/emacs-lisp/vtable.el (vtable): Add a column color element.
(make-vtable): Use it.
(vtable--insert-line): Insert the colors here.
---
doc/misc/vtable.texi | 6 ++++++
lisp/emacs-lisp/vtable.el | 15 ++++++++++++---
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/doc/misc/vtable.texi b/doc/misc/vtable.texi
index 472dee70ec..48e6301fce 100644
--- a/doc/misc/vtable.texi
+++ b/doc/misc/vtable.texi
@@ -387,6 +387,12 @@ The face to be used. This defaults to
@code{variable-pitch}. This
face doesn't override the faces in the data, or the faces supplied by
the getter and formatter functions.
+@item :column-colors
+If present, this should be a list of color names to be used as the
+background color on the columns. If there are fewer colors here than
+there are columns, the colors will be repeated. The most common use
+case here is to have alternating background colors on the columns.
+
@item :actions
This uses the same syntax as @code{define-keymap}, but doesn't refer
to commands directly. Instead each key is bound to a command that
diff --git a/lisp/emacs-lisp/vtable.el b/lisp/emacs-lisp/vtable.el
index 8d77733531..98106e4670 100644
--- a/lisp/emacs-lisp/vtable.el
+++ b/lisp/emacs-lisp/vtable.el
@@ -57,6 +57,7 @@
(separator-width :initarg :separator-width :accessor vtable-separator-width)
(sort-by :initarg :sort-by :accessor vtable-sort-by)
(ellipsis :initarg :ellipsis :accessor vtable-ellipsis)
+ (column-colors :initarg :column-colors :accessor vtable-column-colors)
(-cache :initform (make-hash-table :test #'equal)))
"A object to hold the data for a table.")
@@ -83,7 +84,8 @@
(separator-width 1)
sort-by
(ellipsis t)
- (insert t))
+ (insert t)
+ column-colors)
"Create and insert a vtable at point.
The vtable object is returned. If INSERT is nil, the table won't
be inserted."
@@ -122,6 +124,7 @@ be inserted."
:keymap keymap
:separator-width separator-width
:sort-by sort-by
+ :column-colors column-colors
:ellipsis ellipsis)))
;; Compute missing column data.
(setf (vtable-columns table) (vtable--compute-columns table))
@@ -377,7 +380,8 @@ This also updates the displayed table."
(defun vtable--insert-line (table line widths spacer
&optional ellipsis ellipsis-width)
(let ((start (point))
- (columns (vtable-columns table)))
+ (columns (vtable-columns table))
+ (colors (vtable-column-colors table)))
(seq-do-indexed
(lambda (elem index)
(let ((value (nth 0 elem))
@@ -438,7 +442,12 @@ This also updates the displayed table."
(propertize " " 'display
(list 'space
:width (list spacer)))))
- (put-text-property start (point) 'vtable-column index))))
+ (put-text-property start (point) 'vtable-column index)
+ (when colors
+ (add-face-text-property
+ start (point)
+ (list :background
+ (elt colors (mod index (length colors)))))))))
(cdr line))
(insert "\n")
(put-text-property start (point) 'vtable-object (car line))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 29fae93d1c: Add support for column background colors in vtable,
Lars Ingebrigtsen <=