Package cl is deprecated

使用上短期内应该没太大影响。

目前大多数 cl- 函数就是归类到不同的子文件,然后在 cl.el 再声明一个别名:

所以 (require 'cl) 就还能使用到原先那些函数,只不过会收到警告。

函数本身并没有什么改动。要是改动太多的话,估计 Emacs 生态圈都要崩了。

3 个赞

只是一个warning提示而已,自己没必要处理吧

我有用一些 较老的包, 这些包是 不可能, 再会有人 更新的, 真担心 「万一」 弃用了, 我可不会改 :innocent:

直接丢掉这些老的包,选择新的包替代。

  1. visual-basic-mode, wps vba要用

  2. 自己用来做 窗口管理

kiwanami/emacs-window-layout: A simple window layout management framework for emacs

  1. 这两个有什么包可以 替换呢, 相关功能的 包可不会找
  1. visual-basic-mode 可以自己fork修改下就行(用cl-lib);
  2. 窗口布局管理的就多了,eyebrowse、persp-mode、workgroups等都可以。

你慢慢就学会改了。。。。

大概看了下, eyebrowse 以前也有试过, persp-mode 也看了下, workgroups 也粗看了下, 可能我理解的不对, 这几个包 针对的是 较普遍性的, 我想用的是 window-layout 这种 api 的, 它可操作性 与自定义性, 比较强, 那这几个包了, 可能也有 开放 一些 API, 我没看, 也应该 也是看不会的, window-layout 较直观些, 好像 代码也不长, 当做学习, 我是边用边学的, 如有点底了, 就自己改吧, 把 cl 改成 cl-lib, 我想用好 emacs 还是要在关键的时候, 自己会改些

workgroups2 我在维护。可以恢复一些特殊的buffer,如shell,org-agenda.用户也可以添加对其他特殊buffer的支持。这个功能需要的代码不少。

这个问题也困扰着我, 现在还在使用emacs 26, 没这问题. 27和28对我没有特别的吸引力, 也许emacs 29之后才会考虑升级.

自己留一个 cl.el 文件备份就行.

cl.el 从 Emacs 24 开始有 require cl at runtime 的 warning. 从 27 开始被移动到 obsolete 文件夹, 已经给包管理者和用户留有了充足的应对时间. Emacs 本身也要不断向前发展, 抛弃一些不必要的历史遗留.

1 个赞

这么长时间还没解决这个问题的包,一般来讲基本都没怎么维护了,可以抛弃掉啦

用LSP的可以考虑升级下,还有喜欢gccemacs的。其他用26问题不大。

同意,我已经把依赖 cl 的包全扔了,一般我会先去给作者提个 issue 让他更新一下。如果一周以上都没回应的,基本就是没人维护了。

比如 scratch ,我在 reddit 上给作者建议更新到 cl-lib,他很快就更新了 :smile:

session.el 估计是没人维护了,直接丢掉,换成内置的 saveplace.el 更好用。

还有一个提示比较烦的是:

Warning: Use keywords rather than deprecated positional arguments to `define-minor-mode'

这个错误是哪个包提示的?

这个aggressive-indent-mode ,use-package。

不过这个信息是直接使用 native-compile 才会在启动出现,如果用 byte-compile 的话不会出现。 也许通过下面这个设置就能屏蔽这个警告信息

 (setq native-comp-async-report-warnings-errors nil)

aggressive-indent-mode 的定义方式确实有些问题,是废弃的方式,功能倒是没有问题。已经有个issue: Silence the compiler · Issue #154 · Malabarba/aggressive-indent-mode (github.com)

是的,很多包都已经更新了。 不过这个包的作者最近不怎么活跃了。 他的另外一个包 beacon 也是,PR 已经很久了也没人合并。

1 个赞