From f12ca1a562ad81f28bef1a62aa01b0d069ee8488 Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Sat, 17 Apr 2021 15:06:11 -0400 Subject: [PATCH 1/2] 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 Ref: https://orgmode.org/list/1b8b1a96-149e-4409-9738-fc45fad3a604@www.fastmail.com --- lisp/org-table.el | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/lisp/org-table.el b/lisp/org-table.el index ef4672e1b..5fabaee49 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 From 7e2eba8cc510c9a43e133ddbd2855981f65f69b4 Mon Sep 17 00:00:00 2001 From: Trevor Murphy Date: Tue, 13 Apr 2021 12:40:14 -0700 Subject: [PATCH 2/2] org-eldoc: Fix compatibility with eldoc 1.11 and Emacs 27 * contrib/lisp/org-eldoc.el (org-eldoc-documentation-function): Check before invoking elisp eldoc functions from Emacs 28. The previous check assumed that the presence of eldoc 1.11 bindings implied elisp-mode bindings that come with Emacs>=28, but eldoc 1.11 is available on GNU Elpa so the assumption doesn't always hold. TINYCHANGE --- contrib/lisp/org-eldoc.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib/lisp/org-eldoc.el b/contrib/lisp/org-eldoc.el index 78f595c26..b9b446021 100644 --- a/contrib/lisp/org-eldoc.el +++ b/contrib/lisp/org-eldoc.el @@ -144,7 +144,9 @@ (cond ((or (string= lang "emacs-lisp") (string= lang "elisp")) - (cond ((boundp 'eldoc-documentation-functions) ; Emacs>=28 + (cond ((and (boundp 'eldoc-documentation-functions) ; Emacs>=28 + (fboundp 'elisp-eldoc-var-docstring) + (fboundp 'elisp-eldoc-funcall)) (let ((eldoc-documentation-functions '(elisp-eldoc-var-docstring elisp-eldoc-funcall))) (eldoc-print-current-symbol-info)))