summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2019-02-18 17:03:25 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2019-02-18 17:03:25 +0100
commitd64704343120992819c7aa8e1b4b78e35718419d (patch)
treeb5aa18189298f63135887faf0de6e5de6aa6b487
parent126a37c36cf8de07169b7bf1e0e385ae5bb2fe3c (diff)
downloadorg-mode-d64704343120992819c7aa8e1b4b78e35718419d.tar.gz
org-table: Fix last commit
* lisp/org-table.el (org-table--shrink-field): Properly shrink empty and blank fields.
-rw-r--r--lisp/org-table.el17
1 files changed, 12 insertions, 5 deletions
diff --git a/lisp/org-table.el b/lisp/org-table.el
index bf37679..03fcf61 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -3936,14 +3936,21 @@ the column again.
Return a list of overlays hiding the field, or nil if field is
already hidden."
(cond
- ((org-table--shrunk-field) nil) ;already shrunk: bail out
- ((or (= 0 width) ;shrink to one character
- (>= 1 (org-string-width (buffer-substring start end))))
+ ((= start end) nil) ;no field to narrow
+ ((org-table--shrunk-field) nil) ;already shrunk
+ ((= 0 width) ;shrink to one character
(list (org-table--make-shrinking-overlay
start end "" (if (eq 'hline contents) "" contents))))
- ((eq contents 'hline) ;no contents to hide
+ ((eq contents 'hline)
(list (org-table--make-shrinking-overlay
- start end (make-string (max 0 (1+ width)) ?-) "")))
+ start end (make-string (1+ width) ?-) "")))
+ ((equal contents "") ;no contents to hide
+ (list
+ (let ((w (org-string-width (buffer-substring start end))))
+ (if (> width w)
+ (org-table--make-shrinking-overlay
+ (1- end) end (make-string (- (+ width 2) w) ?\s) "")
+ (org-table--make-shrinking-overlay (- end (- w width 1)) end "" "")))))
(t
;; If the field is not empty, display exactly WIDTH characters.
;; It can mean to partly hide the field, or extend it with virtual