forked from mirrors/org-mode
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
This commit is contained in:
parent
bcc1b0f1bb
commit
f12ca1a562
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue