|
From: | Thibaut Verron |
Subject: | Re: Package cl is deprecated |
Date: | Wed, 28 Jul 2021 16:23:09 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 |
On 28/07/2021 16:15, Hongyi Zhao wrote:
On Wed, Jul 28, 2021 at 10:04 PM Thibaut Verron <thibaut.verron@gmail.com> wrote:On 28/07/2021 15:36, Hongyi Zhao wrote:On Wed, Jul 28, 2021 at 9:33 PM Hongyi Zhao <hongyi.zhao@gmail.com> wrote:On Wed, Jul 28, 2021 at 9:23 PM Thibaut Verron <thibaut.verron@gmail.com> wrote:On 28/07/2021 15:03, Hongyi Zhao wrote:On Wed, Jul 28, 2021 at 6:04 PM Jean-Christophe Helary <lists@traduction-libre.org> wrote:On Jul 28, 2021, at 18:54, Thibaut Verron <thibaut.verron@gmail.com> wrote: On 28/07/2021 11:46, Hongyi Zhao wrote:On Wed, Jul 28, 2021 at 5:33 PM Thibaut Verron <thibaut.verron@gmail.com> wrote:On 28/07/2021 11:23, Hongyi Zhao wrote:When I start Emacs, I always notice the following message in *Messages* buffer: Package cl is deprecated Any hints for eliminating it?If you have (require 'cl) somewhere in your init file, replace it with (require 'cl-lib). You might need to change some macro calls to use cl-<name> instead of <name>.$ egrep 'require[ ]*'\''cl' .emacs.d/init.el (require 'cl-lib)Then it's from a package and you need to identify it. You can try (untested): find .emacs.d/ -name "*.el" -exec grep "(require 'cl)" {} \;find .emacs.d/ -name "*.el" -exec grep "(require 'cl)" {} \; -printThere are so many matches: $ find .emacs.d/ -name "*.el" -exec grep -q "(require 'cl)" {} \; -print 2>/dev/null | sort -u | wc -l 40 So this method is basically useless for finding the problem.I just tried it, indeed quite a few packages contain some form of (require 'cl) as a backward-compatibility tool (52 matches in my case). Most of those are test files which are never loaded in a normal emacs session. To narrow the search, you can use egrep -q "^\(require 'cl\)" instead. In my .emacs, the matches go from 52 to 15. Interestingly enough, exactly one of them is loaded at init time (key-combo.el), without any warning.Strange, I found nothing with this enhanced pattern: $ find .emacs.d/ -type f -name "*.el" -exec grep -q "^[ ]*\([ ]*require[ ]+'cl[ ]*\)" {} \; -print | wc -l 0Sorry, egrep should be used: $ find .emacs.d/ -type f -name "*.el" -exec egrep -q "^[ ]*\([ ]*require[ ]+'cl[ ]*\)" {} \; -print | egrep -v '[/]tests?[/]' .emacs.d/straight/repos/dash.el/dash.el .emacs.d/straight/repos/dash.el/dev/examples.el .emacs.d/straight/repos/stardiviner-sdcv.el/sdcv.el .emacs.d/straight/repos/showtip/showtip.el .emacs.d/straight/repos/unicode-escape.el/unicode-escape.el .emacs.d/straight/repos/use-package/use-package-tests.el .emacs.d/straight/repos/macrostep/lib/cl-lib.el .emacs.d/straight/repos/macrostep/lib/ert.el .emacs.d/straight/repos/emacs-websocket/websocket-functional-test.el .emacs.d/straight/repos/s.el/dev/ert.elThe point of the regexp was to exclude files which have something (including indentation) before the form, if you allow [ ]* you lose that. That's the case in dash.el for example. In any case, the number of candidates is now small enough that you can examine them. The dev/ and lib/ folders can probably be safely ignored to.If so, nothing seems responsible for the problem: $ find .emacs.d/ -type f -name "*.el" -exec egrep -q "^\(require 'cl\)" {} \; -print |egrep -v '[/]tests?[/]' .emacs.d/straight/repos/use-package/use-package-tests.el .emacs.d/straight/repos/macrostep/lib/cl-lib.el .emacs.d/straight/repos/emacs-websocket/websocket-functional-test.el
Then I guess you will have to check the other candidates, sorry. I'd start with the 10 you found above, and then move to the other 30 if necessary.
Thibaut
[Prev in Thread] | Current Thread | [Next in Thread] |