Call-interactively是做什么的?

不太明白call-interactively的用法. (call-interactively #'func)和直接(func)有啥区别吗?

前者会执行 interactive form 来填装参数,后者不会。当然本来就没参数的话,可能就一样了。Emacs 也能区分一个函数是不是用户直接执行的,还是从 Lisp 中掉用的(called-interactively-p),call-interactively 用来模拟用户直接执行一个命令。比如 (emacs-version) 返回字符串,而 (call-interactively #'emacs-version) 会在 Echo area 中显示下,之后再返回字符串。

1 个赞