summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2018-02-14 18:45:29 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2018-02-14 18:48:48 +0100
commit58da7d4d177a7d2e92e22110f4ad51158fba53b0 (patch)
tree38c03589573a46d4deede08bb92429582c8d2cf8
parentaf824a9b397d72edb6577990e7c45c7ffd2064ef (diff)
downloadorg-mode-58da7d4d177a7d2e92e22110f4ad51158fba53b0.tar.gz
org-table: Fix shrunk columns on hlines
* lisp/org-table.el (org-table--shrunk-field): Fix function when on a hline. * testing/lisp/test-org-table.el (test-org-table/shrunk-columns): Add tests. Reported-by: Kaushal Modi <kaushal.modi@gmail.com> <http://lists.gnu.org/r/emacs-orgmode/2018-02/msg00231.html>
-rw-r--r--lisp/org-table.el4
-rw-r--r--testing/lisp/test-org-table.el40
2 files changed, 42 insertions, 2 deletions
diff --git a/lisp/org-table.el b/lisp/org-table.el
index 05fa12c..9ab15e6 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -3842,7 +3842,9 @@ When non-nil, return the overlay narrowing the field."
(and (eq 'table-column-hide (overlay-get o 'org-overlay-type))
o))
(overlays-at (save-excursion
- (skip-chars-forward "^|" (line-end-position))
+ (skip-chars-forward (if (org-at-table-hline-p) "^+|"
+ "^|")
+ (line-end-position))
(1- (point))))))
(defun org-table--list-shrunk-columns ()
diff --git a/testing/lisp/test-org-table.el b/testing/lisp/test-org-table.el
index b9c9f6a..850080c 100644
--- a/testing/lisp/test-org-table.el
+++ b/testing/lisp/test-org-table.el
@@ -2591,7 +2591,45 @@ See also `test-org-table/copy-field'."
(org-table-toggle-column-width)
(org-table-get-field nil "b")
(mapcar (lambda (o) (overlay-get o 'help-echo))
- (overlays-in (point-min) (point-max)))))))
+ (overlays-in (point-min) (point-max))))))
+ ;; Moving to next field doesn't change shrunk state.
+ (should
+ (equal "a"
+ (org-test-with-temp-text "| <point>a | b |"
+ (org-table-toggle-column-width)
+ (org-table-next-field)
+ (overlay-get (car (overlays-at (1+ (line-beginning-position))))
+ 'help-echo))))
+ (should
+ (equal "b"
+ (org-test-with-temp-text "| a | <point>b |"
+ (org-table-toggle-column-width)
+ (goto-char 2)
+ (org-table-next-field)
+ (overlay-get (car (overlays-at (point))) 'help-echo))))
+ ;; Aligning table doesn't alter shrunk state.
+ (should
+ (equal "a"
+ (org-test-with-temp-text "| <point>a | b |"
+ (org-table-toggle-column-width)
+ (org-table-align)
+ (overlay-get (car (overlays-at (1+ (line-beginning-position))))
+ 'help-echo))))
+ (should
+ (equal "b"
+ (org-test-with-temp-text "|---+-----|\n| a | <point>b |"
+ (org-table-toggle-column-width)
+ (org-table-align)
+ (overlay-get (car (overlays-at (point)))
+ 'help-echo))))
+ (should
+ (equal
+ '("b")
+ (org-test-with-temp-text "|---+-----|\n| a | <point>b |"
+ (org-table-toggle-column-width)
+ (org-table-align)
+ (mapcar (lambda (o) (overlay-get o 'help-echo))
+ (overlays-in (line-beginning-position) (line-end-position)))))))