Emacs emits this warning at startup, or shortly afterwards:
package cl is deprecated
Emacs emits this warning at startup, or shortly afterwards:
package cl is deprecated
cl is a library included with Emacs. It was deprecated in Emacs 27 and replaced by cl-lib.
The first time something, somewhere, loads cl at runtime you will see this warning. It is harmless, but mostly* unavoidable. Simply ignore it.
Doom does not use cl, but a number of third-party packages do. Until they update this warning is here to stay — Emacs offers no reliable way to suppress it.
The warning is emitted by the function do-after-load-evaluation. You could advise it, to silence it:
;;; add to $DOOMDIR/config.el
(defadvice! fixed-do-after-load-evaluation (abs-file)
:override #'do-after-load-evaluation
(dolist (a-l-element after-load-alist)
(when (and (stringp (car a-l-element))
(string-match-p (car a-l-element) abs-file))
(mapc #'funcall (cdr a-l-element))))
(run-hook-with-args 'after-load-functions abs-file))
But be warned, this is a hack, and may suddenly break after an Emacs update. Use it at your own risk.
The problem is simple. The cl library is being loaded at runtime. i.e. There’s a (require 'cl) in some package somewhere. M-x doom/help-search-load-path may help you locate them. Their maintainers may need to be reminded to do one of:
Replace (require 'cl) with (require 'cl-lib) and prefix all references to cl macros with cl- (e.g. find → cl-find, remove-if → cl-remove-if, etc). The cl-libify library can automate this.
Wrap (require 'cl) in (eval-when-compile ...):
(eval-when-compile
(require 'cl))
This way, the package is only loaded at compile time (the only time it’s really needed).