Commit 45d7db6d authored by João Távora's avatar João Távora

Sort out ElDoc backward compatibility of eldoc-documentation-function

As explained previously, we can't simply make
eldoc-documentation-function an variable alias for
eldoc-documentation-strategy, because ElDoc is pre-loaded in Emacs <
28, where it holds at least one buffer-local binding.  So if eldoc.el
is loaded in those versions, we do the variable alias binding in
reverse.  We do this using a macro
eldoc--documentation-strategy-defcustom to at load time in which
direction to make the variable alias.

* lisp/emacs-lisp/eldoc.el
(eldoc--documentation-strategy-defcustom): Helper macro.
(eldoc-documentation-strategy, eldoc-documentation-function): Use it.
(Version): Bump to 1.5.0
parent 7ee32966
Pipeline #6041 failed with stage
in 14 seconds
......@@ -5,7 +5,7 @@
;; Author: Noah Friedman <>
;; Keywords: extensions
;; Created: 1995-10-06
;; Version: 1.4.0
;; Version: 1.5.0
;; Package-Requires: ((emacs "26.3"))
;; This is a GNU ELPA :core package. Avoid functionality that is not
......@@ -539,10 +539,27 @@ Meant as a value for `eldoc-documentation-strategy'."
(if (stringp str) (funcall callback str))
(define-obsolete-variable-alias 'eldoc-documentation-function
'eldoc-documentation-strategy "eldoc-1.1.0")
(defcustom eldoc-documentation-strategy #'eldoc-documentation-default
;; JT@2020-07-10: Eldoc is pre-loaded, so in in Emacs < 28 we can't
;; make the "old" `eldoc-documentation-function' point to the new
;; `eldoc-documentation-strategy', so we do the reverse. This allows
;; for Eldoc to be loaded in those older Emacs versions and work with
;; whomever (major-modes, extensions, ueser) sets one of the other
;; variable.
(defmacro eldoc--documentation-strategy-defcustom
(main secondary value docstring &rest more)
"Defcustom helper macro for sorting `eldoc-documentation-strategy'."
(declare (indent 2))
`(if (< emacs-major-version 28)
(defcustom ,secondary ,value ,docstring ,@more)
(define-obsolete-variable-alias ',main ',secondary "eldoc-1.1.0"))
(defcustom ,main ,value ,docstring ,@more)
(defvaralias ',secondary ',main ,docstring))))
(eldoc--documentation-strategy-defcustom eldoc-documentation-strategy
"How to collect and organize results of `eldoc-documentation-functions'.
This variable controls how `eldoc-documentation-functions', which
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment