使用eval-and-compile可以避免一些编译时的warning,比如在25.x版本里,beginning-of-sexp被废弃了,但如果要保证代码可以在24.x里用,还必须使用它。一个方法是加判断,如果版本是24.x就用老的函数。但这种方法在编译时会报warning。

今天突然想到,如果我把兼容性的代码用eval-and-compile包括起来就可以消除提示啦,代码类似下面的样子

1
2
3
(eval-and-compile
(when (version< emacs-version "25.0")
(defalias 'thing-at-point--beginning-of-sexp 'beginning-of-sexp)))