[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-30 04c44405bf6: Fix alignment and documentation of vtable.el
From: |
Eli Zaretskii |
Subject: |
emacs-30 04c44405bf6: Fix alignment and documentation of vtable.el |
Date: |
Sat, 7 Sep 2024 04:28:03 -0400 (EDT) |
branch: emacs-30
commit 04c44405bf604380c575fa2a4d9611af0f3bc0d9
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>
Fix alignment and documentation of vtable.el
* lisp/emacs-lisp/vtable.el (vtable--insert-header-line): Ensure
proper alignment between the columns in header-line and in the
body of the table. (Bug#73032)
* doc/misc/vtable.texi (Making A Table): Document the defaults of
the various keyword parameters.
---
doc/misc/vtable.texi | 19 +++++++++++++------
lisp/emacs-lisp/vtable.el | 28 ++++++++++++++--------------
2 files changed, 27 insertions(+), 20 deletions(-)
diff --git a/doc/misc/vtable.texi b/doc/misc/vtable.texi
index 2e0adfb235a..795d7fad037 100644
--- a/doc/misc/vtable.texi
+++ b/doc/misc/vtable.texi
@@ -337,7 +337,9 @@ width (in pixels), and @var{table} is the table.
@end defun
@item align
-Should be either @code{right} or @code{left}.
+Should be either @code{right} or @code{left}. If not specified,
+numerical values will be flushed to the right, and all other values will
+be flushed to the left.
@end table
@item :getter
@@ -426,14 +428,19 @@ current line, they can use the
@code{vtable-current-object} function
(@pxref{Interface Functions}) to determine what that object is.
@item :separator-width
-The width of the blank space between columns.
+The width of the blank space between columns. If not specified, it
+defaults to 1.
@item :divider-width
@itemx :divider
-You can have a divider inserted between the columns. This can either
-be specified by using @code{:divider}, which should be a string to be
-displayed between the columns, or @code{:divider-width}, which
-specifies the width of the space to be used as the divider.
+You can have a divider inserted between the columns. This can either be
+specified by using @code{:divider}, which should be a string to be
+displayed between the columns, or @code{:divider-width}, which specifies
+the width of the space to be used as the divider, in units of characters
+of the face used to display the table. If not specified,
+@code{:divider} defaults to @code{nil}, but specifying
+@code{:divider-width} effectively sets the divider to a whitespace
+string of that width.
@item :sort-by
This should be a list of tuples, and specifies how the table is to be
diff --git a/lisp/emacs-lisp/vtable.el b/lisp/emacs-lisp/vtable.el
index cb7ea397314..d58c6894c16 100644
--- a/lisp/emacs-lisp/vtable.el
+++ b/lisp/emacs-lisp/vtable.el
@@ -722,15 +722,17 @@ This also updates the displayed table."
(vtable--limit-string
name (- (elt widths index) indicator-width))
name))
- (let ((fill-width
- (+ (- (elt widths index)
- (string-pixel-width displayed)
- indicator-width
- (vtable-separator-width table)
- ;; We want the indicator to not be quite flush
- ;; right.
- (/ (vtable--char-width table) 2.0))
- (if last 0 spacer))))
+ (let* ((indicator-lead-width
+ ;; We want the indicator to not be quite flush right.
+ (/ (vtable--char-width table) 2.0))
+ (indicator-pad-width (- (vtable--char-width table)
+ indicator-lead-width))
+ (fill-width
+ (+ (- (elt widths index)
+ (string-pixel-width displayed)
+ indicator-width
+ indicator-lead-width)
+ (if last 0 spacer))))
(if (or (not last)
(zerop indicator-width)
(< (seq-reduce #'+ widths 0) (window-width nil t)))
@@ -739,7 +741,9 @@ This also updates the displayed table."
displayed
(propertize " " 'display
(list 'space :width (list fill-width)))
- indicator)
+ indicator
+ (propertize " " 'display
+ (list 'space :width (list indicator-pad-width))))
;; This is the final column, and we have a sorting
;; indicator, and the table is too wide for the window.
(let* ((pre-indicator (string-pixel-width
@@ -758,10 +762,6 @@ This also updates the displayed table."
(list (- fill-width pre-fill))))))))
(when (and divider (not last))
(insert (propertize divider 'keymap dmap)))
- (insert (propertize
- " " 'display
- (list 'space :width (list
- (/ (vtable--char-width table) 2.0)))))
(put-text-property start (point) 'vtable-column index)))
(vtable-columns table))
(insert "\n")
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- emacs-30 04c44405bf6: Fix alignment and documentation of vtable.el,
Eli Zaretskii <=