James N. V. Cash writes: > Kyle Meyer <k...@kyleam.com> writes: > >> Basil L. Contovounesios writes: >>> How involved would it be to make org-eldoc work in >>> non-"backwards-compatibility" mode? >> >> I think we can do that, while still supporting Org's minimum Emacs >> version, by following python.el. Here's what it does: >> ... >> >> ... org-eldoc-documentation-function's signature could be changed to >> (&rest _ignored), like python-eldoc-function's. > > This makes the most sense to me; I missed that the default documentation > strategy also allows the function to ignore the callback & just return a > docstring directly.
All right, thanks. Here's that in patch form. I briefly tested with Emacs 26, 27, and 28, and things seemed to work fine (though I'm not an org-eldoc user). I'll plan to apply it in a day or two unless there are objections. -- >8 -- Subject: [PATCH] org-eldoc: Fix compatibility with Emacs 28 * contrib/lisp/org-eldoc.el (org-eldoc-documentation-function): Accept and ignore additional arguments for compatibility with Emacs 28. (org-eldoc-load): Use add-function to register org-eldoc-documentation-function for Emacs versions 25 through 27, as documented in eldoc-documentation-function. See Emacs's fd020a2931 (eldoc: modify `eldoc-documentation-function' using `add-function', 2014-12-05) and c0fcbd2c11 (Expose ElDoc functions in a hook (Bug#28257), 2020-02-25) for more information on the Emacs 25 and Emacs 28 changes, respectively. --- contrib/lisp/org-eldoc.el | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/contrib/lisp/org-eldoc.el b/contrib/lisp/org-eldoc.el index 72b10a1fb..b89eb0918 100644 --- a/contrib/lisp/org-eldoc.el +++ b/contrib/lisp/org-eldoc.el @@ -127,7 +127,7 @@ (declare-function css-eldoc-function "css-eldoc" ()) (declare-function php-eldoc-function "php-eldoc" ()) (declare-function go-eldoc--documentation-function "go-eldoc" ()) -(defun org-eldoc-documentation-function () +(defun org-eldoc-documentation-function (&rest _ignored) "Return breadcrumbs when on a headline, args for src block header-line, calls other documentation functions depending on lang when inside src body." (or @@ -161,11 +161,17 @@ (defun org-eldoc-documentation-function () (defun org-eldoc-load () "Set up org-eldoc documentation function." (interactive) - (if (boundp 'eldoc-documentation-functions) - (add-hook 'eldoc-documentation-functions - #'org-eldoc-documentation-function nil t) - (setq-local eldoc-documentation-function - #'org-eldoc-documentation-function))) + ;; This approach is taken from python.el. + (with-no-warnings + (if (null eldoc-documentation-function) + ;; Emacs<25 + (setq-local eldoc-documentation-function + #'org-eldoc-documentation-function) + (if (boundp 'eldoc-documentation-functions) + (add-hook 'eldoc-documentation-functions + #'org-eldoc-documentation-function nil t) + (add-function :before-until (local 'eldoc-documentation-function) + #'org-eldoc-documentation-function))))) ;;;###autoload (add-hook 'org-mode-hook #'org-eldoc-load) base-commit: e62ca4a1bf576a2c498f47536d3f12cd698e3ac0 -- 2.27.0