分享一个插件 alias 的坑

不要使用 rails-lib 这个库, 不小心引用到, 坑死我了.

emacs-rails/rails-lib.el at master · tomtt/emacs-rails · GitHub 这家伙直接弄了个:

(defun strings-join (separator strings)
  "Join all STRINGS using a SEPARATOR."
  (mapconcat 'identity strings separator))

(defalias 'string-join 'strings-join)

这样导致这个库被引用的时候, string-join 这个 sub-x 内置函数的两个参数被调换了, emacs就开始抱怨我 string-join 的参数使用反了.

因为是偶尔无法重现的问题, 我还以为我真的用反参数了呢.

怒删这个插件.

1 个赞

老哥稳。。。已收藏

08年,那个时候我还不知 Emacs 为何物。

sub-x 自己也有不少坑,代码兼容 25 & 26 的时候需要注意:

string-trim                增加2个参数
string-trim-{left, righ}   增加1个参数
assoc                      参数增加1个参数
when-let                   可绑定多个变量 => 只能绑定1个变量
......

作者胆这么大,alias内置函数otz

这个包最后更新是2008 年,同年 9 月才发布 Emacs 22.3。

在 2013 年 12 月之前都没有 subr-x.el,只有 helpers.el: History for lisp/emacs-lisp/subr-x.el - emacs-mirror/emacs · GitHub

2013 年 11 月,string-join 方法加入 helpers.el:

原来如此,我说呢 :smile:

除了一些 Emacs 内部文件,其余地方的函数、变量命名都得使用 PREFIX。就连写自己的配置,我也用,如:chunyang-split-window-right

还有一个好处是忘了函数名,用prefix很容易找到…