[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/valign ac5bdad 154/198: Fix cell-width calculation
From: |
Stefan Monnier |
Subject: |
[elpa] externals/valign ac5bdad 154/198: Fix cell-width calculation |
Date: |
Tue, 1 Dec 2020 18:19:38 -0500 (EST) |
branch: externals/valign
commit ac5bdad3ea979eccb0c9f893a2e014c1f801c01d
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>
Fix cell-width calculation
* valign.el (valign--cell-width): Rename to
'valign--cell-content-width'.
(valign--cell-nonempty-width): New function.
(valign--calculate-cell-width): Use 'valign--cell-nonempty-width'.
(valign-table-1): Use 'valign--cell-content-width'.
---
valign.el | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
diff --git a/valign.el b/valign.el
index 8831062..caf13be 100644
--- a/valign.el
+++ b/valign.el
@@ -120,7 +120,7 @@ Assumes point is after the left bar (“|”)."
(and (skip-chars-forward " ")
(looking-at "|"))))
-(defun valign--cell-width ()
+(defun valign--cell-content-width ()
"Return the pixel width of the cell at point.
Assumes point is after the left bar (“|”).
Return nil if not in a cell."
@@ -133,18 +133,22 @@ Return nil if not in a cell."
;; EMPTY := <SPACE>+
;; NON-EMPTY := <SPACE>+<NON-SPACE>+<SPACE>+
;; DELIM := | or +
- ;;
- ;; Sometimes, because of Org's table alignment, empty cell is longer
- ;; than non-empty cell. This usually happens with CJK text, because
- ;; CJK characters are shorter than 2x ASCII character but Org treats
- ;; CJK characters as 2 ASCII characters when aligning. And if you
- ;; have 16 CJK char in one cell, Org uses 32 ASCII spaces for the
- ;; empty cell, which is longer than 16 CJK chars. So better regard
- ;; empty cell as 0-width rather than measuring it's white spaces.
- (if (valign--cell-empty-p)
- 0
- (pcase-let ((`(,_a ,beg ,end ,_b) (valign--cell-content-config)))
- (valign--pixel-width-from-to beg end))))
+ (pcase-let ((`(,_a ,beg ,end ,_b) (valign--cell-content-config)))
+ (valign--pixel-width-from-to beg end)))
+
+;; Sometimes, because of Org's table alignment, empty cell is longer
+;; than non-empty cell. This usually happens with CJK text, because
+;; CJK characters are shorter than 2x ASCII character but Org treats
+;; CJK characters as 2 ASCII characters when aligning. And if you
+;; have 16 CJK char in one cell, Org uses 32 ASCII spaces for the
+;; empty cell, which is longer than 16 CJK chars. So better regard
+;; empty cell as 0-width rather than measuring it's white spaces.
+(defun valign--cell-nonempty-width ()
+ "Return the pixel width of the cell at point.
+If the cell is empty, return 0. Otherwise return cell content’s
+width."
+ (if (valign--cell-empty-p) 0
+ (valign--cell-content-width)))
;; We used to use a custom functions that calculates the pixel text
;; width that doesn’t require a live window. However that function
@@ -254,7 +258,7 @@ Start from point, stop at LIMIT."
;; is the largest one for this column.
(unless (valign--separator-p)
(let ((oldmax (alist-get column-idx column-width-alist))
- (cell-width (valign--cell-width)))
+ (cell-width (valign--cell-nonempty-width)))
;; Why “=”: if cell-width is 0 and the whole column is 0,
;; still record it.
(if (>= cell-width (or oldmax 0))
@@ -565,7 +569,7 @@ If FORCE non-nil, force align."
(let* ((col-width (nth column-idx column-width-list))
(alignment (nth column-idx column-alignment-list))
;; Pixel width of the cell.
- (cell-width (valign--cell-width)))
+ (cell-width (valign--cell-content-width)))
;; Align cell.
(cl-labels ((valign--put-ov
(beg end xpos)
- [elpa] externals/valign 4f3eccd 166/198: Fix wrong argument nil error when valign-region receives no arguments, (continued)
- [elpa] externals/valign 4f3eccd 166/198: Fix wrong argument nil error when valign-region receives no arguments, Stefan Monnier, 2020/12/01
- [elpa] externals/valign fe1160a 157/198: * valign.el (valign-mode): Remove obsolete code., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 6e3e6ce 158/198: ; Add test file and Makefile, Stefan Monnier, 2020/12/01
- [elpa] externals/valign eb22fae 150/198: Add hooks to org-indent-mode, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 84dc2ce 153/198: Fix misalignment, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 55cde13 162/198: * valign.el (valign-table-1): Add indent., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 6e01d5b 172/198: Update README, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 7c67cf6 186/198: Update documentation, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 762b115 144/198: * valign.el (valign--separator-row-add-overlay): Change 'valign--glyph-width-at-point' to 'valign--pixel-width-from-to'., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 1858260 146/198: * valign.el: Bump version to 2.2.0, Stefan Monnier, 2020/12/01
- [elpa] externals/valign ac5bdad 154/198: Fix cell-width calculation,
Stefan Monnier <=
- [elpa] externals/valign e94782a 180/198: Remove org-agenda-finalize-hook, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 5e70d9b 196/198: Fix beginning- and end-of-table functions, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 44f065d 131/198: * valign.el: Bump version to 2.1.0, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 693f086 135/198: * valign.el (valign-mode): Change tab-advice to :after., Stefan Monnier, 2020/12/01
- [elpa] externals/valign eaa5cb1 104/198: Enable autoload mechanism, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 4c514ce 169/198: Use text properties for table.el tables, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 8e598bf 170/198: ; * test.org: Add a test table., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 316452b 163/198: Change fancy bar to use overlay, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 06d9e1a 192/198: Prepare for ELPA, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 5729733 178/198: * valign.el: Move user land code down below (re-layout)., Stefan Monnier, 2020/12/01