Subject: Re: bug#53843: 27.2; unknown function used in flymake

From: Robert Pluim <[email-masked]>
Date: Mon, 07 Feb 2022 16:05:18 +0100

>>>>> On Mon, 07 Feb 2022 15:50:03 +0100, Nicolas Martyanoff <[email-masked]> said:

    Nicolas> Robert Pluim <[email-masked]> writes:
    >>>>>>> On Mon, 07 Feb 2022 13:54:23 +0100, Nicolas Martyanoff <[email-masked]> said:
    >> 
    Nicolas> Hi,
    Nicolas> Using eglot with python-mode (with pyright) causes regular errors
    Nicolas> involving flymake caused by calls to an unknown "string-replace"
    Nicolas> function:
    >> 
    >> `string-replace' was added in emacs-28, so it looks like your flymake
    >> package needs adjusting. (the version shipped with emacs-28 has ;;
    >> Package-Requires: ((emacs "28.1") (eldoc "1.1.0") (project "0.7.1")))

    Nicolas> I am using eglot which references a flymake copy from
    Nicolas> https://github.com/emacs-straight/flymake.

Hmm, is that the canonical upstream? I donʼt think so.

    Nicolas> The author of eglot told me to report the bug here, but I guess the
    Nicolas> problem comes from eglot (which requires 26.1+) using a copy of flymake
    Nicolas> which requires (28.1+).

    Nicolas> I do not understand why emacs loads this copy of flymake without
    Nicolas> signaling an error given the constraint in Package-Requires, or why is
    Nicolas> eglot using a copy of flymake altogether, but these problems are
    Nicolas> unrelated to string-replace.

I think Package-Requires is used by package.el to prevent you
*installing* incompatible versions of packages, not running them.

As a workaround you could copy the definition of `string-replace' from
emacs-28's subr.el.

Robert
--