Re: [PATCH] org-eldoc: Fix compatibility with Emacs 28

2020-07-18 Thread Kyle Meyer
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

2020-07-17 Thread Kyle Meyer
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

2020-07-17 Thread Eric Abrahamsen
"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

2020-07-17 Thread Joseph Mingrone
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

2020-07-17 Thread Basil L. Contovounesios
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

2020-07-16 Thread Kyle Meyer
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