27和28提示cl库过时, 是不是简单把cl改为cl-lib, 然后把很多cl函数加上cl-前缀就可以了?

看到提示信息说incf过时, 推荐用cl-incf, 然后又看到cl-incf在cl-lib库里, 是不是所有cl里面的函数, 都加个cl-前缀就ok了呢? 比如foo改为cl-foo?

担心两种函数行为不一样, 有没有人研究过这个问题?

cl.el 怎么实现就行了

  • lexical-let 狗都不用
  • defsetfgvgv-define-simple-setter 替代
  • flet 通常可以用 cl-flet 替代,如果要用 flet shadow 某个函数的定义,要用 (cl-letf (((symbol-function 'xxxx) 'new-definition)) ...)

其他都是直接加入 cl-前缀

4 个赞

会用 cl 的人会有看不出来行为不一样么?

不是我用的, 是第三方包用的, 用了好多老的第三方包, 已经稳定用了这么多年没问题, 不想更新折腾, 试过几次包新版本, 有几个包的新版本都不是很满意, 要么增加一堆没用的功能, 性能大降, 要么操作方式大变.

28报出一堆这种警告. 看上去不是简单可以替换, 挺麻烦.

看上去挺麻烦, 还是继续用26吧, 等emacs新版有足够吸引我的功能再升级. 比如tree-sitter