summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2021-04-17 15:06:11 -0400
committerKyle Meyer <kyle@kyleam.com>2021-04-17 15:06:11 -0400
commitf12ca1a562ad81f28bef1a62aa01b0d069ee8488 (patch)
tree61d747703e55e5ad7a5ab448f81b5c8295be2846
parentbcc1b0f1bb8e7b468d2848c7e5216948bb1948a6 (diff)
downloadorg-mode-f12ca1a562ad81f28bef1a62aa01b0d069ee8488.tar.gz
table: Restore temporary-goal-column after displaying header
* lisp/org-table.el (org-table-header-set-header): Restore temporary-goal-column to prevent disrupting the expected next-line and previous-line movement. org-table-header-set-header, which org-table-header-line-mode adds to post-command-hook, changes the value of temporary-goal-column to zero, interfering with the logic in line-move-1. Reported-by: Oorja Sandhu <oorja.sandhu@inoutbox.com> Ref: https://orgmode.org/list/1b8b1a96-149e-4409-9738-fc45fad3a604@www.fastmail.com
-rw-r--r--lisp/org-table.el42
1 files changed, 23 insertions, 19 deletions
diff --git a/lisp/org-table.el b/lisp/org-table.el
index ef4672e..5fabaee 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -472,25 +472,29 @@ This may be useful when columns have been shrunk."
(defvar-local org-table-header-overlay nil)
(defun org-table-header-set-header ()
"Display the header of the table at point."
- (when (overlayp org-table-header-overlay)
- (delete-overlay org-table-header-overlay))
- (let* ((ws (window-start))
- (beg (save-excursion
- (goto-char (org-table-begin))
- (while (or (org-at-table-hline-p)
- (looking-at-p ".*|\\s-+<[rcl]?\\([0-9]+\\)?>"))
- (move-beginning-of-line 2))
- (point)))
- (end (save-excursion (goto-char beg) (point-at-eol))))
- (if (pos-visible-in-window-p beg)
- (when (overlayp org-table-header-overlay)
- (delete-overlay org-table-header-overlay))
- (setq org-table-header-overlay
- (make-overlay ws (+ ws (- end beg))))
- (org-overlay-display
- org-table-header-overlay
- (org-table-row-get-visible-string beg)
- 'org-table-header))))
+ (let ((gcol temporary-goal-column))
+ (unwind-protect
+ (progn
+ (when (overlayp org-table-header-overlay)
+ (delete-overlay org-table-header-overlay))
+ (let* ((ws (window-start))
+ (beg (save-excursion
+ (goto-char (org-table-begin))
+ (while (or (org-at-table-hline-p)
+ (looking-at-p ".*|\\s-+<[rcl]?\\([0-9]+\\)?>"))
+ (move-beginning-of-line 2))
+ (point)))
+ (end (save-excursion (goto-char beg) (point-at-eol))))
+ (if (pos-visible-in-window-p beg)
+ (when (overlayp org-table-header-overlay)
+ (delete-overlay org-table-header-overlay))
+ (setq org-table-header-overlay
+ (make-overlay ws (+ ws (- end beg))))
+ (org-overlay-display
+ org-table-header-overlay
+ (org-table-row-get-visible-string beg)
+ 'org-table-header))))
+ (setq temporary-goal-column gcol))))
;;;###autoload
(define-minor-mode org-table-header-line-mode