Re: [PATCH] org-eldoc: Fix compatibility with Emacs 28
Joseph Mingrone writes: > On Fri, 2020-07-17 at 01:41, Kyle Meyer wrote: [...] >> I'll plan to apply it in a day or two unless there are objections. > > So far so good here. It fixes the errors running 28.0.50 (85eaa83 from > 2020-07-16) and the latest org-mode-contrib. Thanks for testing. Pushed (b2b587387).
Re: [PATCH] org-eldoc: Fix compatibility with Emacs 28
Basil L. Contovounesios writes: >> @@ -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) > > LGTM. My only aesthetic nit would be to replace the nested if with a > flat cond, but that's entirely up to you. I agree with your preference, though it didn't cross my mind when I was lazily copying over from python.el. Will update. Thanks.
Re: [PATCH] org-eldoc: Fix compatibility with Emacs 28
"Basil L. Contovounesios" writes: > Kyle Meyer writes: > >> 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'm not either, but it seems to get pulled in automatically when > org-plus-contrib is installed - that's how I noticed the errors in Org > buffers. I was also trying to figure out how to shut it off, and there were no obvious knobs to do so. Given that this gets installed implicitly, I think maybe it shouldn't be turned on by default. Isn't this what `org-modules' is for?
Re: [PATCH] org-eldoc: Fix compatibility with Emacs 28
On Fri, 2020-07-17 at 01:41, Kyle Meyer wrote: > 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. So far so good here. It fixes the errors running 28.0.50 (85eaa83 from 2020-07-16) and the latest org-mode-contrib. Thank you, Joe
Re: [PATCH] org-eldoc: Fix compatibility with Emacs 28
Kyle Meyer writes: > 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'm not either, but it seems to get pulled in automatically when org-plus-contrib is installed - that's how I noticed the errors in Org buffers. [...] > @@ -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) LGTM. My only aesthetic nit would be to replace the nested if with a flat cond, but that's entirely up to you. Thanks, -- Basil
[PATCH] org-eldoc: Fix compatibility with Emacs 28
James N. V. Cash writes: > Kyle Meyer 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 >> ( _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 ( _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